emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/geiser-guile c34d042 091/284: Yet another deklugdification


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-guile c34d042 091/284: Yet another deklugdification: locals scanning moved to elisp.
Date: Sun, 1 Aug 2021 18:29:22 -0400 (EDT)

branch: elpa/geiser-guile
commit c34d04293ed5e2e67e4ed9422dbea54abd5d7f38
Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
Commit: Jose Antonio Ortega Ruiz <jao@gnu.org>

    Yet another deklugdification: locals scanning moved to elisp.
    
    ... and say goodbye to the ugly parse partial sexp, reducing not only
    sloppy code, but also duplication and data transfers.
---
 geiser/completion.scm | 25 +++----------------------
 1 file changed, 3 insertions(+), 22 deletions(-)

diff --git a/geiser/completion.scm b/geiser/completion.scm
index f4342bb..564b8f5 100644
--- a/geiser/completion.scm
+++ b/geiser/completion.scm
@@ -31,28 +31,9 @@
   #:use-module (ice-9 session)
   #:use-module (ice-9 regex))
 
-(define (completions prefix . context)
-  (let ((context (and (not (null? context)) (car context)))
-        (prefix (string-append "^" (regexp-quote prefix))))
-    (append (filter (lambda (s) (string-match prefix s))
-                    (map symbol->string (local-bindings context)))
-            (sort! (map symbol->string (apropos-internal prefix)) string<?))))
-
-(define (local-bindings form)
-  (define (body f) (if (> (length f) 2) (cddr f) '()))
-  (let loop ((form form) (bindings '()))
-    (cond ((not (pair? form)) bindings)
-          ((list? (car form))
-           (loop (cdr form) (append (local-bindings (car form)) bindings)))
-          ((and (list? form) (< (length form) 2)) bindings)
-          ((memq (car form) '(define define* lambda))
-           (loop (body form) (append (pair->list (cadr form)) bindings)))
-          ((and (memq (car form) '(let let* letrec letrec*))
-                (list? (cadr form)))
-           (loop (body form) (append (map car (cadr form)) bindings)))
-          ((and (eq? 'let (car form)) (symbol? (cadr form)))
-           (loop (cons 'let (body form)) (cons (cadr form) bindings)))
-          (else (loop (cdr form) bindings)))))
+(define (completions prefix)
+  (let ((prefix (string-append "^" (regexp-quote prefix))))
+    (sort! (map symbol->string (apropos-internal prefix)) string<?)))
 
 (define (module-completions prefix)
   (let* ((prefix (string-append "^" (regexp-quote prefix)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]