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:
parent
94cd954df9
commit
dee44417a6
1 changed files with 44 additions and 52 deletions
|
@ -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')
|
||||
|
|
Loading…
Reference in a new issue