feat: implement dynamic line numbering based on command mode
This commit is contained in:
@@ -95,3 +95,41 @@ cnoreabbrev <expr> lazy ((getcmdtype() == ':' && getcmdline() == 'lazy') ? 'Lazy
|
|||||||
]])
|
]])
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- change line number based on mode:
|
||||||
|
-- for command mode: make it absolute for ranges etc
|
||||||
|
-- for normal mode: relative movements <3
|
||||||
|
local cmdline_group = vim.api.nvim_create_augroup('CmdlineLinenr', {})
|
||||||
|
-- debounce cmdline enter events to make sure we dont have flickering for non user cmdline use
|
||||||
|
-- e.g. mappings using : instead of <cmd>
|
||||||
|
local cmdline_debounce_timer
|
||||||
|
|
||||||
|
autocmd('CmdlineEnter', {
|
||||||
|
group = cmdline_group,
|
||||||
|
callback = function()
|
||||||
|
cmdline_debounce_timer = vim.uv.new_timer()
|
||||||
|
cmdline_debounce_timer:start(
|
||||||
|
100,
|
||||||
|
0,
|
||||||
|
vim.schedule_wrap(function()
|
||||||
|
if vim.o.number then
|
||||||
|
vim.o.relativenumber = false
|
||||||
|
vim.api.nvim__redraw({ statuscolumn = true })
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
autocmd('CmdlineLeave', {
|
||||||
|
group = cmdline_group,
|
||||||
|
callback = function()
|
||||||
|
if cmdline_debounce_timer then
|
||||||
|
cmdline_debounce_timer:stop()
|
||||||
|
cmdline_debounce_timer = nil
|
||||||
|
end
|
||||||
|
if vim.o.number then
|
||||||
|
vim.o.relativenumber = true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user