diff options
author | Matt Wozniski <godlygeek+git@gmail.com> | 2022-01-04 01:00:06 -0500 |
---|---|---|
committer | Matt Wozniski <godlygeek+git@gmail.com> | 2022-01-04 01:49:40 -0500 |
commit | 4ddd6c53bd9ed33ba85d74f3774341705a0c1f4b (patch) | |
tree | 757fbff434ab4f8b58d3f0cf558b4487d09a0542 | |
parent | 207307d0faf9b821cfd3cfeae4d027ab9ee5dbdb (diff) | |
download | rneovim-4ddd6c53bd9ed33ba85d74f3774341705a0c1f4b.tar.gz rneovim-4ddd6c53bd9ed33ba85d74f3774341705a0c1f4b.tar.bz2 rneovim-4ddd6c53bd9ed33ba85d74f3774341705a0c1f4b.zip |
fix(screen): don't put empty sign text in line number column
When `signcolumn=number` but no sign on a given line has any text,
display the line's line number instead of the (empty) sign text in the
line number column.
-rw-r--r-- | src/nvim/screen.c | 2 | ||||
-rw-r--r-- | test/functional/ui/sign_spec.lua | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index b1ca8c5805..d4688f7782 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2792,7 +2792,7 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool noc // in 'lnum', then display the sign instead of the line // number. if (*wp->w_p_scl == 'n' && *(wp->w_p_scl + 1) == 'u' - && num_signs > 0) { + && num_signs > 0 && sign_get_attr(SIGN_TEXT, sattrs, 0, 1)) { int count = win_signcol_count(wp); get_sign_display_info(true, wp, lnum, sattrs, row, startrow, filler_lines, filler_todo, count, diff --git a/test/functional/ui/sign_spec.lua b/test/functional/ui/sign_spec.lua index dcd31cfdb7..a0b7c98c51 100644 --- a/test/functional/ui/sign_spec.lua +++ b/test/functional/ui/sign_spec.lua @@ -526,6 +526,32 @@ describe('Signs', function() ]]) end) + it('shows the line number when signcolumn=number but no marks on a line have text', function() + feed('ia<cr>b<cr>c<cr><esc>') + command('set number signcolumn=number') + command('sign define pietSearch text=>> texthl=Search numhl=Error') + command('sign define pietError text= texthl=Search numhl=Error') + command('sign place 1 line=1 name=pietSearch buffer=1') + command('sign place 2 line=2 name=pietError buffer=1') + -- no signcolumn, line number for "a" is Search, for "b" is Error, for "c" is LineNr + screen:expect([[ + {1: >> }a | + {8: 2 }b | + {6: 3 }c | + {6: 4 }^ | + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + | + ]]) + end) + it('can have 32bit sign IDs', function() command('sign define piet text=>> texthl=Search') command('sign place 100000 line=1 name=piet buffer=1') |