diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-04 22:48:15 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-04 22:48:15 +0200 |
commit | 58a7f87c8653b4cb5b0794b6b88e2ec140d3d2c3 (patch) | |
tree | ae14bbba8af39f1d429ecfda0d2716a4ec05e15a | |
parent | a37833dbd7d3cb0fff4cbf0ba6e80d0ad55cd4b9 (diff) | |
download | vim-git-58a7f87c8653b4cb5b0794b6b88e2ec140d3d2c3.tar.gz |
patch 8.1.1466: not updating priority on existing signv8.1.1466
Problem: Not updating priority on existing sign.
Solution: Set the sign priority. Add a test. (Yegappan Lakshmanan)
-rw-r--r-- | runtime/doc/eval.txt | 2 | ||||
-rw-r--r-- | runtime/doc/sign.txt | 10 | ||||
-rw-r--r-- | src/sign.c | 1 | ||||
-rw-r--r-- | src/testdir/test_signs.vim | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 28 insertions, 5 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index c095d580c..21beaff4c 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -8597,7 +8597,7 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()* priority sign priority The returned signs in a buffer are ordered by their line - number. + number and priority. Returns an empty list on failure or if there are no placed signs. diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt index 4f59c8f85..09039760e 100644 --- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -182,9 +182,9 @@ See |sign_place()| for the equivalent Vim script function. By default, the sign is assigned a default priority of 10. To assign a different priority value, use "priority={prio}" to - specify a value. The priority is used to determine the - highlight group used when multiple signs are placed on the - same line. + specify a value. The priority is used to determine the sign + that is displayed when multiple signs are placed on the same + line. Examples: > :sign place 5 line=3 name=sign1 file=a.py @@ -204,7 +204,9 @@ See |sign_place()| for the equivalent Vim script function. it (e.g., when the debugger has stopped at a breakpoint). The optional "group={group}" attribute can be used before - "file=" to select a sign in a particular group. + "file=" to select a sign in a particular group. The optional + "priority={prio}" attribute can be used to change the priority + of an existing sign. :sign place {id} name={name} [buffer={nr}] Same, but use buffer {nr}. If the buffer argument is not diff --git a/src/sign.c b/src/sign.c index b89bea073..8f1de4af1 100644 --- a/src/sign.c +++ b/src/sign.c @@ -330,6 +330,7 @@ buf_addsign( { // Update an existing sign sign->typenr = typenr; + sign->priority = prio; return; } else if (lnum < sign->lnum) diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim index 426998d6d..a986e122d 100644 --- a/src/testdir/test_signs.vim +++ b/src/testdir/test_signs.vim @@ -1183,6 +1183,24 @@ func Test_sign_priority() \ 'priority' : 10}], \ s[0].signs) + " Place multiple signs with same id on a line with different priority + call sign_place(1, '', 'sign1', 'Xsign', + \ {'lnum' : 5, 'priority' : 20}) + call sign_place(1, '', 'sign2', 'Xsign', + \ {'lnum' : 5, 'priority' : 10}) + let s = sign_getplaced('Xsign', {'lnum' : 5}) + call assert_equal([ + \ {'id' : 1, 'name' : 'sign2', 'lnum' : 5, 'group' : '', + \ 'priority' : 10}], + \ s[0].signs) + call sign_place(1, '', 'sign2', 'Xsign', + \ {'lnum' : 5, 'priority' : 5}) + let s = sign_getplaced('Xsign', {'lnum' : 5}) + call assert_equal([ + \ {'id' : 1, 'name' : 'sign2', 'lnum' : 5, 'group' : '', + \ 'priority' : 5}], + \ s[0].signs) + " Error case call assert_fails("call sign_place(1, 'g1', 'sign1', 'Xsign', \ [])", 'E715:') diff --git a/src/version.c b/src/version.c index 6fcd05737..7e6458964 100644 --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1466, +/**/ 1465, /**/ 1464, |