diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-09-21 18:27:34 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-09-21 18:27:34 +0000 |
commit | dae157b7c9970d6c3ff419c8dd0601ffaca536b4 (patch) | |
tree | 1b1b8a0424b44f3f8581523fd0d2f18f3eeed4a9 /lisp/emacs-lisp/easy-mmode.el | |
parent | e243eb1f503d278c460c4d00ac1ae85c0476fe46 (diff) | |
download | emacs-dae157b7c9970d6c3ff419c8dd0601ffaca536b4.tar.gz emacs-dae157b7c9970d6c3ff419c8dd0601ffaca536b4.tar.bz2 emacs-dae157b7c9970d6c3ff419c8dd0601ffaca536b4.zip |
(define-minor-mode): Fix staging brain damage.
Diffstat (limited to 'lisp/emacs-lisp/easy-mmode.el')
-rw-r--r-- | lisp/emacs-lisp/easy-mmode.el | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 80d1625ec9b..d9497355fef 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -139,8 +139,8 @@ For example, you could write (setq body (list* lighter keymap body) lighter nil keymap nil)) ((keywordp keymap) (push keymap body) (setq keymap nil))) - (let* ((last-message (current-message)) - (mode-name (symbol-name mode)) + (let* ((last-message (make-symbol "last-message")) + (mode-name (symbol-name mode)) (pretty-name (easy-mmode-pretty-mode-name mode lighter)) (globalp nil) (set nil) @@ -222,28 +222,30 @@ With zero or negative ARG turn mode off. ;; Use `toggle' rather than (if ,mode 0 1) so that using ;; repeat-command still does the toggling correctly. (interactive (list (or current-prefix-arg 'toggle))) - (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)))) - ,@body - ;; The on/off hooks are here for backward compatibility only. - (run-hooks ',hook (if ,mode ',hook-on ',hook-off)) - (if (called-interactively-p) - (progn - ,(if globalp `(customize-mark-as-set ',mode)) - ;; Avoid overwriting a message shown by the body, - ;; but do overwrite previous messages. - (unless ,(and (current-message) - (not (equal last-message (current-message)))) - (message ,(format "%s %%sabled" pretty-name) - (if ,mode "en" "dis"))))) + (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)))) + ,@body + ;; The on/off hooks are here for backward compatibility only. + (run-hooks ',hook (if ,mode ',hook-on ',hook-off)) + (if (called-interactively-p) + (progn + ,(if globalp `(customize-mark-as-set ',mode)) + ;; Avoid overwriting a message shown by the body, + ;; but do overwrite previous messages. + (unless (and (current-message) + (not (equal ,last-message + (current-message)))) + (message ,(format "%s %%sabled" pretty-name) + (if ,mode "en" "dis")))))) (force-mode-line-update) ;; Return the new setting. ,mode) @@ -539,5 +541,5 @@ found, do `widen' first and then call NARROWFUN with no args after moving." (provide 'easy-mmode) -;;; arch-tag: d48a5250-6961-4528-9cb0-3c9ea042a66a +;; arch-tag: d48a5250-6961-4528-9cb0-3c9ea042a66a ;;; easy-mmode.el ends here |