Mercurial > emacs
changeset 47463:2b213bd55695
(define-minor-mode): Add a :require arg.
Don't call the function during init if mode is on by default.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 13 Sep 2002 14:16:02 +0000 |
parents | 1bbef0cbbf67 |
children | b8282a873821 |
files | lisp/emacs-lisp/easy-mmode.el |
diffstat | 1 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/easy-mmode.el Fri Sep 13 13:56:41 2002 +0000 +++ b/lisp/emacs-lisp/easy-mmode.el Fri Sep 13 14:16:02 2002 +0000 @@ -90,11 +90,12 @@ It will be executed after any toggling but before running the hooks. BODY can start with a list of CL-style keys specifying additional arguments. The following keyword arguments are supported: -:group Followed by the group name to use for any generated `defcustom'. -:global If non-nil specifies that the minor mode is not meant to be - buffer-local. By default, the variable is made buffer-local. -:init-value Same as the INIT-VALUE argument. -:lighter Same as the LIGHTER argument." +:group GROUP Group name to use for any generated `defcustom'. +:global GLOBAL If non-nil specifies that the minor mode is not meant to be + buffer-local. By default, the variable is made buffer-local. +:init-value VAL Same as the INIT-VALUE argument. +:lighter SPEC Same as the LIGHTER argument. +:require SYM Same as defcustom's :require argument." ;; Allow skipping the first three args. (cond ((keywordp init-value) @@ -109,6 +110,7 @@ (globalp nil) (group nil) (extra-args nil) + (require t) (keymap-sym (if (and keymap (symbolp keymap)) keymap (intern (concat mode-name "-map")))) (hook (intern (concat mode-name "-hook"))) @@ -123,6 +125,7 @@ (:global (setq globalp (pop body))) (:extra-args (setq extra-args (pop body))) (:group (setq group (nconc group (list :group (pop body))))) + (:require (setq require (pop body))) (t (pop body)))) (unless group @@ -159,12 +162,12 @@ :initialize 'custom-initialize-default ,@group :type 'boolean - ,@(when curfile - (list - :require - (list 'quote - (intern (file-name-nondirectory - (file-name-sans-extension curfile))))))))) + ,@(cond + ((not (and curfile require)) nil) + ((not (eq require t)) `(:require ,require)) + (t `(:require + ',(intern (file-name-nondirectory + (file-name-sans-extension curfile))))))))) ;; The actual function. (defun ,mode (&optional arg ,@extra-args) @@ -224,7 +227,7 @@ (symbol-value ',keymap-sym)))) ;; If the mode is global, call the function according to the default. - ,(if globalp + ,(if (and globalp (null init-value)) `(if (and load-file-name ,mode) (eval-after-load load-file-name '(,mode 1)))))))