From 7fddcd8882c39e912081bb881b327f852b241933 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Wed, 4 Mar 2026 14:01:38 -0500 Subject: [PATCH] fix(init): force redraw after deferred filetype retry Problem: vim.cmd.redraw() (without bang) is a no-op when the screen is not dirty. After invalidate_cache() sets tick=-1, Neovim has no reason to redraw, so the decoration provider is never called, on_buf never reparses, and the deferred syntax pass bails on the stale tick mismatch. Solution: use vim.cmd('redraw!') which forces a full screen redraw regardless of dirty state, ensuring on_buf fires, the cache is reparsed with did_filetype()=0 resolved filetypes, and the deferred syntax pass completes with a valid tick. --- lua/diffs/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/diffs/init.lua b/lua/diffs/init.lua index 987b868..5a818ae 100644 --- a/lua/diffs/init.lua +++ b/lua/diffs/init.lua @@ -343,7 +343,7 @@ local function ensure_cache(bufnr) if vim.api.nvim_buf_is_valid(bufnr) and hunk_cache[bufnr] then dbg('retrying filetype detection for buffer %d (was blocked by did_filetype)', bufnr) invalidate_cache(bufnr) - vim.cmd.redraw() + vim.cmd('redraw!') end ft_retry_pending[bufnr] = nil end)