]> git.eshelyaron.com Git - emacs.git/commitdiff
Make sure eldoc can be turned off properly.
authorLeo Liu <sdl.web@gmail.com>
Mon, 18 Mar 2013 09:16:15 +0000 (17:16 +0800)
committerLeo Liu <sdl.web@gmail.com>
Mon, 18 Mar 2013 09:16:15 +0000 (17:16 +0800)
* emacs-lisp/eldoc.el (eldoc-schedule-timer): Conditionalize on
eldoc-mode.
(eldoc-display-message-p): Revert last change.
(eldoc-display-message-no-interference-p)
(eldoc-print-current-symbol-info): Tweak.

lisp/ChangeLog
lisp/emacs-lisp/eldoc.el

index 082054e5be56de6fdbdffd4b7f78f283784dd8db..7bd027a81d42f6b9c46e3048b3bb0e84de608f70 100644 (file)
@@ -1,3 +1,12 @@
+2013-03-18  Leo Liu  <sdl.web@gmail.com>
+
+       Make sure eldoc can be turned off properly.
+       * emacs-lisp/eldoc.el (eldoc-schedule-timer): Conditionalize on
+       eldoc-mode.
+       (eldoc-display-message-p): Revert last change.
+       (eldoc-display-message-no-interference-p)
+       (eldoc-print-current-symbol-info): Tweak.
+
 2013-03-18  Tassilo Horn  <tsdh@gnu.org>
 
        * doc-view.el (doc-view-new-window-function): Check the new window
index d2730a28eaabfdd7f8fb26013037ad93fa82858c..4efbdcb22cbb6fff42640f1670b2e055f02169e4 100644 (file)
@@ -198,8 +198,9 @@ expression point is on."
   (or (and eldoc-timer
            (memq eldoc-timer timer-idle-list))
       (setq eldoc-timer
-            (run-with-idle-timer eldoc-idle-delay t
-                                 'eldoc-print-current-symbol-info)))
+            (run-with-idle-timer
+            eldoc-idle-delay t
+            (lambda () (and eldoc-mode (eldoc-print-current-symbol-info))))))
 
   ;; If user has changed the idle delay, update the timer.
   (cond ((not (= eldoc-idle-delay eldoc-current-idle-delay))
@@ -272,21 +273,19 @@ Otherwise work like `message'."
 ;; Decide whether now is a good time to display a message.
 (defun eldoc-display-message-p ()
   (and (eldoc-display-message-no-interference-p)
-       ;; `eldoc-post-insert-mode' uses no timers.
-       (or (not eldoc-mode)
-          ;; If this-command is non-nil while running via an idle
-          ;; timer, we're still in the middle of executing a command,
-          ;; e.g. a query-replace where it would be annoying to
-          ;; overwrite the echo area.
-          (and (not this-command)
-               (symbolp last-command)
-               (intern-soft (symbol-name last-command)
-                            eldoc-message-commands)))))
+       ;; If this-command is non-nil while running via an idle
+       ;; timer, we're still in the middle of executing a command,
+       ;; e.g. a query-replace where it would be annoying to
+       ;; overwrite the echo area.
+       (and (not this-command)
+           (symbolp last-command)
+           (intern-soft (symbol-name last-command)
+                        eldoc-message-commands))))
 
 ;; Check various conditions about the current environment that might make
 ;; it undesirable to print eldoc messages right this instant.
 (defun eldoc-display-message-no-interference-p ()
-  (and (or eldoc-mode eldoc-post-insert-mode)
+  (and eldoc-mode
        (not executing-kbd-macro)
        (not (and (boundp 'edebug-active) edebug-active))))
 
@@ -310,7 +309,7 @@ Emacs Lisp mode) that support ElDoc.")
 
 (defun eldoc-print-current-symbol-info ()
   (condition-case err
-      (and (eldoc-display-message-p)
+      (and (or (eldoc-display-message-p) eldoc-post-insert-mode)
           (if eldoc-documentation-function
               (eldoc-message (funcall eldoc-documentation-function))
             (let* ((current-symbol (eldoc-current-symbol))