(define-minor-mode): A nil argument to the minor mode turns the mode ON.

This commit is contained in:
Stefan Monnier 2010-04-12 21:03:04 -04:00
parent 01f5787b8a
commit 3b7e1d5fe9
3 changed files with 11 additions and 9 deletions

View file

@ -140,6 +140,8 @@ Secret Service API requires D-Bus for communication.
* Incompatible Lisp Changes in Emacs 24.1
** Passing a nil argument to a minor mode function now turns the mode
ON unconditionally.
* Lisp changes in Emacs 24.1

View file

@ -1,3 +1,8 @@
2010-04-13 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/easy-mmode.el (define-minor-mode): Passing a nil argument
to the minor mode function now turns the mode ON unconditionally.
2010-04-12 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-dir.el (vc-dir-kill-line): New command.

View file

@ -222,15 +222,10 @@ With zero or negative ARG turn mode off.
(interactive (list (or current-prefix-arg 'toggle)))
(let ((,last-message (current-message)))
(setq ,mode
(cond
((eq arg 'toggle) (not ,mode))
(arg (> (prefix-numeric-value arg) 0))
(t
(if (null ,mode) t
(message
"Toggling %s off; better pass an explicit argument."
',mode)
nil))))
(if (eq arg 'toggle)
(not ,mode)
;; A nil argument also means ON now.
(> (prefix-numeric-value arg) 0)))
,@body
;; The on/off hooks are here for backward compatibility only.
(run-hooks ',hook (if ,mode ',hook-on ',hook-off))