-- Enable terraform language server local lsp = require('lspconfig') lsp.tflint.setup{} lsp.terraformls.setup{} -- Enable filetype detection for terraform related files vim.cmd([[silent! autocmd! filetypedetect BufRead,BufNewFile *.tf]]) vim.cmd([[autocmd BufRead,BufNewFile *.hcl set filetype=hcl]]) vim.cmd([[autocmd BufRead,BufNewFile .terraformrc,terraform.rc set filetype=hcl]]) vim.cmd([[autocmd BufRead,BufNewFile *.tf,*.tfvars set filetype=terraform]]) vim.cmd([[autocmd BufRead,BufNewFile *.tfstate,*.tfstate.backup set filetype=json]]) -- Automatically format on save vim.cmd([[let g:terraform_fmt_on_save=1]]) vim.cmd([[let g:terraform_align=1]]) -- Shorten function name local keymap = vim.api.nvim_set_keymap local opts = { noremap = true, silent = true } -- Open a terminal in a split to run commands rather than use ! keymap("n", "ti", ":split term://terraform init", opts) keymap("n", "tv", ":split term://terraform validate", opts) keymap("n", "tp", ":split term://terraform plan", opts) keymap("n", "taa", ":split term://terraform apply -auto-approve", opts)