summaryrefslogtreecommitdiff
path: root/elisp/geiser-mode.el
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2014-01-10 06:20:05 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2014-01-10 06:20:05 +0100
commit0a0d8c9b7bde63362e8336d089ab2066669e9f71 (patch)
tree7c0244dddc1c9794595e9fa6bdfafb123e420127 /elisp/geiser-mode.el
parent5655afa27b5eb4b2f75c923ad4de178ab8ae27a1 (diff)
downloadgeiser-0a0d8c9b7bde63362e8336d089ab2066669e9f71.tar.gz
geiser-0a0d8c9b7bde63362e8336d089ab2066669e9f71.tar.bz2
Racket: better behaviour of geiser-eval-buffer
For buffers containing a #lang directive, geiser-eval-buffer was simply broken: one cannot send the whole region wrapped in a `begin' in that case. We try now to send the region below, although a real solution would imply using #%module-begin as the wrapper, in order to be robust for languages that define their own version of the macro (such as TR). But people should use C-c C-a or C-c C-k and leave this silly function alone instead.
Diffstat (limited to 'elisp/geiser-mode.el')
-rw-r--r--elisp/geiser-mode.el21
1 files changed, 9 insertions, 12 deletions
diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el
index b5c10fd..3bc5494 100644
--- a/elisp/geiser-mode.el
+++ b/elisp/geiser-mode.el
@@ -1,6 +1,6 @@
;; geiser-mode.el -- minor mode for scheme buffers
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -93,23 +93,20 @@ With prefix, goes to the REPL buffer afterwards (as
(interactive "r")
(geiser-eval-region start end t))
+(geiser-impl--define-caller geiser-eval--bounds eval-bounds ()
+ "A pair with the bounds of a buffer to be evaluated, defaulting
+ to (cons (point-min) . (point-max)).")
+
(defun geiser-eval-buffer (&optional and-go raw nomsg)
"Eval the current buffer in the Geiser REPL.
With prefix, goes to the REPL buffer afterwards (as
`geiser-eval-buffer-and-go')"
(interactive "P")
- (let ((start (point-min))
- (end (point-max)))
- (save-restriction
- (narrow-to-region start end)
- (check-parens))
- (geiser-debug--send-region nil
- start
- end
- (and and-go 'geiser--go-to-repl)
- (not raw)
- nomsg)))
+ (let* ((bounds (geiser-eval--bounds geiser-impl--implementation))
+ (from (or (car bounds) (point-min)))
+ (to (or (cdr bounds) (point-max))))
+ (geiser-eval-region from to and-go raw nomsg)))
(defun geiser-eval-buffer-and-go ()
"Eval the current buffer in the Geiser REPL and visit it afterwads."