Skip to content
Language Server Protocol for Terraform
Branch: master
Clone or download
Latest commit 155d8dd May 17, 2019

Terraform LSP

Gitter terraform version Nix Build FOSSA Status

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 download
  • run make or go build


  • install nixpkgs
  • nix-build

Currently Supported

  • 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

Todo-List (Main)

  • 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

Todo-List (Terraform)

  • Add Provider Listing(static list)

  • Provider Configs

  • Resources

    • Provider attribute scope completion(ex. google vs google-beta)
  • Data Sources

  • Backends

  • Provisioner

  • 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

Todo-List (LSP)

  • initialize
  • textDocument/completion
  • textDocument/didChange
  • textDocument/didOpen
  • textDocument/publishDiagnostics
  • Current Plan: Implement all possible LSP features

Editors Specific

VS Code


  • Need syntax and highlight etc (possible collab with vscode-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



FOSSA Status

You can’t perform that action at this time.