diff options
author | Kenichi Handa <handa@gnu.org> | 2014-01-13 08:26:08 +0900 |
---|---|---|
committer | Kenichi Handa <handa@gnu.org> | 2014-01-13 08:26:08 +0900 |
commit | 1a0778b078b9ffaa68e1ae0d4b26de147872b421 (patch) | |
tree | 993d3a684b6c08a7cdd98fd8827ddd058931ebc9 /lisp/emacs-lisp | |
parent | 67671fb1dcbfd46ddee7e753d6f545d25821d445 (diff) | |
parent | b30dee657df010645703150248a33f3e22a002d2 (diff) | |
download | emacs-1a0778b078b9ffaa68e1ae0d4b26de147872b421.tar.gz emacs-1a0778b078b9ffaa68e1ae0d4b26de147872b421.tar.bz2 emacs-1a0778b078b9ffaa68e1ae0d4b26de147872b421.zip |
merge trunk
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/eldoc.el | 54 | ||||
-rw-r--r-- | lisp/emacs-lisp/generic.el | 4 |
2 files changed, 31 insertions, 27 deletions
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index 8bd9ebc1e63..fa1574b0a88 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -1,4 +1,4 @@ -;;; eldoc.el --- show function arglist or variable docstring in echo area +;;; eldoc.el --- show function arglist or variable docstring in echo area -*- lexical-binding: t; -*- ;; Copyright (C) 1996-2014 Free Software Foundation, Inc. @@ -62,6 +62,12 @@ If this variable is set to 0, no idle time is required." :type 'number :group 'eldoc) +(defcustom eldoc-print-after-edit nil + "If non-nil eldoc info is only shown when editing. +Changing the value requires toggling `eldoc-mode'." + :type 'boolean + :group 'eldoc) + ;;;###autoload (defcustom eldoc-minor-mode-string (purecopy " ElDoc") "String to display in mode line when ElDoc Mode is enabled; nil for none." @@ -150,6 +156,16 @@ This is used to determine if `eldoc-idle-delay' is changed by the user.") "The function used by `eldoc-message' to display messages. It should receive the same arguments as `message'.") +(defun eldoc-edit-message-commands () + (let ((cmds (make-vector 31 0)) + (re (regexp-opt '("delete" "insert" "edit" "electric" "newline")))) + (mapatoms (lambda (s) + (and (commandp s) + (string-match-p re (symbol-name s)) + (intern (symbol-name s) cmds))) + obarray) + cmds)) + ;;;###autoload (define-minor-mode eldoc-mode @@ -168,25 +184,13 @@ expression point is on." (setq eldoc-last-message nil) (if eldoc-mode (progn + (when eldoc-print-after-edit + (setq-local eldoc-message-commands (eldoc-edit-message-commands))) (add-hook 'post-command-hook 'eldoc-schedule-timer nil t) - (add-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area t)) - (remove-hook 'post-command-hook 'eldoc-schedule-timer) - (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area))) - -;;;###autoload -(define-minor-mode eldoc-post-insert-mode nil - :group 'eldoc :lighter (:eval (if eldoc-mode "" - (concat eldoc-minor-mode-string "|i"))) - (setq eldoc-last-message nil) - (let ((prn-info (lambda () - (unless eldoc-mode - (eldoc-print-current-symbol-info))))) - (if eldoc-post-insert-mode - (add-hook 'post-self-insert-hook prn-info nil t) - (remove-hook 'post-self-insert-hook prn-info t)))) - -;; FIXME: This changes Emacs's behavior when the file is loaded! -(add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-post-insert-mode) + (add-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area nil t)) + (kill-local-variable 'eldoc-message-commands) + (remove-hook 'post-command-hook 'eldoc-schedule-timer t) + (remove-hook 'pre-command-hook 'eldoc-pre-command-refresh-echo-area t))) ;;;###autoload (defun turn-on-eldoc-mode () @@ -264,8 +268,10 @@ Otherwise work like `message'." ;; This doesn't seem to be required for Emacs 19.28 and earlier. (defun eldoc-pre-command-refresh-echo-area () (and eldoc-last-message - (if (eldoc-display-message-no-interference-p) - (eldoc-message eldoc-last-message) + (if (and (eldoc-display-message-no-interference-p) + (symbolp this-command) + (intern-soft (symbol-name this-command) eldoc-message-commands)) + (eldoc-message eldoc-last-message) (setq eldoc-last-message nil)))) ;; Decide whether now is a good time to display a message. @@ -283,9 +289,7 @@ Otherwise work like `message'." ;; 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 eldoc-mode - (not executing-kbd-macro) - (not (and (boundp 'edebug-active) edebug-active)))) + (not (or executing-kbd-macro (bound-and-true-p edebug-active)))) ;;;###autoload @@ -309,7 +313,7 @@ Emacs Lisp mode) that support ElDoc.") ;; This is run from post-command-hook or some idle timer thing, ;; so we need to be careful that errors aren't ignored. (with-demoted-errors "eldoc error: %s" - (and (or (eldoc-display-message-p) eldoc-post-insert-mode) + (and (eldoc-display-message-p) (if eldoc-documentation-function (eldoc-message (funcall eldoc-documentation-function)) (let* ((current-symbol (eldoc-current-symbol)) diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el index 146219885da..02c30aad55f 100644 --- a/lisp/emacs-lisp/generic.el +++ b/lisp/emacs-lisp/generic.el @@ -224,7 +224,7 @@ Some generic modes are defined in `generic-x.el'." ;;; Comment Functionality -(defun generic--normalise-comments (comment-list) +(defun generic--normalize-comments (comment-list) (let ((normalized '())) (dolist (start comment-list) (let (end) @@ -300,7 +300,7 @@ Some generic modes are defined in `generic-x.el'." (defun generic-mode-set-comments (comment-list) "Set up comment functionality for generic mode." (let ((st (make-syntax-table)) - (comment-list (generic--normalise-comments comment-list))) + (comment-list (generic--normalize-comments comment-list))) (generic-set-comment-syntax st comment-list) (generic-set-comment-vars comment-list) (set-syntax-table st))) |