Intellij IDEA plugin that turns IntelliJ IDEA into an LSP server and delivers the full power of IDEA's language support to LSP clients.
Cheapest way to start using full power of JetBrains IDEs as a backend for Visual Studio Code
#opensource
LSP is a protocol that allows decoupling the editor and the language support logic, so you can (theoretically) use any editor supporting LSP client functionality (like Visual Studio Code, Sublime Text, Vim, Emacs, Eclipse, etc.) with any LSP server.
There are a lot of LSP servers with different feature sets for different languages. This one differs from the others in that it doesn’t define its own language logic but rather translates LSP requests into IDEA API calls. So it does what your IDEA does, with the languages your IDEA supports, but with your favorite editor. If you are working on a multi-language project you don’t need many language-specific LSP servers anymore. Just install IntelliJ IDEA with appropriate set of plugins and turn it into one LSP server for all the languages you need.
IdeaLS is designed to be as much language agnostic as possible. However, for a better user experience some parts are still dependent on language-specific API.
The project was heavily inspired by intellij-lsp-server
Requirements
- IntelliJ IDEA (Community or Ultimate) or IDEA Platform based IDE 2022.3 or higher
Caveats
- The project is in a very early stage and really unstable.
- The server is tested with Visual Studio Code only.
- There are conflicts with the Android plugin on startup, so you have to disable it in the IDEA.
- There is A LOT of work yet to be done, please be indulgent.
Feature list
Name | Method | VSCode Action | |
---|---|---|---|
Workspace Symbols | workspace/symbol |
Ctrl + T |
|
Execute Command | workspace/executeCommand |
||
Diagnostics | textDocument/publishDiagnostics |
N/A | |
Completion | textDocument/completion |
Ctrl + Space |
|
Hover | textDocument/hover |
||
Signature Help | textDocument/signatureHelp |
||
Goto Declaration | textDocument/declaration |
||
Goto Definition | textDocument/definition |
Ctrl + Left mouse click |
|
Goto Type Definition | textDocument/typeDefinition |
Right mouse click -> Go to -> Type defintion |
|
Goto Implementation | textDocument/implementation |
||
Find References | textDocument/references |
Right mouse click -> Go To -> References |
|
Document Highlights | textDocument/documentHighlight |
Left mouse click on symbol |
|
Document Symbols | textDocument/documentSymbol |
Ctrl + O |
|
Code Action | textDocument/codeAction |
Ctrl + . |
|
Code Lens | textDocument/codeLens |
||
Document Formatting | textDocument/formatting |
Ctrl + Shift + P -> Format Document |
|
Document Range Formatting | textDocument/rangeFormatting |
Select text -> Ctrl + Shift + P -> Format Selection |
|
Document on Type Formatting | textDocument/onTypeFormatting |
N/A | |
Rename | textDocument/rename |
N/A | |
Prepare Call Hierarchy | textDocument/prepareCallHierarchy |
||
Call Hierarchy Incoming Calls | callHierarchy/incomingCalls |
||
Call Hierarchy Outgoing Calls | callHierarchy/outgoingCalls |
||
Prepare Type Hierarchy | textDocument/prepareTypeHierarchy’ |
||
Type Hierarchy Supertypes | typeHierarchy/supertypes |
||
Type Hierarchy Subtypes | typeHierarchy/subtypes |
||
Document Link | textDocument/documentLink |
||
Folding Range | textDocument/foldingRange |
||
Selection Range | textDocument/selectionRange |
||
Semantic Tokens | textDocument/semanticTokens |
||
Inline Value | textDocument/inlineValue |
||
Inlay Hint | textDocument/inlayHint |
||
Monikers | textDocument/moniker |
||
Document Color | textDocument/documentColor |
||
Linked Editing Range | textDocument/linkedEditingRange |
Contact
Sergey Anchipolevsky - @serganch
Project Link: https://github.com/SuduIDE/ideals