Skip to content

Commit 907ee29

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

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

lua/bqf/qfwin/handler.lua

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -246,45 +246,53 @@ function M.open(close, jumpCmd, qwinid, idx)
246246
local current_tabnr = vim.api.nvim_win_get_tabpage(vim.api.nvim_get_current_win())
247247
local winnr
248248
local winid
249+
local tabnr
250+
local current_tab = false
249251
local bufInfos = fn.getbufinfo(bufnr)
250252
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]
253+
for i = 1, #buffinfo.windows do
254+
local wininfo = vim.fn.getwininfo(windows[i])[1]
255255

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

262262
local winnr_ = wininfo.winnr
263263
local winid_ = wininfo.winid
264264

265265
if not (winid) then
266266
winnr = winnr_
267267
winid = winid_
268-
else
269-
if winnr_ < winnr then
268+
tabnr = tabnr_
269+
elseif tabnr_ == current_tabnr then
270+
if current_tab == false or winnr_ < winnr then
270271
winnr = winnr_
272+
if winnr == 1 then
273+
goto finish
274+
end
271275
winid = winid_
276+
tabnr = tabnr_
277+
current_tab = true
272278
end
273-
end
274-
275-
if winnr == 1 then
276-
break
279+
elseif tabnr_ < tabnr then
280+
winnr = winnr_
281+
winid = winid_
282+
tabnr = tabnr_
283+
elseif winnr_ < winnr then
284+
winnr = winnr_
285+
winid = winid_
277286
end
278287
end
279288
end
280289

281290
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)
291+
local bufnr = vim.fn.winbufnr(1)
292+
winid = vim.fn.bufwinid(bufnr)
287293
end
294+
:: finish ::
295+
vim.api.nvim_set_current_win(winid)
288296
api.nvim_set_current_buf(bufnr)
289297
end
290298
end)

0 commit comments

Comments
 (0)