mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
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:
@@ -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*
|
||||
|
||||
@@ -6017,12 +6017,15 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
%s sign column for currently drawn line
|
||||
%C fold column for currently drawn line
|
||||
|
||||
To draw the sign and fold columns, they must be included in
|
||||
'statuscolumn'.
|
||||
NOTE: To draw the sign and fold columns, their items must be included in
|
||||
'statuscolumn'. Even when they are not included, the status column width
|
||||
will adapt to the 'signcolumn' and 'foldcolumn' width.
|
||||
|
||||
The |v:lnum| variable holds the line number to be drawn.
|
||||
The |v:relnum| variable holds the relative line number to be drawn.
|
||||
The |v:wrap| variable holds true for the wrapped part of a line.
|
||||
The |v:lnum| variable holds the line number to be drawn.
|
||||
The |v:relnum| variable holds the relative line number to be drawn.
|
||||
The |v:virtnum| variable is negative when drawing virtual lines, zero
|
||||
when drawing the actual buffer line, and positive when
|
||||
drawing the wrapped part of a buffer line.
|
||||
|
||||
Examples: >vim
|
||||
" Relative number with bar separator and click handlers:
|
||||
@@ -6032,7 +6035,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:let &stc='%=%{v:relnum?v:relnum:v:lnum} '
|
||||
|
||||
" Line numbers in hexadecimal for non wrapped part of lines:
|
||||
:let &stc='%=%{v:wrap?"":printf("%x",v:lnum)} '
|
||||
:let &stc='%=%{v:virtnum>0?"":printf("%x",v:lnum)} '
|
||||
|
||||
" Human readable line numbers with thousands separator:
|
||||
:let &stc='%{substitute(v:lnum,"\\d\\zs\\ze\\'
|
||||
|
||||
Reference in New Issue
Block a user