aboutsummaryrefslogtreecommitdiffstats
path: root/nvim/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/init.lua')
-rw-r--r--nvim/init.lua20
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