|
179 | 179 | ---@param line_start integer? Line where part starts |
180 | 180 | ---@param line_end integer? Line where part ends |
181 | 181 | function RenderState:set_part(part, line_start, line_end) |
182 | | - if not part or not part.id then |
| 182 | + if not part or not part.id or not part.messageID then |
183 | 183 | return |
184 | 184 | end |
185 | 185 | local part_id = part.id |
@@ -358,47 +358,47 @@ end |
358 | 358 | ---@param from_line integer Line number to start shifting from |
359 | 359 | ---@param delta integer Number of lines to shift (positive or negative) |
360 | 360 | function RenderState:shift_all(from_line, delta) |
361 | | - if delta == 0 then |
| 361 | + if delta == 0 or not state.messages then |
362 | 362 | return |
363 | 363 | end |
364 | 364 |
|
365 | 365 | local found_content_before_from_line = false |
366 | 366 | local anything_shifted = false |
367 | 367 |
|
368 | 368 | for i = #state.messages, 1, -1 do |
369 | | - local msg_wrapper = state.messages[i] |
| 369 | + local message = state.messages[i] or {} |
370 | 370 |
|
371 | | - local msg_id = msg_wrapper.info and msg_wrapper.info.id |
| 371 | + local msg_id = message.info and message.info.id |
372 | 372 | if msg_id then |
373 | | - local msg_data = self._messages[msg_id] |
374 | | - if msg_data and msg_data.line_start and msg_data.line_end then |
375 | | - if msg_data.line_start >= from_line then |
376 | | - msg_data.line_start = msg_data.line_start + delta |
377 | | - msg_data.line_end = msg_data.line_end + delta |
| 373 | + local rendered_msg = self._messages[msg_id] |
| 374 | + if rendered_msg and rendered_msg.line_start and rendered_msg.line_end then |
| 375 | + if rendered_msg.line_start >= from_line then |
| 376 | + rendered_msg.line_start = rendered_msg.line_start + delta |
| 377 | + rendered_msg.line_end = rendered_msg.line_end + delta |
378 | 378 | anything_shifted = true |
379 | | - elseif msg_data.line_end < from_line then |
| 379 | + elseif rendered_msg.line_end < from_line then |
380 | 380 | found_content_before_from_line = true |
381 | 381 | end |
382 | 382 | end |
383 | 383 | end |
384 | 384 |
|
385 | | - if msg_wrapper.parts then |
386 | | - for j = #msg_wrapper.parts, 1, -1 do |
387 | | - local part = msg_wrapper.parts[j] |
| 385 | + if message.parts then |
| 386 | + for j = #message.parts, 1, -1 do |
| 387 | + local part = message.parts[j] |
388 | 388 | if part.id then |
389 | | - local part_data = self._parts[part.id] |
390 | | - if part_data and part_data.line_start and part_data.line_end then |
391 | | - if part_data.line_start >= from_line then |
392 | | - part_data.line_start = part_data.line_start + delta |
393 | | - part_data.line_end = part_data.line_end + delta |
| 389 | + local rendered_part = self._parts[part.id] |
| 390 | + if rendered_part and rendered_part.line_start and rendered_part.line_end then |
| 391 | + if rendered_part.line_start >= from_line then |
| 392 | + rendered_part.line_start = rendered_part.line_start + delta |
| 393 | + rendered_part.line_end = rendered_part.line_end + delta |
394 | 394 | anything_shifted = true |
395 | 395 |
|
396 | | - if part_data.actions then |
397 | | - for _, action in ipairs(part_data.actions) do |
| 396 | + if rendered_part.actions then |
| 397 | + for _, action in ipairs(rendered_part.actions) do |
398 | 398 | shift_action_lines(action, delta) |
399 | 399 | end |
400 | 400 | end |
401 | | - elseif part_data.line_end < from_line then |
| 401 | + elseif rendered_part.line_end < from_line then |
402 | 402 | found_content_before_from_line = true |
403 | 403 | end |
404 | 404 | end |
|
0 commit comments