aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api
diff options
context:
space:
mode:
authorluukvbaal <luukvbaal@gmail.com>2023-12-26 00:16:03 +0100
committerGitHub <noreply@github.com>2023-12-26 07:16:03 +0800
commitbbd5c6363c25e8fbbfb962f8f6c5ea1800d431ca (patch)
tree85ba9d46cbe0d01a432f4bfb5f9ce475c0ee383f /src/nvim/api
parent0a598c13b1863ba1aff378027c4376e3ab7048ee (diff)
downloadrneovim-bbd5c6363c25e8fbbfb962f8f6c5ea1800d431ca.tar.gz
rneovim-bbd5c6363c25e8fbbfb962f8f6c5ea1800d431ca.tar.bz2
rneovim-bbd5c6363c25e8fbbfb962f8f6c5ea1800d431ca.zip
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.
Diffstat (limited to 'src/nvim/api')
-rw-r--r--src/nvim/api/extmark.c5
-rw-r--r--src/nvim/api/keysets_defs.h1
2 files changed, 5 insertions, 1 deletions
diff --git a/src/nvim/api/extmark.c b/src/nvim/api/extmark.c
index b2ddef1a43..0cf16294b6 100644
--- a/src/nvim/api/extmark.c
+++ b/src/nvim/api/extmark.c
@@ -391,6 +391,8 @@ Array nvim_buf_get_extmarks(Buffer buffer, Integer ns_id, Object start, Object e
/// 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`
@@ -613,7 +615,8 @@ Integer nvim_buf_set_extmark(Buffer buffer, Integer ns_id, Integer line, Integer
}
hl.flags |= opts->hl_eol ? kSHHlEol : 0;
- virt_text.flags |= opts->virt_text_hide ? kVTHide : 0;
+ virt_text.flags |= ((opts->virt_text_hide ? kVTHide : 0)
+ | (opts->virt_text_repeat_linebreak ? kVTRepeatLinebreak : 0));
if (HAS_KEY(opts, set_extmark, hl_mode)) {
String str = opts->hl_mode;
diff --git a/src/nvim/api/keysets_defs.h b/src/nvim/api/keysets_defs.h
index fa9a2cb013..897d546f3d 100644
--- a/src/nvim/api/keysets_defs.h
+++ b/src/nvim/api/keysets_defs.h
@@ -33,6 +33,7 @@ typedef struct {
String virt_text_pos;
Integer virt_text_win_col;
Boolean virt_text_hide;
+ Boolean virt_text_repeat_linebreak;
Boolean hl_eol;
String hl_mode;
Boolean invalidate;