summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/core/formatter.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/core/formatter.lua')
-rw-r--r--.config/nvim/lua/core/formatter.lua60
1 files changed, 60 insertions, 0 deletions
diff --git a/.config/nvim/lua/core/formatter.lua b/.config/nvim/lua/core/formatter.lua
new file mode 100644
index 0000000..04c078a
--- /dev/null
+++ b/.config/nvim/lua/core/formatter.lua
@@ -0,0 +1,60 @@
+-- autoformat
+if O.format_on_save then
+ require("utils").define_augroups {
+ autoformat = {
+ {
+ "BufWritePost",
+ "*",
+ ":silent FormatWrite",
+ },
+ },
+ }
+end
+
+-- -- check if formatter has been defined for the language or not
+-- local 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
+-- local 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
+local status_ok, _ = pcall(require, "formatter")
+if not status_ok then
+ return
+end
+
+if not O.format_on_save then
+ vim.cmd [[if exists('#autoformat#BufWritePost')
+ :autocmd! autoformat
+ endif]]
+end