diff options
Diffstat (limited to 'elisp')
| -rw-r--r-- | elisp/geiser-autodoc.el | 36 | 
1 files changed, 19 insertions, 17 deletions
| diff --git a/elisp/geiser-autodoc.el b/elisp/geiser-autodoc.el index 35a9834..5bdfb1a 100644 --- a/elisp/geiser-autodoc.el +++ b/elisp/geiser-autodoc.el @@ -84,12 +84,20 @@ when `geiser-autodoc-display-module-p' is on."    (cond ((null args) nil)          ((listp args)           (cons (car args) (geiser-autodoc--sanitize-args (cdr args)))) -        (t '(...)))) +        (t '...))) + +(defun geiser-autodoc--format-arg (a) +  (if (and (listp a) (keywordp (car a))) +      (if (and (cdr a) (listp (cdr a))) +          (format "(#%s %s)" (car a) (cadr a)) +        (format "(#%s)" (car a))) +    (format "%s" a)))  (defun geiser-autodoc--insert-arg-group (args current &optional pos) +  (when args (insert " "))    (dolist (a (geiser-autodoc--sanitize-args args))      (let ((p (point))) -      (insert (format "%s" a)) +      (insert (geiser-autodoc--format-arg a))        (when (or (and (numberp pos)                       (numberp current)                       (setq current (1+ current)) @@ -107,22 +115,16 @@ when `geiser-autodoc-display-module-p' is on."  (defun geiser-autodoc--insert-args (args pos prev)    (let ((cpos 1)          (reqs (cdr (assoc 'required args))) -        (opts (cdr (assoc 'optional args))) +        (opts (mapcar (lambda (a) +                        (if (and (symbolp a) (not (eq a '...))) (list a) a)) +                      (cdr (assoc 'optional args))))          (keys (cdr (assoc 'key args)))) -    (when reqs -      (insert " ") -      (setq cpos -            (geiser-autodoc--insert-arg-group reqs -                                              cpos -                                              (and (not (zerop pos)) pos)))) -    (when opts -      (insert " [") -      (setq cpos (geiser-autodoc--insert-arg-group opts cpos pos))) -    (when keys -      (insert " [") -      (geiser-autodoc--insert-arg-group keys prev nil) -      (insert "]")) -    (when opts (insert "]")))) +    (setq cpos +          (geiser-autodoc--insert-arg-group reqs +                                            cpos +                                            (and (not (zerop pos)) pos))) +    (setq cpos (geiser-autodoc--insert-arg-group opts cpos pos)) +    (geiser-autodoc--insert-arg-group keys prev nil)))  (defsubst geiser-autodoc--id-name (proc module)    (let ((str (if module | 
