@@ -74,9 +74,9 @@ function M.signVMToggle(bufnr)
7474 vim .validate ({
7575 mode = {
7676 mode , function (m )
77- -- ^V = 0x16
78- return m :lower () == ' v' or m == (' %c' ):format (0x16 )
79- end , ' visual mode'
77+ -- ^V = 0x16
78+ return m :lower () == ' v' or m == (' %c' ):format (0x16 )
79+ end , ' visual mode'
8080 }
8181 })
8282 -- ^[ = 0x1b
@@ -243,6 +243,48 @@ 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 ())
247+ local winnr
248+ local winid
249+ local bufInfos = fn .getbufinfo (bufnr )
250+ 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 ]
255+
256+ -- if wininfo.tabnr ~= current_tabnr then
257+ -- print('break')
258+ -- -- continue
259+ -- do break end
260+ -- end
261+
262+ local winnr_ = wininfo .winnr
263+ local winid_ = wininfo .winid
264+
265+ if not (winid ) then
266+ winnr = winnr_
267+ winid = winid_
268+ else
269+ if winnr_ < winnr then
270+ winnr = winnr_
271+ winid = winid_
272+ end
273+ end
274+
275+ if winnr == 1 then
276+ break
277+ end
278+ end
279+ end
280+
281+ 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 )
287+ end
246288 api .nvim_set_current_buf (bufnr )
247289 end
248290 end )
@@ -257,10 +299,10 @@ function M.tabedit(stay, qwinid, idx)
257299 qwinid = qwinid or api .nvim_get_current_win ()
258300 local unnameBuf = true
259301 if doEdit (qwinid , idx , false , function (bufnr )
260- unnameBuf = false
261- local fname = fn .fnameescape (api .nvim_buf_get_name (bufnr ))
262- cmd ((' tabedit %s' ):format (fname ))
263- end ) then
302+ unnameBuf = false
303+ local fname = fn .fnameescape (api .nvim_buf_get_name (bufnr ))
304+ cmd ((' tabedit %s' ):format (fname ))
305+ end ) then
264306 local curTabPage = api .nvim_get_current_tabpage ()
265307 if not unnameBuf then
266308 api .nvim_set_current_win (qwinid )
0 commit comments