summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-04 22:48:15 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-04 22:48:15 +0200
commit58a7f87c8653b4cb5b0794b6b88e2ec140d3d2c3 (patch)
treeae14bbba8af39f1d429ecfda0d2716a4ec05e15a
parenta37833dbd7d3cb0fff4cbf0ba6e80d0ad55cd4b9 (diff)
downloadvim-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.txt2
-rw-r--r--runtime/doc/sign.txt10
-rw-r--r--src/sign.c1
-rw-r--r--src/testdir/test_signs.vim18
-rw-r--r--src/version.c2
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,