mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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 vim/vim#3774)
b589f95b38
This commit is contained in:
parent
35fbb4e1ca
commit
f43900f686
@ -7458,6 +7458,9 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
|
||||
name name of the defined sign
|
||||
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
|
||||
signs.
|
||||
|
||||
|
@ -15602,7 +15602,7 @@ f_sign_place(typval_T *argvars, typval_T *rettv)
|
||||
buf = tv_get_buf(&argvars[3], FALSE);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1203,6 +1203,7 @@ static int parse_sign_cmd_args(
|
||||
char_u *arg1;
|
||||
char_u *name;
|
||||
char_u *filename = NULL;
|
||||
int lnum_arg = FALSE;
|
||||
|
||||
// first arg could be placed sign id
|
||||
arg1 = arg;
|
||||
@ -1221,6 +1222,7 @@ static int parse_sign_cmd_args(
|
||||
arg += 5;
|
||||
*lnum = atoi((char *)arg);
|
||||
arg = skiptowhite(arg);
|
||||
lnum_arg = TRUE;
|
||||
} else if (STRNCMP(arg, "*", 1) == 0 && cmd == SIGNCMD_UNPLACE) {
|
||||
if (*signid != -1) {
|
||||
EMSG(_(e_invarg));
|
||||
@ -1277,7 +1279,8 @@ static int parse_sign_cmd_args(
|
||||
|
||||
// If the filename is not supplied for the sign place or the sign jump
|
||||
// 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;
|
||||
}
|
||||
return OK;
|
||||
|
@ -663,6 +663,18 @@ func Test_sign_group()
|
||||
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
||||
\ " 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}
|
||||
let a = execute('sign place group=g1')
|
||||
call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
|
||||
|
Loading…
Reference in New Issue
Block a user