This is LSP (Language Server Protocol) for Terraform
NOTE: This is first stage of the plugin, so is experimental
Release can be found here
it will need Go 1.12+
- Download a release or clone the repository
- Run these commands from the
terraform-lsp
directory
GO111MODULE=on go mod download # Download the modules for the project
make # Build the project. Alternatively run "go build"
make copy # Install the project
- install nixpkgs
nix-build
- Variables complex completion (infinite nesting type)
- Provider config completion
- Resource (with infinite block, looking at you Kubernetes provider ;) ) completion
- Data source completion
- Dynamic Error Checking (Terraform and HCL checks)
- Communication using provider binary (so it will support any provider as long as is built with terraform 0.12 SDK)
- Module nesting (infinite as well) variable completion
All Todos are listed here
Feature | Description | Status |
---|---|---|
completion | Autocompletion | Supported for Resources/Data Sources/Variables/Locals, need support for nested interpolation |
publishDiagnostics | Error checking | Supported, need to check for all possible errors |
hover | Hover on function/variables to get result | Need to Implement |
signatureHelp | Get docs for resources/data sources name and params | Need to Implement |
declaration | Go to Declaration | Need to Implement |
references | Find all references | Need to Implement |
implementation | Find all implementation | Need to Implement (not sure if is applicable) |
documentHighlight | Resources/data sources/variables highlight | Need to Implement |
documentSymbol | Resources/data sources/variables symbols | Need to Implement |
codeAction | Refactoring actions | Need to Implement |
codeLens | VSCode's code lens | Need to Implement |
formatting | Formatting | Need to Implement |
rename | Rename action | Need to Implement |
workspace | Workspace support | Need to Implement |
Editor | Status | Docs |
---|---|---|
Visual Studio Code | Supported | Link |
Atom | Supported | Link |
Vim | Supported | Link |
Sublime Text 3 | Supported | Link |
IntelliJ | Supported | Link |
Emacs | Supported | Link |
NOTE: Please create a issue for a editor that you want to test for
- Order of completion items
- Issue with block
- LSP structure using Sourcegraph's go-lsp
- JSONRPC2 using JRPC2
- provider communication is mostly adapted from tfschema