diff options
Diffstat (limited to 'elisp/geiser-repl.el')
-rw-r--r-- | elisp/geiser-repl.el | 16 |
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)) |