]> git.eshelyaron.com Git - emacs.git/commitdiff
(define-minor-mode): Only preserve messages output during execution of the body.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 8 May 2006 15:12:25 +0000 (15:12 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 8 May 2006 15:12:25 +0000 (15:12 +0000)
lisp/emacs-lisp/easy-mmode.el

index caac02c2ee3b75ba6097f45837df530bfc21ef62..5475ed530d3c9f998b7a744cca2feae40f3133de 100644 (file)
@@ -139,7 +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* ((mode-name (symbol-name mode))
+  (let* ((last-message (current-message))
+        (mode-name (symbol-name mode))
         (pretty-name (easy-mmode-pretty-mode-name mode lighter))
         (globalp nil)
         (set nil)
@@ -236,7 +237,10 @@ With zero or negative ARG turn mode off.
         (if (called-interactively-p)
             (progn
               ,(if globalp `(customize-mark-as-set ',mode))
-              (unless (current-message)
+              ;; 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)