Skip to content

Commit a88b0f8

Browse files
fix(ui.panes): handle unloaded buffer
manually unloading buffer with `:bd` after creating the buffer breaks the panes because buffer is *unloaded* while it is still valid buffer. When calling `:render()`, pane should ensure the buffer is loaded before the `BufWinEnter` event is emitted.
1 parent 70eefb5 commit a88b0f8

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lua/rest-nvim/ui/panes.lua

+7-3
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ function RestUIPaneGroup:render()
3131
pane:render()
3232
end
3333
end
34+
---@param winnr integer
3435
function RestUIPaneGroup:enter(winnr)
35-
if not self.panes[1].bufnr then
36+
if not self.panes[1].bufnr or not vim.api.nvim_buf_is_loaded(self.panes[1].bufnr) then
3637
self:render()
3738
end
3839
vim.api.nvim_win_set_buf(winnr, self.panes[1].bufnr)
@@ -65,8 +66,11 @@ function M.create_pane_group(name, pane_opts, opts)
6566
name = pane_opt.name,
6667
group = group,
6768
render = function (self)
68-
if not self.bufnr then
69-
self.bufnr = vim.api.nvim_create_buf(false, false)
69+
if not self.bufnr or not vim.api.nvim_buf_is_loaded(self.bufnr) then
70+
self.bufnr = self.bufnr or vim.api.nvim_create_buf(false, false)
71+
-- small trick to ensure buffer is loaded before the `BufWinEnter` event
72+
-- unless lazy-setting winbar won't work
73+
vim.fn.bufload(self.bufnr)
7074
vim.bo[self.bufnr].modifiable = false
7175
vim.bo[self.bufnr].swapfile = false
7276
vim.bo[self.bufnr].buftype = "nofile"

0 commit comments

Comments
 (0)