/terraform-lsp

Language Server Protocol for Terraform

Primary LanguageGoMIT LicenseMIT

Terraform LSP

Gitter terraform version Release FOSSA Status

This is LSP (Language Server Protocol) for Terraform

IMPORTANT: Currently there are two Terraform LSP repositories one of which is this repository and one of which is terraform-ls. Terraform-LS also contains details about this repository as well.

Current Focus: Terraform State Reading

The aim to have a unified lsp for terraform in the future, but for now there is two concurrent development with collabration to each other, this repo is aim for more experimental features, and the terraform-ls is aim for stableness

NOTE: This is first stage of the plugin, so is experimental

asciicast

Release

Release can be found here

Building

Requirement

it will need Go 1.14+

Native

  1. Download a release or clone the repository
  2. 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

you may also specify a path to your preferred bin directory with the DST parameter

make copy DST="$your_preferred_bin_path" # Install the project

Nixpkgs

  • install nixpkgs
  • nix-build

Features

  • 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

Todo

All Todos are listed here

LSP Support Table

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

Supported Editors

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

Bugs

  • Order of completion items
  • Issue with block
  • Issue on Terraform v0.15 due to different behaviour on where it store its provider json

Credits

License

FOSSA Status