diff options
| -rw-r--r-- | elisp/geiser-repl.el | 24 | 
1 files changed, 20 insertions, 4 deletions
| diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el index 3b044a9..a576beb 100644 --- a/elisp/geiser-repl.el +++ b/elisp/geiser-repl.el @@ -518,9 +518,13 @@ module command as a string")  (defun geiser-repl--start-repl (impl address)    (message "Starting Geiser REPL ...")    (when (not address) (geiser-repl--check-version impl)) -  (let ((buffer (current-buffer))) +  (let ((buffer (current-buffer)) +        (binary (geiser-repl--binary impl)) +        (arglist (geiser-repl--arglist impl)))      (geiser-repl--to-repl-buffer impl) -    (setq geiser-repl--last-scm-buffer buffer)) +    (setq geiser-repl--last-scm-buffer buffer +          geiser-repl--binary binary +          geiser-repl--arglist arglist))    (sit-for 0)    (goto-char (point-max))    (geiser-repl--autodoc-mode -1) @@ -556,9 +560,9 @@ module command as a string")           (buff (current-buffer))           (args (cond ((consp address) (list address))                       ((stringp address) '(())) -                     (t `(,(geiser-repl--binary impl) +                     (t `(,(geiser-repl--get-binary impl)                            nil -                          ,@(geiser-repl--arglist impl)))))) +                          ,@(geiser-repl--get-arglist impl))))))      (condition-case err          (if (and address (stringp address))              ;; Connect over a Unix-domain socket. @@ -940,6 +944,18 @@ over a Unix-domain socket."               (eq major-mode 'geiser-repl-mode))      (setq geiser-repl--last-scm-buffer buffer))) +(make-variable-buffer-local + (defvar geiser-repl--binary nil)) + +(make-variable-buffer-local + (defvar geiser-repl--arglist nil)) + +(defun geiser-repl--get-binary (impl) +  (or geiser-repl--binary (geiser-repl--binary impl))) + +(defun geiser-repl--get-arglist (impl) +  (or geiser-repl--arglist (geiser-repl--arglist impl))) +  (defun switch-to-geiser (&optional ask impl buffer)    "Switch to running Geiser REPL. | 
