Files
dotfiles/neovim/.config/nvim/lua/formatting.lua

71 lines
1.8 KiB
Lua

--[[
-- this file breaks my brain with all of these booleans, but it seems to work
--]]
local M = {
-- false = formatting enabled for all buffers
-- true = formatting disabled for all buffers
-- number[] = formatting disabled for only these buffers
---@type true | false | number[]
_disabled_buffers = false,
}
---@param buf number
---@return boolean, boolean
--- returns 2 booleans: enabled for all buffers, enabled for this buffer
function M._is_enabled(buf)
if M._disabled_buffers == true then
return false, false
end
if type(M._disabled_buffers) == "table" then
local enabled = not vim.tbl_contains(M._disabled_buffers, buf)
return true, enabled
end
return true, true
end
---@param buf number
function M.is_enabled(buf)
local _, enabled = M._is_enabled(buf)
return enabled
end
function M.register_user_commands()
vim.api.nvim_create_user_command("FormattingEnable", function()
M._disabled_buffers = false
end, {})
vim.api.nvim_create_user_command("FormattingEnableBuf", function()
local current_buf = vim.api.nvim_get_current_buf()
if type(M._disabled_buffers) == "table" then
local new_table = {}
for _, b in ipairs(M._disabled_buffers) do
if b ~= current_buf then
table.insert(new_table, b)
end
end
M._disabled_buffers = new_table
else
M._disabled_buffers = false
end
end, {})
vim.api.nvim_create_user_command("FormattingDisable", function()
M._disabled_buffers = true
end, {})
vim.api.nvim_create_user_command("FormattingDisableBuf", function()
local current_buf = vim.api.nvim_get_current_buf()
if type(M._disabled_buffers) == "table" then
table.insert(M._disabled_buffers, current_buf)
else
M._disabled_buffers = { current_buf }
end
end, {})
end
return M