neovim: add formatting module
This commit is contained in:
@@ -24,6 +24,10 @@ null_ls.setup({
|
|||||||
pattern = "*",
|
pattern = "*",
|
||||||
group = group,
|
group = group,
|
||||||
callback = function()
|
callback = function()
|
||||||
|
if not require("formatting").is_enabled(vim.api.nvim_get_current_buf()) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
vim.lsp.buf.format({
|
vim.lsp.buf.format({
|
||||||
filter = function(client)
|
filter = function(client)
|
||||||
return not vim.tbl_contains(servers_with_annoying_formatters, client.name)
|
return not vim.tbl_contains(servers_with_annoying_formatters, client.name)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
local lualine = require("lualine")
|
local lualine = require("lualine")
|
||||||
local devicons = require("nvim-web-devicons")
|
local devicons = require("nvim-web-devicons")
|
||||||
|
local formatting = require("formatting")
|
||||||
|
|
||||||
local mode = {
|
local mode = {
|
||||||
"mode",
|
"mode",
|
||||||
@@ -22,6 +23,17 @@ local relative_filename = {
|
|||||||
path = 1,
|
path = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local formatting_status = {
|
||||||
|
function()
|
||||||
|
local is_formatting_enabled = formatting.is_enabled(vim.api.nvim_get_current_buf())
|
||||||
|
if is_formatting_enabled then
|
||||||
|
return "[f+]"
|
||||||
|
else
|
||||||
|
return "[f-]"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
local searchcount = {
|
local searchcount = {
|
||||||
"searchcount",
|
"searchcount",
|
||||||
}
|
}
|
||||||
@@ -128,7 +140,7 @@ lualine.setup({
|
|||||||
lualine_a = { mode },
|
lualine_a = { mode },
|
||||||
lualine_b = { branch },
|
lualine_b = { branch },
|
||||||
lualine_c = { diagnostics, relative_filename },
|
lualine_c = { diagnostics, relative_filename },
|
||||||
lualine_x = { macro_recording, searchcount, location, tabstop, fileformat },
|
lualine_x = { macro_recording, searchcount, formatting_status, location, tabstop, fileformat },
|
||||||
lualine_y = { filetype },
|
lualine_y = { filetype },
|
||||||
lualine_z = {},
|
lualine_z = {},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -62,3 +62,5 @@ pack.add({
|
|||||||
require("catppuccin").setup({})
|
require("catppuccin").setup({})
|
||||||
|
|
||||||
pack.register_user_commands()
|
pack.register_user_commands()
|
||||||
|
|
||||||
|
require("formatting").register_user_commands()
|
||||||
|
|||||||
70
neovim/.config/nvim/lua/formatting.lua
Normal file
70
neovim/.config/nvim/lua/formatting.lua
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
--[[
|
||||||
|
-- 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
|
||||||
Reference in New Issue
Block a user