summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elisp/geiser-compile.el8
-rw-r--r--elisp/geiser-eval.el8
-rw-r--r--scheme/guile/geiser/emacs.scm8
3 files changed, 17 insertions, 7 deletions
diff --git a/elisp/geiser-compile.el b/elisp/geiser-compile.el
index ee6c5f8..82200a5 100644
--- a/elisp/geiser-compile.el
+++ b/elisp/geiser-compile.el
@@ -69,14 +69,14 @@
(message "")
(geiser-compile--pop-to-buffer))))
-(defun geiser-compile--file-op (path op msg)
+(defun geiser-compile--file-op (path compile-p msg)
(let* ((b/p (geiser-compile--buffer/path path))
(buffer (car b/p))
(path (cdr b/p))
(msg (format "%s %s ..." msg path)))
(message msg)
(geiser-compile--display-result
- msg (geiser-eval--send/wait `(:eval ((:ge ,op) ,path) (geiser emacs))))))
+ msg (geiser-eval--send/wait `(,(if compile-p :comp-file :load-file) ,path)))))
;;; User commands:
@@ -84,7 +84,7 @@
(defun geiser-compile-file (path)
"Compile and load Scheme file."
(interactive "FScheme file: ")
- (geiser-compile--file-op path 'compile-file "Compiling"))
+ (geiser-compile--file-op path t "Compiling"))
(defun geiser-compile-current-buffer ()
"Compile and load current Scheme file."
@@ -94,7 +94,7 @@
(defun geiser-load-file (path)
"Load Scheme file."
(interactive "FScheme file: ")
- (geiser-compile--file-op path 'load-file "Loading"))
+ (geiser-compile--file-op path nil "Loading"))
(defun geiser-load-current-buffer ()
"Load current Scheme file."
diff --git a/elisp/geiser-eval.el b/elisp/geiser-eval.el
index ca442f0..785f441 100644
--- a/elisp/geiser-eval.el
+++ b/elisp/geiser-eval.el
@@ -40,6 +40,8 @@
((listp code)
(cond ((eq (car code) :eval) (geiser-eval--eval (cdr code)))
((eq (car code) :comp) (geiser-eval--comp (cdr code)))
+ ((eq (car code) :load-file) (geiser-eval--load-file (cadr code)))
+ ((eq (car code) :comp-file) (geiser-eval--comp-file (cadr code)))
((eq (car code) :module) (geiser-eval--module (cadr code)))
((eq (car code) :ge) (geiser-eval--ge (cadr code)))
((eq (car code) :scm) (cadr code))
@@ -55,6 +57,12 @@
(geiser-eval--scheme-str
`((@ (geiser emacs) ge:compile) (quote ,(nth 0 code)) (:module ,(nth 1 code)))))
+(defsubst geiser-eval--load-file (file)
+ (geiser-eval--scheme-str `((@ (geiser emacs) ge:load-file) ,file)))
+
+(defsubst geiser-eval--comp-file (file)
+ (geiser-eval--scheme-str `((@ (geiser emacs) ge:compile-file) ,file)))
+
(defsubst geiser-eval--module (code)
(geiser-eval--scheme-str
(cond ((or (eq code '(())) (null code))
diff --git a/scheme/guile/geiser/emacs.scm b/scheme/guile/geiser/emacs.scm
index 147af7c..b9e2d67 100644
--- a/scheme/guile/geiser/emacs.scm
+++ b/scheme/guile/geiser/emacs.scm
@@ -112,11 +112,13 @@ SUBR, MSG and REST."
(define (ge:compile-file path)
"Compile and load file, given its full @var{path}."
- (and (compile-file path)
- (load-compiled (compiled-file-name path))))
+ (evaluate `(and (compile-file ,path)
+ (load-compiled ,(compiled-file-name path)))
+ '(geiser emacs)
+ eval))
(define (ge:load-file path)
"Load file, given its full @var{path}."
- (compile-and-load path))
+ (evaluate `(compile-and-load ,path) '(geiser emacs) eval))
;;; emacs.scm ends here