Make more parts of Emacs use new Eldoc capabilities
Elisp-mode was doing a lot of work that can now be delegated to Eldoc. Flymake uses the new Eldoc functionality, too, installing a global documentation function that may report on diagnostics under point. CEDET's grammar.el was left as the only user of an Eldoc-internal function. That function was moved to grammar.el. That file is still, somewhat reprehensibly, using an internal function of elisp-mode.el, but this was left unchanged. In other situations, eldoc-documentation-functions is used or recommended. The only other places where the obsolete eldoc-documentation-function is still used is in libraries which are presumably meant to remain compatible with previous Emacs versions. * lisp/progmodes/elisp-mode.el (elisp-eldoc-funcall) (elisp-eldoc-var-docstring): New functions. (emacs-lisp-mode): Put two elements in eldoc-documentation-functions. * lisp/emacs-lisp/eldoc.el (eldoc--eval-expression-setup): Setup new Elisp eldoc-documentation-functions. * lisp/progmodes/flymake.el (flymake-mode): Use flymake-eldoc-function. (flymake-eldoc-function): New function. (Package-Requires): Require eldoc 1.1.0 * lisp/descr-text.el (describe-char-eldoc): Recommend eldoc-documentation-functions. * lisp/progmodes/cfengine.el (cfengine3-documentation-function): Recommend eldoc-documentation-functions * lisp/progmodes/octave.el (inferior-octave-mode): Use eldoc-documentation-functions. * lisp/cedet/semantic/grammar.el (semantic--docstring-format-sym-doc): New function. (semantic-grammar-eldoc-get-macro-docstring): Adjust.
This commit is contained in:
parent
a9bd506004
commit
1203626f47
7 changed files with 90 additions and 76 deletions
|
@ -229,7 +229,10 @@ expression point is on." :lighter eldoc-minor-mode-string
|
|||
;; Setup `eldoc', similar to `emacs-lisp-mode'. FIXME: Call
|
||||
;; `emacs-lisp-mode' itself?
|
||||
(add-hook 'eldoc-documentation-functions
|
||||
#'elisp-eldoc-documentation-function nil t)
|
||||
#'elisp-eldoc-var-docstring nil t)
|
||||
(add-hook 'eldoc-documentation-functions
|
||||
#'elisp-eldoc-funcall nil t)
|
||||
(setq eldoc-documentation-strategy 'eldoc-documentation-default)
|
||||
(eldoc-mode +1))
|
||||
|
||||
;;;###autoload
|
||||
|
@ -656,39 +659,6 @@ documentation themselves."
|
|||
(;; got something else, trust callback will be called
|
||||
t)))))))))
|
||||
|
||||
;; If the entire line cannot fit in the echo area, the symbol name may be
|
||||
;; truncated or eliminated entirely from the output to make room for the
|
||||
;; description.
|
||||
(defun eldoc-docstring-format-sym-doc (prefix doc &optional face)
|
||||
"Combine PREFIX and DOC, and shorten the result to fit in the echo area.
|
||||
|
||||
When PREFIX is a symbol, propertize its symbol name with FACE
|
||||
before combining it with DOC. If FACE is not provided, just
|
||||
apply the nil face.
|
||||
|
||||
See also: `eldoc-echo-area-use-multiline-p'."
|
||||
(when (symbolp prefix)
|
||||
(setq prefix (concat (propertize (symbol-name prefix) 'face face) ": ")))
|
||||
(let* ((ea-multi eldoc-echo-area-use-multiline-p)
|
||||
;; Subtract 1 from window width since emacs will not write
|
||||
;; any chars to the last column, or in later versions, will
|
||||
;; cause a wraparound and resize of the echo area.
|
||||
(ea-width (1- (window-width (minibuffer-window))))
|
||||
(strip (- (+ (length prefix) (length doc)) ea-width)))
|
||||
(cond ((or (<= strip 0)
|
||||
(eq ea-multi t)
|
||||
(and ea-multi (> (length doc) ea-width)))
|
||||
(concat prefix doc))
|
||||
((> (length doc) ea-width)
|
||||
(substring (format "%s" doc) 0 ea-width))
|
||||
((>= strip (string-match-p ":? *\\'" prefix))
|
||||
doc)
|
||||
(t
|
||||
;; Show the end of the partial symbol name, rather
|
||||
;; than the beginning, since the former is more likely
|
||||
;; to be unique given package namespace conventions.
|
||||
(concat (substring prefix strip) doc)))))
|
||||
|
||||
;; When point is in a sexp, the function args are not reprinted in the echo
|
||||
;; area after every possible interactive command because some of them print
|
||||
;; their own messages in the echo area; the eldoc functions would instantly
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue