forked from aniani/vim
patch 8.1.0702: ":sign place" only uses the current buffer
Problem: ":sign place" only uses the current buffer. Solution: List signs for all buffers when there is no buffer argument. Fix error message for invalid buffer name in sign_place(). (Yegappan Lakshmanan, closes #3774)
This commit is contained in:
@@ -7971,6 +7971,9 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
|
|||||||
name name of the defined sign
|
name name of the defined sign
|
||||||
priority sign priority
|
priority sign priority
|
||||||
|
|
||||||
|
The returned signs in a buffer are ordered by their line
|
||||||
|
number.
|
||||||
|
|
||||||
Returns an empty list on failure or if there are no placed
|
Returns an empty list on failure or if there are no placed
|
||||||
signs.
|
signs.
|
||||||
|
|
||||||
|
@@ -11462,7 +11462,7 @@ f_sign_place(typval_T *argvars, typval_T *rettv)
|
|||||||
buf = tv_get_buf(&argvars[3], FALSE);
|
buf = tv_get_buf(&argvars[3], FALSE);
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
{
|
{
|
||||||
EMSG2(_("E158: Invalid buffer name: %s"), tv_get_string(&argvars[2]));
|
EMSG2(_("E158: Invalid buffer name: %s"), tv_get_string(&argvars[3]));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1237,6 +1237,7 @@ parse_sign_cmd_args(
|
|||||||
char_u *arg1;
|
char_u *arg1;
|
||||||
char_u *name;
|
char_u *name;
|
||||||
char_u *filename = NULL;
|
char_u *filename = NULL;
|
||||||
|
int lnum_arg = FALSE;
|
||||||
|
|
||||||
// first arg could be placed sign id
|
// first arg could be placed sign id
|
||||||
arg1 = arg;
|
arg1 = arg;
|
||||||
@@ -1259,6 +1260,7 @@ parse_sign_cmd_args(
|
|||||||
arg += 5;
|
arg += 5;
|
||||||
*lnum = atoi((char *)arg);
|
*lnum = atoi((char *)arg);
|
||||||
arg = skiptowhite(arg);
|
arg = skiptowhite(arg);
|
||||||
|
lnum_arg = TRUE;
|
||||||
}
|
}
|
||||||
else if (STRNCMP(arg, "*", 1) == 0 && cmd == SIGNCMD_UNPLACE)
|
else if (STRNCMP(arg, "*", 1) == 0 && cmd == SIGNCMD_UNPLACE)
|
||||||
{
|
{
|
||||||
@@ -1327,7 +1329,8 @@ parse_sign_cmd_args(
|
|||||||
|
|
||||||
// If the filename is not supplied for the sign place or the sign jump
|
// If the filename is not supplied for the sign place or the sign jump
|
||||||
// command, then use the current buffer.
|
// command, then use the current buffer.
|
||||||
if (filename == NULL && (cmd == SIGNCMD_PLACE || cmd == SIGNCMD_JUMP))
|
if (filename == NULL && ((cmd == SIGNCMD_PLACE && lnum_arg)
|
||||||
|
|| cmd == SIGNCMD_JUMP))
|
||||||
*buf = curwin->w_buffer;
|
*buf = curwin->w_buffer;
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
|
@@ -663,6 +663,18 @@ func Test_sign_group()
|
|||||||
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
||||||
\ " line=10 id=5 name=sign1 priority=10\n", a)
|
\ " line=10 id=5 name=sign1 priority=10\n", a)
|
||||||
|
|
||||||
|
" Place signs in more than one buffer and list the signs
|
||||||
|
split foo
|
||||||
|
set buftype=nofile
|
||||||
|
sign place 25 line=76 name=sign1 priority=99 file=foo
|
||||||
|
let a = execute('sign place')
|
||||||
|
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
||||||
|
\ " line=10 id=5 name=sign1 priority=10\n" .
|
||||||
|
\ "Signs for foo:\n" .
|
||||||
|
\ " line=76 id=25 name=sign1 priority=99\n", a)
|
||||||
|
close
|
||||||
|
bwipe foo
|
||||||
|
|
||||||
" :sign place group={group}
|
" :sign place group={group}
|
||||||
let a = execute('sign place group=g1')
|
let a = execute('sign place group=g1')
|
||||||
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
||||||
|
@@ -799,6 +799,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 */
|
||||||
|
/**/
|
||||||
|
702,
|
||||||
/**/
|
/**/
|
||||||
701,
|
701,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user