feat(extmarks): add virt_text_repeat_linebreak flag (#26625)

Problem:  Unable to predict which byte-offset to place virtual text to
          make it repeat visually in the wrapped part of a line.
Solution: Add a flag to nvim_buf_set_extmark() that causes virtual
          text to repeat in wrapped lines.
This commit is contained in:
luukvbaal
2023-12-26 00:16:03 +01:00
committed by GitHub
parent 0a598c13b1
commit bbd5c6363c
12 changed files with 55 additions and 12 deletions

View File

@@ -2696,6 +2696,8 @@ nvim_buf_set_extmark({buffer}, {ns_id}, {line}, {col}, {*opts})
text is selected or hidden because of scrolling with
'nowrap' or 'smoothscroll'. Currently only affects
"overlay" virt_text.
• virt_text_repeat_linebreak : repeat the virtual text on
wrapped lines.
• hl_mode : control how highlights are combined with the
highlights of the text. Currently only affects virt_text
highlights, but might affect `hl_group` in later versions.

View File

@@ -339,11 +339,10 @@ The following changes to existing APIs or features add new behavior.
In addition, |nvim_buf_get_extmarks()| has gained an "overlap" option to
return such ranges even if they started before the specified position.
Extmarks can opt-out of precise undo tracking using the new "undo_restore"
flag to |nvim_buf_set_extmark()|
• Extmarks can be automatically hidden or removed using the new "invalidate"
flag to |nvim_buf_set_extmark()|
The following flags were added to |nvim_buf_set_extmark()|:
- "undo_restore": opt-out extmarks of precise undo tracking.
- "invalidate": automatically hide or delete extmarks.
- "virt_text_repeat_linebreak": repeat virtual text on wrapped lines.
• LSP hover and signature help now use Treesitter for highlighting of Markdown
content.

View File

@@ -519,6 +519,8 @@ function vim.api.nvim_buf_line_count(buffer) end
--- text is selected or hidden because of scrolling with
--- 'nowrap' or 'smoothscroll'. Currently only affects
--- "overlay" virt_text.
--- • virt_text_repeat_linebreak : repeat the virtual text on
--- wrapped lines.
--- • hl_mode : control how highlights are combined with the
--- highlights of the text. Currently only affects virt_text
--- highlights, but might affect `hl_group` in later versions.

View File

@@ -251,6 +251,7 @@ error('Cannot require a meta file')
--- @field virt_text_pos? string
--- @field virt_text_win_col? integer
--- @field virt_text_hide? boolean
--- @field virt_text_repeat_linebreak? boolean
--- @field hl_eol? boolean
--- @field hl_mode? string
--- @field invalidate? boolean