The LSP is a relatively extensive protocol with many features/methods, not all of which are implemented and not all of which are relevant for Terraform. The following matrix should provide some visibility into the current and future state.
It's important to note that ✅ does not imply the functionality is fully implemented (some features have various opt-in capabilities), just that the method is in use by the server. You can filter any known open issues by the relevant label, e.g. textDocument/completion
issues and open new issues for any method which you would like to be implemented.
LSP method | Implemented | Note |
---|---|---|
callHierarchy/incomingCalls | ❌ | |
callHierarchy/outgoingCalls | ❌ | |
client/registerCapability | ❌ | |
client/unregisterCapability | ❌ | |
codeAction/resolve | ❌ | |
codeLens/resolve | ❌ | |
completionItem/resolve | ✅ | |
documentLink/resolve | ❌ | |
initialize | ✅ | |
inlayHint/resolve | ❌ | |
shutdown | ✅ | |
textDocument/codeAction | ✅ | See code-actions.md |
textDocument/codeLens | ✅ | See Code Lens section |
textDocument/colorPresentation | ❌ | Not relevant |
textDocument/completion | ✅ | |
textDocument/declaration | ✅ | |
textDocument/definition | ✅ | |
textDocument/diagnostic | ❌ | |
textDocument/documentColor | ❌ | Not relevant |
textDocument/documentHighlight | ❌ | |
textDocument/documentLink | ✅ | |
textDocument/documentSymbol | ✅ | |
textDocument/foldingRange | ❌ | |
textDocument/formatting | ✅ | |
textDocument/hover | ✅ | |
textDocument/implementation | ❌ | |
textDocument/inlayHint | ❌ | |
textDocument/inlineValue | ❌ | |
textDocument/linkedEditingRange | ❌ | |
textDocument/moniker | ❌ | |
textDocument/onTypeFormatting | ❌ | |
textDocument/prepareCallHierarchy | ❌ | |
textDocument/prepareRename | ❌ | |
textDocument/prepareTypeHierarchy | ❌ | |
textDocument/rangeFormatting | ❌ | |
textDocument/references | ✅ | |
textDocument/rename | ❌ | |
textDocument/selectionRange | ❌ | |
textDocument/semanticTokens/full | ✅ | See syntax-highlighting.md |
textDocument/semanticTokens/full/delta | ❌ | |
textDocument/semanticTokens/range | ❌ | |
textDocument/signatureHelp | ✅ | |
textDocument/typeDefinition | ❌ | |
textDocument/willSaveWaitUntil | ❌ | |
typeHierarchy/subtypes | ❌ | |
typeHierarchy/supertypes | ❌ | |
window/showDocument | ❌ | |
window/showMessageRequest | ✅ | |
window/workDoneProgress/create | ❌ | |
workspace/applyEdit | ❌ | |
workspace/codeLens/refresh | ✅ | |
workspace/configuration | ❌ | |
workspace/diagnostic | ❌ | |
workspace/diagnostic/refresh | ❌ | |
workspace/executeCommand | ✅ | See commands.md |
workspace/inlayHint/refresh | ❌ | |
workspace/inlineValue/refresh | ❌ | |
workspace/semanticTokens/refresh | ✅ | See syntax-highlighting.md |
workspace/symbol | ✅ | |
workspace/willCreateFiles | ❌ | |
workspace/willDeleteFiles | ❌ | |
workspace/willRenameFiles | ❌ | |
workspace/workspaceFolders | ✅ | |
workspaceSymbol/resolve | ❌ |
List of methods sourced via
curl -s https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/metaModel/metaModel.json | jq -r '.requests[].method' | sort
LSP method | Implemented | Note |
---|---|---|
$/cancelRequest | ✅ | |
$/logTrace | ❌ | |
$/progress | ✅ | |
$/setTrace | ❌ | |
exit | ✅ | |
initialized | ✅ | |
notebookDocument/didChange | ❌ | |
notebookDocument/didClose | ❌ | |
notebookDocument/didOpen | ❌ | |
notebookDocument/didSave | ❌ | |
telemetry/event | ✅ | See telemetry.md |
textDocument/didChange | ✅ | |
textDocument/didClose | ✅ | |
textDocument/didOpen | ✅ | |
textDocument/didSave | ✅ | |
textDocument/publishDiagnostics | ✅ | |
textDocument/willSave | ❌ | |
window/logMessage | ❌ | |
window/showMessage | ✅ | |
window/workDoneProgress/cancel | ❌ | |
workspace/didChangeConfiguration | ❌ | |
workspace/didChangeWatchedFiles | ✅ | See Watched Files section |
workspace/didChangeWorkspaceFolders | ✅ | |
workspace/didCreateFiles | ❌ | |
workspace/didDeleteFiles | ❌ | |
workspace/didRenameFiles | ❌ |
List of methods sourced via
curl -s https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/metaModel/metaModel.json | jq -r '.requests[].method' | sort