From 06b1bf615f8b549081ea20878ec4e00722aa2ea8 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Sat, 18 Mar 2023 10:57:25 +0100 Subject: eglot: run some servers through toolbox --- lisp/init-eglot.el | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'lisp/init-eglot.el') 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) -- cgit v1.2.3