]> code.delx.au - gnu-emacs/blobdiff - lisp/facemenu.el
Say "standard settings" instead of "factory settings".
[gnu-emacs] / lisp / facemenu.el
index bf6cad47f249fab727ab979b7b473cd4fcb50c4e..70047bfa366675b1e4397c473f75992e3b5d01f6 100644 (file)
 ;;      (italic      . [?\H-i])
 ;;      (bold-italic . [?\H-l])
 ;;      (underline   . [?\H-u])))
+;;   (facemenu-update)
 ;;   (setq facemenu-keymap global-map)
-;;   (setq facemenu-key nil)
 ;;   (define-key global-map [?\H-c] 'facemenu-set-foreground) ; set fg color
 ;;   (define-key global-map [?\H-C] 'facemenu-set-background) ; set bg color
-;;   (require 'facemenu)
 ;;
 ;; The order of the faces that appear in the menu and their keybindings can be
 ;; controlled by setting the variables `facemenu-keybindings' and
 ;;; Provide some binding for startup:
 ;;;###autoload (define-key global-map "\M-g" 'facemenu-keymap)
 ;;;###autoload (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap)
-
-(defvar facemenu-key "\M-g"
-  "Prefix key to use for facemenu commands.")
+  
+;; Global bindings:
+(define-key global-map [C-down-mouse-2] 'facemenu-menu)
+(define-key global-map "\M-g" 'facemenu-keymap)
 
 (defvar facemenu-keybindings
   '((default     . "d")
   "Alist of interesting faces and keybindings. 
 Each element is itself a list: the car is the name of the face,
 the next element is the key to use as a keyboard equivalent of the menu item;
-the binding is made in facemenu-keymap.
+the binding is made in `facemenu-keymap'.
 
 The faces specifically mentioned in this list are put at the top of
 the menu, in the order specified.  All other faces which are defined,
@@ -122,13 +122,13 @@ If you change this variable after loading facemenu.el, you will need to call
 `facemenu-update' to make it take effect.")
 
 (defvar facemenu-new-faces-at-end t
-  "Where in the menu to insert newly-created faces.
+  "*Where in the menu to insert newly-created faces.
 This should be nil to put them at the top of the menu, or t to put them
 just before \"Other\" at the end.")
 
 (defvar facemenu-unlisted-faces
   '(modeline region secondary-selection highlight scratch-face)
-  "List of faces not to include in the Face menu.
+  "*List of faces not to include in the Face menu.
 You can set this list before loading facemenu.el, or add a face to it before
 creating that face if you do not want it to be listed.  If you change the
 variable so as to eliminate faces that have already been added to the menu,
@@ -253,7 +253,7 @@ This function is passed the FACE to set, and must return a string which is
 inserted.")
 
 (defvar facemenu-remove-face-function nil
-  "When non-`nil' function called to remove faces.
+  "When non-nil, this is a function called to remove faces.
 This function is passed the START and END of text to change.
 May also be `t' meaning to use `facemenu-add-face-function'.")
 
@@ -269,10 +269,6 @@ If null, `facemenu-read-color' will set it.")
 You can call this to update things if you change any of the menu configuration
 variables."
   (interactive)
-  
-  ;; Global bindings:
-  (define-key global-map [C-down-mouse-2] 'facemenu-menu)
-  (if facemenu-key (define-key global-map facemenu-key 'facemenu-keymap))
 
   ;; Add each defined face to the menu.
   (facemenu-iterate 'facemenu-add-new-face
@@ -360,7 +356,7 @@ typing a character to insert cancels the specification."
 This sets the `invisible' text property; it can be undone with
 `facemenu-remove-special'."
   (interactive "r")
-  (put-text-property start end 'invisible t))
+  (add-text-properties start end '(invisible t)))
 
 ;;;###autoload
 (defun facemenu-set-intangible (start end)
@@ -368,7 +364,7 @@ This sets the `invisible' text property; it can be undone with
 This sets the `intangible' text property; it can be undone with
 `facemenu-remove-special'."
   (interactive "r")
-  (put-text-property start end 'intangible t))
+  (add-text-properties start end '(intangible t)))
 
 ;;;###autoload
 (defun facemenu-set-read-only (start end)
@@ -376,7 +372,7 @@ This sets the `intangible' text property; it can be undone with
 This sets the `read-only' text property; it can be undone with
 `facemenu-remove-special'."
   (interactive "r")
-  (put-text-property start end 'read-only t))
+  (add-text-properties start end '(read-only t)))
 
 ;;;###autoload
 (defun facemenu-remove-props (start end)
@@ -491,7 +487,7 @@ This function queries the window-system server to find out what the
 color names mean.  It returns nil if the colors differ or if it can't
 determine the correct answer."
   (cond ((equal a b) t)
-       ((and (memq window-system '(x ms-windows))
+       ((and (memq window-system '(x w32))
              (equal (x-color-values a) (x-color-values b))))
        ((eq window-system 'pc)
         (and (x-color-defined-p a) (x-color-defined-p b)
@@ -597,22 +593,35 @@ or nil if given a bad color."
   "Add a FACE to the appropriate Face menu.
 Automatically called when a new face is created."
   (let* ((name (symbol-name face))
-        (menu (cond ((string-match "^fg:" name) 
-                     (setq name (substring name 3))
-                     'facemenu-foreground-menu)
-                    ((string-match "^bg:" name) 
-                     (setq name (substring name 3))
-                     'facemenu-background-menu)
-                    (t 'facemenu-face-menu)))
+        menu docstring
         (key (cdr (assoc face facemenu-keybindings)))
         function menu-val)
+    (cond ((string-match "^fg:" name) 
+          (setq name (substring name 3))
+          (setq docstring
+                (format "Select foreground color %s for subsequent insertion."
+                        name))
+          (setq menu 'facemenu-foreground-menu))
+         ((string-match "^bg:" name) 
+          (setq name (substring name 3))
+          (setq docstring
+                (format "Select background color %s for subsequent insertion."
+                        name))
+          (setq menu 'facemenu-background-menu))
+         (t
+          (setq docstring
+                (format "Select face `%s' for subsequent insertion."
+                        name))
+          (setq menu 'facemenu-face-menu)))
     (cond ((eq t facemenu-unlisted-faces))
          ((memq face facemenu-unlisted-faces))
          (key ; has a keyboard equivalent.  These go at the front.
           (setq function (intern (concat "facemenu-set-" name)))
           (fset function
-                (` (lambda () (interactive)
-                     (facemenu-set-face (quote (, face))))))
+                `(lambda ()
+                   ,docstring
+                   (interactive)
+                   (facemenu-set-face (quote (, face)))))
           (define-key 'facemenu-keymap key (cons name function))
           (define-key menu key (cons name function)))
          ((facemenu-iterate ; check if equivalent face is already in the menu