aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2002-09-13 14:16:02 +0000
committerStefan Monnier2002-09-13 14:16:02 +0000
commitc8fb3bf9c6fffc0011af10b438be7d5bd7b0a81e (patch)
tree094c5803b6a86bfa8a3449fb6aa00512af0b7661
parent00398e3b5c50ad91d1a17a40b6e069da1070f4f8 (diff)
downloademacs-c8fb3bf9c6fffc0011af10b438be7d5bd7b0a81e.tar.gz
emacs-c8fb3bf9c6fffc0011af10b438be7d5bd7b0a81e.zip
(define-minor-mode): Add a :require arg.
Don't call the function during init if mode is on by default.
-rw-r--r--lisp/emacs-lisp/easy-mmode.el27
1 files changed, 15 insertions, 12 deletions
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 8f89d92a057..abd045a6532 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -90,11 +90,12 @@ BODY contains code that will be executed each time the mode is (dis)activated.
90 It will be executed after any toggling but before running the hooks. 90 It will be executed after any toggling but before running the hooks.
91 BODY can start with a list of CL-style keys specifying additional arguments. 91 BODY can start with a list of CL-style keys specifying additional arguments.
92 The following keyword arguments are supported: 92 The following keyword arguments are supported:
93:group Followed by the group name to use for any generated `defcustom'. 93:group GROUP Group name to use for any generated `defcustom'.
94:global If non-nil specifies that the minor mode is not meant to be 94:global GLOBAL If non-nil specifies that the minor mode is not meant to be
95 buffer-local. By default, the variable is made buffer-local. 95 buffer-local. By default, the variable is made buffer-local.
96:init-value Same as the INIT-VALUE argument. 96:init-value VAL Same as the INIT-VALUE argument.
97:lighter Same as the LIGHTER argument." 97:lighter SPEC Same as the LIGHTER argument.
98:require SYM Same as defcustom's :require argument."
98 ;; Allow skipping the first three args. 99 ;; Allow skipping the first three args.
99 (cond 100 (cond
100 ((keywordp init-value) 101 ((keywordp init-value)
@@ -109,6 +110,7 @@ BODY contains code that will be executed each time the mode is (dis)activated.
109 (globalp nil) 110 (globalp nil)
110 (group nil) 111 (group nil)
111 (extra-args nil) 112 (extra-args nil)
113 (require t)
112 (keymap-sym (if (and keymap (symbolp keymap)) keymap 114 (keymap-sym (if (and keymap (symbolp keymap)) keymap
113 (intern (concat mode-name "-map")))) 115 (intern (concat mode-name "-map"))))
114 (hook (intern (concat mode-name "-hook"))) 116 (hook (intern (concat mode-name "-hook")))
@@ -123,6 +125,7 @@ BODY contains code that will be executed each time the mode is (dis)activated.
123 (:global (setq globalp (pop body))) 125 (:global (setq globalp (pop body)))
124 (:extra-args (setq extra-args (pop body))) 126 (:extra-args (setq extra-args (pop body)))
125 (:group (setq group (nconc group (list :group (pop body))))) 127 (:group (setq group (nconc group (list :group (pop body)))))
128 (:require (setq require (pop body)))
126 (t (pop body)))) 129 (t (pop body))))
127 130
128 (unless group 131 (unless group
@@ -159,12 +162,12 @@ use either \\[customize] or the function `%s'."
159 :initialize 'custom-initialize-default 162 :initialize 'custom-initialize-default
160 ,@group 163 ,@group
161 :type 'boolean 164 :type 'boolean
162 ,@(when curfile 165 ,@(cond
163 (list 166 ((not (and curfile require)) nil)
164 :require 167 ((not (eq require t)) `(:require ,require))
165 (list 'quote 168 (t `(:require
166 (intern (file-name-nondirectory 169 ',(intern (file-name-nondirectory
167 (file-name-sans-extension curfile))))))))) 170 (file-name-sans-extension curfile)))))))))
168 171
169 ;; The actual function. 172 ;; The actual function.
170 (defun ,mode (&optional arg ,@extra-args) 173 (defun ,mode (&optional arg ,@extra-args)
@@ -224,7 +227,7 @@ With zero or negative ARG turn mode off.
224 (symbol-value ',keymap-sym)))) 227 (symbol-value ',keymap-sym))))
225 228
226 ;; If the mode is global, call the function according to the default. 229 ;; If the mode is global, call the function according to the default.
227 ,(if globalp 230 ,(if (and globalp (null init-value))
228 `(if (and load-file-name ,mode) 231 `(if (and load-file-name ,mode)
229 (eval-after-load load-file-name '(,mode 1))))))) 232 (eval-after-load load-file-name '(,mode 1)))))))
230 233