generated from redhat-developer/new-project-template
-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes #24 Signed-off-by: azerr <[email protected]>
- Loading branch information
1 parent
b32c456
commit 4b53999
Showing
3 changed files
with
61 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# Getting started | ||
|
||
This section explains step by step how to add your own LSP language server in your IntelliJ plugin. | ||
|
||
## Reference LSP4IJ | ||
|
||
### plugin.xml | ||
|
||
The first step is to reference LSP4IJ. LSP4IJ uses `com.redhat.devtools.lsp4ij` as plugin Id. | ||
|
||
You need [to declare dependency in your plugin.xml](https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html#3-dependency-declaration-in-pluginxml) like this: | ||
|
||
```xml | ||
<idea-plugin> | ||
... | ||
|
||
<depends>com.redhat.devtools.lsp4ij</depends> | ||
|
||
... | ||
</idea-plugin> | ||
``` | ||
|
||
### Exclude all LSP4J dependencies | ||
|
||
LSP4IJ depends on [Eclipse LSP4J](https://github.com/eclipse-lsp4j/lsp4j) (Java binding for the [Language Server Protocol](https://microsoft.github.io/language-server-protocol) and the [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol).). It uses a given version of LSPJ and their classes are loaded in the LSP4IJ plugin class loader. | ||
|
||
Your IntelliJ Plugin should use `the same LSP4J classes than LSP4IJ` to avoid some `ClassCastException` errors. To do that you need to `exclude all LSP4J dependencies` from your plugin. | ||
|
||
Here a sample used in [Quarkus Tools](https://github.com/redhat-developer/intellij-quarkus) in [build.gradle.kts](https://github.com/redhat-developer/intellij-quarkus/blob/main/build.gradle.kts) to exclude LSP4J dependency from the [Qute Language Server](https://github.com/redhat-developer/quarkus-ls/tree/master/qute.ls) which have a dependency to LSP4J: | ||
|
||
``` | ||
implementation("com.redhat.microprofile:com.redhat.qute.ls:0.17.0) { | ||
exclude("org.eclipse.lsp4j") | ||
} | ||
``` | ||
|
||
## Declare server | ||
|
||
TODO: | ||
|
||
* create a LanguageServer + languageClient class | ||
* declare server in plugin.xml | ||
|
||
## Declare language mapping | ||
|
||
TODO | ||
* declare mapping | ||
* DocumentMatcher | ||
|
||
## Declare IJ features | ||
|
||
* externalAnnotator, completion, etc are declared an language any with LSP4IJ => nothing to do | ||
* IJ inlayHint, hover doesn't support any language, so you need to declare them in you plugin.xml | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters