branch: elpa/geiser-gauche
commit 698a68502e3990bd06ef2fde96d9f65fa86a8f7d
Author: András Simonyi <[email protected]>
Commit: András Simonyi <[email protected]>
Fix eval and compile
---
geiser-gauche.el | 12 ++++++------
geiser.scm | 14 ++++++++------
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/geiser-gauche.el b/geiser-gauche.el
index cd931d5..b3e13ca 100644
--- a/geiser-gauche.el
+++ b/geiser-gauche.el
@@ -82,8 +82,11 @@
(defun geiser-gauche--geiser-procedure (proc &rest args)
;; (with-current-buffer "*scratch*"
;; (goto-char (point-max))
- ;; (insert (format "\nGeiser FORM: %s" args)))
+ ;; (insert (format "\nGeiser PROC: %s, ARGS: %s \ntranslated to:\n" proc
args))
+ ;; (insert (let ((form (mapconcat 'identity args " ")))
+ ;; (format "(eval '(geiser:%s %s) (find-module 'geiser))" proc
form))))
(cl-case proc
+ ;; Eval and compile are (module) context sensitive
((eval compile)
(let ((form (mapconcat 'identity (cdr args) " "))
(module (cond ((string-equal "'()" (car args))
@@ -93,13 +96,10 @@
(t
"#f"))))
(format "(eval '(geiser:eval %s '%s) (find-module 'geiser))" module
form)))
- ((load-file compile-file)
- (format "(geiser:load-file %s)" (car args)))
- ((no-values)
- "(geiser:no-values)")
+ ;; The rest of the commands are all evaluated in the geiser module
(t
(let ((form (mapconcat 'identity args " ")))
- (format "(geiser:%s %s)" proc form)))))
+ (format "(eval '(geiser:%s %s) (find-module 'geiser))" proc form)))))
(defconst geiser-gauche--module-re
"(define-module +\\([[:alnum:].]+\\)")
diff --git a/geiser.scm b/geiser.scm
index 24a7bdd..e3d75ed 100644
--- a/geiser.scm
+++ b/geiser.scm
@@ -7,6 +7,7 @@
geiser:newline
geiser:autodoc
geiser:load-file
+ geiser:compile-file
geiser:no-values
geiser:completions
geiser:module-completions
@@ -18,7 +19,6 @@
;; geiser:object-signature
;; geiser:symbol-location
;; geiser:find-file
- ;; geiser:compile-file
;; geiser:compile
))
@@ -70,17 +70,20 @@
(output . ,(get-output-string output))))))
(define (geiser:load-file filename)
- (load filename))
+ (geiser:eval 'user `(load ,filename)))
-(define (geiser:newline)
+(define (geiser:compile-file filename)
+ (geiser:load-file filename))
+
+(define (geiser:newline . rest)
(newline))
-(define (geiser:no-values)
+(define (geiser:no-values . rest)
(values))
;;; Completions
-(define (geiser:completions prefix)
+(define (geiser:completions prefix . rest)
(delete-duplicates
(remove
(^x (or (string=? x "")
@@ -209,4 +212,3 @@
;; TODO We add the load-path at the end. Is this correct?
(define-macro (geiser:add-to-load-path dir)
`(add-load-path ,dir :after))
-