summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/eldoc.el
diff options
context:
space:
mode:
authorDave Love <fx@gnu.org>2003-09-06 17:32:31 +0000
committerDave Love <fx@gnu.org>2003-09-06 17:32:31 +0000
commita3d819fcaac6cbb5b7e207dc234f864086c858ff (patch)
tree4f8170b87294f8bcf5a7cffef09f6a5455aeda52 /lisp/emacs-lisp/eldoc.el
parent30955b19cee0345f1bdbee9dad9167e3a534865d (diff)
(eldoc-print-current-symbol-info-function):
New. (eldoc-print-current-symbol-info): Use it.
Diffstat (limited to 'lisp/emacs-lisp/eldoc.el')
-rw-r--r--lisp/emacs-lisp/eldoc.el40
1 files changed, 28 insertions, 12 deletions
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index b5f37487ac..650b385ff4 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -7,7 +7,7 @@
;; Keywords: extensions
;; Created: 1995-10-06
-;; $Id: eldoc.el,v 1.25 2003/05/06 17:36:16 lektu Exp $
+;; $Id: eldoc.el,v 1.26 2003/09/01 15:45:22 miles Exp $
;; This file is part of GNU Emacs.
@@ -40,11 +40,14 @@
;; One useful way to enable this minor mode is to put the following in your
;; .emacs:
;;
-;; (autoload 'turn-on-eldoc-mode "eldoc" nil t)
;; (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode)
;; (add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode)
;; (add-hook 'ielm-mode-hook 'turn-on-eldoc-mode)
+;; Major modes for other languages may use Eldoc by defining an
+;; appropriate function as the buffer-local value of
+;; `eldoc-print-current-symbol-info-function'.
+
;;; Code:
(require 'help-fns) ;For fundoc-usage handling functions.
@@ -233,19 +236,32 @@ With prefix ARG, turn ElDoc mode on if and only if ARG is positive."
(not (eq (selected-window) (minibuffer-window)))))
+(defvar eldoc-print-current-symbol-info-function nil
+ "If non-nil, 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.
+
+This variable is expected to be made buffer-local by modes (other than
+Emacs Lisp mode) that support Eldoc.")
+
(defun eldoc-print-current-symbol-info ()
(condition-case err
(and (eldoc-display-message-p)
- (let* ((current-symbol (eldoc-current-symbol))
- (current-fnsym (eldoc-fnsym-in-current-sexp))
- (doc (cond
- ((eq current-symbol current-fnsym)
- (or (eldoc-get-fnsym-args-string current-fnsym)
- (eldoc-get-var-docstring current-symbol)))
- (t
- (or (eldoc-get-var-docstring current-symbol)
- (eldoc-get-fnsym-args-string current-fnsym))))))
- (eldoc-message doc)))
+ (if eldoc-print-current-symbol-info-function
+ (eldoc-message (funcall eldoc-print-current-symbol-info-function))
+ (let* ((current-symbol (eldoc-current-symbol))
+ (current-fnsym (eldoc-fnsym-in-current-sexp))
+ (doc (cond
+ ((eq current-symbol current-fnsym)
+ (or (eldoc-get-fnsym-args-string current-fnsym)
+ (eldoc-get-var-docstring current-symbol)))
+ (t
+ (or (eldoc-get-var-docstring current-symbol)
+ (eldoc-get-fnsym-args-string current-fnsym))))))
+ (eldoc-message doc))))
;; This is run from post-command-hook or some idle timer thing,
;; so we need to be careful that errors aren't ignored.
(error (message "eldoc error: %s" err))))