diff options
Diffstat (limited to 'geiser')
| -rw-r--r-- | geiser/emacs.scm | 2 | ||||
| -rw-r--r-- | geiser/introspection.scm | 10 | 
2 files changed, 9 insertions, 3 deletions
| diff --git a/geiser/emacs.scm b/geiser/emacs.scm index a3212af..79da237 100644 --- a/geiser/emacs.scm +++ b/geiser/emacs.scm @@ -25,7 +25,7 @@  ;;; Code:  (define-module (geiser emacs) -  #:re-export (ge:proc-args +  #:re-export (ge:arguments                 ge:completions                 ge:symbol-location                 ge:compile-file diff --git a/geiser/introspection.scm b/geiser/introspection.scm index 38c0b79..efe9a09 100644 --- a/geiser/introspection.scm +++ b/geiser/introspection.scm @@ -25,11 +25,17 @@  ;;; Code:  (define-module (geiser introspection) -  #:export (proc-args completions symbol-location) +  #:export (arguments completions symbol-location)    #:use-module (system vm program)    #:use-module (ice-9 session)    #:use-module (srfi srfi-1)) +(define (arguments sym . syms) +  (let loop ((sym sym) (syms syms)) +    (cond ((proc-args sym) => (lambda (args) (cons sym args))) +          ((null? syms) #f) +          (else (loop (car syms) (cdr syms)))))) +  (define (proc-args proc)    (obj-args (resolve-symbol proc))) @@ -73,7 +79,7 @@            ((pair? formals) (format-args (car formals)                                          (cdr formals)                                          (symbol-module name))) -          (else '())))) +          (else #f))))  (define (macro-args macro)    (let ((prog (macro-transformer macro))) | 
