summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elisp/geiser-debug.el7
-rw-r--r--elisp/geiser-eval.el10
-rw-r--r--elisp/geiser-mode.el21
-rw-r--r--scheme/guile/geiser/emacs.scm5
4 files changed, 25 insertions, 18 deletions
diff --git a/elisp/geiser-debug.el b/elisp/geiser-debug.el
index c67a6aa..20db436 100644
--- a/elisp/geiser-debug.el
+++ b/elisp/geiser-debug.el
@@ -92,6 +92,13 @@
(insert "In expression:\n"))
(insert (format "%s%s\n" (make-string offset ?\ ) description))))
+(defun geiser-debug--send-region (compile start end and-go)
+ (let* ((ret (geiser-eval--send-region compile start end and-go))
+ (err (geiser-eval--retort-error ret)))
+ (if (not err)
+ (message (format "=> %s" (geiser-eval--retort-result ret)))
+ (geiser-debug--display-retort str ret))))
+
(provide 'geiser-debug)
;;; geiser-debug.el ends here
diff --git a/elisp/geiser-eval.el b/elisp/geiser-eval.el
index 09f12da..ca0460f 100644
--- a/elisp/geiser-eval.el
+++ b/elisp/geiser-eval.el
@@ -117,6 +117,16 @@
(defsubst geiser-eval--send/result (code &optional timeout buffer)
(geiser-eval--retort-result (geiser-eval--send/wait code timeout buffer)))
+(defun geiser-eval--send-region (compile start end and-go)
+ (let* ((str (buffer-substring-no-properties start end))
+ (code `(,(if compile :comp :eval) (:scm ,str)))
+ (ret (geiser-eval--send/wait code)))
+ (when and-go
+ (switch-to-guile)
+ (push-mark)
+ (goto-char (point-max)))
+ ret))
+
;;; Retort parsing:
diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el
index a03c70e..fbbcff4 100644
--- a/elisp/geiser-mode.el
+++ b/elisp/geiser-mode.el
@@ -33,6 +33,7 @@
(require 'geiser-debug)
(require 'geiser-eval)
(require 'geiser-repl)
+(require 'geiser-popup)
(require 'geiser-custom)
(require 'geiser-base)
@@ -56,22 +57,6 @@
-;;; Auxiliary functions:
-
-(defun geiser-eval--send-region (compile start end and-go)
- (let* ((str (buffer-substring-no-properties start end))
- (code `(,(if compile :comp :eval) (:scm ,str)))
- (ret (geiser-eval--send/wait code))
- (err (geiser-eval--retort-error ret)))
- (when and-go
- (switch-to-guile)
- (push-mark)
- (goto-char (point-max)))
- (if (not err)
- (message (format "=> %s" (geiser-eval--retort-result ret)))
- (geiser-debug--display-retort str ret))))
-
-
;;; Evaluation commands:
(defun geiser-eval-region (start end &optional and-go)
@@ -79,7 +64,7 @@
With prefix, goes to the REPL buffer afterwards (as
`geiser-eval-region-and-go')"
(interactive "rP")
- (geiser-eval--send-region nil start end and-go))
+ (geiser-debug--send-region nil start end and-go))
(defun geiser-eval-region-and-go (start end)
"Eval the current region in the Geiser REPL and visit it afterwads."
@@ -116,7 +101,7 @@ With prefix, goes to the REPL buffer afterwards (as
(end-of-defun)
(let ((end (point)))
(beginning-of-defun)
- (geiser-eval--send-region t (point) end and-go))))
+ (geiser-debug--send-region t (point) end and-go))))
(defun geiser-compile-definition-and-go ()
"Compile the current definition in the Geiser REPL and visit it afterwads."
diff --git a/scheme/guile/geiser/emacs.scm b/scheme/guile/geiser/emacs.scm
index 7f03be8..66320ec 100644
--- a/scheme/guile/geiser/emacs.scm
+++ b/scheme/guile/geiser/emacs.scm
@@ -27,6 +27,7 @@
(define-module (geiser emacs)
#:export (ge:eval
ge:compile
+ ge:macroexpand
ge:compile-file
ge:load-file)
#:re-export (ge:autodoc
@@ -141,4 +142,8 @@
"Load file, given its full @var{path}."
(evaluate `(load ,path) #f eval))
+(define (ge:macroexpand form . all)
+ (let ((all (and (not (null? all)) (car all))))
+ ((if all macroexpand macroexpand-1) form)))
+
;;; emacs.scm ends here