emacs-diffs
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]