1local formatter = require("formatter")
2local go = require("formatter.filetypes.go")
3local util = require("formatter.util")
4
5local function terraformfmt()
6 return {
7 exe = "terraform",
8 args = {
9 "fmt",
10 "-",
11 },
12 stdin = true,
13 }
14end
15
16formatter.setup({
17 filetype = {
18 nix = { require("formatter.filetypes.nix").alejandra },
19 lua = { require("formatter.filetypes.lua").stylua },
20 fish = { require("formatter.filetypes.fish").fishindent },
21 javascript = { require("formatter.filetypes.javascript").prettier },
22 css = { require("formatter.filetypes.css").cssbeautify },
23 scss = { require("formatter.filetypes.css").cssbeautify },
24 go = { go.gofumpt, go.goimports },
25 terraform = { terraformfmt },
26 yaml = { require("formatter.filetypes.yaml").yamlfmt },
27 },
28 ["*"] = {
29 require("formatter.filetypes.any").remove_trailing_whitespace,
30 },
31})
32
33local augroup = vim.api.nvim_create_augroup
34local autocmd = vim.api.nvim_create_autocmd
35
36augroup("__formatter__", { clear = true })
37autocmd("BufWritePost", {
38 group = "__formatter__",
39 command = ":FormatWrite",
40})