You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
But I think if Java-LS is the right mean to manage Java Language Server, I think it will important to support this extensiblity mechanism.
For instance in our case, our Quarkus support which manages Quarkus / MicroProfile validation does that with JDT.LS
I understand your point of view with API break, but in LemMinX XML Language Server we can customize for instance validation with particpant registered via Java SPI
I'm interested to know how you interact with the Java language server in your XML LS? Runtime in-process extensions are problematic for various reasons, but maybe there is a different way to address the requirements.
In Theia, we have a mix of run-time extensibility and compile time extensibility: some things can be extended by unknown third parties, whereas if you want to alter the main-line behavior of the framework, you have to compile your own distribution. I think that's a sensible approach.
Activity
tsmaeder commentedon Sep 16, 2026
I'm interested to know how you interact with the Java language server in your XML LS? Runtime in-process extensions are problematic for various reasons, but maybe there is a different way to address the requirements.
tsmaeder commentedon Sep 16, 2026
In Theia, we have a mix of run-time extensibility and compile time extensibility: some things can be extended by unknown third parties, whereas if you want to alter the main-line behavior of the framework, you have to compile your own distribution. I think that's a sensible approach.
angelozerr commentedon Sep 16, 2026
I don't do that, even if it should be possible I think.
By extensibility I mean add custom validation, custom completion etc.
The idea is very simple. When XML Language Server is started, the start command add custom JARs which registers custom validation, completion etc with Java SPI (see for instance for vscode https://github.com/redhat-developer/vscode-xml/blob/442471559bcf2b7b7cd5e2c73dad114775222d2a/src/server/java/javaServerStarter.ts#L96)
In vscode side, see doc at https://github.com/redhat-developer/vscode-xml/blob/main/docs/Extensions.md#custom-xml-extensions-written-in-java
It is managed with https://github.com/redhat-developer/vscode-xml/blob/442471559bcf2b7b7cd5e2c73dad114775222d2a/src/plugin.ts#L10
angelozerr commentedon Sep 17, 2026
@tsmaeder if you are opened with this idea, I could try to provide this Java SPI extensiblity with diagnostics and a sample with Quarkus or Qute.
tsmaeder commentedon Sep 17, 2026
Well, then the question becomes how the custom jar and commands interacts with the language server. What information does it consume or provide?
angelozerr commentedon Sep 17, 2026
Let me explore more java-ls to give you a relevant answer and try to do something.
When you will have time, please review #3