@@ -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