diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/drawline.c | 14 | ||||
-rw-r--r-- | src/structs.h | 1 | ||||
-rw-r--r-- | src/testdir/dumps/Test_sign_cursor_5.dump | 6 | ||||
-rw-r--r-- | src/testdir/dumps/Test_sign_cursor_6.dump | 6 | ||||
-rw-r--r-- | src/testdir/test_signs.vim | 14 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 42 insertions, 1 deletions
diff --git a/src/drawline.c b/src/drawline.c index fa2596510..2b72de648 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -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 diff --git a/src/structs.h b/src/structs.h index 38ebcf574..528c247b1 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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) diff --git a/src/testdir/dumps/Test_sign_cursor_5.dump b/src/testdir/dumps/Test_sign_cursor_5.dump new file mode 100644 index 000000000..2f256a507 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_5.dump @@ -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| diff --git a/src/testdir/dumps/Test_sign_cursor_6.dump b/src/testdir/dumps/Test_sign_cursor_6.dump new file mode 100644 index 000000000..efd9042a3 --- /dev/null +++ b/src/testdir/dumps/Test_sign_cursor_6.dump @@ -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| diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim index e8508b8d3..3ee2b49fa 100644 --- a/src/testdir/test_signs.vim +++ b/src/testdir/test_signs.vim @@ -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') diff --git a/src/version.c b/src/version.c index f5c83beca..022c90acb 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1556, +/**/ 1555, /**/ 1554, |