summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorLeo Liu <sdl.web@gmail.com>2013-03-18 17:16:15 +0800
committerLeo Liu <sdl.web@gmail.com>2013-03-18 17:16:15 +0800
commit33cef733e0a196262f3c32c61e2157fa0d41f2e6 (patch)
treeb9218d05ce9771905ad4f10cf7ec4564d6bb7f1d /lisp
parent2167b7b28faf65ff2c669b6a00734a22eaf12612 (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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/emacs-lisp/eldoc.el27
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))