summaryrefslogtreecommitdiff
path: root/elisp/geiser-autodoc.el
diff options
context:
space:
mode:
Diffstat (limited to 'elisp/geiser-autodoc.el')
-rw-r--r--elisp/geiser-autodoc.el21
1 files changed, 11 insertions, 10 deletions
diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el
index f9db008..51bad79 100644
--- a/elisp/geiser-autodoc.el
+++ b/elisp/geiser-autodoc.el
@@ -12,6 +12,7 @@
;;; Code:
+(require 'geiser-edit)
(require 'geiser-eval)
(require 'geiser-syntax)
(require 'geiser-custom)
@@ -178,16 +179,16 @@ you can set this variable to nil to avoid them."
(defun geiser-autodoc--autodoc (path callback &optional signs)
(let ((signs (or signs
- (geiser-autodoc--get-signatures (mapcar 'car path) callback)))
- (p (car path))
- (s))
- (if callback
- t
- (while (and p (not s))
- (unless (setq s (cdr (assoc (car p) signs)))
- (setq p (car path))
- (setq path (cdr path))))
- (when s (geiser-autodoc--str p s)))))
+ (geiser-autodoc--get-signatures (mapcar 'car path) callback))))
+ (or (and callback t)
+ (let ((p (car path))
+ (s))
+ (while (and p (not s))
+ (setq s (or (cdr (assoc (car p) signs))
+ (cdr (geiser-edit--find-def (car p)))))
+ (setq p (car path) path (cdr path)))
+ (cond ((stringp s) s)
+ (s (geiser-autodoc--str p s)))))))
;;; Autodoc functions: