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
-- 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 = {
function()
local set_quotes = "--single-quote"
if vim.bo.filetype == "json" then set_quotes = "--double-quote" end
return {
exe = "prettier",
args = {
"--stdin-filepath", vim.api.nvim_buf_get_name(0),
'--single-quote'
"--stdin-filepath", vim.api.nvim_buf_get_name(0), set_quotes
},
stdin = true
}
@ -27,9 +19,7 @@ local shfmt = {
function() return {exe = "shfmt", args = {"-i 4"}, stdin = true} end
}
require('formatter').setup({
logging = false,
filetype = {
local formatters = {
bash = shfmt,
cpp = {
function()
@ -44,20 +34,14 @@ require('formatter').setup({
go = {function() return {exe = "goimports", stdin = true} end},
html = prettierfmt,
javascript = prettierfmt,
json = prettierfmt,
lua = {
function()
return {
exe = "lua-format",
args = {"--indent-width", 4},
stdin = true
}
end
},
python = {
function()
return {exe = "black", args = {"-"}, stdin = true}
return
{exe = "lua-format", args = {"--indent-width", 4}, stdin = true}
end
},
python = {function() return {exe = "black", args = {"-"}, stdin = true} end},
rust = {
function()
return {exe = "rustfmt", args = {"--emit=stdout"}, stdin = true}
@ -66,5 +50,13 @@ require('formatter').setup({
sh = shfmt,
typescript = prettierfmt,
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')