[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/facemenu.el [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/facemenu.el [lexbind] |
Date: |
Tue, 06 Jul 2004 07:12:23 -0400 |
Index: emacs/lisp/facemenu.el
diff -c emacs/lisp/facemenu.el:1.67.2.2 emacs/lisp/facemenu.el:1.67.2.3
*** emacs/lisp/facemenu.el:1.67.2.2 Tue Oct 14 23:51:00 2003
--- emacs/lisp/facemenu.el Tue Jul 6 09:23:35 2004
***************
*** 480,488 ****
(when (and (null list) (> (display-color-cells) 0))
(setq list (defined-colors))
;; Delete duplicate colors.
(let ((l list))
(while (cdr l)
! (if (facemenu-color-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))
--- 480,498 ----
(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-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,520 ****
--- 525,546 ----
(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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/facemenu.el [lexbind],
Miles Bader <=