changeset 66721:67170e911864

(define-global-minor-mode): Pass all specified keyword args on to `define-minor-mode'. Update docstring.
author Luc Teirlinck <teirllm@auburn.edu>
date Sat, 05 Nov 2005 23:03:57 +0000
parents f41b7662a7a5
children 886334b58815
files lisp/emacs-lisp/easy-mmode.el
diffstat 1 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/easy-mmode.el	Sat Nov 05 14:02:18 2005 +0000
+++ b/lisp/emacs-lisp/easy-mmode.el	Sat Nov 05 23:03:57 2005 +0000
@@ -272,8 +272,14 @@
   "Make GLOBAL-MODE out of the buffer-local minor MODE.
 TURN-ON is a function that will be called with no args in every buffer
   and that should try to turn MODE on if applicable for that buffer.
-KEYS is a list of CL-style keyword arguments:
-:group to specify the custom group.
+KEYS is a list of CL-style keyword arguments.  As the minor mode
+  defined by this function is always global, any :global keyword is
+  ignored.  Other keywords have the same meaning as in `define-minor-mode',
+  which see.  In particular, :group specifies the custom group.
+  The most useful keywords are those that are passed on to the
+  `defcustom'.  It normally makes no sense to pass the :lighter
+  or :keymap keywords to `define-global-minor-mode', since these
+  are usually passed to the buffer-local version of the minor mode.
 
 If MODE's set-up depends on the major mode in effect when it was
 enabled, then disabling and reenabling MODE should make MODE work
@@ -285,21 +291,23 @@
 	 (pretty-name (easy-mmode-pretty-mode-name mode))
 	 (pretty-global-name (easy-mmode-pretty-mode-name global-mode))
 	 (group nil)
-	 (extra-args nil)
+	 (extra-keywords nil)
 	 (MODE-buffers (intern (concat global-mode-name "-buffers")))
 	 (MODE-enable-in-buffers
 	  (intern (concat global-mode-name "-enable-in-buffers")))
 	 (MODE-check-buffers
 	  (intern (concat global-mode-name "-check-buffers")))
 	 (MODE-cmhh (intern (concat global-mode-name "-cmhh")))
-	 (MODE-major-mode (intern (concat (symbol-name mode) "-major-mode"))))
+	 (MODE-major-mode (intern (concat (symbol-name mode) "-major-mode")))
+	 keyw)
 
     ;; Check keys.
-    (while (keywordp (car keys))
-      (case (pop keys)
-	(:extra-args (setq extra-args (pop keys)))
+    (while (keywordp (setq keyw (car keys)))
+      (setq keys (cdr keys))
+      (case keyw
 	(:group (setq group (nconc group (list :group (pop keys)))))
-	(t (setq keys (cdr keys)))))
+	(:global (setq keys (cdr keys)))
+	(t (push keyw extra-keywords) (push (pop keys) extra-keywords))))
 
     (unless group
       ;; We might as well provide a best-guess default group.
@@ -317,7 +325,7 @@
 %s is actually not turned on in every buffer but only in those
 in which `%s' turns it on."
 		  pretty-name pretty-global-name pretty-name turn-on)
-	 :global t :extra-args ,extra-args ,@group
+	 :global t ,@group ,@(nreverse extra-keywords)
 
 	 ;; Setup hook to handle future mode changes and new buffers.
 	 (if ,global-mode