From 33cef733e0a196262f3c32c61e2157fa0d41f2e6 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Mon, 18 Mar 2013 17:16:15 +0800 Subject: [PATCH] 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. --- lisp/ChangeLog | 9 +++++++++ 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 + + 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 * 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)) -- 2.20.1