anchor.diff:  
   Kakoune support three string syntax:
   
  - * "strings" and 'strings': classic strings, use \' or \" to escape the
  -                            separator.
  -
  - * %{strings}: these strings are very usefull when entering commands, first the '{' and '}'
  -               delimiter is configurable: you can use any non alphanumeric character.
  -               like %[string], %<string>, %(string), %~string~ or %!string!...
  -               if the character following the % is one of {[(<, then the closing one is
  -               the matching }])>, and these delimiters in the string need not to be
  -               escaped if the contained delimiters are balanced.
  -               for example %{ roger {}; } is a valid string.
  + * +"strings" and \'strings\'+: classic strings, use \' or \" to escape the
  +      separator.
  +
  + * +%\{strings\}+: these strings are very usefull when entering commands
  +
  +   - the '{' and '}' delimiter are configurable: you can use any non
  +     alphanumeric character. like %[string], %<string>, %(string), %~string~
  +     or %!string!...
  +   - if the character following the % is one of {[(<, then
  +     the closing one is the matching }])>, and these delimiters in the string
  +     need not to be escaped if the contained delimiters are balanced.
  +     for example +%{ roger {}; }+ is a valid string.
   
   Highlighters
   ------------
   
   Manipulation of the displayed text is done through highlighters, which can be added
  -or removed with the command :addhl <highlighter_name> <highlighter_parameters...>
  -and :rmhl <highlighter_id>
  +or removed with the command
  +-----------------------------------------------------
  +:addhl <highlighter_name> <highlighter_parameters...>
  +-----------------------------------------------------
  +and
  +----------------------
  +:rmhl <highlighter_id>
  +----------------------
   
   existing highlighters are:
   
  - * *highlight_selections*: used to make current selection visible
  - * *expand_tabs*: expand tabs to next 8 multiple column (to make configurable)
  - * *number_lines*: show line numbers
  - * *group*: highlighter group, containing other highlighters. takes one
  + * +highlight_selections+: used to make current selection visible
  + * +expand_tabs+: expand tabs to next 8 multiple column (to make configurable)
  + * +number_lines+: show line numbers
  + * +group+: highlighter group, containing other highlighters. takes one
               parameter, <group_name>. useful when multiple highlighters work
               together and need to be removed as one. Adding and removing from
               a group can be done using
  -            :addhl -group <group> <highlighter_name> <highlighter_parameters...>
  -            :rmhl  -group <group> <highlighter_name>
  - * *regex*: highlight a regex, takes the regex as first parameter, followed by
  +            `:addhl -group <group> <highlighter_name> <highlighter_parameters...>`
  +            `:rmhl  -group <group> <highlighter_name>`
  + * +regex+: highlight a regex, takes the regex as first parameter, followed by
               any number of color spec parameters.
               color spec format is: <capture_id>:<fg_color>[,<bg_color>]
  -            For example:
  -            :addhl regex //(\h+TODO:)?[^\n]+ 0:cyan 1:yellow,red
  +            For example: `:addhl regex //(\h+TODO:)?[^\n]+ 0:cyan 1:yellow,red`
               will highlight C++ style comments in cyan, with an eventual
               'TODO:' in yellow on red background.
   
  
positive.code: -------
  
  Filters can be installed to interact with buffer modifications. They can be
  added or removed with :addfilter <filter_name> <filter_parameters...> and
  :rmfilter <filter_id>
  
  exisiting filters are:
  
   * *preserve_indent*: insert previous line indent when inserting a newline
   * *cleanup_whitespaces*: remove trailing whitespaces on the previous line
                            when inserting an end-of-line.
   * *expand_tabulations*: insert spaces instead of tab characters
   * *group*: same as highlighters group
  
  Hooks
  -----
  
  commands can be registred to be executed when certain events arise.
  to register a hook, use the hook command.
  
  :hook <scope> <hook_name> <filtering_regex> <commands>
  
  <scope> can be either global, buffer or window, the scope are hierarchical,
  meaning that a Window calling a hook will execute it's own, the buffer ones
  and the global ones.
  
negative.code: accessed through %reg{<register>} and %opt{<option>} syntax.
  
  for example you can display last search pattern with
  -------------
  :echo %reg{/}
  -------------
  
  Defining Commands
  -----------------
  
  new commands can be defined using the +def+ command.
  ------------------------------
  :def <command_name> <commands>
  ------------------------------
  <commands> is a string containing the commands to execute
  
  def can also takes some flags:
  
   * +-env-params+: pass parameters given to commands in the environement as
                    kak_paramN with N the parameter number
   * +-shell-params+: pass parameters given to commands as positional parameters
                      to any shell expansions used in the command.
   * +-file-completion+: try file completion on any parameter passed
                         to this command
   * +-shell-completion+: following string is a shell command which takes
                          parameters as positional params and output one
                          completion candidate per line.
   * +-allow-override+: allow the new command to replace an exisiting one
                        with the same name.
  
  Using shell expansion permits to define complex commands or to access
  kakoune state:
  ------------------------------------------------------
  :def print_selection %{ echo %sh{ ${kak_selection} } }
  ------------------------------------------------------
  Some helper commands can be used to define composite commands:
  
   * +menu <label1> <commands1> <label2> <commands2>...+: display a menu using
       labels, the selected label's commands are executed.
   * +try <commands> catch <on_error_commands>+: prevent an error in <commands>
       from aborting the whole commands execution, execute <on_error_commands>
       instead.
  
  