From db009aec5b3d0312c42da1b8b6999583f900d314 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Wed, 13 Jan 2021 11:52:16 +0100 Subject: [PATCH] SLY: Initialize Helm selector for "sbcl-ambrevar". --- .emacs.d/lisp/init-sly-selector.el | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .emacs.d/lisp/init-sly-selector.el diff --git a/.emacs.d/lisp/init-sly-selector.el b/.emacs.d/lisp/init-sly-selector.el new file mode 100644 index 00000000..63b6eac6 --- /dev/null +++ b/.emacs.d/lisp/init-sly-selector.el @@ -0,0 +1,51 @@ +(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'." + (with-current-buffer buffer + (and sly-buffer-connection + (sly-process sly-buffer-connection) + (string-prefix-p ambrevar/sly-connection-name + (helm-sly-connection-name sly-buffer-connection))))) + +(defun ambrevar/helm-sly-connection () + "Return the connection matching `ambrevar/sly-connection-name'." + (helm-sly-buffer-connection + (cl-first (cl-remove-if-not + #'ambrevar/helm-sly-buffer-p + (buffer-list))))) + +(defun ambrevar/helm-sly-mini () + "Helm for Lisp connections and buffers using the +`ambrevar/sly-connection-name' connection." + (interactive) + (helm :sources (list (helm-sly--c-source-connection + (helm-sly--repl-buffer-candidates + (ambrevar/helm-sly-connection))) + helm-sly-new + (helm-sly-build-buffers-source)) + :buffer "*ambrevar/helm-sly-mini*")) + +(defun ambrevar/helm-selector-sly () + "Helm for `sly' buffers using the `ambrevar/sly-connection-name' connection." + (interactive) + (helm-selector + "Ambrevar SLY-REPL" + :predicate #'ambrevar/helm-sly-buffer-p + :make-buffer-fn (lambda () + (interactive) + (let ((sly-lisp-implementations + (list + (assoc (intern ambrevar/sly-connection-name) + sly-lisp-implementations)))) + (sly))) + :helm-sources #'ambrevar/helm-sly-mini)) + +(defun ambrevar/helm-selector-sly-other-window () + "Like `ambrevar/helm-selector-sly' but raise buffer in other window." + (interactive) + (let ((current-prefix-arg t)) + (call-interactively #'helm-selector-sly))) + +(provide 'init-sly-selector)