diff options
author | Leo Liu <sdl.web@gmail.com> | 2013-03-18 17:16:15 +0800 |
---|---|---|
committer | Leo Liu <sdl.web@gmail.com> | 2013-03-18 17:16:15 +0800 |
commit | 33cef733e0a196262f3c32c61e2157fa0d41f2e6 (patch) | |
tree | b9218d05ce9771905ad4f10cf7ec4564d6bb7f1d | |
parent | 2167b7b28faf65ff2c669b6a00734a22eaf12612 (diff) |
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.
-rw-r--r-- | lisp/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/emacs-lisp/eldoc.el | 27 |
2 files changed, 22 insertions, 14 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 082054e5be..7bd027a81d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index d2730a28ea..4efbdcb22c 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -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)) |