From efcfc9ba3009525d31700d4204bb32785f612c60 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Mon, 23 Dec 2024 21:08:56 +0100 Subject: [PATCH] Clean up slime settings --- init.el | 87 ++++++++++++++++++++++----------------------------------- 1 file changed, 34 insertions(+), 53 deletions(-) diff --git a/init.el b/init.el index 3727bbd5..616ed335 100755 --- a/init.el +++ b/init.el @@ -840,74 +840,32 @@ Uses `mk/hyperspec-dir-locations' to find the directory." (setq common-lisp-hyperspec-root (mk/hyperspec-dir)) (use-package slime + :defer t + :init + (setq inferior-lisp-program "sbcl") :custom - (slime-autodoc-use-multiline-p 1) + (slime-autodoc-use-multiline-p t) + (slime-complete-symbol-function 'slime-fuzzy-complete-symbol) + (slime-net-coding-system 'utf-8-unix) :config (define-key slime-mode-map (kbd "C-c C-q") 'slime-close-all-parens-in-sexp) - (slime-setup '(slime-autodoc - slime-tramp - slime-fancy + (slime-setup '(slime-fancy + slime-autodoc slime-asdf slime-indentation - slime-editing-commands slime-sbcl-exts slime-company)) - ;; To create a slime specific sbcl image: - ;; shell$ sbcl - ;; * (mapc 'require '(sb-bsd-sockets sb-posix sb-introspect sb-cltl2 asdf)) - ;; * (save-lisp-and-die "sbcl.core-for-slime") - - ;; Stop SLIME's REPL from grabbing DEL, - ;; which is annoying when backspacing over a '(' - - ;; (defun override-slime-repl-bindings-with-paredit () - ;; (define-key slime-repl-mode-map - ;; (read-kbd-macro paredit-backward-delete-key) nil)) - - ;; (add-hook 'slime-repl-mode-hook 'override-slime-repl-bindings-with-paredit) - - (setq common-lisp-hyperspec-symbol-table - (concat common-lisp-hyperspec-root "Data/Map_Sym.txt")) - - (setq common-lisp-hyperspec-issuex-table - (concat common-lisp-hyperspec-root "Data/Map_IssX.txt")) - - (let ((image-path (expand-file-name "~/sbcl.core-for-slime"))) - (if (file-exists-p image-path) - (setq slime-lisp-implementations - `((sbcl ("sbcl" "--noinform" "--core" ,image-path) :coding-system utf-8-unix))) - (setq slime-lisp-implementations - `((sbcl ("sbcl" "--noinform") :coding-system utf-8-unix))))) - - (defvar mk/slime-remote-instances - '((:machine-instance "code-metalisp" - :remote-host "code.metalisp.dev" - :username "cl") - (:machine-instance "u1-marcsukammer" - :remote-host "u1.marcsukammer.dev" - :username "marcus"))) - - (mapc (lambda (instance) - (push (slime-create-filename-translator - :machine-instance (plist-get instance :machine-instance) - :remote-host (plist-get instance :remote-host) - :username (plist-get instance :username)) - slime-filename-translations)) - mk/slime-remote-instances) - - ;; syntax highlighting + ;; REPL syntax highlighting (defvar slime-repl-font-lock-keywords lisp-font-lock-keywords-2) - (defun slime-repl-font-lock-setup () (setq font-lock-defaults '(slime-repl-font-lock-keywords - ;; From lisp-mode.el nil nil (("+-*/.<>=!?$%_&~^:@" . "w")) nil (font-lock-syntactic-face-function . lisp-font-lock-syntactic-face-function)))) - (add-hook 'slime-repl-mode-hook 'slime-repl-font-lock-setup) + ;; Custom REPL prompt (defadvice slime-repl-insert-prompt (after font-lock-face activate) (let ((inhibit-read-only t)) (add-text-properties @@ -915,7 +873,30 @@ Uses `mk/hyperspec-dir-locations' to find the directory." '(font-lock-face slime-repl-prompt-face rear-nonsticky - (slime-repl-prompt read-only font-lock-face intangible)))))) + (slime-repl-prompt read-only font-lock-face intangible))))) + + ;; Load custom core file if it exists + (let ((core-path (expand-file-name "~/sbcl.core-for-slime"))) + (when (file-exists-p core-path) + (setq slime-lisp-implementations + `((sbcl ("sbcl" "--noinform" "--core" ,core-path) :coding-system utf-8-unix))))) + + ;; Remote instance configuration + (setq mk/slime-remote-instances + '((:machine-instance "code-metalisp" + :remote-host "code.metalisp.dev" + :username "cl") + (:machine-instance "u1-marcsukammer" + :remote-host "u1.marcsukammer.dev" + :username "marcus"))) + + (mapc (lambda (instance) + (push (slime-create-filename-translator + :machine-instance (plist-get instance :machine-instance) + :remote-host (plist-get instance :remote-host) + :username (plist-get instance :username)) + slime-filename-translations)) + mk/slime-remote-instances)) (use-package slime-company :after (slime company)