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
|
-- 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')
|
||||||
|
|
Loading…
Reference in a new issue