@@ -31,7 +31,7 @@ function M.load_events(file_path)
3131 end
3232
3333 M .events = events
34- M .current_index = 0
34+ M .reset ()
3535 M .last_loaded_file = file_path
3636 vim .notify (' Loaded ' .. # M .events .. ' events from ' .. data_file , vim .log .levels .INFO )
3737 return true
@@ -87,21 +87,28 @@ function M.emit_event(event)
8787 end )
8888end
8989
90- function M .replay_next ()
90+ function M .replay_next (steps )
91+ steps = steps or 1
92+
9193 if M .current_index >= # M .events then
9294 vim .notify (' No more events to replay' , vim .log .levels .WARN )
9395 return
9496 end
9597
96- M .current_index = M .current_index + 1
97- M .emit_event (M .events [M .current_index ])
98+ for i = 1 , steps do
99+ if M .current_index < # M .events then
100+ M .current_index = M .current_index + 1
101+ M .emit_event (M .events [M .current_index ])
102+ else
103+ vim .notify (' No more events to replay' , vim .log .levels .WARN )
104+ return
105+ end
106+ end
98107end
99108
100109function M .replay_all (delay_ms )
101110 if # M .events == 0 then
102111 M .load_events ()
103- elseif M .current_index == # M .events then
104- M .reset ()
105112 end
106113
107114 delay_ms = delay_ms or 50
@@ -266,7 +273,7 @@ function M.start(opts)
266273 ' ' ,
267274 ' Commands:' ,
268275 ' :ReplayLoad [file] - Load events (default: tests/data/simple-session.json)' ,
269- " :ReplayNext - Replay next event (<leader>n or '>' )" ,
276+ " :ReplayNext [step] - Replay next [step] event(s) (default 1) (<leader>n or '>' )" ,
270277 ' :ReplayAll [ms] - Replay all events with delay (default 50ms) (<leader>a)' ,
271278 ' :ReplayStop - Stop auto-replay (<leader>s)' ,
272279 ' :ReplayReset - Reset to beginning (<leader>r)' ,
@@ -280,9 +287,10 @@ function M.start(opts)
280287 M .load_events (file )
281288 end , { nargs = ' ?' , desc = ' Load event data file' , complete = ' file' })
282289
283- vim .api .nvim_create_user_command (' ReplayNext' , function ()
284- M .replay_next ()
285- end , { desc = ' Replay next event' })
290+ vim .api .nvim_create_user_command (' ReplayNext' , function (cmd_opts )
291+ local steps = cmd_opts .args ~= ' ' and cmd_opts .args or nil
292+ M .replay_next (steps )
293+ end , { nargs = ' ?' , desc = ' Replay next event' })
286294
287295 vim .api .nvim_create_user_command (' ReplayAll' , function (cmd_opts )
288296 local delay = tonumber (cmd_opts .args ) or 50
0 commit comments