summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-03-02 19:12:37 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-03-02 19:12:37 +0100
commit3124c25768b107233497acc009e378bd6a044339 (patch)
treecbd8324070925625c5fd4180fd5d03bdbac49d7d
parent02208b6423a33ff28540c27cf3dca678e8a77b7a (diff)
downloadgeiser-guile-3124c25768b107233497acc009e378bd6a044339.tar.gz
geiser-guile-3124c25768b107233497acc009e378bd6a044339.tar.bz2
Correctly specify current module in REPL (and make it generic).
-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)