Mercurial > vim
changeset 22013:125051dff419 v8.2.1556
patch 8.2.1556: cursorline highlighting always overrules sign highlighting
Commit: https://github.com/vim/vim/commit/39f7aa3c3124065b50f182b1d2f7ac92a0918656
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Aug 31 22:00:05 2020 +0200
patch 8.2.1556: cursorline highlighting always overrules sign highlighting
Problem: Cursorline highlighting always overrules sign highlighting.
Solution: Combine the highlighting, use the priority to decide how.
(closes #6812)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 31 Aug 2020 22:15:09 +0200 |
parents | c0158af27bee |
children | 023d9e265ff0 |
files | runtime/doc/sign.txt runtime/pack/dist/opt/termdebug/plugin/termdebug.vim src/drawline.c src/structs.h src/testdir/dumps/Test_sign_cursor_5.dump src/testdir/dumps/Test_sign_cursor_6.dump src/testdir/test_signs.vim src/version.c |
diffstat | 8 files changed, 49 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -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 @@ -85,6 +85,10 @@ When the line on which the sign is place 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*
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -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 @@ -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 != ''
--- 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
--- 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)
new file mode 100644 --- /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|
new file mode 100644 --- /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|
--- 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')