;; Major modes for other languages may use ElDoc by defining an
;; appropriate function as the buffer-local value of
-;; `eldoc-documentation-functions'.
+;; `eldoc-documentation-function'.
;;; Code:
returns another string is acceptable.
Note that this variable has no effect, unless
-`eldoc-documentation-functions' handle it explicitly."
+`eldoc-documentation-function' handles it explicitly."
:type '(radio (function-item upcase)
(function-item downcase)
function)
truncated to make more of the arglist or documentation string visible.
Note that this variable has no effect, unless
-`eldoc-documentation-functions' handle it explicitly."
+`eldoc-documentation-function' handles it explicitly."
:type '(radio (const :tag "Always" t)
(const :tag "Never" nil)
(const :tag "Yes, but truncate symbol names if it will\
(defface eldoc-highlight-function-argument
'((t (:inherit bold)))
"Face used for the argument at point in a function's argument list.
-Note that this face has no effect unless the `eldoc-documentation-functions'
-handle it explicitly."
+Note that this face has no effect unless the `eldoc-documentation-function'
+handles it explicitly."
:group 'eldoc)
;;; No user options below here.
:group 'eldoc :lighter eldoc-minor-mode-string
(setq eldoc-last-message nil)
(cond
- ((not (eldoc-supported-p))
+ ((memq eldoc-documentation-function '(nil ignore))
(message "There is no ElDoc support in this buffer")
(setq eldoc-mode nil))
(eldoc-mode
If Global Eldoc mode is on, `eldoc-mode' will be enabled in all
buffers where it's applicable. These are buffers that have modes
-that have enabled eldoc support. See `eldoc-documentation-functions'."
+that have enabled eldoc support. See `eldoc-documentation-function'."
:group 'eldoc
:global t
:initialize 'custom-initialize-delay
eldoc-idle-delay nil
(lambda ()
(when (or eldoc-mode
- (and global-eldoc-mode (eldoc-supported-p)))
+ (and global-eldoc-mode
+ (not (memq eldoc-documentation-function
+ '(nil ignore)))))
(eldoc-print-current-symbol-info))))))
;; If user has changed the idle delay, update the timer.
\f
;;;###autoload
-(defvar eldoc-documentation-functions #'ignore
- "Hook to run to return doc string.
-A function in this hook should accept no args and return a
-one-line string for displaying documentation of a function,
-variable, etc. appropriate to the context around point.
+(defvar eldoc-documentation-function #'ignore
+ "Function to call to return doc string.
+The function of no args should return a one-line string for displaying
+doc about a function etc. appropriate to the context around point.
It should return nil if there's no doc appropriate for the context.
Typically doc is returned if point is on a function-like name or in its
arg list.
and the face `eldoc-highlight-function-argument', if they are to have any
effect.
-Major modes should modify this variable using `add-hook', for example:
- (add-hook \\='eldoc-documentation-functions #\\='foo-eldoc nil t)
+Major modes should modify this variable using `add-function', for example:
+ (add-function :before-until (local \\='eldoc-documentation-function)
+ #\\='foo-mode-eldoc-function)
so that the global documentation function (i.e. the default value of the
variable) is taken into account if the major mode specific function does not
return any documentation.")
-(define-obsolete-variable-alias 'eldoc-documentation-function
- 'eldoc-documentation-functions "25.2")
-
(defun eldoc-print-current-symbol-info ()
;; This is run from post-command-hook or some idle timer thing,
;; so we need to be careful that errors aren't ignored.
(when eldoc-last-message
(eldoc-message nil)
nil))
- (eldoc-message
- (run-hook-with-args-until-success 'eldoc-documentation-functions)))))
-
-(defun eldoc-supported-p ()
- "Return t if `eldoc-documentation-functions' has non-null elements."
- (if (listp eldoc-documentation-functions)
- (catch :eldoc-supported
- (mapc
- (lambda (fun)
- (when (not (memq fun '(nil ignore)))
- (throw :eldoc-supported t)))
- eldoc-documentation-functions)
- nil)
- (not (memq eldoc-documentation-functions '(nil ignore)))))
+ (eldoc-message (funcall eldoc-documentation-function)))))
;; 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