Mercurial > emacs
changeset 55705:d2c247888af6
(facemenu-color-name-equal): New function.
(list-colors-display): Use it to compare colors instead of
facemenu-color-equal.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Thu, 20 May 2004 16:56:35 +0000 |
parents | 9c9741bc4dda |
children | f9ebf0f3d214 |
files | lisp/facemenu.el |
diffstat | 1 files changed, 27 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/facemenu.el Thu May 20 16:45:28 2004 +0000 +++ b/lisp/facemenu.el Thu May 20 16:56:35 2004 +0000 @@ -480,9 +480,19 @@ (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 @@ (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