mirror of
https://github.com/LunarVim/LunarVim.git
synced 2025-08-02 17:14:56 +02:00
WIP: using formatter.nvim instead of neoformat (#781)
This commit is contained in:
parent
50202efd0d
commit
0f7c876e93
6 changed files with 137 additions and 30 deletions
61
lua/lv-formatter/init.lua
Normal file
61
lua/lv-formatter/init.lua
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue