mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 20:08:17 +00:00
documentation: Add documentation on shada plugin
This commit is contained in:
@@ -557,6 +557,149 @@ Since the text for this plugin is rather long it has been put in a separate
|
||||
file: |pi_spec.txt|.
|
||||
|
||||
|
||||
SHADA *ft-shada*
|
||||
|
||||
Allows editing binary |shada-file|s in a nice way. Opened binary files are
|
||||
displayed in the following format: >
|
||||
|
||||
Type with timestamp YYYY-mm-ddTHH:MM:SS:
|
||||
% Key__ Description___ Value
|
||||
+ fooba foo bar baz fo {msgpack-value}
|
||||
+ abcde abc def ghi jk {msgpack-value}
|
||||
Other type with timestamp YYYY-mm-ddTHH:MM:SS:
|
||||
@ Description__ Value
|
||||
- foo bar baz t {msgpack-value}
|
||||
# Expected more elements in list
|
||||
Some other type with timestamp YYYY-mm-ddTHH:MM:SS:
|
||||
# Unexpected type: type instead of map
|
||||
= {msgpack-value}
|
||||
|
||||
Filetype plugin defines all |Cmd-event|s. Defined |SourceCmd| event makes
|
||||
"source file.shada" be equivalent to "|:rshada| file.shada". |BufWriteCmd|,
|
||||
|FileWriteCmd| and |FileAppendCmd| events are affected by the following
|
||||
settings:
|
||||
|
||||
*g:shada#keep_old_header* Boolean, if set to false all header entries
|
||||
are ignored when writing. Defaults to 1.
|
||||
*g:shada#add_own_header* Boolean, if set to true first written entry
|
||||
will always be header entry with two values in
|
||||
a map with attached data: |v:version| attached
|
||||
to "version" key and "shada.vim" attached to
|
||||
"generator" key. Defaults to 1.
|
||||
|
||||
Format description:
|
||||
|
||||
1. `#` starts a comment. Lines starting with space characters and then `#`
|
||||
are ignored. Plugin may only add comment lines to indicate some errors in
|
||||
ShaDa format. Lines containing no non-whitespace characters are also
|
||||
ignored.
|
||||
2. Each entry starts with line that has format "{type} with timestamp
|
||||
{timestamp}:". {timestamp} is |strftime()|-formatted string representing
|
||||
actual UNIX timestamp value. First strftime() argument is equal to
|
||||
`%Y-%m-%dT%H:%M:%S`. When writing this timestamp is parsed using
|
||||
|msgpack#strptime()|, with caching (it remembers which timestamp produced
|
||||
particular strftime() output and uses this value if you did not change
|
||||
timestamp). {type} is one of
|
||||
1 - Header
|
||||
2 - Search pattern
|
||||
3 - Replacement string
|
||||
4 - History entry
|
||||
5 - Register
|
||||
6 - Variable
|
||||
7 - Global mark
|
||||
8 - Jump
|
||||
9 - Buffer list
|
||||
10 - Local mark
|
||||
11 - Change
|
||||
* - Unknown (0x{type-hex})
|
||||
|
||||
Each type may be represented using Unknown entry: "Jump with timestamp ..."
|
||||
is the same as "Unknown (0x8) with timestamp ....".
|
||||
3. After header there is one of the following lines:
|
||||
1. " % Key__ Description__ Value": map header. After mapping header
|
||||
follows a table which may contain comments and lines consisting of
|
||||
" +", key, description and |{msgpack-value}|. Key is separated by at
|
||||
least two spaces with description, description is separated by at least
|
||||
two spaces with the value. Each key in the map must be at most as wide
|
||||
as "Key__" header: "Key" allows at most 3-byte keys, "Key__" allows at
|
||||
most 5-byte keys. If keys actually occupy less bytes then the rest is
|
||||
filled with spaces. Keys cannot be empty, end with spaces, contain two
|
||||
consequent spaces inside of them or contain multibyte characters (use
|
||||
"=" format if you need this). Descriptions have the same restrictions
|
||||
on width and contents, except that empty descriptions are allowed.
|
||||
Description column may be omitted.
|
||||
|
||||
When writing description is ignored. Keys with values |msgpack#equal|
|
||||
to default ones are ignored. Order of keys is preserved. All keys are
|
||||
treated as strings (not binary strings).
|
||||
|
||||
Note: specifically for buffer list entries it is allowed to have more
|
||||
then one map header. Each map header starts a new map entry inside
|
||||
buffer list because ShaDa buffer list entry is an array of maps. I.e. >
|
||||
|
||||
Buffer list with timestamp 1970-01-01T00:00:00:
|
||||
% Key Description Value
|
||||
+ f file name "/foo"
|
||||
+ l line number 1
|
||||
+ c column 10
|
||||
<
|
||||
is equivalent to >
|
||||
|
||||
Buffer list with timestamp 1970-01-01T00:00:00:
|
||||
= [{="f": "/foo", ="c": 10}]
|
||||
<
|
||||
and >
|
||||
|
||||
Buffer list with timestamp 1970-01-01T00:00:00:
|
||||
% Key Description Value
|
||||
+ f file name "/foo"
|
||||
|
||||
% Key Description Value
|
||||
+ f file name "/bar"
|
||||
<
|
||||
is equivalent to >
|
||||
|
||||
Buffer list with timestamp 1970-01-01T00:00:00:
|
||||
= [{="f": "/foo"}, {="f": "/bar"}]
|
||||
<
|
||||
Note 2: specifically for register entries special syntax for arrays was
|
||||
designed: >
|
||||
|
||||
Register with timestamp 1970-01-01T00:00:00:
|
||||
% Key Description Value
|
||||
+ rc contents @
|
||||
| - "line1"
|
||||
| - "line2"
|
||||
<
|
||||
This is equivalent to >
|
||||
|
||||
Register with timestamp 1970-01-01T00:00:00:
|
||||
% Key Description Value
|
||||
+ rc contents ["line1", "line2"]
|
||||
<
|
||||
Such syntax is automatically used if array representation appears to be
|
||||
too lengthy.
|
||||
2. " @ Description__ Value": array header. Same as map, but key is
|
||||
omitted and description cannot be omitted. Array entries start with
|
||||
" -". Example: >
|
||||
|
||||
History entry with timestamp 1970-01-01T00:00:00:
|
||||
@ Description_ Value
|
||||
- history type SEARCH
|
||||
- contents "foo"
|
||||
- separator '/'
|
||||
<
|
||||
is equivalent to >
|
||||
|
||||
History entry with timestamp 1970-01-01T00:00:00:
|
||||
= [SEARCH, "foo", '/']
|
||||
<
|
||||
Note: special array syntax for register entries is not recognized here.
|
||||
3. " = {msgpack-value}": raw values. |{msgpack-value}| in this case may
|
||||
have absolutely any type. Special array syntax for register entries is
|
||||
not recognized here as well.
|
||||
|
||||
|
||||
SQL *ft-sql*
|
||||
|
||||
Since the text for this plugin is rather long it has been put in a separate
|
||||
|
Reference in New Issue
Block a user