diff options
| -rw-r--r-- | elisp/geiser-mode.el | 1 | ||||
| -rw-r--r-- | elisp/geiser-syntax.el | 22 | 
2 files changed, 14 insertions, 9 deletions
| diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el index 640dbcc..5747f40 100644 --- a/elisp/geiser-mode.el +++ b/elisp/geiser-mode.el @@ -303,6 +303,7 @@ interacting with the Geiser REPL is at your disposal.    (geiser-syntax--add-kws)    (when (and geiser-mode               geiser-mode-start-repl-p +             (not (geiser-syntax--font-lock-buffer-p))               (not (geiser-repl--connection*)))      (save-window-excursion (run-geiser geiser-impl--implementation)))) diff --git a/elisp/geiser-syntax.el b/elisp/geiser-syntax.el index 79f899b..0abd03c 100644 --- a/elisp/geiser-syntax.el +++ b/elisp/geiser-syntax.el @@ -472,16 +472,20 @@ implementation-specific entries for font-lock-keywords.")                   (geiser-syntax--mapconcat 'geiser-syntax--display a " ")))          (t (format "%s" a)))) +(defconst geiser-syntax--font-lock-buffer-name " *geiser font lock*") + +(defun geiser-syntax--font-lock-buffer-p (&optional buffer) +  (equal (buffer-name buffer) geiser-syntax--font-lock-buffer-name)) +  (defun geiser-syntax--font-lock-buffer () -  (let ((name " *geiser font lock*")) -    (or (get-buffer name) -        (let ((buffer (get-buffer-create name))) -          (set-buffer buffer) -          (let ((geiser-default-implementation -                 (or geiser-default-implementation -                     (car geiser-active-implementations)))) -            (scheme-mode)) -          buffer)))) +  (or (get-buffer geiser-syntax--font-lock-buffer-name) +      (let ((buffer (get-buffer-create geiser-syntax--font-lock-buffer))) +        (set-buffer buffer) +        (let ((geiser-default-implementation +               (or geiser-default-implementation +                   (car geiser-active-implementations)))) +          (scheme-mode))) +        buffer))  (defun geiser-syntax--scheme-str (str)    (save-current-buffer | 
