>From dae847f979084134effa256b95de7219c1d5dbf6 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sun, 24 Mar 2024 21:26:08 +0100 Subject: [PATCH] Fix invocation of Java Language Server * lisp/progmodes/eglot.el (eglot-server-programs): Invoke "jdtls" with a "-data" flag, passing a project-specific cache directory. --- lisp/progmodes/eglot.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index f341428cac3..f2298b2e079 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -226,6 +226,7 @@ eglot-alternatives when probe return (cons probe args) finally (funcall err))))))) +(declare-function xdg-cache-home "xdg" ()) (defvar eglot-server-programs `(((rust-ts-mode rust-mode) . ("rust-analyzer")) ((cmake-mode cmake-ts-mode) . ("cmake-language-server")) (vimrc-mode . ("vim-language-server" "--stdio")) @@ -264,7 +265,13 @@ eglot-server-programs . ("gopls")) ((R-mode ess-r-mode) . ("R" "--slave" "-e" "languageserver::run()")) - ((java-mode java-ts-mode) . ("jdtls")) + ((java-mode java-ts-mode) . + ,(lambda (_interactive project) ;see github#1008 + (require 'xdg) + (let ((cache (file-name-concat + (xdg-cache-home) "jdtls-cache" + (sha1 (project-root project))))) + (list "jdtls" "-data" cache)))) ((dart-mode dart-ts-mode) . ("dart" "language-server" "--client-id" "emacs.eglot-dart")) -- 2.39.2