25 lines
1.1 KiB
Lua
25 lines
1.1 KiB
Lua
-- 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", "<leader>ti", ":split term://terraform init<CR>", opts)
|
|
keymap("n", "<leader>tv", ":split term://terraform validate<CR>", opts)
|
|
keymap("n", "<leader>tp", ":split term://terraform plan<CR>", opts)
|
|
keymap("n", "<leader>taa", ":split term://terraform apply -auto-approve<CR>", opts)
|