feat: emit OilReadPost user event after each buffer render
Problem: third-party plugins like oil-git-status.nvim had no way to know when an oil buffer was re-rendered after a filesystem change, causing their decorations to be cleared with no signal to refresh. Solution: emit a User OilReadPost autocmd after every successful render_buffer_async call. Also document all oil user events (OilEnter, OilReadPost, OilMutationComplete) in oil.txt since none were previously documented. Cherry-picked from: stevearc/oil.nvim#723
This commit is contained in:
parent
2228f80196
commit
29239d56fb
2 changed files with 52 additions and 1 deletions
|
|
@ -867,7 +867,19 @@ local pending_renders = {}
|
|||
---@param opts nil|table
|
||||
--- refetch nil|boolean Defaults to true
|
||||
---@param callback nil|fun(err: nil|string)
|
||||
M.render_buffer_async = function(bufnr, opts, callback)
|
||||
M.render_buffer_async = function(bufnr, opts, caller_callback)
|
||||
local function callback(err)
|
||||
if not err then
|
||||
vim.api.nvim_exec_autocmds(
|
||||
"User",
|
||||
{ pattern = "OilReadPost", modeline = false, data = { buf = bufnr } }
|
||||
)
|
||||
end
|
||||
if caller_callback then
|
||||
caller_callback(err)
|
||||
end
|
||||
end
|
||||
|
||||
opts = vim.tbl_deep_extend("keep", opts or {}, {
|
||||
refetch = true,
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue