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

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

[nongnu] elpa/geiser-guile 0513d1c 177/284: Guile: using meta-commands t


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-guile 0513d1c 177/284: Guile: using meta-commands to talk with Guile
Date: Sun, 1 Aug 2021 18:29:40 -0400 (EDT)

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

    Guile: using meta-commands to talk with Guile
---
 geiser/emacs.scm      | 48 +++++++++++++++++++++---------------------------
 geiser/evaluation.scm | 17 +++++++++++------
 2 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/geiser/emacs.scm b/geiser/emacs.scm
index af1a052..c3696f8 100644
--- a/geiser/emacs.scm
+++ b/geiser/emacs.scm
@@ -10,37 +10,31 @@
 ;; Start date: Sun Feb 08, 2009 18:39
 
 (define-module (geiser emacs)
-  #:re-export (ge:macroexpand
-               ge:compile-file
-               ge:load-file
-               ge:autodoc
-               ge:completions
-               ge:module-completions
-               ge:symbol-location
-               ge:generic-methods
-               ge:symbol-documentation
-               ge:module-exports
-               ge:module-location
-               ge:callers
-               ge:callees
-               ge:find-file)
-  #:export (ge:compile
-            ge:no-values
-            ge:newline)
   #:use-module (ice-9 match)
+  #:use-module (system repl command)
   #:use-module (geiser evaluation)
   #:use-module ((geiser modules) :renamer (symbol-prefix-proc 'ge:))
   #:use-module ((geiser completion) :renamer (symbol-prefix-proc 'ge:))
   #:use-module ((geiser xref) :renamer (symbol-prefix-proc 'ge:))
   #:use-module ((geiser doc) :renamer (symbol-prefix-proc 'ge:)))
 
-(define (ge:no-values) (values))
-(define ge:newline newline)
-
-(define (ge:compile form mod)
-  (match form
-    (`((@ (geiser emacs) . ,_) . ,_) (compile/no-warns form mod))
-    (_ (compile/warns form mod))))
-
-
-;;; emacs.scm ends here
+(define this-module (resolve-module '(geiser emacs)))
+
+(define-meta-command ((geiser-no-values geiser) repl)
+  "geiser-no-values
+No-op command used internally by Geiser."
+  (values))
+
+(define-meta-command ((geiser-eval geiser) repl mod form . args)
+  "geiser-eval
+Meta-command used by Geiser to evaluate and compile code."
+  (display form) (newline)
+  (if (null? args)
+      (ge:compile form mod)
+      (let ((proc (eval form this-module)))
+        (ge:eval `(,proc ,@args) mod))))
+
+(define-meta-command ((geiser-load-file geiser) repl file)
+  "geiser-load-file
+Meta-command used by Geiser to load and compile files."
+  (ge:compile-file file))
diff --git a/geiser/evaluation.scm b/geiser/evaluation.scm
index 1cc21a7..ef082db 100644
--- a/geiser/evaluation.scm
+++ b/geiser/evaluation.scm
@@ -10,8 +10,8 @@
 ;; Start date: Mon Mar 02, 2009 02:46
 
 (define-module (geiser evaluation)
-  #:export (compile/warns
-            compile/no-warns
+  #:export (ge:compile
+            ge:eval
             ge:macroexpand
             ge:compile-file
             ge:load-file
@@ -71,10 +71,7 @@
                    (set! result (thunk)))))))
     (write-result result output)))
 
-(define (compile/no-warns form module)
-  (compile* form module '()))
-
-(define (compile/warns form module)
+(define (ge:compile form module)
   (compile* form module compile-opts))
 
 (define (compile* form module-name opts)
@@ -92,6 +89,14 @@
                  (lambda vs (map object->string vs))))))
     (call-with-result ev)))
 
+(define (ge:eval form module-name)
+  (let* ((module (or (find-module module-name) (current-module)))
+         (ev (lambda ()
+               (call-with-values
+                   (lambda () (eval form module))
+                 (lambda vs (map object->string vs))))))
+    (call-with-result ev)))
+
 (define (ge:compile-file path)
   (call-with-result
    (lambda ()



reply via email to

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