changeset 78860:03a3e0a6776c

(define-minor-mode): Fix staging brain damage.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 21 Sep 2007 18:27:34 +0000
parents 309500d2aa00
children 540edc5802ca
files lisp/ChangeLog lisp/emacs-lisp/easy-mmode.el
diffstat 2 files changed, 31 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Sep 21 11:21:38 2007 +0000
+++ b/lisp/ChangeLog	Fri Sep 21 18:27:34 2007 +0000
@@ -1,3 +1,7 @@
+2007-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging brain damage.
+
 2007-09-21  Kevin Ryde  <user42@zip.com.au>
 
 	* international/mule.el (sgml-html-meta-auto-coding-function):
--- a/lisp/emacs-lisp/easy-mmode.el	Fri Sep 21 11:21:38 2007 +0000
+++ b/lisp/emacs-lisp/easy-mmode.el	Fri Sep 21 18:27:34 2007 +0000
@@ -139,8 +139,8 @@
     (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 @@
 	 ;; 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 @@
 
 (provide 'easy-mmode)
 
-;;; arch-tag: d48a5250-6961-4528-9cb0-3c9ea042a66a
+;; arch-tag: d48a5250-6961-4528-9cb0-3c9ea042a66a
 ;;; easy-mmode.el ends here