1
0
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:
Bram Moolenaar
2019-01-07 22:10:00 +01:00
parent d730c8e297
commit b589f95b38
5 changed files with 22 additions and 2 deletions

View File

@@ -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.

View File

@@ -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;
} }

View File

@@ -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;

View File

@@ -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" .

View File

@@ -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,
/**/ /**/