You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(ui): render tool-call borders via statuscolumn (#215)
Render tool-call borders via `'statuscolumn'` so they repeat on
soft-wrap
and foldtext lines.
- Supersedes and closes#211.
## Design
- Reuses the existing `NS_TOOL_BLOCKS` range extmark. No cache.
- Per draw: `nvim_buf_get_extmarks(... overlap=true, limit=1)`. O(log
N).
- Write cost: zero.
- `inline` + `virt_text_repeat_linebreak` not supported
([neovim/neovim#35341](neovim/neovim#35341)).
- User `chat.win_opts.statuscolumn`/`winhighlight` wins via
`tbl_deep_extend`.
- Maps each themable column highlight group to `Normal` so the gutter
blends with the chat background instead of looking like a separate
column. `cursorline=false`.
- 1-cell glyph (`╭ / │ / ╰`).
## Performance
Real chat: 10371 lines, 272 blocks, 58 visible rows.
```
ns/call: 754
ms/redraw: 0.044
```
~1-2 ms/sec under heavy streaming.
## Alternatives rejected
- `inline` + repeat: upstream wontfix
([neovim/neovim#35341](neovim/neovim#35341)).
- `overlay` + repeat: pollutes copy/paste.
- Signs: no soft-wrap repeat; shared column.
- `'showbreak'`: window-wide.
- Lua cache: O(N²) per session.
0 commit comments