Skip to content

Commit 8296e89

Browse files
committed
fix(renderer): avoid emitting 'custom.emit_events.finished' and trigger scheduled full render
1 parent 38aa043 commit 8296e89

3 files changed

Lines changed: 38 additions & 8 deletions

File tree

lua/opencode/event_manager.lua

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,9 @@ function EventManager:_on_drained_events(events)
380380
if not config.ui.output.rendering.event_collapsing then
381381
for _, event in ipairs(normalized_events) do
382382
if event and event.type then
383-
self:emit(event.type, event.properties)
383+
if event.type ~= 'custom.emit_events.finished' then
384+
self:emit(event.type, event.properties)
385+
end
384386
else
385387
log.warn('Received event with missing type: %s', vim.inspect(event))
386388
end
@@ -432,7 +434,9 @@ function EventManager:_on_drained_events(events)
432434
for i = 1, #normalized_events do
433435
local event = collapsed_events[i]
434436
if event and event.type then
435-
self:emit(event.type, event.properties)
437+
if event.type ~= 'custom.emit_events.finished' then
438+
self:emit(event.type, event.properties)
439+
end
436440
elseif event then
437441
log.warn('Received collapsed event with missing type: %s', vim.inspect(event))
438442
end

lua/opencode/ui/ui.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,12 @@ function M.restore_hidden_windows()
245245
autocmds.setup_autocmds(windows)
246246
autocmds.setup_resize_handler(windows)
247247

248+
if state.messages ~= nil then
249+
renderer.perform_scheduled_render({ full_render = true, dirty_messages = {}, dirty_parts = {} })
250+
else
251+
renderer.render_full_session()
252+
end
253+
248254
if hidden.input_hidden then
249255
input_window._hide()
250256
end

tests/data/message-removal.expected.json

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
],
167167
[
168168
7,
169-
7,
169+
6,
170170
0,
171171
{
172172
"virt_text_repeat_linebreak": true,
@@ -186,7 +186,7 @@
186186
],
187187
[
188188
8,
189-
8,
189+
7,
190190
0,
191191
{
192192
"virt_text_repeat_linebreak": true,
@@ -206,7 +206,7 @@
206206
],
207207
[
208208
9,
209-
9,
209+
8,
210210
0,
211211
{
212212
"virt_text_repeat_linebreak": true,
@@ -226,6 +226,26 @@
226226
],
227227
[
228228
10,
229+
9,
230+
0,
231+
{
232+
"virt_text_repeat_linebreak": true,
233+
"virt_text": [
234+
[
235+
"",
236+
"OpencodeMessageRoleUser"
237+
]
238+
],
239+
"right_gravity": true,
240+
"virt_text_win_col": -3,
241+
"priority": 4096,
242+
"virt_text_pos": "win_col",
243+
"ns_id": 3,
244+
"virt_text_hide": false
245+
}
246+
],
247+
[
248+
11,
229249
12,
230250
0,
231251
{
@@ -260,7 +280,7 @@
260280
}
261281
],
262282
[
263-
11,
283+
12,
264284
12,
265285
0,
266286
{
@@ -279,7 +299,7 @@
279299
}
280300
],
281301
[
282-
12,
302+
13,
283303
21,
284304
0,
285305
{
@@ -314,7 +334,7 @@
314334
}
315335
],
316336
[
317-
13,
337+
14,
318338
21,
319339
0,
320340
{

0 commit comments

Comments
 (0)