aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIbby <33922797+SleepySwords@users.noreply.github.com>2023-03-19 18:50:45 +1100
committerbfredl <bjorn.linse@gmail.com>2023-05-22 13:49:42 +0200
commit389f5ca39d278173dc0446dc339f7ac1ff573329 (patch)
treeee12b0af08dd008e98da8ab081bcf0dcb7464b83
parent0e1f3b5acf74e82ea778f3c0871a804a9ae89d4e (diff)
downloadrneovim-389f5ca39d278173dc0446dc339f7ac1ff573329.tar.gz
rneovim-389f5ca39d278173dc0446dc339f7ac1ff573329.tar.bz2
rneovim-389f5ca39d278173dc0446dc339f7ac1ff573329.zip
fix(ui): adjust the cursor when inserting virtual text
Credit to: Jesse Bakker https://github.com/neovim/neovim/pull/20130#issuecomment-1369652743 Co-authored-by: Jesse Bakker <github@jessebakker.com>
-rw-r--r--src/nvim/decoration.c3
-rw-r--r--test/functional/ui/decorations_spec.lua26
2 files changed, 29 insertions, 0 deletions
diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c
index ec11c20b3e..ce1af290c1 100644
--- a/src/nvim/decoration.c
+++ b/src/nvim/decoration.c
@@ -83,6 +83,9 @@ void decor_redraw(buf_T *buf, int row1, int row2, Decoration *decor)
if (decor && decor_virt_pos(*decor)) {
redraw_buf_line_later(buf, row1 + 1, false);
+ if (decor->virt_text_pos == kVTInline) {
+ changed_line_display_buf(buf);
+ }
}
if (decor && kv_size(decor->virt_lines)) {
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index d029a66301..94267e35c4 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -1272,6 +1272,32 @@ end]]
|
]]}
end)
+
+ it('adjusts cursor location correctly when inserting around inline virtual text', function()
+ insert('12345678')
+ feed '$'
+ meths.buf_set_extmark(0, ns, 0, 4,
+ { virt_text = { { ' virtual text ', 'Special' } }, virt_text_pos = 'inline' })
+
+ screen:expect { grid = [[
+ 1234{28: virtual text }567^8 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ |
+ ]]
+ }
+ end)
end)
describe('decorations: virtual lines', function()