summaryrefslogtreecommitdiffstats
path: root/autoload/terraform.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/terraform.vim')
-rw-r--r--autoload/terraform.vim25
1 files changed, 25 insertions, 0 deletions
diff --git a/autoload/terraform.vim b/autoload/terraform.vim
new file mode 100644
index 00000000..210ee59f
--- /dev/null
+++ b/autoload/terraform.vim
@@ -0,0 +1,25 @@
+if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'terraform') != -1
+ finish
+endif
+
+" Adapted from vim-hclfmt:
+" https://github.com/fatih/vim-hclfmt/blob/master/autoload/fmt.vim
+function! terraform#fmt()
+ if !filereadable(expand('%:p'))
+ return
+ endif
+ let l:curw = winsaveview()
+ let l:tmpfile = tempname() . '.tf'
+ call writefile(getline(1, '$'), l:tmpfile)
+ let output = system('terraform fmt -write ' . l:tmpfile)
+ if v:shell_error == 0
+ try | silent undojoin | catch | endtry
+ call rename(l:tmpfile, resolve(expand('%')))
+ silent edit!
+ let &syntax = &syntax
+ else
+ echo output
+ call delete(l:tmpfile)
+ endif
+ call winrestview(l:curw)
+endfunction