switching back to lsp mode until eglot can handle multi-lsps

This commit is contained in:
Matt Nish-Lapidus 2025-05-30 11:50:21 -04:00
parent e39f351850
commit 449a736231
2 changed files with 45 additions and 2 deletions

View file

@ -174,6 +174,47 @@
(after! vertico
(vertico-mouse-mode))
(after! lsp-mode
(setq lsp-signature-render-documentation nil)
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection "nixd")
:major-modes '(nix-mode)
:priority 0
:server-id 'nixd)))
(defun lsp-booster--advice-json-parse (old-fn &rest args)
"Try to parse bytecode instead of json."
(or
(when (equal (following-char) ?#)
(let ((bytecode (read (current-buffer))))
(when (byte-code-function-p bytecode)
(funcall bytecode))))
(apply old-fn args)))
(advice-add (if (progn (require 'json)
(fboundp 'json-parse-buffer))
'json-parse-buffer
'json-read)
:around
#'lsp-booster--advice-json-parse)
(defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
"Prepend emacs-lsp-booster command to lsp CMD."
(let ((orig-result (funcall old-fn cmd test?)))
(if (and (not test?) ;; for check lsp-server-present?
(not (file-remote-p default-directory)) ;; see lsp-resolve-final-command, it would add extra shell wrapper
lsp-use-plists
(not (functionp 'json-rpc-connection)) ;; native json-rpc
(executable-find "emacs-lsp-booster"))
(progn
(when-let ((command-from-exec-path (executable-find (car orig-result)))) ;; resolve command from exec-path (in case not found in $PATH)
(setcar orig-result command-from-exec-path))
(message "Using emacs-lsp-booster for %s!" orig-result)
(cons "emacs-lsp-booster" orig-result))
orig-result)))
(advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command)
;; sly
(after! sly
(setq sly-lisp-implementations
@ -203,7 +244,9 @@
(add-to-list 'auto-mode-alist '("\\.lsx\\'" . lisp-mode))
(after! nix-mode
(set-formatter! 'alejandra '("alejandra" "--quiet") :modes '(nix-mode)))
(set-formatter! 'alejandra '("alejandra" "--quiet") :modes '(nix-mode))
(setopt lsp-nix-nixd-server-path "nixd"
lsp-nix-nixd-formatting-command [ "nixpkgs-alejandra"]))
;; add platformio to ino files
(add-to-list 'auto-mode-alist '("\\.ino\\'" . arduino-mode))

View file

@ -72,7 +72,7 @@
ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
(lookup +dictionary +offline +docsets) ; navigate your code and its documentation
(lsp +eglot) ; M-x vscode
lsp ; M-x vscode
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
pdf ; pdf enhancements