# HG changeset patch # User Stefan Monnier # Date 1031926562 0 # Node ID 2b213bd556957b15398ded7f62d8628e68cadb40 # Parent 1bbef0cbbf6747e7cad5330bf9aa6a9cea9e6a07 (define-minor-mode): Add a :require arg. Don't call the function during init if mode is on by default. diff -r 1bbef0cbbf67 -r 2b213bd55695 lisp/emacs-lisp/easy-mmode.el --- 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)))))))