@@ -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
@@ -244,6 +244,49 @@ function M.open(close, jumpCmd, qwinid, idx)
244244 cmd ((' %s %s' ):format (jumpCmd , fname ))
245245 else
246246 api .nvim_set_current_buf (bufnr )
247+ local current_tabnr = vim .api .nvim_win_get_tabpage (vim .api .nvim_get_current_win ())
248+ local winnr
249+ local winid
250+ local bufInfos = fn .getbufinfo (bufnr )
251+ for key , buffinfo in pairs (bufInfos ) do
252+ local windows = buffinfo .windows
253+ for i = 1 , # windows do
254+ local window = windows [i ]
255+ local wininfo = vim .fn .getwininfo (window )[1 ]
256+
257+ -- if wininfo.tabnr ~= current_tabnr then
258+ -- print('break')
259+ -- -- continue
260+ -- do break end
261+ -- end
262+
263+ local winnr_ = wininfo .winnr
264+ local winid_ = wininfo .winid
265+
266+ if not (winnr ) then
267+ winnr = winnr_
268+ winid = winid_
269+ else
270+ if winnr_ < winnr then
271+ winnr = winnr_
272+ winid = winid_
273+ end
274+ end
275+
276+ if winnr_ == 1 then
277+ break
278+ end
279+ end
280+ end
281+
282+ if not (winid ) then
283+ local buffnr = vim .fn .winbufnr (1 )
284+ local winid = vim .fn .bufwinid (buffnr )
285+ vim .api .nvim_set_current_win (winid )
286+ else
287+ vim .api .nvim_set_current_win (winid )
288+ end
289+ api .nvim_set_current_buf (bufnr )
247290 end
248291 end )
249292end
@@ -257,10 +300,10 @@ function M.tabedit(stay, qwinid, idx)
257300 qwinid = qwinid or api .nvim_get_current_win ()
258301 local unnameBuf = true
259302 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
303+ unnameBuf = false
304+ local fname = fn .fnameescape (api .nvim_buf_get_name (bufnr ))
305+ cmd ((' tabedit %s' ):format (fname ))
306+ end ) then
264307 local curTabPage = api .nvim_get_current_tabpage ()
265308 if not unnameBuf then
266309 api .nvim_set_current_win (qwinid )
0 commit comments