Skip to content

Commit 523269b

Browse files
Iraq JaberIraq Jaber
authored andcommitted
fixup! feat(qfwin): change to make opening item location consistent and predicable
1 parent 487b28f commit 523269b

1 file changed

Lines changed: 30 additions & 21 deletions

File tree

lua/bqf/qfwin/handler.lua

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -243,48 +243,57 @@ function M.open(close, jumpCmd, qwinid, idx)
243243
end
244244
cmd(('%s %s'):format(jumpCmd, fname))
245245
else
246-
local current_tabnr = vim.api.nvim_win_get_tabpage(vim.api.nvim_get_current_win())
247246
local winnr
248247
local winid
248+
local tabnr
249+
local current_tabnr = vim.api.nvim_win_get_tabpage(vim.api.nvim_get_current_win())
250+
local current_tab = false
251+
249252
local bufInfos = fn.getbufinfo(bufnr)
250253
for key, buffinfo in pairs(bufInfos) do
251-
local windows = buffinfo.windows
252-
for i = 1, #windows do
253-
local window = windows[i]
254-
local wininfo = vim.fn.getwininfo(window)[1]
254+
for i = 1, #buffinfo.windows do
255+
local wininfo = vim.fn.getwininfo(windows[i])[1]
255256

256-
-- if wininfo.tabnr ~= current_tabnr then
257-
-- print('break')
258-
-- -- continue
259-
-- do break end
260-
-- end
257+
local tabnr_ = wininfo.tabnr
258+
259+
if tabnr and tabnr_ > tabnr then
260+
do break end
261+
end
261262

262263
local winnr_ = wininfo.winnr
263264
local winid_ = wininfo.winid
264265

265266
if not (winid) then
266267
winnr = winnr_
267268
winid = winid_
268-
else
269-
if winnr_ < winnr then
269+
tabnr = tabnr_
270+
elseif tabnr_ == current_tabnr then
271+
if current_tab == false or winnr_ < winnr then
270272
winnr = winnr_
273+
if winnr == 1 then
274+
goto finish
275+
end
271276
winid = winid_
277+
tabnr = tabnr_
278+
current_tab = true
272279
end
273-
end
274-
275-
if winnr == 1 then
276-
break
280+
elseif tabnr_ < tabnr then
281+
winnr = winnr_
282+
winid = winid_
283+
tabnr = tabnr_
284+
elseif winnr_ < winnr then
285+
winnr = winnr_
286+
winid = winid_
277287
end
278288
end
279289
end
280290

281291
if not (winid) then
282-
local buffnr = vim.fn.winbufnr(1)
283-
local winid = vim.fn.bufwinid(buffnr)
284-
vim.api.nvim_set_current_win(winid)
285-
else
286-
vim.api.nvim_set_current_win(winid)
292+
local bufnr = vim.fn.winbufnr(1)
293+
winid = vim.fn.bufwinid(bufnr)
287294
end
295+
:: finish ::
296+
vim.api.nvim_set_current_win(winid)
288297
api.nvim_set_current_buf(bufnr)
289298
end
290299
end)

0 commit comments

Comments
 (0)