Skip to content

Commit

Permalink
patch 8.1.0697: ":sign place" requires the buffer argument
Browse files Browse the repository at this point in the history
Problem:    ":sign place" requires the buffer argument.
Solution:   Make the argument optional.  Also update the help and clean up the
            sign test. (Yegappan Lakshmanan, closes #3767)
  • Loading branch information
brammool committed Jan 6, 2019
1 parent 8ad16da commit b328cca
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 74 deletions.
36 changes: 25 additions & 11 deletions runtime/doc/eval.txt
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.1. Last change: 2019 Jan 01
*eval.txt* For Vim version 8.1. Last change: 2019 Jan 06


VIM REFERENCE MANUAL by Bram Moolenaar
Expand Down Expand Up @@ -3945,20 +3945,24 @@ extend({expr1}, {expr2} [, {expr3}]) *extend()*
feedkeys({string} [, {mode}]) *feedkeys()*
Characters in {string} are queued for processing as if they
come from a mapping or were typed by the user.

By default the string is added to the end of the typeahead
buffer, thus if a mapping is still being executed the
characters come after them. Use the 'i' flag to insert before
other characters, they will be executed next, before any
characters from a mapping.

The function does not wait for processing of keys contained in
{string}.

To include special keys into {string}, use double-quotes
and "\..." notation |expr-quote|. For example,
feedkeys("\<CR>") simulates pressing of the <Enter> key. But
feedkeys('\<CR>') pushes 5 characters.
If {mode} is absent, keys are remapped.

{mode} is a String, which can contain these character flags:
'm' Remap keys. This is default.
'm' Remap keys. This is default. If {mode} is absent,
keys are remapped.
'n' Do not remap keys.
't' Handle keys as if typed; otherwise they are handled as
if coming from a mapping. This matters for undo,
Expand All @@ -3972,6 +3976,9 @@ feedkeys({string} [, {mode}]) *feedkeys()*
will behave as if <Esc> is typed, to avoid getting
stuck, waiting for a character to be typed before the
script continues.
Note that if you manage to call feedkeys() while
executing commands, thus calling it recursively, the
all typehead will be consumed by the last call.
'!' When used with 'x' will not end Insert mode. Can be
used in a test when a timer is set to exit Insert mode
a little later. Useful for testing CursorHoldI.
Expand Down Expand Up @@ -6700,8 +6707,9 @@ prop_add({lnum}, {col}, {props})
another line; can be zero
end_lnum line number for the end of text
end_col column just after the text; not used when "length"
is present; when {col} and "end_col" are equal
this is a zero-width text property
is present; when {col} and "end_col" are
equal, and "end_lnum" is omitted or equal to
{lnum}, this is a zero-width text property
bufnr buffer to add the property to; when omitted
the current buffer is used
id user defined ID for the property; when omitted
Expand Down Expand Up @@ -7454,7 +7462,8 @@ serverlist() *serverlist()*
<
setbufline({expr}, {lnum}, {text}) *setbufline()*
Set line {lnum} to {text} in buffer {expr}. To insert
lines use |append()|.
lines use |append()|. Any text properties in {lnum} are
cleared.

For the use of {expr}, see |bufname()| above.

Expand Down Expand Up @@ -7534,7 +7543,7 @@ setfperm({fname}, {mode}) *setfperm()* *chmod*
setline({lnum}, {text}) *setline()*
Set line {lnum} of the current buffer to {text}. To insert
lines use |append()|. To set lines in another buffer use
|setbufline()|.
|setbufline()|. Any text properties in {lnum} are cleared.

{lnum} is used like with |getline()|.
When {lnum} is just below the last line the {text} will be
Expand Down Expand Up @@ -7891,7 +7900,9 @@ sign_define({name} [, {dict}]) *sign_define()*
text text that is displayed when there is no icon
or the GUI is not being used.
texthl highlight group used for the text item
For an existing sign, the attributes are updated.

If the sign named {name} already exists, then the attributes
of the sign are updated.

Returns 0 on success and -1 on failure.

Expand Down Expand Up @@ -7944,6 +7955,7 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
empty string, then only signs in the global group are
returned. If no arguments are supplied, then signs in the
global group placed in all the buffers are returned.
See |sign-group|.

Each list item in the returned value is a dictionary with the
following entries:
Expand All @@ -7959,7 +7971,8 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
name name of the defined sign
priority sign priority

Returns an empty list on failure.
Returns an empty list on failure or if there are no placed
signs.

Examples: >
" Get a List of signs placed in eval.c in the
Expand Down Expand Up @@ -7992,7 +8005,8 @@ sign_place({id}, {group}, {name}, {expr} [, {dict}])
allocated. Otherwise the specified number is used. {group} is
the sign group name. To use the global sign group, use an
empty string. {group} functions as a namespace for {id}, thus
two groups can use the same IDs.
two groups can use the same IDs. Refer to |sign-identifier|
for more information.

{name} refers to a defined sign.
{expr} refers to a buffer name or number. For the accepted
Expand Down Expand Up @@ -9496,7 +9510,7 @@ undofile({name}) *undofile()*
If {name} is empty undofile() returns an empty string, since a
buffer without a file name will not write an undo file.
Useful in combination with |:wundo| and |:rundo|.
When compiled without the +persistent_undo option this always
When compiled without the |+persistent_undo| option this always
returns an empty string.

undotree() *undotree()*
Expand Down
41 changes: 27 additions & 14 deletions runtime/doc/sign.txt
@@ -1,4 +1,4 @@
*sign.txt* For Vim version 8.1. Last change: 2019 Jan 01
*sign.txt* For Vim version 8.1. Last change: 2019 Jan 06


VIM REFERENCE MANUAL by Gordon Prieur
Expand Down Expand Up @@ -52,13 +52,23 @@ Example to set the color: >
:highlight SignColumn guibg=darkgrey
<
*sign-identifier*
Each placed sign is identified by a number called the sign identifier. This
identifier is used to jump to the sign or to remove the sign. The identifier
is assigned when placing the sign using the |sign-place| command or the
|sign_place()| function. Each sign identifier should be a unique number. If
multiple placed signs use the same identifier, then jumping to or removing a
sign becomes unpredictable. To avoid overlapping identifiers, sign groups can
be used. The |sign_place()| function can be called with a zero sign identifier
to allocate the next available identifier.

*sign-group*
Each sign can be assigned to either the global group or a named group. When
placing a sign, if a group name is not supplied, or an empty string is used,
then the sign is placed in the global group. Otherwise the sign is placed in
the named group. The sign identifier is unique within a group. The sign group
allows Vim plugins to use unique signs without interfering with other plugins
using signs.
Each placed sign can be assigned to either the global group or a named group.
When placing a sign, if a group name is not supplied, or an empty string is
used, then the sign is placed in the global group. Otherwise the sign is
placed in the named group. The sign identifier is unique within a group. The
sign group allows Vim plugins to use unique signs without interfering with
other plugins using signs.

*sign-priority*
Each placed sign is assigned a priority value. When multiple signs are placed
Expand Down Expand Up @@ -178,8 +188,9 @@ See |sign_place()| for the equivalent Vim script function.
:sign place 9 group=g2 priority=50 line=5
\ name=sign1 file=a.py
<
:sign place {id} line={lnum} name={name} buffer={nr}
Same, but use buffer {nr}.
:sign place {id} line={lnum} name={name} [buffer={nr}]
Same, but use buffer {nr}. If the buffer argument is not
given, place the sign in the current buffer.

*E885*
:sign place {id} name={name} file={fname}
Expand All @@ -191,8 +202,9 @@ See |sign_place()| for the equivalent Vim script function.
The optional "group={group}" attribute can be used before
"file=" to select a sign in a particular group.

:sign place {id} name={name} buffer={nr}
Same, but use buffer {nr}.
:sign place {id} name={name} [buffer={nr}]
Same, but use buffer {nr}. If the buffer argument is not
given, use the current buffer.


REMOVING SIGNS *:sign-unplace* *E159*
Expand Down Expand Up @@ -315,11 +327,12 @@ JUMPING TO A SIGN *:sign-jump* *E157*
:sign jump {id} group={group} file={fname}
Same but jump to the sign in group {group}

:sign jump {id} buffer={nr} *E934*
:sign jump {id} [buffer={nr}] *E934*
Same, but use buffer {nr}. This fails if buffer {nr} does not
have a name.
have a name. If the buffer argument is not given, use the
current buffer.

:sign jump {id} group={group} buffer={nr}
:sign jump {id} group={group} [buffer={nr}]
Same but jump to the sign in group {group}


Expand Down
7 changes: 6 additions & 1 deletion src/sign.c
Expand Up @@ -1168,7 +1168,7 @@ sign_jump_cmd(
int id,
char_u *group)
{
if (buf == NULL && sign_name == NULL && group == NULL && id == -1)
if (sign_name == NULL && group == NULL && id == -1)
{
EMSG(_(e_argreq));
return;
Expand Down Expand Up @@ -1325,6 +1325,11 @@ parse_sign_cmd_args(
return FAIL;
}

// 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))
*buf = curwin->w_buffer;

return OK;
}

Expand Down

0 comments on commit b328cca

Please sign in to comment.