summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elisp/geiser-eval.el15
-rw-r--r--elisp/geiser-repl.el1
2 files changed, 15 insertions, 1 deletions
diff --git a/elisp/geiser-eval.el b/elisp/geiser-eval.el
index 09f12da..3e5e7aa 100644
--- a/elisp/geiser-eval.el
+++ b/elisp/geiser-eval.el
@@ -31,6 +31,19 @@
(require 'geiser-base)
+;;; Plug-able functions:
+
+(make-variable-buffer-local
+ (defvar geiser-eval--current-module-function 'geiser-syntax--buffer-module))
+
+(defsubst geiser-eval--current-module-function (fun)
+ (setq geiser-eval--current-module-function fun))
+
+(defsubst geiser-eval--current-module ()
+ (and geiser-eval--current-module-function
+ (funcall geiser-eval--current-module-function)))
+
+
;;; Code formatting:
(defun geiser-eval--scheme-str (code)
@@ -66,7 +79,7 @@
(defsubst geiser-eval--module (code)
(geiser-eval--scheme-str
(cond ((or (eq code '(())) (null code))
- `(quote ,(or (geiser-syntax--buffer-module) :f)))
+ `(quote ,(or (geiser-eval--current-module) :f)))
((listp code) `(quote ,code))
((stringp code) (:scm code))
(t (error "Invalid module spec: %S" code)))))
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index 3f1301c..9d01835 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -200,6 +200,7 @@ REPL buffer."
(set (make-local-variable 'beginning-of-defun-function)
'geiser-repl--beginning-of-defun)
(set-syntax-table scheme-mode-syntax-table)
+ (geiser-eval--current-module-function nil)
(when geiser-repl-autodoc-p (geiser-autodoc-mode 1)))
(define-key geiser-repl-mode-map "\C-cz" 'run-guile)