diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-03-18 10:57:25 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-03-18 10:57:25 +0100 |
commit | 06b1bf615f8b549081ea20878ec4e00722aa2ea8 (patch) | |
tree | 41e35ad7d8bf2bf8c134cc75f324b7c9a49f5a4b /lisp/init-eglot.el | |
parent | 0bff1f1f69246959250cf3375bd498a6a8bd5232 (diff) |
eglot: run some servers through toolbox
Diffstat (limited to 'lisp/init-eglot.el')
-rw-r--r-- | lisp/init-eglot.el | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el index da392e1..a993765 100644 --- a/lisp/init-eglot.el +++ b/lisp/init-eglot.el @@ -47,6 +47,20 @@ "\\1" string)) +(defun mpolden/eglot-server-program (&optional interactive) + "Return a LSP server program for the current `major-mode'. +If toolbox is in PATH, prefix the server program with \"toolbox +run\". Optional argument INTERACTIVE has no effect, but must be +present to satisfy `eglot-server-programs'." + (when-let* ((programs '((go-mode . "gopls") + (python-mode . "pylsp") + (rust-mode . "rust-analyzer") + (java-mode . "jdtls"))) + (program (cdr (assoc major-mode programs)))) + (if (executable-find "toolbox" (file-remote-p buffer-file-name)) + (list "toolbox" "run" program) + (list program)))) + (use-package eglot :ensure t :init @@ -78,7 +92,10 @@ ;; https://github.com/jrblevin/markdown-mode/issues/377 (advice-add 'eglot--format-markup :filter-return - 'mpolden/gfm-unescape-string)) + 'mpolden/gfm-unescape-string) + ;; run some servers through toolbox + (add-to-list 'eglot-server-programs + '(prog-mode . mpolden/eglot-server-program))) (provide 'init-eglot) |