diff --git a/.emacs.d/lisp/init-sly-selector.el b/.emacs.d/lisp/init-sly-selector.el index a4df09a9..9f5f6692 100644 --- a/.emacs.d/lisp/init-sly-selector.el +++ b/.emacs.d/lisp/init-sly-selector.el @@ -1,5 +1,6 @@ -(defvar ambrevar/sly-connection-name "sbcl-ambrevar") +(require 'sly-mrepl) ; For `sly-mrepl--find-buffer'. +(defvar ambrevar/sly-connection-name "sbcl-ambrevar") (defun ambrevar/helm-sly-buffer-p (buffer) "Return non-nil if BUFFER has a SLY connection matching `ambrevar/sly-connection-name'." @@ -8,7 +9,7 @@ sly-buffer-connection (sly-process sly-buffer-connection) (string-prefix-p ambrevar/sly-connection-name - (helm-sly-connection-name sly-buffer-connection))))) + (sly-connection-name sly-buffer-connection))))) (defun ambrevar/helm-sly-mini () "Helm for Lisp connections and buffers using the @@ -34,8 +35,14 @@ (let ((sly-lisp-implementations (list (assoc (intern ambrevar/sly-connection-name) - sly-lisp-implementations)))) - (call-interactively #'sly))) + sly-lisp-implementations))) + (current-connection (car (sly--purge-connections)))) + (if (and current-connection + (sly-mrepl--find-buffer current-connection) + (ambrevar/helm-sly-buffer-p + (sly-mrepl--find-buffer current-connection))) + (call-interactively #'sly) + (sly)))) :helm-sources #'ambrevar/helm-sly-mini)) (defun ambrevar/helm-selector-sly-other-window ()