summaryrefslogtreecommitdiff
path: root/modules/language/python/guilemod.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/guilemod.scm')
-rw-r--r--modules/language/python/guilemod.scm32
1 files changed, 11 insertions, 21 deletions
diff --git a/modules/language/python/guilemod.scm b/modules/language/python/guilemod.scm
index 1e3351e..c8dc413 100644
--- a/modules/language/python/guilemod.scm
+++ b/modules/language/python/guilemod.scm
@@ -1,6 +1,8 @@
(define-module (language python guilemod)
#:export ())
+(define-syntax-rule (aif it p . l) (let ((it p)) (if it . l)))
+
(define-syntax-rule (mk-commands path mod-C define-C define-exp-C define-set-C)
(begin
(define mod-C (resolve-module 'path))
@@ -241,27 +243,15 @@
(define pload
(let ((guile-load (@ (guile) primitive-load-path)))
(lambda (p . q)
- (let ((tag (make-prompt-tag)))
- (call-with-prompt
- tag
- (lambda ()
- (guile-load p (lambda () (abort-to-prompt tag))))
- (lambda (k)
- (let lp ((l *extension-dispatches*))
- (if (pair? l)
- (let lp2 ((u (caar l)))
- (if (pair? u)
- (let ((tag (make-prompt-tag)))
- (call-with-prompt
- tag
- (lambda ()
- (guile-load (string-append p "." (car u))
- (lambda () (abort-to-prompt tag))))
- (lambda (k) (lp2 (cdr u)))))
- (lp (cdr l))))))
- (if (pair? q)
- ((car q))
- (error (string-append "no code for path " p)))))))))
+ (let lp ((l *extension-dispatches*))
+ (if (pair? l)
+ (let lp2 ((u (caar l)))
+ (if (pair? u)
+ (aif it (%search-load-path (string-append p "." (car u)))
+ (apply guile-load it q)
+ (lp2 (cdr u)))
+ (lp (cdr l))))
+ (apply guile-load p q))))))
(define-set-G primitive-load-path pload)