diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2025-07-16 15:12:10 -0400 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2025-07-16 15:12:10 -0400 |
| commit | 43e7eb423c9ba89558a5ce6d0be9efa8cf731dd2 (patch) | |
| tree | 6705543ea950cd5857f77a0e23dc9c27a8c19f7b /nvim | |
| parent | 78031d1a092b9aeb57e41adc30e7b155824f181c (diff) | |
Add debounce to diagnostic autocmd
Diffstat (limited to 'nvim')
| -rw-r--r-- | nvim/init.lua | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/nvim/init.lua b/nvim/init.lua index 03a6346..0fd55c1 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -51,12 +51,25 @@ vim.opt.signcolumn = "yes" -- Status line vim.opt.laststatus = 3 +-- NOTE: potential issues using non-monotonic clock +-- use uv.new_timer +local debounce = { + diagnostic = vim.uv.new_timer() +} + +debounce.diagnostic:start(50, 0, function() +end) + local statusline_group = vim.api.nvim_create_augroup("custom.statusline", { clear = false }) --- PERF: this event fires often, should consider debouncing it vim.api.nvim_create_autocmd('DiagnosticChanged', { desc = "Set diagnostic counts for statusline", group = statusline_group, callback = function(_) + if debounce.diagnostic:get_due_in() ~= 0 then + return + end + debounce.diagnostic:start(50, 0, function() end) + local counts = vim.diagnostic.count() local s = '' for i = 1, 4, 1 do @@ -81,6 +94,7 @@ vim.api.nvim_create_autocmd('DiagnosticChanged', { end }) + -- PERF: consider debouncing vim.api.nvim_create_autocmd({ 'BufRead', 'BufWritePost' }, { desc = "Update git info in statusline", @@ -125,7 +139,9 @@ vim.cmd([[ ]]) vim.opt.statusline = -'%-t %= %-{%StatuslineDiagnostics()%} %1(%M%) %{%StatuslineGit()%} %= %-([%R%Y]%) %#LineNr#%c,%l%* %#LineNrAbove#%3p%%' + '%-t %= ' .. + '%-{%StatuslineDiagnostics()%} %1(%M%) %{%StatuslineGit()%} %= ' .. + '%-(%#Delimiter#[%#Operator#%R%Y%#Delimiter#]%*%) %#LineNr#%c,%l%* %#LineNrAbove#%3p%%' vim.opt.showtabline = 1 |
