Skip to content

Commit 1c63f37

Browse files
committed
Prioritize focused window in switchbuf useopen/usetab
If the same buffer is open in multiple windows and one of them is focused, use the focused window.
1 parent 5a39d1f commit 1c63f37

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

lua/dap/session.lua

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -425,14 +425,20 @@ local function jump_to_location(bufnr, line, column, switchbuf, filetype)
425425
set_cursor(cur_win, line, column)
426426
else
427427
local win = vim.fn.win_getid(vim.fn.winnr('#'))
428-
api.nvim_win_set_buf(win, bufnr)
429-
set_cursor(win, line, column)
428+
if win then
429+
api.nvim_win_set_buf(win, bufnr)
430+
set_cursor(win, line, column)
431+
end
430432
end
431433
return true
432434
end
433435

434436
function switchbuf_fn.useopen()
435-
for _, win in pairs(api.nvim_tabpage_list_wins(0)) do
437+
if api.nvim_win_get_buf(cur_win) == bufnr then
438+
set_cursor(cur_win, line, column)
439+
return true
440+
end
441+
for _, win in ipairs(api.nvim_tabpage_list_wins(0)) do
436442
if api.nvim_win_get_buf(win) == bufnr then
437443
set_cursor(win, line, column)
438444
return true
@@ -442,10 +448,14 @@ local function jump_to_location(bufnr, line, column, switchbuf, filetype)
442448
end
443449

444450
function switchbuf_fn.usetab()
451+
if api.nvim_win_get_buf(cur_win) == bufnr then
452+
set_cursor(cur_win, line, column)
453+
return true
454+
end
445455
local tabs = {0,}
446456
vim.list_extend(tabs, api.nvim_list_tabpages())
447-
for _, tabpage in pairs(tabs) do
448-
for _, win in pairs(api.nvim_tabpage_list_wins(tabpage)) do
457+
for _, tabpage in ipairs(tabs) do
458+
for _, win in ipairs(api.nvim_tabpage_list_wins(tabpage)) do
449459
if api.nvim_win_get_buf(win) == bufnr then
450460
api.nvim_set_current_tabpage(tabpage)
451461
set_cursor(win, line, column)

0 commit comments

Comments
 (0)