summaryrefslogtreecommitdiff
path: root/scheme/guile
diff options
context:
space:
mode:
Diffstat (limited to 'scheme/guile')
-rw-r--r--scheme/guile/geiser/completion.scm9
-rw-r--r--scheme/guile/geiser/emacs.scm2
-rw-r--r--scheme/guile/geiser/modules.scm13
3 files changed, 15 insertions, 9 deletions
diff --git a/scheme/guile/geiser/completion.scm b/scheme/guile/geiser/completion.scm
index 4906368..f4342bb 100644
--- a/scheme/guile/geiser/completion.scm
+++ b/scheme/guile/geiser/completion.scm
@@ -25,8 +25,9 @@
;;; Code:
(define-module (geiser completion)
- #:export (completions)
+ #:export (completions module-completions)
#:use-module (geiser utils)
+ #:use-module (geiser modules)
#:use-module (ice-9 session)
#:use-module (ice-9 regex))
@@ -53,4 +54,10 @@
(loop (cons 'let (body form)) (cons (cadr form) bindings)))
(else (loop (cdr form) bindings)))))
+(define (module-completions prefix)
+ (let* ((prefix (string-append "^" (regexp-quote prefix)))
+ (matcher (lambda (s) (string-match prefix s)))
+ (names (filter matcher (all-modules))))
+ (sort! names string<?)))
+
;;; completions.scm ends here
diff --git a/scheme/guile/geiser/emacs.scm b/scheme/guile/geiser/emacs.scm
index 13bd8db..106b8b1 100644
--- a/scheme/guile/geiser/emacs.scm
+++ b/scheme/guile/geiser/emacs.scm
@@ -32,10 +32,10 @@
ge:load-file
ge:autodoc
ge:completions
+ ge:module-completions
ge:symbol-location
ge:generic-methods
ge:symbol-documentation
- ge:all-modules
ge:module-children
ge:module-location
ge:callers
diff --git a/scheme/guile/geiser/modules.scm b/scheme/guile/geiser/modules.scm
index fdc3f3f..834e51c 100644
--- a/scheme/guile/geiser/modules.scm
+++ b/scheme/guile/geiser/modules.scm
@@ -57,13 +57,12 @@
(define (all-modules)
(let ((roots ((@@ (ice-9 session) root-modules))))
- (sort! (map (lambda (m)
- (format "~A" (module-name m)))
- (fold (lambda (m all)
- (append (all-child-modules m) all))
- roots
- roots))
- string<?)))
+ (map (lambda (m)
+ (format "~A" (module-name m)))
+ (fold (lambda (m all)
+ (append (all-child-modules m) all))
+ roots
+ roots))))
(define (module-children mod-name)
(let* ((elts (hash-fold classify-module-object