WIP: using formatter.nvim instead of neoformat (#781)

This commit is contained in:
Abouzar Parvan 2021-07-10 22:48:28 +04:30 committed by GitHub
parent 50202efd0d
commit 0f7c876e93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 137 additions and 30 deletions

61
lua/lv-formatter/init.lua Normal file
View file

@ -0,0 +1,61 @@
-- autoformat
if O.format_on_save then
require("lv-utils").define_augroups {
autoformat = {
{
"BufWritePost",
"*",
"FormatWrite",
},
},
}
end
-- check if formatter has been defined for the language or not
function formatter_exists(lang_formatter)
if lang_formatter == nil then
return false
end
if lang_formatter.exe == nil or lang_formatter.args == nil then
return false
end
return true
end
-- returns default formatter for given language
function formatter_return(lang_formatter)
return {
exe = lang_formatter.exe,
args = lang_formatter.args,
stdin = not (lang_formatter.stdin ~= nil),
}
end
-- fill a table like this -> {rust: {exe:"sth",args:{"a","b"},stdin=true},go: {}...}
local formatter_filetypes = {}
for k, v in pairs(O.lang) do
if formatter_exists(v.formatter) then
local keys = v.filetypes
if keys == nil then
keys = {k}
end
for _, l in pairs(keys) do
formatter_filetypes[l] = {
function ()
return formatter_return(v.formatter)
end,
}
end
end
end
require("formatter").setup {
logging = false,
filetype = formatter_filetypes,
}
if not O.format_on_save then
vim.cmd [[if exists('#autoformat#BufWritePost')
:autocmd! autoformat
endif]]
end