aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc
diff options
context:
space:
mode:
authorFelipe Morales <hel.sheep@gmail.com>2015-11-23 00:27:18 +0100
committerFelipe Morales <hel.sheep@gmail.com>2015-11-23 00:27:18 +0100
commit321db59ca1dc304feb3e00c10ca3e89c1de616e7 (patch)
tree825ba69b12a717faf011dc1b828438b5ea70c31d /runtime/doc
parent1fbb56795d16783f9a97e25e3b71ab3ac2a644dc (diff)
parente773ffe8094041dba1b9b258dfa45104dc321522 (diff)
downloadrneovim-321db59ca1dc304feb3e00c10ca3e89c1de616e7.tar.gz
rneovim-321db59ca1dc304feb3e00c10ca3e89c1de616e7.tar.bz2
rneovim-321db59ca1dc304feb3e00c10ca3e89c1de616e7.zip
Merge pull request #3270 from ZyX-I/shada-support
Add plugin for editing ShaDa files
Diffstat (limited to 'runtime/doc')
-rw-r--r--runtime/doc/filetype.txt143
-rw-r--r--runtime/doc/pi_msgpack.txt139
2 files changed, 282 insertions, 0 deletions
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index d1f8b1de4c..baf7550948 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -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
diff --git a/runtime/doc/pi_msgpack.txt b/runtime/doc/pi_msgpack.txt
new file mode 100644
index 0000000000..95d6ff7467
--- /dev/null
+++ b/runtime/doc/pi_msgpack.txt
@@ -0,0 +1,139 @@
+*pi_msgpack.txt* For NeoVim version 0.1.
+
+Author: Nikolay Pavlov <kp-pav@yandex.ru>
+Copyright: (c) 2015 by Nikolay Pavlov
+
+The Apache license applies to the files in this package, including
+runtime/autoload/msgpack.vim, runtime/doc/pi_msgpack.txt and
+test/functional/plugin/msgpack_spec.lua. Like anything else that's free,
+msgpack.vim and its associated files are provided *as is* and comes with no
+warranty of any kind, either expressed or implied. No guarantees of
+merchantability. No guarantees of suitability for any purpose. By using this
+plugin, you agree that in no event will the copyright holder be liable for any
+damages resulting from the use of this software. Use at your own risk!
+
+==============================================================================
+1. Contents *msgpack.vim-contents*
+
+ 1. Contents..............................: |msgpack.vim-contents|
+ 2. Msgpack.vim introduction..............: |msgpack.vim-intro|
+ 3. Msgpack.vim manual....................: |msgpack.vim-manual|
+ Function arguments....................: |msgpack.vim-arguments|
+ msgpack#is_int function...............: |msgpack#is_int()|
+ msgpack#is_uint function..............: |msgpack#is_uint()|
+ msgpack#strftime function.............: |msgpack#strftime()|
+ msgpack#strptime function.............: |msgpack#strptime()|
+ msgpack#int_dict_to_str function......: |msgpack#int_dict_to_str()|
+ msgpack#special_type function.........: |msgpack#special_type()|
+ msgpack#type function.................: |msgpack#type()|
+ msgpack#deepcopy function.............: |msgpack#deepcopy()|
+ msgpack#string function...............: |msgpack#string()|
+ msgpack#eval function.................: |msgpack#eval()|
+ msgpack#equal function................: |msgpack#equal()|
+
+
+==============================================================================
+2. Msgpack.vim introduction *msgpack.vim-intro*
+
+This plugin contains utility functions to be used in conjunction with
+|msgpackdump()| and |msgpackparse()| functions.
+
+==============================================================================
+3. Msgpack.vim manual *msgpack.vim-manual*
+
+FUNCTION ARGUMENTS *msgpack.vim-arguments*
+
+Disambiguation of arguments described below. Note: if e.g. function is listed
+as accepting |{msgpack-integer}| (or anything else) it means that function
+does not check whether argument matches its description.
+
+*{msgpack-value}* Either |msgpack-special-dict| or a regular value, but
+ not function reference.
+*{msgpack-integer}* Any value for which |msgpack#type| will return
+ "integer".
+*{msgpack-special-int}* |msgpack-special-dict| representing integer.
+
+msgpack#is_int({msgpack-value}) *msgpack#is_int()*
+ Returns 1 if given {msgpack-value} is integer value, 0 otherwise.
+
+msgpack#is_uint({msgpack-value}) *msgpack#is_uint()*
+ Returns 1 if given {msgpack-value} is integer value greater or equal
+ to zero, 0 otherwise.
+
+ *msgpack#strftime*
+msgpack#strftime({format}, {msgpack-integer}) *msgpack#strftime()*
+ Same as |strftime()|, but second argument may be
+ |msgpack-special-dict|. Requires |+python| or |+python3| to really
+ work with |msgpack-special-dict|s.
+
+ *msgpack#strptime*
+msgpack#strptime({format}, {time}) *msgpack#strptime()*
+ Reverse of |msgpack#strptime()|: for any time and format
+ |msgpack#equal|( |msgpack#strptime|(format, |msgpack#strftime|(format,
+ time)), time) be true. Requires |+python| or |+python3|, without it
+ only supports non-|msgpack-special-dict| nonnegative times and format
+ equal to `%Y-%m-%dT%H:%M:%S`.
+
+msgpack#int_dict_to_str({msgpack-special-int}) *msgpack#int_dict_to_str()*
+ Function which converts |msgpack-special-dict| integer value to
+ a hexadecimal value like 0x1234567890ABCDEF (always returns exactly 16
+ hexadecimal digits).
+
+msgpack#special_type({msgpack-value}) *msgpack#special_type()*
+ Returns zero if {msgpack-value} is not |msgpack-special-dict|. If it
+ is it returns name of the key in |v:msgpack_types| which represents
+ {msgpack-value} type.
+
+msgpack#type({msgpack-value}) *msgpack#type()*
+ Returns name of the key in |v:msgpack_types| that represents
+ {msgpack-value} type. Never returns zero: this function returns
+ msgpack type which will be dumped by |msgpackdump()| should it receive
+ a list with singe {msgpack-value} as input.
+
+msgpack#deepcopy({msgpack-value}) *msgpack#deepcopy()*
+ Like |deepcopy()|, but works correctly with |msgpack-special-dict|
+ values. Plain |deepcopy()| will destroy all types in
+ |msgpack-special-dict| values because it will copy _TYPE key values,
+ while they should be preserved.
+
+msgpack#string({msgpack-value}) *msgpack#string()*
+ Like |string()|, but saves information about msgpack types. Values
+ dumped by msgpack#string may be read back by |msgpack#eval()|.
+ Returns is the following:
+
+ - Dictionaries are dumped as "{key1: value1, key2: value2}". Note:
+ msgpack allows any values in keys, so with some
+ |msgpack-special-dict| values |msgpack#string()| may produce even
+ "{{1: 2}: 3, [4]: 5}".
+ - Lists are dumped as "[value1, value2]".
+ - Strings are dumped as
+ 1. `"abc"`: binary string.
+ 2. `="abc"`: string.
+ 3. `+(10)"ext"`: extension strings (10 may be replaced with any
+ 8-bit signed integer).
+ Inside strings the following escape sequences may be present: "\0"
+ (represents NUL byte), "\n" (represents line feed) and "\""
+ (represents double quote).
+ - Floating-point and integer values are dumped using |string()| or
+ |msgpack#int_dict_to_str()|.
+ - Booleans are dumped as "TRUE" or "FALSE".
+ - Nil values are dumped as "NIL".
+
+msgpack#eval({string}, {dict}) *msgpack#eval()*
+ Transforms string created by |msgpack#string()| into a value suitable
+ for |msgpackdump()|. Second argument allows adding special values
+ that start with head characters (|/\h|) and contain only word
+ characters (|/\w|). Built-in special values are "TRUE", "FALSE",
+ "NIL", "nan" and "inf" and they cannot be overridden. Map values are
+ always evaluated to |msgpack-special-dict| values, as well as
+ hexadecimal digits. When evaluating maps order of keys is preserved.
+
+ *msgpack#equal*
+msgpack#equal({msgpack-value}, {msgpack-value}) *msgpack#equal()*
+ Returns 1 if given values are equal, 0 otherwise. When comparing
+ msgpack map values order of keys is ignored. Comparing
+ |msgpack-special-dict| with equivalent non-special-dict value
+ evaluates to 1.
+
+==============================================================================
+vim:tw=78:ts=8:ft=help:fdm=marker