Skip to content

Commit 7c03de6

Browse files
committed
test(replay): add step arg to ReplayNext
Useful for skipping forward to interesting events
1 parent d9ac62e commit 7c03de6

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

tests/manual/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ nvim -u tests/manual/init_replay.lua -c "lua require('tests.manual.streaming_ren
2323
Once loaded, you can use these commands in Neovim:
2424

2525
- `:ReplayLoad [file]` - Load event data file (default: tests/data/simple-session.json)
26-
- `:ReplayNext` - Replay the next event in sequence
26+
- `:ReplayNext [step]` - Replay next [step] event(s) (default 1)
2727
- `:ReplayAll [ms]` - Auto-replay all events with optional delay in milliseconds (default: 50ms)
2828
- `:ReplayStop` - Stop auto-replay
2929
- `:ReplayReset` - Reset to the beginning (clears buffer and resets event index)

tests/manual/streaming_renderer_replay.lua

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
8888
end
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
98107
end
99108

100109
function 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

Comments
 (0)