This is LSP(Language Server Protocol) for Terraform
NOTE: This is first stage of the plugin, so is experimental
- download go modules
GO111MODULE=on go mod download
- run make or
go build
- 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(inifinte as well) variable completion
- A lot of code clean up(right now is mostly getting the feature done)
- CI/CD(Travis)
- Tests
- Getting Started Guide
- Add Gifs & Asciinema for Demo
- Cross Compile for Windows Binary
-
Add Provider Listing(static list)
-
Provider Configs
-
Resources
- Provider attribute scope completion(ex. google vs google-beta)
-
Data Sources
-
Backends (current focus)
-
Provisioner (current focus)
-
Interpolations
- Complex nesting interpolations
-
Modules
-
Locals
-
Outputs
-
Variables
- Map Interpolation with Object inside
- Index Interpolation
- List Interpolation with Object inside
- Object Interpolation
- Functions
-
Dynamic Block
- For Each Block
- Check for complex scenario
- For Each Block
-
initialize
-
textDocument/completion
-
textDocument/didChange
-
textDocument/didOpen
-
textDocument/publishDiagnostics
- Current Plan: Implement all possible LSP features
- There is a seperate vscode-languageclient-terraform
- Need syntax and highlight etc (possible collab with vscode-terraform?)
- There is a seperate atom-terraform
- Need configuration for linter API
- Work with intellij-lsp plugin(also work with intellij-hcl together)
- Should work with all lsp plugin on vim
- Should work with emacs-lsp(need confirmation)
- It should work with any lsp client in theory
- Order of completion items
- Issue with block
- LSP structure using Sourcegraph's go-lsp
- JSONRPC2 using JRPC2
- provider communication is mostly adapted from tfschema