diff options
author | jao <jao@gnu.org> | 2022-10-14 04:33:59 +0100 |
---|---|---|
committer | jao <jao@gnu.org> | 2022-10-14 04:33:59 +0100 |
commit | 1e91a62f72d5403dc2651ab3f2156c446cbeed41 (patch) | |
tree | 27006ec81d96cb78d5a037a52e8584897ddba52c /src/geiser/geiser-data.ss | |
parent | b91775c9a778ffbb91a9539ed2b1236ae06c68a6 (diff) | |
download | geiser-chez-1e91a62f72d5403dc2651ab3f2156c446cbeed41.tar.gz geiser-chez-1e91a62f72d5403dc2651ab3f2156c446cbeed41.tar.bz2 |
fix: multiple arities in chez-docs signatures
Diffstat (limited to 'src/geiser/geiser-data.ss')
-rw-r--r-- | src/geiser/geiser-data.ss | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/geiser/geiser-data.ss b/src/geiser/geiser-data.ss index f9fc81e..0176e59 100644 --- a/src/geiser/geiser-data.ss +++ b/src/geiser/geiser-data.ss @@ -17,20 +17,23 @@ (library (geiser-data) - (export symbol-signature symbol-labels) + (export symbol-signatures symbol-labels) (import (chezscheme)) (define (make-hash d) (let ((h (make-hashtable symbol-hash eq?))) (for-each (lambda (x) (let ((id (car x)) - (sg (let ((a (with-input-from-string (cadr x) read))) - (if (list? a) (cdr a) a)))) - (symbol-hashtable-set! h id (cons id (cons sg (cddr x)))))) + (sgs (let* ((s (format "(~a)" (cadr x))) + (as (with-input-from-string s read))) + (and (list? as) + (list? (car as)) + (map cdr (remove '~ as)))))) + (symbol-hashtable-set! h id (cons id (cons sgs (cddr x)))))) d) h)) - (define (symbol-signature s) + (define (symbol-signatures s) (let ((x (or (symbol-hashtable-ref csug-data s #f) (symbol-hashtable-ref tspl-data s #f)))) (and x (list? (cadr x)) (cadr x)))) |