fix(select): redraw screen after buffer switch
Problem: `select` opens files inside a `vim.schedule_wrap` callback from `normalize_url`. Scheduled `FileType` autocmds (e.g. treesitter parsing) queue onto the same batch, blocking the screen update. The oil buffer stays visible until the heavy work finishes. Solution: call `vim.cmd.redraw()` after the buffer switch to flush the screen before any queued scheduled callbacks run. Matches the behavior of plain `:e`.
This commit is contained in:
parent
c42c087ffb
commit
83b104cced
1 changed files with 1 additions and 4 deletions
|
|
@ -870,8 +870,6 @@ M.select = function(opts, callback)
|
|||
local filebufnr = vim.fn.bufadd(normalized_url)
|
||||
local entry_is_file = not vim.endswith(normalized_url, '/')
|
||||
|
||||
-- The :buffer command doesn't set buflisted=true
|
||||
-- So do that for normal files or for canola dirs if config set buflisted=true
|
||||
if entry_is_file or config.buf_options.buflisted then
|
||||
vim.bo[filebufnr].buflisted = true
|
||||
end
|
||||
|
|
@ -879,7 +877,6 @@ M.select = function(opts, callback)
|
|||
local cmd = 'buffer'
|
||||
if opts.tab then
|
||||
vim.cmd.tabnew({ mods = mods })
|
||||
-- Make sure the new buffer from tabnew gets cleaned up
|
||||
vim.bo.bufhidden = 'wipe'
|
||||
elseif opts.split then
|
||||
cmd = 'sbuffer'
|
||||
|
|
@ -893,12 +890,12 @@ M.select = function(opts, callback)
|
|||
args = { filebufnr },
|
||||
mods = mods,
|
||||
})
|
||||
-- Ignore swapfile errors
|
||||
if not ok and err and not err:match('^Vim:E325:') then
|
||||
vim.api.nvim_echo({ { err, 'Error' } }, true, {})
|
||||
end
|
||||
end
|
||||
|
||||
vim.cmd.redraw()
|
||||
open_next_entry(cb)
|
||||
end)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue