diff options
Diffstat (limited to '')
-rw-r--r-- | indent/terraform.vim | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/indent/terraform.vim b/indent/terraform.vim new file mode 100644 index 00000000..30c78229 --- /dev/null +++ b/indent/terraform.vim @@ -0,0 +1,48 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1 + +if exists("b:did_indent") + finish +endif + +let b:did_indent = 1 + +setlocal nolisp +setlocal autoindent +setlocal indentexpr=TerraformIndent(v:lnum) +setlocal indentkeys+=<:>,0=},0=) + +if exists("*TerraformIndent") + finish +endif + +function! TerraformIndent(lnum) + " previous non-blank line + let prevlnum = prevnonblank(a:lnum-1) + + " beginning of file? + if prevlnum == 0 + return 0 + endif + + " previous line without comments + let prevline = substitute(getline(prevlnum), '//.*$', '', '') + let previndent = indent(prevlnum) + let thisindent = previndent + + " block open? + if prevline =~ '[\[{]\s*$' + let thisindent += &sw + endif + + " current line without comments + let thisline = substitute(getline(a:lnum), '//.*$', '', '') + + " block close? + if thisline =~ '^\s*[\]}]' + let thisindent -= &sw + endif + + return thisindent +endfunction + +endif |