[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/geiser-chibi 2ca82e6 04/38: geiser-chibi: Implement autodo
From: |
Philip Kaludercic |
Subject: |
[nongnu] elpa/geiser-chibi 2ca82e6 04/38: geiser-chibi: Implement autodoc for procedures in known modules |
Date: |
Sun, 1 Aug 2021 18:26:15 -0400 (EDT) |
branch: elpa/geiser-chibi
commit 2ca82e65d449cc699a0185fd27eaf2392a8536b6
Author: Peter <craven@gmx.net>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>
geiser-chibi: Implement autodoc for procedures in known modules
---
scheme/chibi/geiser/geiser.scm | 45 +++++++++++++++++++++++++++++++++++++++++-
scheme/chibi/geiser/geiser.sld | 2 +-
2 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/scheme/chibi/geiser/geiser.scm b/scheme/chibi/geiser/geiser.scm
index fe0569e..79a1b4e 100644
--- a/scheme/chibi/geiser/geiser.scm
+++ b/scheme/chibi/geiser/geiser.scm
@@ -40,8 +40,51 @@
(string-contains prefix (write-to-string module))))
modules)))))
+(define (procedure-arglist id fun)
+ (let ((arglist (lambda-params (procedure-analysis fun))))
+ (if (pair? arglist)
+ (let loop ((arglist arglist)
+ (optionals? #f)
+ (required '())
+ (optional '()))
+ (cond ((null? arglist)
+ `(,id ("args" (("required" ,@(reverse required))
+ ("optional" ,@(reverse optional))
+ ("key")
+ ("module" ,(let ((mod (containing-module
fun))) (if mod (car mod) #f)))))))
+ ((symbol? arglist)
+ (loop '()
+ #t
+ required
+ (cons "..." (cons arglist optional))))
+ (else
+ (loop
+ (cdr arglist)
+ optionals?
+ (if optionals? required (cons (car arglist) required))
+ (if optionals? (cons (car arglist) optional) optional)))))
+ '())))
+
+(define (geiser:operator-arglist id)
+ (let ((binding (eval id)))
+ (cond ((procedure? binding)
+ (if (opcode? binding)
+ '()
+ (procedure-arglist id binding)))
+ (else
+ '()))))
+
(define (geiser:autodoc ids . rest)
- '())
+ rest
+ (cond ((null? ids) '())
+ ((not (list? ids))
+ (geiser:autodoc (list ids)))
+ ((not (symbol? (car ids)))
+ (geiser:autodoc (cdr ids)))
+ (else
+ (map (lambda (id)
+ (geiser:operator-arglist id))
+ ids))))
(define (geiser:no-values)
#f)
diff --git a/scheme/chibi/geiser/geiser.sld b/scheme/chibi/geiser/geiser.sld
index a6e2704..56abab3 100644
--- a/scheme/chibi/geiser/geiser.sld
+++ b/scheme/chibi/geiser/geiser.sld
@@ -5,5 +5,5 @@
geiser:module-completions
geiser:no-values
geiser:newline)
- (import (scheme small) (chibi modules) (chibi) (meta) (chibi string) (srfi
1) (srfi 95))
+ (import (scheme small) (chibi modules) (chibi) (meta) (chibi ast) (chibi
string) (srfi 1) (srfi 95))
(include "geiser.scm"))
- [nongnu] branch elpa/geiser-chibi created (now 6f59291), Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 243a860 01/38: Add preliminary support for Chibi Scheme, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi b943a99 02/38: Use faster module list, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 2ca82e6 04/38: geiser-chibi: Implement autodoc for procedures in known modules,
Philip Kaludercic <=
- [nongnu] elpa/geiser-chibi 6d73a7e 07/38: Catch eval and send back eval exception information, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 8588086 11/38: Improve geiser:eval to return output Add docstring to geiser:output., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi a672720 06/38: Add string combinators module, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 88a5b09 08/38: Add scheme subroutine to find files implementing modules to chibi., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi b260b6d 09/38: Remove debug printing. Align par-style with geiser., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 397ba42 13/38: Temporarily fix the symbol-module by appending (current-directory)., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi f52a4ec 16/38: Fix indenting and parenthesis positioning., Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 2a4fb4f 10/38: Add a TODO tag about symbol-location to geiser.sld, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi c860e3a 12/38: Add error reporting about missing symbols to geiser-edit.el, Philip Kaludercic, 2021/08/01
- [nongnu] elpa/geiser-chibi 0272694 05/38: Use (car (process-lines ...)) instead of (shell-command ...), Philip Kaludercic, 2021/08/01