fix(column)!: ensure 'statuscolumn' works with virtual and wrapped lines

Problem:    The `'statuscolumn'` was not re-evaluated for wrapped lines,
            when preceded by virtual/filler lines. There was also no way
            to distinguish virtual and wrapped lines in the status column.
Solution:   Make sure to rebuild the statuscolumn, and replace variable
            `v:wrap` with `v:virtnum`. `v:virtnum` is negative when drawing
            virtual lines, zero when drawing the actual buffer line, and
            positive when drawing the wrapped part of a buffer line.
This commit is contained in:
Luuk van Baal
2023-01-12 10:40:53 +01:00
parent ef89f9fd46
commit 85111ca0f4
8 changed files with 80 additions and 44 deletions

View File

@@ -2295,13 +2295,15 @@ v:version Vim version number: major version times 100 plus minor
:if has("nvim-0.2.1")
<
*v:vim_did_enter* *vim_did_enter-variable*
v:vim_did_enter 0 during startup, 1 just before |VimEnter|.
*v:virtnum* *virtnum-variable*
v:virtnum Virtual line number for the 'statuscolumn' expression.
Negative when drawing the status column for virtual lines, zero
when drawing an actual buffer line, and positive when drawing
the wrapped part of a buffer line.
Read-only.
*v:wrap* *wrap-variable*
v:wrap Boolean indicating whether 'statuscolumn' is being evaluated
for the wrapped part of a line.
*v:vim_did_enter* *vim_did_enter-variable*
v:vim_did_enter 0 during startup, 1 just before |VimEnter|.
Read-only.
*v:warningmsg* *warningmsg-variable*