fix(keymaps): line number toggling when only one option is set

The previous code would blindly toggle both number and relativenumber
settings, even if one was set and the other wasn't. Instead, save the
respective values when toggling off, and restore when toggling on.
This commit is contained in:
Aron Griffis 2023-07-20 14:43:04 -04:00
parent 7ae136d07e
commit fdd5fa28ed

View file

@ -111,7 +111,25 @@ end
map("n", "<leader>uf", require("lazyvim.plugins.lsp.format").toggle, { desc = "Toggle format on Save" })
map("n", "<leader>us", function() Util.toggle("spell") end, { desc = "Toggle Spelling" })
map("n", "<leader>uw", function() Util.toggle("wrap") end, { desc = "Toggle Word Wrap" })
map("n", "<leader>ul", function() Util.toggle("relativenumber", true) Util.toggle("number") end, { desc = "Toggle Line Numbers" })
local saved_numbering
local function save_numbering()
local force_enabled = not vim.opt_local.number:get() and not vim.opt_local.relativenumber:get()
saved_numbering = {
number = force_enabled or vim.opt_local.number:get(),
relativenumber = force_enabled or vim.opt_local.relativenumber:get(),
}
end
save_numbering()
map("n", "<leader>ul", function()
if vim.opt_local.number:get() or vim.opt_local.relativenumber:get() then
save_numbering()
Util.toggle("number", false, { false })
Util.toggle("relativenumber", false, { false })
else
Util.toggle("number", false, { saved_numbering.number })
Util.toggle("relativenumber", false, { saved_numbering.relativenumber })
end
end, { desc = "Toggle Line Numbers" })
map("n", "<leader>ud", Util.toggle_diagnostics, { desc = "Toggle Diagnostics" })
local conceallevel = vim.o.conceallevel > 0 and vim.o.conceallevel or 3
map("n", "<leader>uc", function() Util.toggle("conceallevel", false, {0, conceallevel}) end, { desc = "Toggle Conceal" })