summaryrefslogtreecommitdiff
path: root/geiser/doc.scm
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2018-01-30 23:45:41 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2018-01-30 23:45:41 +0100
commite975e10772f8c0595dfed21f1ac2ad783deeb9f2 (patch)
tree80fb033ca2b342f954d93674c6e26434c7e307c7 /geiser/doc.scm
parenta1078b906f73bfe69754390908083ae8fab48b3f (diff)
downloadgeiser-guile-e975e10772f8c0595dfed21f1ac2ad783deeb9f2.tar.gz
geiser-guile-e975e10772f8c0595dfed21f1ac2ad783deeb9f2.tar.bz2
guile 2.2: program-arities and program-module reloaded
Those two procedures are gone in these 2.2 times, and things like autodoc and xref were broken as a result. With Andy's help, apparently good enough approximations of their functionality are now in place: let's see how they go.
Diffstat (limited to 'geiser/doc.scm')
-rw-r--r--geiser/doc.scm11
1 files changed, 7 insertions, 4 deletions
diff --git a/geiser/doc.scm b/geiser/doc.scm
index 185b204..9f28f7f 100644
--- a/geiser/doc.scm
+++ b/geiser/doc.scm
@@ -1,6 +1,6 @@
;;; doc.scm -- procedures providing documentation on scheme objects
-;; Copyright (C) 2009, 2010 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2018 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -17,6 +17,7 @@
#:use-module (geiser utils)
#:use-module (geiser modules)
#:use-module (system vm program)
+ #:use-module (system vm debug)
#:use-module (ice-9 session)
#:use-module (ice-9 documentation)
#:use-module (ice-9 regex)
@@ -75,11 +76,13 @@
((macro? obj) default-macro-args)
(else 'variable)))
+(define (program-arities prog)
+ (let ((addrs (program-address-range prog)))
+ (when (pair? addrs) (find-program-arities (car addrs)))))
+
(define (arguments proc)
(define (p-args prog)
- (let ((as (map (lambda (a)
- ((@@ (system vm program) arity->arguments-alist) prog a))
- (or (program-arities prog) '()))))
+ (let ((as (map arity-arguments-alist (or (program-arities prog) '()))))
(and (not (null? as)) as)))
(define (clist f) (lambda (x) (let ((y (f x))) (and y (list y)))))
(cond ((is-a? proc <generic>) (generic-args proc))