branch: elpa/geiser-chez commit 6a675460f896431a3ca933b74f4e8f08a91c0869 Author: Jay Xu <jay.xu.krfant...@gmail.com> Commit: Jay Xu <jay.xu.krfant...@gmail.com>
show the parameter list of record type constructors, predicates, accessors and mutators. --- src/geiser/geiser.ss | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/geiser/geiser.ss b/src/geiser/geiser.ss index afa58c3..6546579 100644 --- a/src/geiser/geiser.ss +++ b/src/geiser/geiser.ss @@ -101,10 +101,21 @@ (if s (let ((form (s 'value))) (if (and (list? form) - (> (length form) 2)) + (>= (length form) 2)) (case (car form) [(lambda) (list (cadr form))] [(case-lambda) (map car (cdr form))] + [(record-predicate record-accessor) + (list (list (record-type-name (cadr (cadr form)))))] + [(record-mutator) + (let ([rtd (cadr (cadr form))] + [field-idx (caddr form)]) + (list (list (record-type-name rtd) + (vector-ref (record-type-field-names rtd) field-idx))))] + [(record-constructor) + (let* ([rcd (cadr (cadr form))] + [rtd (((inspect/object rcd) 'ref 'rtd) 'value)]) + (list (vector->list (record-type-field-names rtd))))] [else #f]) #f)) #f)))