aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/sign.txt
diff options
context:
space:
mode:
authorLuuk van Baal <luukvbaal@gmail.com>2023-11-11 00:52:50 +0100
committerLuuk van Baal <luukvbaal@gmail.com>2023-11-17 15:10:15 +0100
commitc4afb9788c4f139eb2e3b7aa4d6a6a20b67ba156 (patch)
treeabc3a6da1906ea61f40aaacf3bdb813c27e19d64 /runtime/doc/sign.txt
parentba58c6f8a44c9c37e97fce1d802dc5b5defceb3d (diff)
downloadrneovim-c4afb9788c4f139eb2e3b7aa4d6a6a20b67ba156.tar.gz
rneovim-c4afb9788c4f139eb2e3b7aa4d6a6a20b67ba156.tar.bz2
rneovim-c4afb9788c4f139eb2e3b7aa4d6a6a20b67ba156.zip
refactor(sign): move legacy signs to extmarks
Problem: The legacy signlist data structures and associated functions are redundant since the introduction of extmark signs. Solution: Store signs defined through the legacy commands in a hashmap, placed signs in the extmark tree. Replace signlist associated functions. Usage of the legacy sign commands should yield no change in behavior with the exception of: - "orphaned signs" are now always removed when the line it is placed on is deleted. This used to depend on the value of 'signcolumn'. - It is no longer possible to place multiple signs with the same identifier in a single group on multiple lines. This will now move the sign instead. Moreover, both signs placed through the legacy sign commands and through |nvim_buf_set_extmark()|: - Will show up in both |sign-place| and |nvim_buf_get_extmarks()|. - Are displayed by increasing sign identifier, left to right. Extmark signs used to be ordered decreasingly as opposed to legacy signs.
Diffstat (limited to 'runtime/doc/sign.txt')
-rw-r--r--runtime/doc/sign.txt21
1 files changed, 8 insertions, 13 deletions
diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt
index 8ecfadce17..733b0fe212 100644
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -53,11 +53,10 @@ If 'cursorline' is enabled, then the CursorLineSign highlight group is used
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_place()| function. Each sign identifier should be a unique number.
+Placing the same identifier twice will move the previously placed sign. The
+|sign_place()| function can be called with a zero sign identifier to allocate
+the next available identifier.
*sign-group*
Each placed sign can be assigned to either the global group or a named group.
@@ -77,9 +76,8 @@ When two signs with the same priority are present, and one has an icon or text
in the signcolumn while the other has line highlighting, then both are
displayed.
-When the line on which the sign is placed is deleted, the sign is moved to the
-next line (or the last line of the buffer, if there is no next line). When
-the delete is undone the sign does not move back.
+When the line on which the sign is placed is deleted, the sign is removed along
+with it.
==============================================================================
2. Commands *sign-commands* *:sig* *:sign*
@@ -177,11 +175,8 @@ See |sign_place()| for the equivalent Vim script function.
space is ignored.
The sign is remembered under {id}, this can be used for
- further manipulation. {id} must be a number.
- It's up to the user to make sure the {id} is used only once in
- each file (if it's used several times unplacing will also have
- to be done several times and making changes may not work as
- expected).
+ further manipulation. {id} must be a number. Placing the
+ same {id} multiple times will move the sign.
The following optional sign attributes can be specified before
"file=":