forked from aniani/vim
patch 9.0.0741: cannot specify an ID for each item with prop_add_list()
Problem: Cannot specify an ID for each item with prop_add_list(). (Sergey Vlasov) Solution: Add an optional fifth number to the item. (closes #11360)
This commit is contained in:
parent
4997f2a605
commit
d93009eb35
@ -225,7 +225,7 @@ prop_add({lnum}, {col}, {props})
|
|||||||
GetLnum()->prop_add(col, props)
|
GetLnum()->prop_add(col, props)
|
||||||
<
|
<
|
||||||
*prop_add_list()*
|
*prop_add_list()*
|
||||||
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
|
prop_add_list({props}, [{item}, ...])
|
||||||
Similar to prop_add(), but attaches a text property at
|
Similar to prop_add(), but attaches a text property at
|
||||||
multiple positions in a buffer.
|
multiple positions in a buffer.
|
||||||
|
|
||||||
@ -237,12 +237,18 @@ prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
|
|||||||
type name of the text property type
|
type name of the text property type
|
||||||
All fields except "type" are optional.
|
All fields except "type" are optional.
|
||||||
|
|
||||||
The second argument is a List of Lists where each list
|
The second argument is a List of items, where each {item} is a
|
||||||
specifies the starting and ending position of the text. The
|
list that specifies the starting and ending position of the
|
||||||
first two items {lnum} and {col} specify the starting position
|
text: [{lnum}, {col}, {end-lnum}, {end-col}]
|
||||||
of the text where the property will be attached and the last
|
or: [{lnum}, {col}, {end-lnum}, {end-col}, {id}]
|
||||||
two items {end-lnum} and {end-col} specify the position just
|
|
||||||
after the text.
|
The first two items {lnum} and {col} specify the starting
|
||||||
|
position of the text where the property will be attached.
|
||||||
|
The next two items {end-lnum} and {end-col} specify the
|
||||||
|
position just after the text.
|
||||||
|
An optional fifth item {id} can be used to give a different ID
|
||||||
|
to a property. When omitted the ID from {props} is used,
|
||||||
|
falling back to zero if none are present.
|
||||||
|
|
||||||
It is not possible to add a text property with a "text" field
|
It is not possible to add a text property with a "text" field
|
||||||
here.
|
here.
|
||||||
|
@ -367,6 +367,16 @@ func Test_prop_add_list()
|
|||||||
\ length: 7, start: 1}], prop_list(3))
|
\ length: 7, start: 1}], prop_list(3))
|
||||||
call assert_equal([#{id: 2, col: 1, type_bufnr: 0, end: 1, type: 'one',
|
call assert_equal([#{id: 2, col: 1, type_bufnr: 0, end: 1, type: 'one',
|
||||||
\ length: 5, start: 0}], prop_list(4))
|
\ length: 5, start: 0}], prop_list(4))
|
||||||
|
call prop_remove(#{id: 2})
|
||||||
|
call assert_equal([], prop_list(1))
|
||||||
|
|
||||||
|
call prop_add_list(#{type: 'one', id: 3},
|
||||||
|
\ [[1, 1, 1, 3], [2, 5, 2, 7, 9]])
|
||||||
|
call assert_equal([#{id: 3, col: 1, type_bufnr: 0, end: 1, type: 'one',
|
||||||
|
\ length: 2, start: 1}], prop_list(1))
|
||||||
|
call assert_equal([#{id: 9, col: 5, type_bufnr: 0, end: 1, type: 'one',
|
||||||
|
\ length: 2, start: 1}], prop_list(2))
|
||||||
|
|
||||||
call assert_fails('call prop_add_list([1, 2], [[1, 1, 3]])', 'E1206:')
|
call assert_fails('call prop_add_list([1, 2], [[1, 1, 3]])', 'E1206:')
|
||||||
call assert_fails('call prop_add_list({}, {})', 'E1211:')
|
call assert_fails('call prop_add_list({}, {})', 'E1211:')
|
||||||
call assert_fails('call prop_add_list({}, [[1, 1, 3]])', 'E965:')
|
call assert_fails('call prop_add_list({}, [[1, 1, 3]])', 'E965:')
|
||||||
|
@ -396,6 +396,9 @@ f_prop_add_list(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
end_lnum = list_find_nr(pos_list, 2L, &error);
|
end_lnum = list_find_nr(pos_list, 2L, &error);
|
||||||
if (!error)
|
if (!error)
|
||||||
end_col = list_find_nr(pos_list, 3L, &error);
|
end_col = list_find_nr(pos_list, 3L, &error);
|
||||||
|
int this_id = id;
|
||||||
|
if (!error && pos_list->lv_len > 4)
|
||||||
|
this_id = list_find_nr(pos_list, 4L, &error);
|
||||||
if (error || start_lnum <= 0 || start_col <= 0
|
if (error || start_lnum <= 0 || start_col <= 0
|
||||||
|| end_lnum <= 0 || end_col <= 0)
|
|| end_lnum <= 0 || end_col <= 0)
|
||||||
{
|
{
|
||||||
@ -403,8 +406,8 @@ f_prop_add_list(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
emsg(_(e_invalid_argument));
|
emsg(_(e_invalid_argument));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (prop_add_one(buf, type_name, id, NULL, 0, 0, start_lnum, end_lnum,
|
if (prop_add_one(buf, type_name, this_id, NULL, 0, 0,
|
||||||
start_col, end_col) == FAIL)
|
start_lnum, end_lnum, start_col, end_col) == FAIL)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -699,6 +699,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
741,
|
||||||
/**/
|
/**/
|
||||||
740,
|
740,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user