summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-02-09 12:14:04 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-02-09 12:14:04 +0100
commit6f7e0e15ac672b13efce7be815d4c550d3ecdf16 (patch)
tree4b7ecd8e0980f93951e81110989af2f67b8308db
parent4e7c148fef58281345c1d4d0815732e27977da71 (diff)
downloadgeiser-guile-6f7e0e15ac672b13efce7be815d4c550d3ecdf16.tar.gz
geiser-guile-6f7e0e15ac672b13efce7be815d4c550d3ecdf16.tar.bz2
Better argument position detection in autodoc.
-rw-r--r--elisp/geiser-syntax.el18
-rw-r--r--scheme/geiser/introspection.scm2
2 files changed, 13 insertions, 7 deletions
diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el
index 07aafbb..9a476ce 100644
--- a/elisp/geiser-syntax.el
+++ b/elisp/geiser-syntax.el
@@ -52,14 +52,20 @@
;;; Code parsing:
+(defsubst geiser-syntax--end-of-thing ()
+ (let ((sc (syntax-class (syntax-after (point)))))
+ (when (= sc 7) (forward-char))
+ (cond ((nth 3 (syntax-ppss))
+ (skip-syntax-forward "^\"")
+ (forward-char))
+ ((= sc 5) (forward-char))
+ ((not (or (= sc 0) (= sc 12))) ;; comment, whitespace
+ (ignore-errors (forward-sexp))))
+ (point)))
+
(defun geiser-syntax--enclosing-form-data ()
(save-excursion
- (let ((p (progn (ignore-errors
- (unless (zerop (car (syntax-after (point))))
- (forward-sexp)
- (when (= 7 (car (syntax-after (point))))
- (forward-char))))
- (point)))
+ (let ((p (geiser-syntax--end-of-thing))
(arg-no 0)
(proc))
(condition-case nil
diff --git a/scheme/geiser/introspection.scm b/scheme/geiser/introspection.scm
index eff9573..0c759d5 100644
--- a/scheme/geiser/introspection.scm
+++ b/scheme/geiser/introspection.scm
@@ -51,7 +51,7 @@
(req (first arity))
(opt (third arity)))
(format-args (map (lambda (n)
- (string->symbol (format "arg~A" n)))
+ (string->symbol (format "arg~A" (+ 1 n))))
(iota req))
(and opt 'rest))))