summaryrefslogtreecommitdiff
path: root/elisp/geiser-doc.el
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-04-27 21:28:51 +0200
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-04-27 21:28:51 +0200
commit11ed530d2fdf41ab91bf2166bb443ff89785576d (patch)
tree1cb59f0e0e98951a9d3889f7d0592b89fa5f4207 /elisp/geiser-doc.el
parent43e8b54f94c054aa08e3d477ef4008631af13ce5 (diff)
downloadgeiser-11ed530d2fdf41ab91bf2166bb443ff89785576d.tar.gz
geiser-11ed530d2fdf41ab91bf2166bb443ff89785576d.tar.bz2
Support for external help functions (and application to PLT).
Diffstat (limited to 'elisp/geiser-doc.el')
-rw-r--r--elisp/geiser-doc.el38
1 files changed, 23 insertions, 15 deletions
diff --git a/elisp/geiser-doc.el b/elisp/geiser-doc.el
index 60800f4..2fc9f69 100644
--- a/elisp/geiser-doc.el
+++ b/elisp/geiser-doc.el
@@ -157,6 +157,13 @@
;;; Commands:
+(make-variable-buffer-local
+ (defvar geiser-doc--external-help-function nil))
+
+(defun geiser-doc--external-help (symbol module)
+ (and geiser-doc--external-help-function
+ (funcall geiser-doc--external-help-function symbol module)))
+
(defun geiser-doc--get-docstring (symbol module)
(geiser-eval--send/result `(:eval ((:ge symbol-documentation) ',symbol) ,module)))
@@ -164,21 +171,22 @@
(geiser-eval--send/result `(:eval ((:ge module-children) (:module ,module)))))
(defun geiser-doc-symbol (symbol &optional module impl)
- (let* ((module (or module (geiser-eval--get-module)))
- (impl (or impl geiser-impl--implementation))
- (ds (geiser-doc--get-docstring symbol module)))
- (if (or (not ds) (not (listp ds)))
- (message "No documentation available for '%s'" symbol)
- (geiser-doc--with-buffer
- (erase-buffer)
- (geiser-doc--insert-title (cdr (assoc 'signature ds)))
- (newline)
- (insert (or (cdr (assoc 'docstring ds)) ""))
- (goto-line (point-min))
- (setq geiser-doc--buffer-link
- (geiser-doc--history-push
- (geiser-doc--make-link symbol module impl))))
- (geiser-doc--pop-to-buffer))))
+ (let ((module (or module (geiser-eval--get-module))))
+ (unless (geiser-doc--external-help symbol module)
+ (let ((impl (or impl geiser-impl--implementation))
+ (ds (geiser-doc--get-docstring symbol module)))
+ (if (or (not ds) (not (listp ds)))
+ (message "No documentation available for '%s'" symbol)
+ (geiser-doc--with-buffer
+ (erase-buffer)
+ (geiser-doc--insert-title (cdr (assoc 'signature ds)))
+ (newline)
+ (insert (or (cdr (assoc 'docstring ds)) ""))
+ (goto-line (point-min))
+ (setq geiser-doc--buffer-link
+ (geiser-doc--history-push
+ (geiser-doc--make-link symbol module impl))))
+ (geiser-doc--pop-to-buffer))))))
(defun geiser-doc-symbol-at-point (&optional arg)
"Get docstring for symbol at point.