Awesome
LSP4IJ
Description
<!-- Plugin description -->LSP4IJ is a free and open-source Language Server protocol (LSP) client compatible with all flavours of IntelliJ.
It allows you to integrate any language server
that communicates with its client via stdio
:
- by
developing an IntelliJ plugin
with LSPextension points
:- com.redhat.devtools.lsp4ij.server extension point to define a language server.
- com.redhat.devtools.lsp4ij.languageMapping to associate an IntelliJ language with a language server definition.
- by manually adding language server definitions, supporting custom server settings. This approach doesn't require developing a specific IntelliJ plugin.
LSP4IJ also provides:
- an LSP Consoles view to tracks LSP requests, responses and notifications in a console:
If you select the language server node, you can configure it the same way as in the Language Servers preferences page
and use the left toolbar to Apply
or Reset
the settings.
- a Language Servers preferences page to configure the LSP trace level, the debug port to use to debug language server:
You can find more documentation in:
- the developer guide, providing step-by-step instructions on how to integrate a language server in LSP4J in an external IntelliJ plugin.
- the User-defined language server documentation, explaining how to integrate a language server in LSP4J with few settings.
- the user guide, which explains how to use LSP console and Language Server preferences.
- the LSP Support overview, describing which LSP features are implemented, and how.
Articles
Who is using LSP4IJ?
Here are some projects that use LSP4IJ:
- Quarkus Tools for IntelliJ
- Inga for IntelliJ
- IntelliJ SumnekoLua
- Haskell LSP for IntelliJ
- Zowe™ COBOL Language Support
- ZigBrains
- Pyright for PyCharm
- Intellij EmmyLua2
- Lean4ij
- Intellij KCL
- Ruff for PyCharm
- Intellij Gleam
- Liberty Tools for IntelliJ
- Vespa Schema Language Support
- Jimmer DTO LSP
Requirements
- Intellij IDEA 2023.2 or more recent (we try to support the last 4 major IDEA releases)
- Java JDK (or JRE) 17 or more recent
Contributing
This is an open source project open to anyone. Contributions are extremely welcome!
Building
Project is managed by Gradle. So building is quite easy.
Building the plugin distribution file
Run the following command:
./gradlew buildPlugin
The plugin distribution file is located in build/distributions
.
Testing
You can also easily test the plugin. Just run the following command:
./gradlew runIde
Testing the CI builds
You can also download and install CI builds of the latest commits or a specific pull request:
- open the
Build plugin zip
workflow - click on the build you are interested in
- scroll down and download the
LSP4IJ <version>.zip
file - install
LSP4IJ <version>.zip
into IntelliJ IDEA by following these instructions.
Testing nightly builds
You can easily install nightly builds from the nightly channel:
- in IntelliJ, open
Setting > Plugins > [Gear icon] > Manage Plugin Repositories...
- Add
https://plugins.jetbrains.com/plugins/nightly/23257
and pressOK
<img alt="Nightly Channel Repository" src="docs/images/nightly-channel-repo.png" width="500px" /> - install the latest
LSP4IJ
version
Nightly builds are published once a day.
Data and Telemetry
If the Red Hat Telemetry plugin is installed, the LSP4IJ plugin will collect anonymous usage data and send it to Red Hat servers to help improve our products and services. Read our privacy statement to learn more. This extension respects the Red Hat Telemetry setting which you can learn more about at https://github.com/redhat-developer/intellij-redhat-telemetry#telemetry-reporting
Feedback
File a bug in GitHub Issues.
You can have 2 kinds of errors:
- an error from LSP4IJ, in this case, the error will be reported in the standard IntelliJ log.
- an error coming from the language server.
For the second case, you can customize the error reporting with the Debug / Error reporting
combo box
by opening the Languages & Frameworks / Language Servers
preferences:
You can select:
None
: in this case the language server error will be ignored.In notification
(default value) : in this case the language server error appear as anotification
: The error notification shows 3 possible actions:Disable error reporting
: sets the error reporting toNone
.Report error in Log
: sets the error reporting toIn log
.Open LSP4IJ documentation
: opens this documentation.
In log
: in this case the language server error will be logged in the standardIntelliJ log
:
You can see this error's details in the LSP Consoles view (by setting the Debug / Trace
combo box in verbose
):
License
Eclipse Public License 2.0. See LICENSE file.