diff options
| author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-11-27 00:54:59 +0100 | 
|---|---|---|
| committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-11-27 00:54:59 +0100 | 
| commit | 6d691763276e10f33eb2babf280314be9d8b4b6a (patch) | |
| tree | 8c359f6da62ea9c950512b6e80ba5b1553621e16 | |
| parent | 190290b181a713d804a003d503a2d8c98e573b03 (diff) | |
| download | geiser-guile-6d691763276e10f33eb2babf280314be9d8b4b6a.tar.gz geiser-guile-6d691763276e10f33eb2babf280314be9d8b4b6a.tar.bz2 | |
No more interning in the scheme reader
We avoid using elisp's read for symbols, reading uninterned ones
instead. And then, we cannot use symbols as keys in responses from
scheme: we're using strings instead.
| -rw-r--r-- | geiser/doc.scm | 29 | ||||
| -rw-r--r-- | geiser/utils.scm | 4 | ||||
| -rw-r--r-- | geiser/xref.scm | 8 | 
3 files changed, 19 insertions, 22 deletions
| diff --git a/geiser/doc.scm b/geiser/doc.scm index 640f4ad..ebb8e1d 100644 --- a/geiser/doc.scm +++ b/geiser/doc.scm @@ -33,7 +33,7 @@    (let ((args (obj-args (symbol->object id))))      (and args           `(,@(signature id args) -           (module . ,(symbol-module id)))))) +           ("module" . ,(symbol-module id))))))  (define (object-signature name obj)    (let ((args (obj-args obj))) @@ -49,15 +49,14 @@              ((list? args) args)              (else (list args)))))    (define (mkargs as) -    `((required ,@(arglst as 'required)) -      (optional ,@(arglst as 'optional) -                ,@(let ((rest (assq-ref as 'rest))) -                    (if rest (list "...") '()))) -      (key ,@(arglst as 'keyword)))) +    `(("required" ,@(arglst as 'required)) +      ("optional" ,@(arglst as 'optional) +       ,@(if (assq-ref as 'rest) (list "...") '())) +      ("key" ,@(arglst as 'keyword))))    (let* ((args-list (map mkargs (if (list? args-list) args-list '())))           (value (and (and detail (null? args-list))                       (value-str (symbol->object id))))) -    `(,id (args ,@args-list) ,@(if value `((value . ,value)) '())))) +    `(,id ("args" ,@args-list) ,@(if value `(("value" . ,value)) '()))))  (define default-macro-args '(((required ...)))) @@ -186,8 +185,8 @@  (define (symbol-documentation sym)    (let ((obj (symbol->object sym)))      (if obj -        `((signature . ,(or (obj-signature sym obj #f) sym)) -          (docstring . ,(docstring sym obj)))))) +        `(("signature" . ,(or (obj-signature sym obj #f) sym)) +          ("docstring" . ,(docstring sym obj))))))  (define (docstring sym obj)    (define (valuable?) @@ -229,23 +228,23 @@           (elts (map elt-sort elts))           (subs (map (lambda (m) (list (module-name m)))                      (submodules (resolve-module mod-name #f))))) -    (list (cons 'modules subs) -          (cons 'procs (car elts)) -          (cons 'syntax (cadr elts)) -          (cons 'vars (caddr elts))))) +    (list (cons "modules" subs) +          (cons "procs" (car elts)) +          (cons "syntax" (cadr elts)) +          (cons "vars" (caddr elts)))))  (define (classify-module-object name var elts)    (let ((obj (and (variable-bound? var)                    (variable-ref var))))      (cond ((or (not obj) (module? obj)) elts)            ((or (procedure? obj) (program? obj)) -           (list (cons (list name `(signature . ,(obj-signature name obj))) +           (list (cons (list name `("signature" . ,(obj-signature name obj)))                         (car elts))                   (cadr elts)                   (caddr elts)))            ((macro? obj)             (list (car elts) -                 (cons (list name `(signature . ,(obj-signature name obj))) +                 (cons (list name `("signature" . ,(obj-signature name obj)))                         (cadr elts))                   (caddr elts)))            (else (list (car elts) diff --git a/geiser/utils.scm b/geiser/utils.scm index 632fe76..654cae8 100644 --- a/geiser/utils.scm +++ b/geiser/utils.scm @@ -30,8 +30,8 @@            (else (loop (cdr d) (cons (car d) s))))))  (define (make-location file line) -  (list (cons 'file (if (string? file) file '())) -        (cons 'line (if (number? line) (+ 1 line) '())))) +  (list (cons "file" (if (string? file) file '())) +        (cons "line" (if (number? line) (+ 1 line) '()))))  (define (sort-symbols! syms)    (let ((cmp (lambda (l r) diff --git a/geiser/xref.scm b/geiser/xref.scm index 7dfa8af..ba509e7 100644 --- a/geiser/xref.scm +++ b/geiser/xref.scm @@ -40,9 +40,9 @@  (define (make-xref proc name module)    (and proc -       `((location . ,(or (program-location proc) (symbol-location name))) -         (signature . ,(object-signature name proc)) -         (module . ,(or module '()))))) +       `(("location" . ,(or (program-location proc) (symbol-location name))) +         ("signature" . ,(object-signature name proc)) +         ("module" . ,(or module '())))))  (define (program-location p)    (cond ((not (program? p)) #f) @@ -82,5 +82,3 @@      (if (null? dirs) #f          (let ((candidate (string-append (car dirs) "/" path)))            (if (file-exists? candidate) candidate (loop (cdr dirs))))))) - -;;; xref.scm ends here | 
