Feature Request/Proposal: Customize `jdtls` Jar Location
I've recently had cause to install `jdtls` myself, rather than using `lsp-mode`'s auto-install faculty. Unfortunately, this can get a little messy. The issue at hand is the function [`lsp-java--locate-server-jar`](https://github.com/emacs-lsp/lsp-java/blob/master/lsp-java.el#L559), and the directory layout of `jdtls` when it's installed by alternative tools. Specifically, `lsp-mode`'s installation creates a structure like this:
```shell
# ~.emacs.d/.cache/lsp/eclipse.jdt.ls/
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 bin drwxr-xr-x@ - rdonaldson 19 Sep 16:03 boot-server drwxr-xr-x@ - rdonaldson 19 Sep 16:03 bundles
drwxr-xr-x@ - rdonaldson 19 Sep 16:15 config_linux
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_mac
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_ss_linux drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_ss_mac drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_ss_win
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_win
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 features
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 java-decompiler
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 java-test
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 plugins
```
Tools I'm using are creating layouts like so:
```shell
├── bin
│ ├── jdtls
│ └── jdtls.py
└── share
└── java
└── jdtls
├── config_linux
├── features
└── plugins
```
While this installation is valid, it breaks JAR detection, so LSP won't start -- even though it can find the "server command".
I can see a couple very reasonable solutions here, and I'm happy to implement whichever solution y'all prefer.
1. Right now, jar location searches in `lsp-java-server-install-dir`; we could add a new `defcustom` for `lsp-java-server-jar-location` and check there _first_ if non-nil.
2. We could add a new `defcustom` for the path prefix of the JAR location within the install dir -- something like `(defcustom lsp-java-server-jar-subpath "plugins")`.
3. We could make a new `defcustom` for the JAR location function itself, setting the current function as the default implementation.
Thanks so much for the excellent tools, y'all.
1 条评论