From 2f48c7955f48b07d0aa656267b6b9954077626e0 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Thu, 11 Apr 2013 07:16:17 +0200 Subject: New flag to automatically start REPLs when geiser-mode is activated When no live REPL is found, of course. The flag's imaginatively called geiser-mode-start-repl-p. --- elisp/geiser-mode.el | 12 +++++++++++- elisp/geiser-repl.el | 14 +++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) (limited to 'elisp') diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el index 77feeec..b6d083a 100644 --- a/elisp/geiser-mode.el +++ b/elisp/geiser-mode.el @@ -41,6 +41,12 @@ scheme buffers." :group 'geiser-mode :type 'boolean) +(geiser-custom--defcustom geiser-mode-start-repl-p nil + "Whether a REPL should be automatically started if one is not +active when `geiser-mode' is activated in a buffer." + :group 'geiser-mode + :type 'boolean) + (geiser-custom--defcustom geiser-mode-autodoc-p t "Whether `geiser-autodoc-mode' gets enabled by default in Scheme buffers." :group 'geiser-mode @@ -258,7 +264,11 @@ interacting with the Geiser REPL is at your disposal. (geiser-autodoc-mode (if geiser-mode 1 -1))) (when geiser-mode-smart-tab-p (geiser-smart-tab-mode (if geiser-mode 1 -1))) - (geiser-syntax--add-kws)) + (geiser-syntax--add-kws) + (when (and geiser-mode + geiser-mode-start-repl-p + (not (geiser-repl--connection*))) + (save-current-buffer (switch-to-geiser)))) (defun turn-on-geiser-mode () "Enable `geiser-mode' (in a Scheme buffer)." diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index 0b4fe54..1d1b317 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -376,12 +376,15 @@ module command as a string") (overlay-end comint-last-prompt-overlay) t))))) -(defun geiser-repl--connection () +(defun geiser-repl--connection* () (let ((buffer (geiser-repl--set-up-repl geiser-impl--implementation))) - (or (and (buffer-live-p buffer) - (get-buffer-process buffer) - (with-current-buffer buffer geiser-repl--connection)) - (error "No Geiser REPL for this buffer (try M-x run-geiser)")))) + (and (buffer-live-p buffer) + (get-buffer-process buffer) + (with-current-buffer buffer geiser-repl--connection)))) + +(defun geiser-repl--connection () + (or (geiser-repl--connection*) + (error "No Geiser REPL for this buffer (try M-x run-geiser)"))) (setq geiser-eval--default-connection-function 'geiser-repl--connection) @@ -677,6 +680,7 @@ buffer." (defun switch-to-geiser (&optional ask impl buffer) "Switch to running Geiser REPL. + With prefix argument, ask for which one if more than one is running. If no REPL is running, execute `run-geiser' to start a fresh one." (interactive "P") -- cgit v1.2.3