Skip to content

Commit

Permalink
patch 8.2.1556: cursorline highlighting always overrules sign highlig…
Browse files Browse the repository at this point in the history
…hting

Problem:    Cursorline highlighting always overrules sign highlighting.
Solution:   Combine the highlighting, use the priority to decide how.
            (closes vim#6812)
  • Loading branch information
brammool committed Aug 31, 2020
1 parent 7d69796 commit 39f7aa3
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 4 deletions.
6 changes: 5 additions & 1 deletion runtime/doc/sign.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*sign.txt* For Vim version 8.2. Last change: 2019 Nov 30
*sign.txt* For Vim version 8.2. Last change: 2020 Aug 31


VIM REFERENCE MANUAL by Gordon Prieur
Expand Down Expand Up @@ -85,6 +85,10 @@ When the line on which the sign is placed is deleted, the sign is moved to the
next line (or the last line of the buffer, if there is no next line). When
the delete is undone the sign does not move back.

When a sign with line highlighting and 'cursorline' highlighting are both
present, if the priority is 100 or more then the sign highlighting takes
precedence, otherwise the 'cursorline' highlighting.

==============================================================================
2. Commands *sign-commands* *:sig* *:sign*

Expand Down
4 changes: 2 additions & 2 deletions runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"
" Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license"
" Last Change: 2020 Jul 12
" Last Change: 2020 Aug 31
"
" WORK IN PROGRESS - Only the basics work
" Note: On MS-Windows you need a recent version of gdb. The one included with
Expand Down Expand Up @@ -937,7 +937,7 @@ func s:HandleCursor(msg)
endif
exe lnum
exe 'sign unplace ' . s:pc_id
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC file=' . fname
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC priority=110 file=' . fname
setlocal signcolumn=yes
endif
elseif !s:stopped || fname != ''
Expand Down
14 changes: 13 additions & 1 deletion src/drawline.c
Original file line number Diff line number Diff line change
Expand Up @@ -909,7 +909,19 @@ win_line(
if (!cul_screenline)
{
cul_attr = HL_ATTR(HLF_CUL);
line_attr = cul_attr;
# ifdef FEAT_SIGNS
// Combine the 'cursorline' and sign highlighting, depending on
// the sign priority.
if (sign_present && sattr.sat_linehl > 0)
{
if (sattr.sat_priority >= 100)
line_attr = hl_combine_attr(cul_attr, line_attr);
else
line_attr = hl_combine_attr(line_attr, cul_attr);
}
else
# endif
line_attr = cul_attr;
wp->w_last_cursorline = wp->w_cursor.lnum;
}
else
Expand Down
1 change: 1 addition & 0 deletions src/structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -817,6 +817,7 @@ typedef struct sign_attrs_S {
char_u *sat_text;
int sat_texthl;
int sat_linehl;
int sat_priority;
} sign_attrs_T;

#if defined(FEAT_SIGNS) || defined(PROTO)
Expand Down
6 changes: 6 additions & 0 deletions src/testdir/dumps/Test_sign_cursor_5.dump
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70
| +0#0000e05#a8a8a8255@1>m+8#0000001#40ff4011@3| @68
| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68
|~+0#4040ff13&| @73
|:+0#0000000&| @55|2|,|1| @10|A|l@1|
6 changes: 6 additions & 0 deletions src/testdir/dumps/Test_sign_cursor_6.dump
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72
| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70
| +0#0000e05#a8a8a8255@1>m+8#0000001#ffd7ff255@3| @68
| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68
|~+0#4040ff13&| @73
|:+0#0000000&| @55|2|,|1| @10|A|l@1|
14 changes: 14 additions & 0 deletions src/testdir/test_signs.vim
Original file line number Diff line number Diff line change
Expand Up @@ -1762,6 +1762,20 @@ func Test_sign_cursor_position()
call term_sendkeys(buf, ":sign unplace 10\<CR>")
call VerifyScreenDump(buf, 'Test_sign_cursor_4', {})

" 'cursorline' highlighting overrules sign
call term_sendkeys(buf, ":sign place 12 line=2 name=s2\<CR>")
call term_sendkeys(buf, ":set cursorline\<CR>")
call term_sendkeys(buf, ":hi CursorLine ctermbg=Green\<CR>")
call term_sendkeys(buf, "2G")
call term_sendkeys(buf, ":\<CR>")
call VerifyScreenDump(buf, 'Test_sign_cursor_5', {})

" sign highlighting overrules 'cursorline'
call term_sendkeys(buf, ":sign unplace 12\<CR>")
call term_sendkeys(buf, ":sign place 13 line=2 priority=100 name=s2\<CR>")
call term_sendkeys(buf, ":\<CR>")
call VerifyScreenDump(buf, 'Test_sign_cursor_6', {})

" clean up
call StopVimInTerminal(buf)
call delete('XtestSigncolumn')
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -754,6 +754,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1556,
/**/
1555,
/**/
Expand Down

0 comments on commit 39f7aa3

Please sign in to comment.