feat: add callback for handling buffer opening (#638)

This commit is contained in:
John Winston 2025-10-15 18:03:09 +01:00 committed by GitHub
parent 200df01e4b
commit dfb09e87bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -618,6 +618,7 @@ end
---@field split? "aboveleft"|"belowright"|"topleft"|"botright" Split modifier ---@field split? "aboveleft"|"belowright"|"topleft"|"botright" Split modifier
---@field tab? boolean Open the buffer in a new tab ---@field tab? boolean Open the buffer in a new tab
---@field close? boolean Close the original oil buffer once selection is made ---@field close? boolean Close the original oil buffer once selection is made
---@field handle_buffer_callback? fun(buf_id: integer) If defined, all other buffer related options here would be ignored. This callback allows you to take over the process of opening the buffer yourself.
---Select the entry under the cursor ---Select the entry under the cursor
---@param opts nil|oil.SelectOpts ---@param opts nil|oil.SelectOpts
@ -757,6 +758,9 @@ M.select = function(opts, callback)
elseif opts.split then elseif opts.split then
cmd = "sbuffer" cmd = "sbuffer"
end end
if opts.handle_buffer_callback ~= nil then
opts.handle_buffer_callback(filebufnr)
else
---@diagnostic disable-next-line: param-type-mismatch ---@diagnostic disable-next-line: param-type-mismatch
local ok, err = pcall(vim.cmd, { local ok, err = pcall(vim.cmd, {
cmd = cmd, cmd = cmd,
@ -767,6 +771,7 @@ M.select = function(opts, callback)
if not ok and err and not err:match("^Vim:E325:") then if not ok and err and not err:match("^Vim:E325:") then
vim.api.nvim_echo({ { err, "Error" } }, true, {}) vim.api.nvim_echo({ { err, "Error" } }, true, {})
end end
end
open_next_entry(cb) open_next_entry(cb)
end) end)