summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2010-07-28 01:08:25 +0200
committerJose Antonio Ortega Ruiz <jao@gnu.org>2010-07-28 01:08:25 +0200
commit2a76df54515f4a0f3adc4e5e401c46434bb210e0 (patch)
treea15f5755ebf5cc362fbc6c718b469dd8c4bd5832 /elisp
parent0b410d7b466f86afeb2848be5e3b7a236d7da208 (diff)
downloadgeiser-2a76df54515f4a0f3adc4e5e401c46434bb210e0.tar.gz
geiser-2a76df54515f4a0f3adc4e5e401c46434bb210e0.tar.bz2
Displaying variable values in autodoc.
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-autodoc.el7
-rw-r--r--elisp/geiser-syntax.el31
2 files changed, 20 insertions, 18 deletions
diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el
index 06a10e7..1af0ae2 100644
--- a/elisp/geiser-autodoc.el
+++ b/elisp/geiser-autodoc.el
@@ -131,11 +131,16 @@ when `geiser-autodoc-display-module-p' is on."
(defun geiser-autodoc--str* (full-signature)
(geiser-autodoc--str (list (car full-signature)) full-signature))
+(defsubst geiser-autodoc--value-str (proc module value)
+ (let ((name (geiser-autodoc--proc-name proc module)))
+ (if value (format "%s => %s" name value) name)))
+
(defun geiser-autodoc--str (desc signature)
(let ((proc (car desc))
(args (cdr (assoc 'args signature)))
(module (cdr (assoc 'module signature))))
- (if (not args) (geiser-autodoc--proc-name proc module)
+ (if (not args)
+ (geiser-autodoc--value-str proc module (cdr (assoc 'value signature)))
(save-current-buffer
(set-buffer (geiser-syntax--font-lock-buffer))
(erase-buffer)
diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el
index 6240e75..3e8d590 100644
--- a/elisp/geiser-syntax.el
+++ b/elisp/geiser-syntax.el
@@ -217,24 +217,21 @@
(if (cdr (last p)) (1+ (safe-length p)) (length p)))
(defun geiser-syntax--scan-sexps (&optional begin)
- (let ((path))
+ (let* ((fst (symbol-at-point))
+ (path (and fst `((,fst 0)))))
(save-excursion
- (save-restriction
-;; (narrow-to-region (or begin (point-min)) (1+ (point)))
- (geiser-syntax--skip-comment/string)
- (while (not (zerop (geiser-syntax--nesting-level)))
- (let ((boundary (1+ (point))))
- (backward-up-list)
- (let ((form
- (nth-value 0 (geiser-syntax--form-after-point boundary))))
- (when (and (listp form) (car form) (symbolp (car form)))
- (let* ((len-1 (1- (geiser-syntax--pair-length form)))
- (prev (and (> len-1 1) (nth (1- len-1) form)))
- (prev (and (keywordp prev) (list prev))))
- (push `(,(car form) ,len-1 ,@prev) path))))))
- (if path (nreverse path)
- (let ((fst (symbol-at-point)))
- (and fst `((,fst 0)))))))))
+ (geiser-syntax--skip-comment/string)
+ (while (not (zerop (geiser-syntax--nesting-level)))
+ (let ((boundary (1+ (point))))
+ (backward-up-list)
+ (let ((form
+ (nth-value 0 (geiser-syntax--form-after-point boundary))))
+ (when (and (listp form) (car form) (symbolp (car form)))
+ (let* ((len-1 (1- (geiser-syntax--pair-length form)))
+ (prev (and (> len-1 1) (nth (1- len-1) form)))
+ (prev (and (keywordp prev) (list prev))))
+ (push `(,(car form) ,len-1 ,@prev) path)))))))
+ (nreverse path)))
(defsubst geiser-syntax--binding-form-p (bfs sbfs f)
(or (memq f '(define define* lambda let let* letrec))