25 KiB
Supported Features
This document tracks which features defined in the Language Server Protocol (LSP) specification are currently supported by tower-lsp-server and to what degree. Please note that this document is provided as-is and will be updated over time on a best-effort basis. There is no guarantee that it will always reflect the current reality exactly on the mainline branch. However, it should be updated on every tower-lsp-server release at minimum.
Feel free to open a new discussion thread if there are any questions. Drive-by pull requests correcting this document are always welcome!
Issue numbers that starts with an o (e.g. o#123) refer to issues on the original project repository.
Click here to expand/collapse the icon legend.
Message Type
| Symbol | Description | Location in API |
|---|---|---|
| ↩️ | Request, client to server | LanguageServer trait |
| ↪️ | Request, server to client | Client struct |
| ➡️ | Notification, client to server | LanguageServer trait |
| ⬅️ | Notification, server to client | Client struct |
Support Status
| Symbol | Description |
|---|---|
| 🟢 | Supported |
| 🟡 | Partial support (see footnote provided) |
| 🔴 | Unsupported |
Overall status: (84.5/90) ~93%
3.17.0 - 2022-05-10
Status: (12/16)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
notebookDocument/didOpen |
➡️ | 🟢 | |
notebookDocument/didChange |
➡️ | 🟢 | |
notebookDocument/didSave |
➡️ | 🟢 | |
notebookDocument/didClose |
➡️ | 🟢 | |
textDocument/prepareTypeHierarchy |
↩️ | 🟢 | |
typeHierarchy/supertypes |
↩️ | 🟢 | |
typeHierarchy/subtypes |
↩️ | 🟢 | |
textDocument/inlayHint |
↩️ | 🟢 | |
inlayHint/resolve |
↩️ | 🟢 | |
workspace/inlayHint/refresh |
↪️ | 🟢 | |
textDocument/inlineValue |
↩️ | 🟢 | |
workspace/inlineValue/refresh |
↪️ | 🟢 | |
textDocument/diagnostic |
↩️ | 🟢 | |
workspace/diagnostic |
↩️ | 🟢 | |
workspace/diagnostic/refresh |
↪️ | 🟢 | |
workspaceSymbol/resolve |
↩️ | 🟢 |
3.16.0 - 2020-12-14
Status: (18/20)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
$/setTrace |
➡️ | 🔴 | |
$/logTrace |
⬅️ | 🔴 | |
textDocument/prepareCallHierarchy |
↩️ | 🟢 | |
callHierarchy/incomingCalls |
↩️ | 🟢 | |
callHierarchy/outgoingCalls |
↩️ | 🟢 | |
workspace/codeLens/refresh |
↪️ | 🟢 | |
textDocument/semanticTokens/full |
↩️ | 🟢 | |
textDocument/semanticTokens/full/delta |
↩️ | 🟢 | |
textDocument/semanticTokens/range |
↩️ | 🟢 | |
workspace/semanticTokens/refresh |
↪️ | 🟢 | |
textDocument/moniker |
↩️ | 🟢 | |
codeAction/resolve |
↪️ | 🟢 | |
textDocument/linkedEditingRange |
↩️ | 🟢 | |
workspace/willCreateFiles |
↩️ | 🟢 | |
workspace/didCreateFiles |
➡️ | 🟢 | |
workspace/willRenameFiles |
↩️ | 🟢 | |
workspace/didRenameFiles |
➡️ | 🟢 | |
workspace/willDeleteFiles |
↩️ | 🟢 | |
workspace/didDeleteFiles |
➡️ | 🟢 | |
window/showDocument |
↪️ | 🟢 |
3.15.0 - 2020-01-14
Status: (1/4)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
$/progress |
➡️ ⬅️ | 🔴 | |
window/workDoneProgress/create |
↪️ | 🔴 | o#381 |
window/workDoneProgress/cancel |
➡️ | 🔴 | o#381 |
textDocument/selectionRange |
↩️ | 🟢 |
3.14.0 - 2018-12-13
Status: (1/1)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
textDocument/declaration |
↩️ | 🟢 |
3.12.0 - 2018-08-23
Status: (1/1)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
textDocument/prepareRename |
↩️ | 🟢 |
3.10.0 - 2018-07-23
Status: (1/1)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
textDocument/foldingRange |
↩️ | 🟢 |
3.6.0 - 2018-02-22
Status: (7/7)
| Method Name | Message Type | Supported | Tracking Issue(s) |
|---|---|---|---|
workspace/workspaceFolders |
↪️ | 🟢 | |
workspace/didChangeWorkspaceFolders |
➡️ | 🟢 | |
workspace/configuration |
↪️ | 🟢 | |
textDocument/typeDefinition |
↩️ | 🟢 | |
textDocument/implementation |
↩️ | 🟢 | |
textDocument/documentColor |
↩️ | 🟢 | |
textDocument/colorPresentation |
↩️ | 🟢 |
3.0.0 - 2017-02-08
Status: (39.5/40)
-
Server-to-client
$/cancelRequestsupport is not yet implemented. However, the raw message can be emitted manually usingClient::send_notification(). Client-to-server support is implemented via async/await task cancellation. ↩︎