nvim: Add json formatting, auto gather filetypes

Added json to be formatted by prettier like the other javascript-close
filetypes.

Switched the static list of filetypes to automatically format on save to
be replaced by automatically gathering all filetypes set up for
formatter.nvim since I want everything formatted anyway.
This commit is contained in:
Marty Oehme 2022-02-13 20:05:31 +01:00
parent 94cd954df9
commit dee44417a6
Signed by: Marty
GPG key ID: B7538B8F50A1C800

View file

@ -2,22 +2,14 @@ local augroup = require('helpers.augroup')
-- for each filetype autoformat on save -- for each filetype autoformat on save
-- TODO can automatically gather from formatter table keys? -- TODO can automatically gather from formatter table keys?
local filetypes =
'bash,cpp,go,html,javascript,lua,python,rust,sh,typescript,zsh'
augroup({
{
'FileType', filetypes, 'autocmd', 'BufWritePost', '<buffer>',
'FormatWrite'
}
}, 'formatonsave')
local prettierfmt = { local prettierfmt = {
function() function()
local set_quotes = "--single-quote"
if vim.bo.filetype == "json" then set_quotes = "--double-quote" end
return { return {
exe = "prettier", exe = "prettier",
args = { args = {
"--stdin-filepath", vim.api.nvim_buf_get_name(0), "--stdin-filepath", vim.api.nvim_buf_get_name(0), set_quotes
'--single-quote'
}, },
stdin = true stdin = true
} }
@ -27,9 +19,7 @@ local shfmt = {
function() return {exe = "shfmt", args = {"-i 4"}, stdin = true} end function() return {exe = "shfmt", args = {"-i 4"}, stdin = true} end
} }
require('formatter').setup({ local formatters = {
logging = false,
filetype = {
bash = shfmt, bash = shfmt,
cpp = { cpp = {
function() function()
@ -44,20 +34,14 @@ require('formatter').setup({
go = {function() return {exe = "goimports", stdin = true} end}, go = {function() return {exe = "goimports", stdin = true} end},
html = prettierfmt, html = prettierfmt,
javascript = prettierfmt, javascript = prettierfmt,
json = prettierfmt,
lua = { lua = {
function() function()
return { return
exe = "lua-format", {exe = "lua-format", args = {"--indent-width", 4}, stdin = true}
args = {"--indent-width", 4},
stdin = true
}
end
},
python = {
function()
return {exe = "black", args = {"-"}, stdin = true}
end end
}, },
python = {function() return {exe = "black", args = {"-"}, stdin = true} end},
rust = { rust = {
function() function()
return {exe = "rustfmt", args = {"--emit=stdout"}, stdin = true} return {exe = "rustfmt", args = {"--emit=stdout"}, stdin = true}
@ -67,4 +51,12 @@ require('formatter').setup({
typescript = prettierfmt, typescript = prettierfmt,
zsh = shfmt zsh = shfmt
} }
})
require('formatter').setup({logging = false, filetype = formatters})
-- gather filetypes to autocorrect for each activated formatter above
local filetype = ""
for k, _ in pairs(formatters) do filetype = filetype .. "," .. k end
augroup({
{'FileType', filetype, 'autocmd', 'BufWritePost', '<buffer>', 'FormatWrite'}
}, 'formatonsave')