diff options
author | Eli Zaretskii <eliz@gnu.org> | 2004-05-20 16:56:35 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2004-05-20 16:56:35 +0000 |
commit | 9c7fcb51a35f8122141cbdad73b914be17180f7f (patch) | |
tree | 8453d8f2be2686b79a9687cd04c24406559b0bb7 /lisp/facemenu.el | |
parent | 9af49a1adb149da0c6ab4ed32077db7647149af2 (diff) | |
download | emacs-9c7fcb51a35f8122141cbdad73b914be17180f7f.tar.gz |
(facemenu-color-name-equal): New function.
(list-colors-display): Use it to compare colors instead of
facemenu-color-equal.
Diffstat (limited to 'lisp/facemenu.el')
-rw-r--r-- | lisp/facemenu.el | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/lisp/facemenu.el b/lisp/facemenu.el index 3893e320655..e9af58fc73d 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -480,9 +480,19 @@ of colors that the current display can handle." (when (and (null list) (> (display-color-cells) 0)) (setq list (defined-colors)) ;; Delete duplicate colors. + + ;; Identify duplicate colors by the name rather than the color + ;; value. For example, on MS-Windows, logical colors are added to + ;; the list that might have the same value but have different + ;; names and meanings. For example, `SystemMenuText' (the color + ;; w32 uses for the text in menu entries) and `SystemWindowText' + ;; (the default color w32 uses for the text in windows and + ;; dialogs) may be the same display color and be adjacent in the + ;; list. Detecting duplicates by name insures that both of these + ;; colors remain despite identical color values. (let ((l list)) (while (cdr l) - (if (facemenu-color-equal (car l) (car (cdr l))) + (if (facemenu-color-name-equal (car l) (car (cdr l))) (setcdr l (cdr (cdr l))) (setq l (cdr l))))) (when (memq (display-visual-class) '(gray-scale pseudo-color direct-color)) @@ -515,6 +525,22 @@ determine the correct answer." (cond ((equal a b) t) ((equal (color-values a) (color-values b))))) +(defun facemenu-color-name-equal (a b) + "Return t if colors A and B are the same color. +A and B should be strings naming colors. These names are +downcased, stripped of spaces and the string `grey' is turned +into `gray'. This accommodates alternative spellings of colors +found commonly in the list. It returns nil if the colors differ." + (progn + (setq a (replace-regexp-in-string "grey" "gray" + (replace-regexp-in-string " " "" + (downcase a))) + b (replace-regexp-in-string "grey" "gray" + (replace-regexp-in-string " " "" + (downcase b)))) + + (equal a b))) + (defun facemenu-add-face (face &optional start end) "Add FACE to text between START and END. If START is nil or START to END is empty, add FACE to next typed character |