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

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

[nongnu] elpa/geiser-racket c07a42d 034/191: Racket: using meta-commands


From: Philip Kaludercic
Subject: [nongnu] elpa/geiser-racket c07a42d 034/191: Racket: using meta-commands instead of dynamic-require (#30347)
Date: Sun, 1 Aug 2021 18:31:55 -0400 (EDT)

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

    Racket: using meta-commands instead of dynamic-require (#30347)
    
    - Much more robust: dynamic-require might not have been defined in the
      REPL's namespace.
    - Fixes #30347 as a side-effect: now all Geiser functions work with
      typed scheme too.
---
 elisp/geiser-racket.el | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/elisp/geiser-racket.el b/elisp/geiser-racket.el
index f38a4e9..0150772 100644
--- a/elisp/geiser-racket.el
+++ b/elisp/geiser-racket.el
@@ -93,12 +93,19 @@ This function uses `geiser-racket-init-file' if it exists."
     (if (re-search-forward
          "^\\(?:#lang\\|(module +[^ ]+?\\) +\\([^ ]+?\\|([^)]+)\\) *$" nil t)
         (car (geiser-syntax--read-from-string (match-string-no-properties 1)))
-      :f)))
-
-(defun geiser-racket--geiser-procedure (proc)
-  (if (memq proc '(eval compile))
-      `((dynamic-require 'geiser 'geiser:eval) ',(geiser-racket--language))
-    `(dynamic-require 'geiser ',(intern (format "geiser:%s" proc)))))
+      "#f")))
+
+(defun geiser-racket--geiser-procedure (proc &rest args)
+  (case proc
+    ((eval compile)
+     (format ",eval %s %s %s"
+             (or (car args) "#f")
+             (geiser-racket--language)
+             (mapconcat 'identity (cdr args) " ")))
+    ((load-file compile-file)
+     (format ",eval geiser/main racket (geiser:%s %s)" proc (car args)))
+    ((no-values) ",no-values")
+    (t (format ",apply geiser:%s (%s)" proc (mapconcat 'identity args " ")))))
 
 (defconst geiser-racket--module-re
   "^(module +\\([^ ]+\\)")



reply via email to

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