summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-repl.el16
1 files changed, 11 insertions, 5 deletions
diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
index fd274a7..b69c64f 100644
--- a/elisp/geiser-repl.el
+++ b/elisp/geiser-repl.el
@@ -183,6 +183,13 @@ module command as a string")
(defsubst geiser-repl--repl-name (impl)
(format "%s REPL" (geiser-impl--impl-str impl)))
+(defun geiser-repl--switch-to-buffer (buffer)
+ (unless (eq buffer (current-buffer))
+ (let ((pop-up-windows geiser-repl-window-allow-split))
+ (if geiser-repl-use-other-window
+ (switch-to-buffer-other-window buffer)
+ (switch-to-buffer buffer)))))
+
(defun geiser-repl--to-repl-buffer (impl)
(unless (and (eq major-mode 'geiser-repl-mode)
(not (get-buffer-process (current-buffer))))
@@ -190,7 +197,7 @@ module command as a string")
(old (and (buffer-live-p old)
(not (get-buffer-process old))
old)))
- (pop-to-buffer
+ (geiser-repl--switch-to-buffer
(or old
(generate-new-buffer (format "* %s *"
(geiser-repl--repl-name impl)))))
@@ -597,13 +604,12 @@ If no REPL is running, execute `run-geiser' to start a fresh one."
((and (not ask)
(not in-repl)
impl
- (geiser-repl--repl/impl impl)))))
- (pop-up-windows geiser-repl-window-allow-split))
+ (geiser-repl--repl/impl impl))))))
(cond ((or in-live-repl
(and (eq (current-buffer) repl) (not (eq repl buffer))))
(when (buffer-live-p geiser-repl--last-scm-buffer)
- (pop-to-buffer geiser-repl--last-scm-buffer)))
- (repl (pop-to-buffer repl))
+ (geiser-repl--switch-to-buffer geiser-repl--last-scm-buffer)))
+ (repl (geiser-repl--switch-to-buffer repl))
((geiser-repl--remote-p) (geiser-connect impl))
(t (run-geiser impl)))
(when (and buffer (eq major-mode 'geiser-repl-mode))