Skip to content

Commit e4a9a61

Browse files
committed
Debounce jump #213
1 parent df3ce3b commit e4a9a61

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

lua/nvimgdb/parser_actions.lua

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ local log = require 'nvimgdb.log'
66
---@class ParserActions @parser callbacks handler
77
---@field private cursor Cursor @current line sign handler
88
---@field private win Win @jump window manager
9+
---@field private last_fname string? last jumped file name to debounce unwanted jumps
10+
---@field private last_line integer? last jumped line
911
local ParserActions = {}
1012
ParserActions.__index = ParserActions
1113

@@ -18,6 +20,8 @@ function ParserActions.new(cursor, win)
1820
local self = setmetatable({}, ParserActions)
1921
self.cursor = cursor
2022
self.win = win
23+
self.last_fname = nil
24+
self.last_line = nil
2125
return self
2226
end
2327

@@ -26,15 +30,23 @@ function ParserActions:continue_program()
2630
log.debug({"ParserActions:continue_program"})
2731
self.cursor:hide()
2832
vim.api.nvim_command("doautocmd User NvimGdbContinue")
33+
self.last_fname = nil
34+
self.last_line = nil
2935
end
3036

3137
---Handle the program breaked. Show the source code.
3238
---@param fname string full path to the source file
3339
---@param line number line number
3440
function ParserActions:jump_to_source(fname, line)
3541
log.debug({"ParserActions:jump_to_source", fname = fname, line = line})
36-
self.win:jump(fname, line)
37-
vim.api.nvim_command("doautocmd User NvimGdbBreak")
42+
if fname ~= self.last_fname or line ~= self.last_line then
43+
self.last_fname = fname
44+
self.last_line = line
45+
self.win:jump(fname, line)
46+
vim.api.nvim_command("doautocmd User NvimGdbBreak")
47+
else
48+
log.debug({"ignore repeated jump"})
49+
end
3850
end
3951

4052
---It's high time to query actual breakpoints.

0 commit comments

Comments
 (0)