From 3c6eb236b10ee664edc82d25740c2ac05f020e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Tue, 20 Jan 2026 10:36:15 -0700 Subject: [PATCH] feat(emacs): basic lsp --- .../home/users/msyds/emacs/lisp/syd/lsp.el | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 modules/home/users/msyds/emacs/lisp/syd/lsp.el diff --git a/modules/home/users/msyds/emacs/lisp/syd/lsp.el b/modules/home/users/msyds/emacs/lisp/syd/lsp.el new file mode 100644 index 0000000..d1432a3 --- /dev/null +++ b/modules/home/users/msyds/emacs/lisp/syd/lsp.el @@ -0,0 +1,40 @@ +;;; -*- lexical-binding: t -*- + +(require 'syd/base) +(require 'syd/popups) + +(use-package lsp-mode + :init + ;; We'll bind things ourselves. + (setq lsp-keymap-prefix nil) + ;; Keep state out of my config dir. + (setq lsp-session-file (file-name-concat syd-data-dir "lsp-session") + ;; We disable `lsp-install-server', but I don't want this to be nil. + lsp-server-install-dir (file-name-concat syd-data-dir "lsp")) + ;; Disable features that have great potential to be slow. LSPs tend to be + ;; quite slow compared to non-LSP equivalents. + (setq lsp-enable-folding nil + lsp-enable-text-document-color nil) + ;; Reduce unexpected modifications to code + (setq lsp-enable-on-type-formatting nil) + ;; Make breadcrumbs opt-in; they're redundant with the modeline and imenu + (setq lsp-headerline-breadcrumb-enable nil) + :hook (lsp-mode . lsp-enable-which-key-integration) + :commands lsp + :general (:keymaps 'syd-leader-code-map + "a" #'lsp-execute-code-action + "r" #'lsp-rename) + :custom (; Fixes type error when using rename. + (lsp-rename-use-prepare nil)) + :config + (syd-defadvice syd-lsp-install-server-a () + "Override and disbale `lsp-install-server'" + :override #'lsp-install-server + (user-error (concat "Ignoring a call to `lsp-install-server'" + " — tell the caller to use Nix!"))) + (syd-push + shackle-rules + `(("*lsp-help*" "*lsp-install*") + ,@syd-help-popup-options))) + +(provide 'syd/lsp)