]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
Update runtime files
authorBram Moolenaar <Bram@vim.org>
Sat, 8 Jan 2022 21:51:59 +0000 (21:51 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 8 Jan 2022 21:51:59 +0000 (21:51 +0000)
38 files changed:
runtime/doc/builtin.txt
runtime/doc/cmdline.txt
runtime/doc/editing.txt
runtime/doc/eval.txt
runtime/doc/helphelp.txt
runtime/doc/if_cscop.txt
runtime/doc/if_perl.txt
runtime/doc/if_tcl.txt
runtime/doc/indent.txt
runtime/doc/insert.txt
runtime/doc/map.txt
runtime/doc/mbyte.txt
runtime/doc/message.txt
runtime/doc/options.txt
runtime/doc/os_dos.txt
runtime/doc/pattern.txt
runtime/doc/popup.txt
runtime/doc/quickfix.txt
runtime/doc/starting.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/terminal.txt
runtime/doc/todo.txt
runtime/doc/usr_06.txt
runtime/doc/usr_40.txt
runtime/doc/usr_41.txt
runtime/doc/various.txt
runtime/doc/vim9.txt
runtime/doc/windows.txt
runtime/filetype.vim
runtime/ftplugin/git.vim [deleted file]
runtime/ftplugin/gitcommit.vim
runtime/ftplugin/gitrebase.vim
runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
runtime/syntax/git.vim
runtime/syntax/gitcommit.vim
runtime/syntax/gitrebase.vim
runtime/syntax/i3config.vim

index c18df8a10b374f8682b5949acf1fcded0cb9da36..786f9dee23fac3807f85bc1e23013035ed5a0e5e 100644 (file)
@@ -1,4 +1,4 @@
-*builtin.txt*  For Vim version 8.2.  Last change: 2021 Dec 28
+*builtin.txt*  For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2435,7 +2435,7 @@ filter({expr1}, {expr2})                          *filter()*
                For each item in {expr1} evaluate {expr2} and when the result
                is zero or false remove the item from the |List| or
                |Dictionary|.  Similarly for each byte in a |Blob| and each
-               charactor in a |String|.
+               character in a |String|.
 
                {expr2} must be a |string| or |Funcref|.
 
@@ -2466,7 +2466,9 @@ filter({expr1}, {expr2})                          *filter()*
                          return a:idx % 2 == 1
                        endfunc
                        call filter(mylist, function('Odd'))
-<              It is shorter when using a |lambda|: >
+<              It is shorter when using a |lambda|.  In |Vim9| syntax: >
+                       call filter(myList, (idx, val) => idx * val <= 42)
+<              In legacy script syntax: >
                        call filter(myList, {idx, val -> idx * val <= 42})
 <              If you do not use "val" you can leave it out: >
                        call filter(myList, {idx -> idx % 2 == 1})
@@ -2744,8 +2746,10 @@ funcref({name} [, {arglist}] [, {dict}])
                function {name} is redefined later.
 
                Unlike |function()|, {name} must be an existing user function.
-               Also for autoloaded functions. {name} cannot be a builtin
-               function.
+               It only works for an autoloaded function if it has already
+               been loaded (to avoid mistakenly loading the autoload script
+               when only intending to use the function name, use |function()|
+               instead). {name} cannot be a builtin function.
 
                Can also be used as a |method|: >
                        GetFuncname()->funcref([arg])
@@ -4738,7 +4742,7 @@ js_encode({expr})                                 *js_encode()*
                Can also be used as a |method|: >
                        GetObject()->js_encode()
 
-json_decode({string})                                  *json_decode()*
+json_decode({string})                          *json_decode()* *E491*
                This parses a JSON formatted string and returns the equivalent
                in Vim values.  See |json_encode()| for the relation between
                JSON and Vim values.
@@ -5380,7 +5384,7 @@ match({expr}, {pat} [, {start} [, {count}]])                      *match()*
                        GetText()->match('word')
                        GetList()->match('word')
 <
-                               *matchadd()* *E798* *E799* *E801* *E957*
+                               *matchadd()* *E290* *E798* *E799* *E801* *E957*
 matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
                Defines a pattern to be highlighted in the current window (a
                "match").  It will be highlighted with {group}.  Returns an
@@ -8130,7 +8134,8 @@ sound_playfile({path} [, {callback}])
 <              Can also be used as a |method|: >
                        GetSoundPath()->sound_playfile()
 
-<              {only available when compiled with the |+sound| feature}
+<              There is no error *E538* , but  can listen to 538.nl.
+               {only available when compiled with the |+sound| feature}
 
 
 sound_stop({id})                                       *sound_stop()*
index 1d812207b83b5052addb2d41d3f6057bba246d5e..c68c1619c32b73342152df5cd77ed0730bddeb65 100644 (file)
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 8.2.  Last change: 2021 Dec 26
+*cmdline.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -748,7 +748,8 @@ Line numbers may be specified with:         *:range* *{address}*
 
 Each may be followed (several times) by '+' or '-' and an optional number.
 This number is added or subtracted from the preceding line number.  If the
-number is omitted, 1 is used.
+number is omitted, 1 is used.  If there is nothing before the '+' or '-' then
+the current line is used.
 
 The "/" and "?" after {pattern} are required to separate the pattern from
 anything that follows.
@@ -778,7 +779,7 @@ Some commands allow for a count after the command.  This count is used as the
 number of lines to be used, starting with the line given in the last line
 specifier (the default is the cursor line).  The commands that accept a count
 are the ones that use a range but do not have a file name argument (because
-a file name can also be a number).
+a file name can also be a number).  The count cannot be negative.
 
 Examples: >
        :s/x/X/g 5      substitute 'x' by 'X' in the current line and four
@@ -949,6 +950,7 @@ Note: these are typed literally, they are not special keys!
                   and "script {file-name}[{lnum}]" for a script line, and
                   ".." in between items.  E.g.:
                   "function {function-name1}[{lnum}]..{function-name2}[{lnum}]"
+                  If there is no call stack you get error *E489* .
                                                        *:<slnum>* *<slnum>*
        <slnum>    When executing a ":source" command, is replaced with the
                   line number.  *E842*
index d6161b11ac09a0486a654f94ffaffa3163556d50..ebb78b099ac75ebcc4982d25d44c0904b81352f8 100644 (file)
@@ -1770,7 +1770,7 @@ There are three different types of searching:
        /u/user_x/work/include
        /u/user_x/include
 
-<   Note: If your 'path' setting includes an non-existing directory, Vim will
+<   Note: If your 'path' setting includes a non-existing directory, Vim will
    skip the non-existing directory, but continues searching in the parent of
    the non-existing directory if upwards searching is used.  E.g. when
    searching "../include" and that doesn't exist, and upward searching is
index dca886e85c82ef490559c2d3616fbff0684c2710..974f231ca8ec8ccf3ff2d2f6c38cc94d3a341604 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 8.2.  Last change: 2021 Dec 28
+*eval.txt*     For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -13,9 +13,9 @@ done, the features in this document are not available.  See |+eval| and
 |no-eval-feature|.
 
 This file is mainly about the backwards compatible (legacy) Vim script.  For
-specifics of Vim9 script, which executes much faster, supports type checking
-and much more, see |vim9.txt|.  Where the syntax or semantics differ a remark
-is given.
+specifics of Vim9 script, which can execute much faster, supports type
+checking and much more, see |vim9.txt|.  Where the syntax or semantics differ
+a remark is given.
 
 1.  Variables                  |variables|
     1.1 Variable types
@@ -162,8 +162,8 @@ non-empty String, then the value is considered to be TRUE.
 Note that " " and "0" are also non-empty strings, thus considered to be TRUE.
 A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE.
 
-               *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* *E913*
-               *E974* *E975* *E976*
+               *E611* *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910*
+               *E913* *E974* *E975* *E976*
 |List|, |Dictionary|, |Funcref|, |Job|, |Channel| and |Blob| types are not
 automatically converted.
 
@@ -172,7 +172,7 @@ When mixing Number and Float the Number is converted to Float.  Otherwise
 there is no automatic conversion of Float.  You can use str2float() for String
 to Float, printf() for Float to String and float2nr() for Float to Number.
 
-                       *E891* *E892* *E893* *E894* *E907* *E911* *E914*
+                       *E362* *E891* *E892* *E893* *E894* *E907* *E911* *E914*
 When expecting a Float a Number can also be used, but nothing else.
 
                                                *no-type-checking*
@@ -1346,7 +1346,7 @@ When expr9 is a |Funcref| type variable, invoke the function it refers to.
 
 expr9->name([args])    method call                     *method* *->*
 expr9->{lambda}([args])
-                                                       *E276*
+                                                       *E260* *E276*
 For methods that are also available as global functions this is the same as: >
        name(expr9 [, args])
 There can also be methods specifically for the type of "expr9".
@@ -1582,7 +1582,7 @@ See below |functions|.
 
 lambda expression                              *expr-lambda* *lambda*
 -----------------
-{args -> expr1}                legacy lambda expression
+{args -> expr1}                legacy lambda expression                *E451*
 (args) => expr1                |Vim9| lambda expression
 
 A lambda expression creates a new unnamed function which returns the result of
@@ -1659,10 +1659,10 @@ See also: |numbered-function|
 3. Internal variable                           *internal-variables* *E461*
 
 An internal variable name can be made up of letters, digits and '_'.  But it
-cannot start with a digit.  In legacy script it also possible to use curly
+cannot start with a digit.  In legacy script it is also possible to use curly
 braces, see |curly-braces-names|.
 
-In legacy script ann internal variable is created with the ":let" command
+In legacy script an internal variable is created with the ":let" command
 |:let|.  An internal variable is explicitly destroyed with the ":unlet"
 command |:unlet|.
 Using a name that is not an internal variable or refers to a variable that has
@@ -2162,7 +2162,8 @@ v:lnum            Line number for the 'foldexpr' |fold-expr|, 'formatexpr' and
                |sandbox|.
 
                                                *v:maxcol* *maxcol-variable*
-v:maxcol       Maximum line length.
+v:maxcol       Maximum line length.  Depending on where it is used it can be
+               screen columns, characters or bytes.
 
                                        *v:mouse_win* *mouse_win-variable*
 v:mouse_win    Window number for a mouse click obtained with |getchar()|.
@@ -2573,7 +2574,7 @@ functions.
 In |Vim9| script functions are local to the script by default, prefix "g:" to
 define a global function.
 
-                                       *:fu* *:function* *E128* *E129* *E123*
+                               *:fu* *:function* *E128* *E129* *E123* *E454*
 :fu[nction]            List all functions and their arguments.
 
 :fu[nction] {name}     List function {name}.
@@ -2699,7 +2700,7 @@ See |:verbose-cmd| for more information.
                        command, use line breaks instead of |:bar|: >
                                :exe "func Foo()\necho 'foo'\nendfunc"
 <
-                               *:delf* *:delfunction* *E130* *E131* *E933*
+                               *:delf* *:delfunction* *E131* *E933*
 :delf[unction][!] {name}
                        Delete function {name}.
                        {name} can also be a |Dictionary| entry that is a
@@ -4946,7 +4947,7 @@ When the |+eval| feature is available the command is skipped because of the
 silently ignored, and the command is executed.
 
 ==============================================================================
-12. The sandbox                                        *eval-sandbox* *sandbox* *E48*
+12. The sandbox                                        *eval-sandbox* *sandbox*
 
 The 'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline' and
 'foldtext' options may be evaluated in a sandbox.  This means that you are
@@ -4954,7 +4955,7 @@ protected from these expressions having nasty side effects.  This gives some
 safety for when these options are set from a modeline.  It is also used when
 the command from a tags file is executed and for CTRL-R = in the command line.
 The sandbox is also used for the |:sandbox| command.
-
+                                                               *E48*
 These items are not allowed in the sandbox:
        - changing the buffer text
        - defining or changing mapping, autocommands, user commands
index 357a64e78a6b1aee027ac2c272135f4c983202ab..d01b3daad60d8ec044970b65e761ff9d0e8a3288 100644 (file)
@@ -1,4 +1,4 @@
-*helphelp.txt* For Vim version 8.2.  Last change: 2021 Dec 13
+*helphelp.txt* For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -224,7 +224,7 @@ command: >
                        dialog.  {only when compiled with |+GUI_GTK|}
 
                                        *:helpt* *:helptags*
-                               *E154* *E150* *E151* *E152* *E153* *E670*
+                               *E150* *E151* *E152* *E153* *E154* *E670*
 :helpt[ags] [++t] {dir}
                        Generate the help tags file(s) for directory {dir}.
                        When {dir} is ALL then all "doc" directories in
index aa6512a944e71d5dc5e65519def1ff8e38af2262..ea84869abdc143a5c8c55c9703b096fa11034beb 100644 (file)
@@ -1,4 +1,4 @@
-*if_cscop.txt*  For Vim version 8.2.  Last change: 2019 May 05
+*if_cscop.txt*  For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Andy Kahn
@@ -89,7 +89,7 @@ suggested use.)
 ==============================================================================
 2. Cscope related commands                             *cscope-commands*
 
-               *:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560*
+               *:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E560* *E561*
 All cscope commands are accessed through suboptions to the cscope commands.
        `:cscope` or `:cs` is the main command
        `:scscope` or `:scs` does the same and splits the window
index b0bad1e6ada5399eb620182d6a167a960e8c1cda..a85b680053f95b16a5e25ba5cd890814ea172c3d 100644 (file)
@@ -1,4 +1,4 @@
-*if_perl.txt*   For Vim version 8.2.  Last change: 2019 Dec 07
+*if_perl.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Sven Verdoolaege
@@ -104,7 +104,6 @@ Here are some things you can try: >
   :perl VIM::Msg("hello")
   :perl $line = $curbuf->Get(42)
 <
-                                                       *E299*
 Executing Perl commands in the |sandbox| is limited.  ":perldo" will not be
 possible at all.  ":perl" will be evaluated in the Safe environment, if
 possible.
index 88ab1198ed4e05c14488462eecf90b5edba22f7f..99301f362c4a09db8bde259f23f59c0a6149a5bb 100644 (file)
@@ -1,4 +1,4 @@
-*if_tcl.txt*    For Vim version 8.2.  Last change: 2021 May 27
+*if_tcl.txt*    For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Ingo Wilken
@@ -16,9 +16,9 @@ The Tcl Interface to Vim                              *tcl* *Tcl* *TCL*
 8. Examples                            |tcl-examples|
 9. Dynamic loading                     |tcl-dynamic|
 
-*E280*
 {only available when Vim was compiled with the |+tcl| feature}
 
+                                                       *E280*
 WARNING: There are probably still some bugs.  Please send bug reports,
 comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de>
 
index 87bbd488eb9c15e0e221bbf198411bb694d33718..d82f7423a371ff58c804824c60072d02ed7f821d 100644 (file)
@@ -879,7 +879,7 @@ For example, with N = 1, this will give:
                                                        *PHP_outdentphpescape*
 To indent PHP escape tags as the surrounding non-PHP code (only affects the
 PHP escape tags): >
-:let g:PHP_outdentphpescape = 0
+    :let g:PHP_outdentphpescape = 0
 -------------
 
                                                        *PHP_removeCRwhenUnix*
@@ -1206,7 +1206,7 @@ comments will be indented according to the correctly indented code.
 
 
 VIM                                                    *ft-vim-indent*
-
+                                                       *g:vim_indent_cont*
 For indenting Vim scripts there is one variable that specifies the amount of
 indent for a continuation line, a line that starts with a backslash: >
 
index 3751f279aa3b1bee38307aacd004c040283d1f04..acc7865755274f48c6b176f5d919351f6f1cf696 100644 (file)
@@ -850,7 +850,7 @@ space is preferred).  Maximum line length is 510 bytes.
 
 For an example, imagine the 'thesaurus' file has a line like this: >
        angry furious mad enraged
-<Placing the cursor after the letters "ang" and typing CTRL-X CTRL-T would
+Placing the cursor after the letters "ang" and typing CTRL-X CTRL-T would
 complete the word "angry"; subsequent presses would change the word to
 "furious", "mad" etc.
 
@@ -862,7 +862,7 @@ https://github.com/vim/vim/issues/629#issuecomment-443293282
 Unpack thesaurus_pkg.zip, put the thesaurus.txt file somewhere, e.g.
 ~/.vim/thesaurus/english.txt, and the 'thesaurus' option to this file name.
 
-                                       
+
 Completing keywords with 'thesaurusfunc'               *compl-thesaurusfunc*
 
 If the 'thesaurusfunc' option is set, then the user specified function is
index 479f447e5e537f6ea7c5f38891fa4a3ac2e23b52..e87d4308b40599e90116d096be8985bc3c1d460e 100644 (file)
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2021 Dec 24
+*map.txt*       For Vim version 8.2.  Last change: 2022 Jan 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -6,7 +6,7 @@
 
 Key mapping, abbreviations and user-defined commands.
 
-This subject is introduced in sections |05.3|, |24.7| and |40.1| of the user
+This subject is introduced in sections |05.4|, |24.7| and |40.1| of the user
 manual.
 
 1. Key mapping                 |key-mapping|
@@ -97,8 +97,7 @@ modes.
                        map command applies.  The mapping may remain defined
                        for other modes where it applies.
                        It also works when {lhs} matches the {rhs} of a
-                       mapping. This is for when when an abbreviation
-                       applied.
+                       mapping. This is for when an abbreviation applied.
                        Note: Trailing spaces are included in the {lhs}.  This
                        unmap does NOT work: >
                                :map @@ foo
index 08c3ac189926bd9f2d9b51cb1f661d92fbd88357..4747d482ea24011da6c538774d12b9b2b463c47b 100644 (file)
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 8.2.  Last change: 2021 Oct 04
+*mbyte.txt*     For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
@@ -862,8 +862,8 @@ Use the RPM or port for your system.
     window specific to the input method.
 
 
-USING XIM                      *multibyte-input* *E284* *E286* *E287* *E288*
-                               *E285* *E289*
+USING XIM                      *multibyte-input* *E284* *E285* *E286* *E287*
+                                       *E288* *E289*
 
 Note that Display and Input are independent.  It is possible to see your
 language even though you have no input method for it.  But when your Display
index 1690e41e19ecbd3145d81d08bbdabf413bb30c4c..f174884bb0f994fc69f2982082c6bdaf6d88f004 100644 (file)
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 8.2.  Last change: 2021 Dec 13
+*message.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -118,7 +118,8 @@ wiped out a buffer which contains a mark or is referenced in another way.
                                                        *E95*  >
   Buffer with this name already exists
 
-You cannot have two buffers with the same name.
+You cannot have two buffers with exactly the same name.  This includes the
+path leading to the file.
 
                                                        *E72*  >
   Close error on swap file
@@ -534,10 +535,10 @@ If you type "gq", it will execute this mapping, which will call "gq" again.
                                                        *E22*  >
   Scripts nested too deep
 
-Scripts can be read with the "-s" command-line argument and with the ":source"
-command.  The script can then again read another script.  This can continue
-for about 14 levels.  When more nesting is done, Vim assumes that there is a
-recursive loop somewhere and stops with this error message.
+Scripts can be read with the "-s" command-line argument and with the
+`:source!` command.  The script can then again read another script.  This can
+continue for about 14 levels.  When more nesting is done, Vim assumes that
+there is a recursive loop and stops with this error message.
 
                                                        *E319*  >
   Sorry, the command is not available in this version
@@ -727,6 +728,7 @@ specified.
   Trailing characters
 
 An argument has been added to an Ex command that does not permit one.
+Or the argument has invalid characters and has not been recognized.
 
                                                        *E477* *E478*  >
   No ! allowed
index 1967167b1716a3dac0f13728d90393c1ed41ef6e..c7fbde64fd9ab581d1cea966c646a6b0716bacdb 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 8.2.  Last change: 2021 Dec 26
+*options.txt*  For Vim version 8.2.  Last change: 2022 Jan 02
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -369,7 +369,7 @@ value to the local value, it doesn't switch back to using the global value
 This will make the local value of 'path' empty, so that the global value is
 used.  Thus it does the same as: >
        :setlocal path=
-Note: In the future more global options can be made global-local.  Using
+Note: In the future more global options can be made |global-local|.  Using
 ":setlocal" on a global option might work differently then.
 
 
@@ -877,11 +877,11 @@ A jump table for the options with a short description can be found at |Q_op|.
                        global
        Write the contents of the file, if it has been modified, on each
        `:next`, `:rewind`, `:last`, `:first`, `:previous`, `:stop`,
-       `:suspend`, `:tag, `:!`, ``:make`, CTRL-] and CTRL-^ command; and when
-       a :buffer, CTRL-O, CTRL-I, '{A-Z0-9}, or `{A-Z0-9} command takes one
+       `:suspend`, `:tag`, `:!`, `:make`, CTRL-] and CTRL-^ command; and when
+       a `:buffer`, CTRL-O, CTRL-I, '{A-Z0-9}, or `{A-Z0-9} command takes one
        to another file.
        A buffer is not written if it becomes hidden, e.g. when 'bufhidden' is
-       set to "hide" and `:next` is used
+       set to "hide" and `:next` is used.
        Note that for some commands the 'autowrite' option is not used, see
        'autowriteall' for that.
        Some buffers will not be written, specifically when 'buftype' is
@@ -6684,6 +6684,8 @@ A jump table for the options with a short description can be found at |Q_op|.
        Don't include both "curdir" and "sesdir".
        When neither "curdir" nor "sesdir" is included, file names are stored
        with absolute paths.
+       If you leave out "options" many things won't work well after restoring
+       the session.
        "slash" and "unix" are useful on Windows when sharing session files
        with Unix.  The Unix version of Vim cannot source dos format scripts,
        but the Windows version of Vim can source unix format scripts.
@@ -8126,7 +8128,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        another default.  Backticks cannot be used in this option for security
        reasons.
 
-                                               *'thesaurusfunc'* *tsrfu'*
+                                               *'thesaurusfunc'* *'tsrfu'*
 'thesaurusfunc' 'tsrfu'        string  (default: empty)
                        global or local to buffer |global-local|
                        {not available when compiled without the |+eval|
index b473134ce1d29462647d472353758d762e4d2f24..b315be8a1b15cfef5e4e38ee59163e4e6ce701f4 100644 (file)
@@ -342,12 +342,12 @@ PowerShell Execution Policy settings.
 See |option-backslash| about including spaces in 'shellcmdflag' when using
 multiple flags.
 
-The 'shellpipe' and 'shellredir' option values re-encode the UTF-16le output
+The 'shellpipe' and 'shellredir' option values re-encode the UTF-16LE output
 from PowerShell Desktop to your currently configured console codepage.  The
 output can be forced into a different encoding by changing "default" to one of
 the following:
 
-       unicode          - UTF-16le (default output from PowerShell 5.1)
+       unicode          - UTF-16LE (default output from PowerShell 5.1)
        bigendianunicode - UTF-16
        utf8             - UTF-8
        utf7             - UTF-7 (no BOM)
@@ -356,7 +356,7 @@ the following:
        default          - System's active code page (typically ANSI)
        oem              - System's current OEM code page
 
-Note The abovce multi-byte Unicode encodings include a leading BOM unless
+Note The above multi-byte Unicode encodings include a leading BOM unless
 otherwise indicated.
 
 By default PowerShell Core's output is UTF-8 encoded without a BOM.  If you
@@ -365,10 +365,10 @@ want to force the output of PowerShell Core into a different encoding then set
 encoding is one of the following:
 
        ascii            - 7-bit ASCII character set
-       bigendianunicode - UTF-16be
-       bigendianutf32   - UTF-32be
+       bigendianunicode - UTF-16BE
+       bigendianutf32   - UTF-32BE
        oem              - System's current OEM code page
-       unicode          - UTF-16le
+       unicode          - UTF-16LE
        utf7             - UTF-7
        utf8             - UTF-8
        utf8BOM          - UTF-8, with BOM
index 8f6d77e414a9d63d1f38ac93c9195202d61facfa..ce1d0f49bcd336b8776bfd329b86f654cfa01cac 100644 (file)
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 8.2.  Last change: 2021 Jul 16
+*pattern.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -315,7 +315,7 @@ the pattern.
 ==============================================================================
 2. The definition of a pattern         *search-pattern* *pattern* *[pattern]*
                                        *regular-expression* *regexp* *Pattern*
-                                       *E76* *E383* *E476*
+                                       *E383* *E476*
 
 For starters, read chapter 27 of the user manual |usr_27.txt|.
 
@@ -929,9 +929,9 @@ $   At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
 \%23l  Matches in a specific line.
 \%<23l Matches above a specific line (lower line number).
 \%>23l Matches below a specific line (higher line number).
-\%.l    Matches at the cursor line.
-\%<.l   Matches above the cursor line.
-\%>.l   Matches below the cursor line.
+\%.l   Matches at the cursor line.
+\%<.l  Matches above the cursor line.
+\%>.l  Matches below the cursor line.
        These six can be used to match specific lines in a buffer.  The "23"
        can be any line number.  The first line is 1.
        WARNING: When inserting or deleting lines Vim does not automatically
@@ -950,9 +950,9 @@ $   At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
 \%23c  Matches in a specific column.
 \%<23c Matches before a specific column.
 \%>23c Matches after a specific column.
-\%.c    Matches at the cursor column.
-\%<.c   Matches before the cursor column.
-\%>.c   Matches after the cursor column.
+\%.c   Matches at the cursor column.
+\%<.c  Matches before the cursor column.
+\%>.c  Matches after the cursor column.
        These six can be used to match specific columns in a buffer or string.
        The "23" can be any column number.  The first column is 1.  Actually,
        the column is the byte number (thus it's not exactly right for
@@ -976,9 +976,9 @@ $   At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
 \%23v  Matches in a specific virtual column.
 \%<23v Matches before a specific virtual column.
 \%>23v Matches after a specific virtual column.
-\%.v    Matches at the current virtual column.
-\%<.v   Matches before the current virtual column.
-\%>.v   Matches after the current virtual column.
+\%.v   Matches at the current virtual column.
+\%<.v  Matches before the current virtual column.
+\%>.v  Matches after the current virtual column.
        These six can be used to match specific virtual columns in a buffer or
        string.  When not matching with a buffer in a window, the option
        values of the current window are used (e.g., 'tabstop').
@@ -1070,6 +1070,8 @@ match ASCII characters, as indicated by the range.
 
 \(\)   A pattern enclosed by escaped parentheses.      */\(* */\(\)* */\)*
        E.g., "\(^a\)" matches 'a' at the start of a line.
+       There can only be ten of these.  You can use "\%(" to add more, but
+       not counting it as a sub-expression.
        *E51* *E54* *E55* *E872* *E873*
 
 \1      Matches the same string that was matched by    */\1* *E65*
@@ -1092,7 +1094,7 @@ x A single character, with no special meaning, matches itself
 \x     A backslash followed by a single character, with no special meaning,
        is reserved for future expansions
 
-[]     (with 'nomagic': \[])           */[]* */\[]* */\_[]* */collection*
+[]     (with 'nomagic': \[])           */[]* */\[]* */\_[]* */collection* *E76*
 \_[]
        A collection.  This is a sequence of characters enclosed in square
        brackets.  It matches any single character in the collection.
@@ -1488,5 +1490,4 @@ the matching positions and the fuzzy match scores.
 The "f" flag of `:vimgrep` enables fuzzy matching.
 
 
-
  vim:tw=78:ts=8:noet:ft=help:norl:
index b4d770245f1f57373e73771b0478b1115ffd44f1..6645a7b2d9e551538a3d194ad549d94940327fbd 100644 (file)
@@ -1,4 +1,4 @@
-*popup.txt*  For Vim version 8.2.  Last change: 2021 Nov 29
+*popup.txt*  For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -54,7 +54,7 @@ A popup window has a window-ID like other windows, but behaves differently.
 The size can be up to the whole Vim window and it overlaps other windows.
 Popup windows can also overlap each other.  The "zindex" property specifies
 what goes on top of what.
-
+                                                       *E366*
 The popup window contains a buffer, and that buffer is always associated with
 the popup window.  The window cannot be in Normal, Visual or Insert mode, it
 does not get keyboard focus.  You can use functions like `setbufline()` to
@@ -262,7 +262,7 @@ popup_close({id} [, {result}])                              *popup_close()*
 
 
 popup_create({what}, {options})                                *popup_create()*
-               Open a popup window showing {what}, which is either:
+               Open a popup window showing {what}, which is either: *E450*
                - a buffer number
                - a string
                - a list of strings
index 47ead217f979887a18628ab57a142c19e2003869..b7a01bdfd73c704f79f1a1852c7e12b132796f83 100644 (file)
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 8.2.  Last change: 2021 Dec 03
+*quickfix.txt*  For Vim version 8.2.  Last change: 2022 Jan 04
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -244,7 +244,7 @@ processing a quickfix or location list command, it will be aborted.
                        [!] is not used.  It works like ":qall!" |:qall|,
                        except that Vim returns a non-zero exit code.
 
-                                                       *:cf* *:cfile*
+                                                       *:cf* *:cfi* *:cfile*
 :cf[ile][!] [errorfile]        Read the error file and jump to the first error.
                        This is done automatically when Vim is started with
                        the -q option.  You can use this command when you
index d4e8cf818fa937e1cd190208779f434ac5661216..edd3fa8fd7ba9d3553172668695ac7e2a7cc353d 100644 (file)
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 8.2.  Last change: 2021 May 08
+*starting.txt*  For Vim version 8.2.  Last change: 2022 Jan 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -560,6 +560,8 @@ a slash.  Thus "-R" means recovery and "-/R" readonly.
                ":source!".  When the "scriptout" file already exists, new
                characters are appended.  See also |complex-repeat|.
                {scriptout} cannot start with a digit.
+               If you want to record what is typed in a human readable for
+               you can use |ch_logfile()|, It adds "raw key input" lines.
 
                                                        *-W*
 -W {scriptout} Like -w, but do not append, overwrite an existing file.
index 35a4e3ad7aa06ccf2d3127d23fcd9e54f053d55a..737e0636c63e6cc4846d6b3bcc3d9df2442bce68 100644 (file)
@@ -1442,7 +1442,7 @@ add the following line to your startup file: >
 
        :let g:filetype_euphoria = "euphoria4"
 
-Elixir and Euphoria share the *.ex file extension.  If the filetype is 
+Elixir and Euphoria share the *.ex file extension.  If the filetype is
 specifically set as Euphoria with the g:filetype_euphoria variable, or the
 file is determined to be Euphoria based on keywords in the file, then the
 filetype will be set as Euphoria. Otherwise, the filetype will default to
@@ -1473,7 +1473,7 @@ The following file extensions are auto-detected as Elixir file types:
 
        *.ex, *.exs, *.eex, *.leex, *.lock
 
-Elixir and Euphoria share the *.ex file extension. If the filetype is 
+Elixir and Euphoria share the *.ex file extension. If the filetype is
 specifically set as Euphoria with the g:filetype_euphoria variable, or the
 file is determined to be Euphoria based on keywords in the file, then the
 filetype will be set as Euphoria. Otherwise, the filetype will default to
index b52e52644e5df17f74fce990a78f413deda249ac..78e88f3032ab51fc312204894035026caaf46970 100644 (file)
@@ -1162,6 +1162,7 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 'ts'   options.txt     /*'ts'*
 'tsl'  options.txt     /*'tsl'*
 'tsr'  options.txt     /*'tsr'*
+'tsrfu'        options.txt     /*'tsrfu'*
 'ttimeout'     options.txt     /*'ttimeout'*
 'ttimeoutlen'  options.txt     /*'ttimeoutlen'*
 'ttm'  options.txt     /*'ttm'*
@@ -1418,6 +1419,7 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 +user_commands various.txt     /*+user_commands*
 +vartabs       various.txt     /*+vartabs*
 +vertsplit     various.txt     /*+vertsplit*
++vim9script    various.txt     /*+vim9script*
 +viminfo       various.txt     /*+viminfo*
 +virtualedit   various.txt     /*+virtualedit*
 +visual        various.txt     /*+visual*
@@ -2244,6 +2246,7 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 :cexpr quickfix.txt    /*:cexpr*
 :cf    quickfix.txt    /*:cf*
 :cfdo  quickfix.txt    /*:cfdo*
+:cfi   quickfix.txt    /*:cfi*
 :cfile quickfix.txt    /*:cfile*
 :cfir  quickfix.txt    /*:cfir*
 :cfirst        quickfix.txt    /*:cfirst*
@@ -4013,7 +4016,6 @@ E127      eval.txt        /*E127*
 E128   eval.txt        /*E128*
 E129   eval.txt        /*E129*
 E13    message.txt     /*E13*
-E130   eval.txt        /*E130*
 E131   eval.txt        /*E131*
 E132   eval.txt        /*E132*
 E133   eval.txt        /*E133*
@@ -4153,6 +4155,7 @@ E257      if_cscop.txt    /*E257*
 E258   remote.txt      /*E258*
 E259   if_cscop.txt    /*E259*
 E26    rileft.txt      /*E26*
+E260   eval.txt        /*E260*
 E261   if_cscop.txt    /*E261*
 E262   if_cscop.txt    /*E262*
 E263   if_pyth.txt     /*E263*
@@ -4183,6 +4186,7 @@ E287      mbyte.txt       /*E287*
 E288   mbyte.txt       /*E288*
 E289   mbyte.txt       /*E289*
 E29    change.txt      /*E29*
+E290   builtin.txt     /*E290*
 E292   message.txt     /*E292*
 E293   message.txt     /*E293*
 E294   message.txt     /*E294*
@@ -4190,7 +4194,6 @@ E295      message.txt     /*E295*
 E296   message.txt     /*E296*
 E297   message.txt     /*E297*
 E298   message.txt     /*E298*
-E299   if_perl.txt     /*E299*
 E30    change.txt      /*E30*
 E300   message.txt     /*E300*
 E301   message.txt     /*E301*
@@ -4258,9 +4261,11 @@ E358     options.txt     /*E358*
 E359   term.txt        /*E359*
 E36    windows.txt     /*E36*
 E360   various.txt     /*E360*
+E362   eval.txt        /*E362*
 E363   options.txt     /*E363*
 E364   builtin.txt     /*E364*
 E365   print.txt       /*E365*
+E366   popup.txt       /*E366*
 E367   autocmd.txt     /*E367*
 E368   builtin.txt     /*E368*
 E369   pattern.txt     /*E369*
@@ -4352,8 +4357,11 @@ E447     editing.txt     /*E447*
 E448   various.txt     /*E448*
 E449   builtin.txt     /*E449*
 E45    message.txt     /*E45*
+E450   popup.txt       /*E450*
+E451   eval.txt        /*E451*
 E452   eval.txt        /*E452*
 E453   syntax.txt      /*E453*
+E454   eval.txt        /*E454*
 E455   print.txt       /*E455*
 E456   print.txt       /*E456*
 E457   print.txt       /*E457*
@@ -4391,8 +4399,10 @@ E485     message.txt     /*E485*
 E486   pattern.txt     /*E486*
 E487   options.txt     /*E487*
 E488   message.txt     /*E488*
+E489   cmdline.txt     /*E489*
 E49    message.txt     /*E49*
 E490   fold.txt        /*E490*
+E491   builtin.txt     /*E491*
 E492   message.txt     /*E492*
 E493   cmdline.txt     /*E493*
 E494   editing.txt     /*E494*
@@ -4443,6 +4453,7 @@ E534      options.txt     /*E534*
 E535   options.txt     /*E535*
 E536   options.txt     /*E536*
 E537   options.txt     /*E537*
+E538   builtin.txt     /*E538*
 E539   options.txt     /*E539*
 E54    pattern.txt     /*E54*
 E540   options.txt     /*E540*
@@ -4518,6 +4529,7 @@ E608      eval.txt        /*E608*
 E609   if_cscop.txt    /*E609*
 E61    pattern.txt     /*E61*
 E610   editing.txt     /*E610*
+E611   eval.txt        /*E611*
 E612   sign.txt        /*E612*
 E613   print.txt       /*E613*
 E614   editing.txt     /*E614*
@@ -7010,6 +7022,7 @@ g:tex_subscripts  syntax.txt      /*g:tex_subscripts*
 g:tex_superscripts     syntax.txt      /*g:tex_superscripts*
 g:tex_verbspell        syntax.txt      /*g:tex_verbspell*
 g:var  eval.txt        /*g:var*
+g:vim_indent_cont      indent.txt      /*g:vim_indent_cont*
 g:vimball_home pi_vimball.txt  /*g:vimball_home*
 g:vimball_mkdir        pi_vimball.txt  /*g:vimball_mkdir*
 g:vimsyn_embed syntax.txt      /*g:vimsyn_embed*
@@ -7937,6 +7950,7 @@ matchstrpos()     builtin.txt     /*matchstrpos()*
 matlab-indent  indent.txt      /*matlab-indent*
 matlab-indenting       indent.txt      /*matlab-indenting*
 max()  builtin.txt     /*max()*
+maxcol-variable        eval.txt        /*maxcol-variable*
 mbyte-IME      mbyte.txt       /*mbyte-IME*
 mbyte-XIM      mbyte.txt       /*mbyte-XIM*
 mbyte-combining        mbyte.txt       /*mbyte-combining*
@@ -9870,7 +9884,6 @@ try-echoerr       eval.txt        /*try-echoerr*
 try-finally    eval.txt        /*try-finally*
 try-nested     eval.txt        /*try-nested*
 try-nesting    eval.txt        /*try-nesting*
-tsrfu' options.txt     /*tsrfu'*
 tutor  usr_01.txt      /*tutor*
 twice  if_cscop.txt    /*twice*
 two-engines    pattern.txt     /*two-engines*
@@ -10005,6 +10018,7 @@ v:key   eval.txt        /*v:key*
 v:lang eval.txt        /*v:lang*
 v:lc_time      eval.txt        /*v:lc_time*
 v:lnum eval.txt        /*v:lnum*
+v:maxcol       eval.txt        /*v:maxcol*
 v:mouse_col    eval.txt        /*v:mouse_col*
 v:mouse_lnum   eval.txt        /*v:mouse_lnum*
 v:mouse_win    eval.txt        /*v:mouse_win*
index ca28f1f33018e14440b02a367f63c3e7847fbcc2..8e751d1f8bec60387366494ee2a86d68f3ef5a28 100644 (file)
@@ -39,6 +39,7 @@ If the result is "1" you have it.
       Stepping through code                    |termdebug-stepping|
       Inspecting variables                     |termdebug-variables|
       Other commands                           |termdebug-commands|
+      Events                                   |termdebug-events|
       Prompt mode                              |termdebug-prompt|
       Communication                            |termdebug-communication|
       Customizing                              |termdebug-customizing|
index 5b227e38e2d1251d8119b81461d68834f2c2c417..b18effdccd8e1adea08f699139e082e39876a052 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2021 Dec 30
+*todo.txt*      For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -38,15 +38,27 @@ browser use: https://github.com/vim/vim/issues/1234
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Autoload import syntax:
+    import autoload "filename"
+    import autoload "filename" as name
+doesn't load the script yet
+  autoload items can be used without the "#dir#file#" prefix, but file.item
+  Add a test_override() item to load the script and compile functions the
+  moment it is encountered, so that types are checked.
+"vim9script autoload" in an autoload script, using "export" will prefix
+  "dir#file#" to the exported item.
+
 Once Vim9 is stable:
-- Add the "vim9script" feature, can use has('vim9script')
-    Remove TODO in vim9.txt
 - Add all the error numbers in a good place in documentation.
+    done until E653
 - Use Vim9 for runtime files.
 
 Further Vim9 improvements, possibly after launch:
 - Check performance with callgrind and kcachegrind.
-- better implementation for partial and tests for that.
+- Better implementation for partial and tests for that.
+- when using "const" mark the variable type as const with TTFLAG_CONST, so
+  that an error is given at compile time when trying to change it.  E.g. for a
+  const list and trying to call add().
 - Compile options that are an expression, e.g. "expr:" in 'spellsuggest',
   'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
   'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
index aefe45b9376d39627cd3cc11138ce111672c14f7..5e52209a96c782c9426c981e35feef0cc178285a 100644 (file)
@@ -189,7 +189,7 @@ You can specify #rrggbb hex colors and you can define new names for hex
 colors in |v:colornames| like so: >
 
        let v:colornames['mine_red'] = '#aa0000'
-<
+
 If you are authoring a color scheme for others to use, it is important
 to define these colors only when they do not exist: >
 
@@ -197,7 +197,7 @@ to define these colors only when they do not exist: >
 
 This allows users of the color scheme to override the precise definition of
 that color prior to loading your color scheme. For example, in a |.vimrc|
-file:
+file: >
 
        runtime colors/lists/css_colors.vim
        let v:colornames['your_red'] = v:colornames['css_red']
index 21c09b43f881de9a66f3a1684b20ba7b8fdf14bf..9ed777f1eb2f9ea0d186ed67b84238a7ce9123b3 100644 (file)
@@ -1,4 +1,4 @@
-*usr_40.txt*   For Vim version 8.2.  Last change: 2020 Sep 02
+*usr_40.txt*   For Vim version 8.2.  Last change: 2022 Jan 03
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -20,7 +20,7 @@ Table of contents: |usr_toc.txt|
 ==============================================================================
 *40.1* Key mapping
 
-A simple mapping was explained in section |05.3|.  The principle is that one
+A simple mapping was explained in section |05.4|.  The principle is that one
 sequence of key strokes is translated into another sequence of key strokes.
 This is a simple, yet powerful mechanism.
    The simplest form is that one key is mapped to a sequence of keys.  Since
index a9abe59be1ad8e09cc804aa3ac2dd55e3bcb81ec..1ef4f26b2cccd7542b3ec83e52694cbcc663273c 100644 (file)
@@ -1,4 +1,4 @@
-*usr_41.txt*   For Vim version 8.2.  Last change: 2021 Dec 30
+*usr_41.txt*   For Vim version 8.2.  Last change: 2022 Jan 01
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -277,7 +277,7 @@ Example: >
 
        var name = "Peter"
        echo name
-<      peter ~
+<      Peter ~
 
 Every variable has a type.  Very often, as in this example, the type is
 defined by assigning a value.  This is called type inference.  If you do not
@@ -538,16 +538,16 @@ between the `while` and the `endwhile`:
 
 Example: >
 
+       var counter = 1
        while counter < 40
-         do_something()
-         if skip_flag
+         if skip_number(counter)
            continue
          endif
-         if finished_flag
+         if last_number(counter)
            break
          endif
          sleep 50m
-         --counter
+         ++counter
        endwhile
 
 The `sleep` command makes Vim take a nap.  The "50m" specifies fifty
index da44546b0f121080ff562648c45f9f25d78582e1..a3feeb02133db6c502861b57d35bf31baf14486c 100644 (file)
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 8.2.  Last change: 2021 Dec 20
+*various.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -244,10 +244,10 @@ g8                        Print the hex values of the bytes used in the
                        compiler will have set stdin to a non-interactive
                        mode.
 
-                                                       *:!cmd* *:!* *E34*
+                                                       *:!cmd* *:!*
 :!{cmd}                        Execute {cmd} with the shell.  See also the 'shell'
                        and 'shelltype' option.
-
+                                                       *E34*
                        Any '!' in {cmd} is replaced with the previous
                        external command (see also 'cpoptions').  But not when
                        there is a backslash before the '!', then that
index 5d3e5b1bb07cb4333ab913169b247fdb4600bfca..0af6dff33d7b60cc3a6252859a61860078d82d28 100644 (file)
@@ -1,4 +1,4 @@
-*vim9.txt*     For Vim version 8.2.  Last change: 2021 Dec 27
+*vim9.txt*     For Vim version 8.2.  Last change: 2022 Jan 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -120,7 +120,7 @@ is the same as in shell scripts and Python programs.
 
 In Vi # is a command to list text with numbers.  In Vim9 script you can use
 `:number` for that. >
-       101 number
+       :101 number
 
 To improve readability there must be a space between a command and the #
 that starts a comment: >
@@ -1358,8 +1358,14 @@ Same for |extend()|, use |extendnew()| instead, and for |flatten()|, use
                                        *vim9script* *vim9-export* *vim9-import*
 
 A Vim9 script can be written to be imported.  This means that everything in
-the script is local, unless exported.  Those exported items, and only those
-items, can then be imported in another script.
+the script is local, except for items that are exported.  Those exported
+items, and only those items, can then be imported in another script.
+
+This mechanism exists for writing a script that can be sourced (imported) by
+other scripts, while making sure these other scripts only have access to what
+you want them to.  This also avoids using the global namespace, which has a
+risc of name collisions.  For example when you have two plugins with similar
+functionality.
 
 You can cheat by using the global namespace explicitly.  We will assume here
 that you don't do that.
@@ -1438,21 +1444,23 @@ The exported items can be imported in another Vim9 script: >
 This makes each item available as "myscript.item".
 
 In case the name is long or ambiguous, another name can be specified: >
-       import "thatscript.vim" as That
+       import "thatscript.vim" as that
 
-Then you can use "That.EXPORTED_CONST", "That.someValue", etc.  You are free
-to choose the name "That".  Use something that will be recognized as referring
-to the imported script.  Avoid command names, because the name will shadow
-them.
+Then you can use "that.EXPORTED_CONST", "that.someValue", etc.  You are free
+to choose the name "that".  Use something that will be recognized as referring
+to the imported script.  Avoid command names and builtin function names,
+because the name will shadow them.
 
-In case the dot in the name is unwanted, a local reference can be made: >
-       var ThatFunc = That.LongFuncName
+In case the dot in the name is undesired, a local reference can be made for a
+function: >
+       var LongFunc = that.LongFuncName
 
 This also works for constants: >
-       cost MAXLEN = That.MAX_LEN_OF_NAME
+       const MAXLEN = that.MAX_LEN_OF_NAME
 
-This does not work for variables, you could use a setter function and make a
-local reference for it.
+This does not work for variables, since the value would be copied once and
+when changing the variable the copy will change, not the original variable.
+You will need to use the full name, with the dot.
 
 `:import` can also be used in legacy Vim script.  The imported items still
 become script-local, even when the "s:" prefix is not given.
@@ -1471,12 +1479,21 @@ The script name after `import` can be:
   longer and unique, to avoid loading the wrong file.
   Note that "after/import" is not used.
 
+If the name does not end in ".vim" then the use of "as name" is required.
+
 Once a vim9 script file has been imported, the result is cached and used the
 next time the same script is imported.  It will not be read again.
 
 It is not allowed to import the same script twice, also when using two
 different "as" names.
-                                                       *:import-cycle*
+
+When using the imported name the dot and the item name must be in the same
+line, there can be no line break: >
+       echo that.
+               name   # Error!
+       echo that
+               .name  # Error!
+<                                                      *:import-cycle*
 The `import` commands are executed when encountered.  If that script (directly
 or indirectly) imports the current script, then items defined after the
 `import` won't be processed yet.  Therefore cyclic imports can exist, but may
index 2f608352db73efdfe9e789022e5de7845602170d..79d00a70b2242a05b6da4863e37ebeda98ad6c2c 100644 (file)
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 8.2.  Last change: 2021 Nov 29
+*windows.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -146,7 +146,7 @@ highlight group (|hl-EndOfBuffer|) can be used to change the highlighting of
 the filler characters.
 
 ==============================================================================
-3. Opening and closing a window                                *opening-window* *E36*
+3. Opening and closing a window                                *opening-window*
 
 CTRL-W s                                               *CTRL-W_s*
 CTRL-W S                                               *CTRL-W_S*
@@ -246,6 +246,10 @@ CTRL-W :   Does the same as typing |:| - enter a command line.  Useful in a
 
 Note that the 'splitbelow' and 'splitright' options influence where a new
 window will appear.
+                                                               *E36*
+Creating a window will fail if there is not enough room.  Every window needs
+at least one screen line and column, sometimes more.   Options 'winminheight'
+and 'winminwidth' are relevant.
 
                                                *:vert* *:vertical*
 :vert[ical] {cmd}
index f6ba012f3793f7c05a208e41b22cc9e1d3379fc0..09abccf7da837ec01eb0ae4b6257b2e48b5b5135 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Dec 27
+" Last Change: 2022 Jan 05
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
diff --git a/runtime/ftplugin/git.vim b/runtime/ftplugin/git.vim
deleted file mode 100644 (file)
index 75b20f0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-" Vim filetype plugin
-" Language:    generic git output
-" Maintainer:  Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2019 Dec 05
-
-" Only do this when not done yet for this buffer
-if (exists("b:did_ftplugin"))
-  finish
-endif
-let b:did_ftplugin = 1
-
-if !exists('b:git_dir')
-  if expand('%:p') =~# '[\/]\.git[\/]modules[\/]\|:[\/][\/]\|^\a\a\+:'
-    " Stay out of the way
-  elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
-    let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')
-  elseif expand('%:p') =~# '\.git\>'
-    let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
-  elseif $GIT_DIR != ''
-    let b:git_dir = $GIT_DIR
-  endif
-  if (has('win32') || has('win64')) && exists('b:git_dir')
-    let b:git_dir = substitute(b:git_dir,'\\','/','g')
-  endif
-endif
-
-if exists('*shellescape') && exists('b:git_dir') && b:git_dir != ''
-  if b:git_dir =~# '/\.git$' " Not a bare repository
-    let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path
-  endif
-  let &l:path = escape(b:git_dir,'\, ').','.&l:path
-  let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'
-else
-  setlocal keywordprg=git\ show
-endif
-if has('gui_running')
-  let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','')
-endif
-
-setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
-let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
index 9b1998acaa7e96fa1cc664ae73e3fe302ae94d50..9342799b5667584b535ee9c54c90116e185192e2 100644 (file)
@@ -1,66 +1,57 @@
 " Vim filetype plugin
 " Language:    git commit file
 " Maintainer:  Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2019 Dec 05
+" Last Change: 2022 Jan 05
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
   finish
 endif
 
-runtime! ftplugin/git.vim
 let b:did_ftplugin = 1
 
-setlocal comments=:# commentstring=#\ %s
 setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
 setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q formatoptions+=n
 setlocal formatlistpat+=\\\|^\\s*[-*+]\\s\\+
+setlocal include=^+++
+setlocal includeexpr=substitute(v:fname,'^[bi]/','','')
 
-let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms< formatlistpat<'
+let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms< formatlistpat< inc< inex<'
 
-if exists("g:no_gitcommit_commands") || v:version < 700
-  finish
-endif
+let s:l = search('\C\m^[#;@!$%^&|:] -\{24,\} >8 -\{24,\}$', 'cnW', '', 100)
+let &l:comments = ':' . (matchstr(getline(s:l ? s:l : '$'), '^[#;@!$%^&|:]\S\@!') . '#')[0]
+let &l:commentstring = &l:comments[1] . ' %s'
+unlet s:l
 
-if !exists("b:git_dir")
-  let b:git_dir = expand("%:p:h")
+if exists("g:no_gitcommit_commands")
+  finish
 endif
 
-command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0, <f-args>)
 
 let b:undo_ftplugin = b:undo_ftplugin . "|delc DiffGitCached"
 
-function! s:diffcomplete(A,L,P)
+function! s:diffcomplete(A, L, P) abort
   let args = ""
   if a:P <= match(a:L." -- "," -- ")+3
     let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
   end
-  if exists("b:git_dir") && a:A !~ '^-'
-    let tree = fnamemodify(b:git_dir,':h')
-    if strpart(getcwd(),0,strlen(tree)) == tree
-      let args = args."\n".system("git diff --cached --name-only")
-    endif
+  if a:A !~ '^-' && !empty(getftype('.git'))
+    let args = args."\n".system("git diff --cached --name-only")
   endif
   return args
 endfunction
 
-function! s:gitdiffcached(bang,gitdir,...)
-  let tree = fnamemodify(a:gitdir,':h')
+function! s:gitdiffcached(bang, ...) abort
   let name = tempname()
-  let git = "git"
-  if strpart(getcwd(),0,strlen(tree)) != tree
-    let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
-  endif
   if a:0
-    let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
+    let extra = join(map(copy(a:000), 'shellescape(v:val)'))
   else
     let extra = "-p --stat=".&columns
   endif
-  call system(git." diff --cached --no-color --no-ext-diff ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
-  exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
+  call system("git diff --cached --no-color --no-ext-diff ".extra." > ".shellescape(name))
+  exe "pedit " . fnameescape(name)
   wincmd P
-  let b:git_dir = a:gitdir
-  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
-  nnoremap <buffer> <silent> q :q<CR>
+  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0, <f-args>)
   setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
 endfunction
index 2fed53c829dbfc96cd0f647f31f6edba50c8f522..143f86a251617aabf1d5b7f5caeb472f48e1bb8e 100644 (file)
@@ -1,22 +1,20 @@
 " Vim filetype plugin
 " Language:    git rebase --interactive
 " Maintainer:  Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2019 Dec 05
+" Last Change: 2022 Jan 05
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
   finish
 endif
 
-runtime! ftplugin/git.vim
 let b:did_ftplugin = 1
 
-setlocal comments=:# commentstring=#\ %s formatoptions-=t
+let &l:comments = ':' . (matchstr(getline('$'), '^[#;@!$%^&|:]\S\@!') . '#')[0]
+let &l:commentstring = &l:comments[1] . ' %s'
+setlocal formatoptions-=t
 setlocal nomodeline
-if !exists("b:undo_ftplugin")
-  let b:undo_ftplugin = ""
-endif
-let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
+let b:undo_ftplugin = "setl com< cms< fo< ml<"
 
 function! s:choose(word) abort
   s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
@@ -41,8 +39,7 @@ if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
   finish
 endif
 
-nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
 nnoremap <buffer> <silent> <C-A> :<C-U><C-R>=v:count1<CR>Cycle<CR>
 nnoremap <buffer> <silent> <C-X> :<C-U><C-R>=v:count1<CR>Cycle!<CR>
 
-let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> K'|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
+let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
index 76836d6c29bd1922c00bf5da831fb0b324b73b6c..d288af179720f7648603e0b371e4b5a3dd30922c 100644 (file)
@@ -147,7 +147,7 @@ func s:StartDebug_internal(dict)
     if &columns < g:termdebug_wide
       let s:save_columns = &columns
       let &columns = g:termdebug_wide
-      " If we make the Vim window wider, use the whole left halve for the debug
+      " If we make the Vim window wider, use the whole left half for the debug
       " windows.
       let s:allleft = 1
     endif
@@ -426,7 +426,7 @@ func s:StartDebug_prompt(dict)
     call s:SendCommand('set env COLORS = ' . &t_Co)
     call s:SendCommand('set env VIM_TERMINAL = ' . v:version)
   else
-    " TODO: open a new terminal get get the tty name, pass on to gdb
+    " TODO: open a new terminal, get the tty name, pass on to gdb
     call s:SendCommand('show inferior-tty')
   endif
   call s:SendCommand('set print pretty on')
@@ -1067,10 +1067,10 @@ func s:GetEvaluationExpression(range, arg)
   return expr
 endfunc
 
-" clean up expression that may got in because of range
+" clean up expression that may get in because of range
 " (newlines and surrounding whitespace)
 " As it can also be specified via ex-command for assignments this function
-" may not change the "content" parts (like replacing contained spaces
+" may not change the "content" parts (like replacing contained spaces)
 func s:CleanupExpr(expr)
   " replace all embedded newlines/tabs/...
   let expr = substitute(a:expr, '\_s', ' ', 'g')
@@ -1099,7 +1099,7 @@ func s:HandleEvaluate(msg)
     \ ->substitute('.*value="\(.*\)"', '\1', '')
     \ ->substitute('\\"', '"', 'g')
     \ ->substitute('\\\\', '\\', 'g')
-    "\ multi-byte characters arrive in octal form, replace everthing but NULL values
+    "\ multi-byte characters arrive in octal form, replace everything but NULL values
     \ ->substitute('\\000', s:NullRepl, 'g')
     \ ->substitute('\\\o\o\o', {-> eval('"' .. submatch(0) .. '"')}, 'g')
     "\ Note: GDB docs also mention hex encodings - the translations below work
index a8467edd43f8ef2b91c86a0eadf33d43e0dac7bc..bf013ce195da72a1a53e2ccd243ea75ab3bacf8b 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    generic git output
 " Maintainer:  Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2019 Dec 05
+" Last Change: 2022 Jan 05
 
 if exists("b:current_syntax")
   finish
@@ -12,12 +12,28 @@ syn sync minlines=50
 
 syn include @gitDiff syntax/diff.vim
 
-syn region gitHead start=/\%^/ end=/^$/
-syn region gitHead start=/\%(^commit\%( \x\{40\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/
-
-" For git reflog and git show ...^{tree}, avoid sync issues
-syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/
-syn match gitHead /^\x\{40\} \x\{40}\t.*/
+syn region gitHead start=/\%^\%(tag \|tree \|object \)\@=/ end=/^$/ contains=@NoSpell
+syn region gitHead start=/\%(^commit\%( \x\{4,\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/ contains=@NoSpell
+" git log --oneline
+" minimize false positives by verifying contents of buffer
+if getline(1) =~# '^\x\{7,\} ' && getline('$') =~# '^\x\{7,\} '
+  syn match gitHashAbbrev /^\x\{7,\} \@=/ contains=@NoSpell
+elseif getline(1) =~#     '^[|\/\\_ ]\{-\}\*[|\/\\_ ]\{-\} \x\{7,\} '
+  syn match gitHashAbbrev /^[|\/\\_ ]\{-\}\*[|\/\\_ ]\{-\} \zs\x\{7,\} \@=/ contains=@NoSpell
+endif
+" git log --graph
+syn region gitGraph start=/\%(^[|\/\\_ ]*\*[|\/\\_ ]\{-\} commit\%( \x\{4,\}\)\{1,\}\%(\s*(.*)\)\=$\)\@=/ end=/^\%([|\/\\_ ]*$\)\@=/ contains=@NoSpell
+" git blame --porcelain
+syn region gitHead start=/\%(^\x\{40,\} \d\+ \d\+\%( \d\+\)\=$\)\@=/ end=/^\t\@=/ contains=@NoSpell
+" git ls-tree
+syn match  gitMode    /^\d\{6\}\%( \%(blob\|tree\) \x\{4,\}\t\)\@=/ nextgroup=gitType skipwhite contains=@NoSpell
+" git ls-files --stage
+syn match  gitMode    /^\d\{6\}\%( \x\{4,\} [0-3]\t\)\@=/ nextgroup=gitHashStage skipwhite contains=@NoSpell
+" .git/HEAD, .git/refs/
+syn match  gitKeyword /\%^ref: \@=/ nextgroup=gitReference skipwhite contains=@NoSpell
+syn match  gitHash /\%^\x\{40,}\%$/ skipwhite contains=@NoSpell
+" .git/logs/
+syn match  gitReflog /^\x\{40,\} \x\{40,\} .\{-\}\d\+\s-\d\{4\}\t.*/ skipwhite contains=@NoSpell,gitReflogOld
 
 syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold
 syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff
@@ -25,35 +41,47 @@ syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\)
 syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
 syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
 syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
-syn match gitDiffAdded "{+.*+}" contained containedin=gitDiff
+syn match gitDiffAdded "{+[^}]*+}" contained containedin=gitDiff
 syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
-syn match gitDiffRemoved "\[-.*-\]" contained containedin=gitDiff
+syn match gitDiffRemoved "\[-[^]]*-\]" contained containedin=gitDiff
+
+syn match  gitKeyword /^commit \@=/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitKeyword /^\%(object\|tree\|parent\|encoding\|gpgsig\%(-\w\+\)\=\|previous\) \@=/ contained containedin=gitHead nextgroup=gitHash skipwhite contains=@NoSpell
+syn match  gitKeyword /^Merge:/  contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitIdentityKeyword /^\%(author\|committer\|tagger\) \@=/ contained containedin=gitHead nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match  gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match  gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite contains=@NoSpell
 
-syn match  gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
-syn match  gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite
-syn match  gitKeyword /^Merge:/  contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite
-syn match  gitMode    /^\d\{6\}\>/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite
-syn match  gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
-syn match  gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite
-syn match  gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite
+syn match  gitKeyword /^[*|\/\\_ ]\+\zscommit \@=/ contained containedin=gitGraph nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitKeyword /^[|\/\\_ ]\+\zs\%(object\|tree\|parent\|encoding\|gpgsig\%(-\w\+\)\=\|previous\) \@=/ contained containedin=gitGraph nextgroup=gitHash skipwhite contains=@NoSpell
+syn match  gitKeyword /^[|\/\\_ ]\+\zsMerge:/  contained containedin=gitGraph nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitIdentityKeyword /^[|\/\\_ ]\+\zs\%(author\|committer\|tagger\) \@=/ contained containedin=gitGraph nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match  gitIdentityHeader /^[|\/\\_ ]\+\zs\%(Author\|Commit\|Tagger\):/ contained containedin=gitGraph nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match  gitDateHeader /^[|\/\\_ ]\+\zs\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitGraph nextgroup=gitDate skipwhite contains=@NoSpell
 
-syn match  gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite
-syn match  gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite
-syn match  gitReflogMiddle /\S\+@{\d\+} (/he=e-2 nextgroup=gitIdentity
+syn match  gitKeyword /^type \@=/ contained containedin=gitHead nextgroup=gitType skipwhite contains=@NoSpell
+syn match  gitKeyword /^\%(summary\|boundary\|filename\|\%(author\|committer\)-\%(time\|tz\)\) \@=/ contained containedin=gitHead skipwhite contains=@NoSpell
+syn match  gitKeyword /^tag \@=/ contained containedin=gitHead nextgroup=gitReference skipwhite contains=@NoSpell
+syn match  gitIdentityKeyword /^\%(author\|committer\)-mail \@=/ contained containedin=gitHead nextgroup=gitEmail skipwhite contains=@NoSpell
+syn match  gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite contains=@NoSpell
+syn match  gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite contains=@NoSpell
+syn match  gitReflogMiddle /\S\+@{\d\+} (/he=e-2 nextgroup=gitIdentity contains=@NoSpell
 
-syn match  gitDate      /\<\u\l\l \u\l\l \d\=\d \d\d:\d\d:\d\d \d\d\d\d [+-]\d\d\d\d/ contained
-syn match  gitDate      /-\=\d\+ [+-]\d\d\d\d\>/               contained
-syn match  gitDate      /\<\d\+ \l\+ ago\>/                    contained
-syn match  gitType      /\<\%(tag\|commit\|tree\|blob\)\>/     contained nextgroup=gitHash skipwhite
-syn match  gitStage     /\<\d\t\@=/                            contained
-syn match  gitReference /\S\+\S\@!/                            contained
-syn match  gitHash      /\<\x\{40\}\>/                         contained nextgroup=gitIdentity,gitStage,gitHash skipwhite
-syn match  gitHash      /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite
-syn match  gitHashAbbrev /\<\x\{4,40\}\>/           contained nextgroup=gitHashAbbrev skipwhite
-syn match  gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite
+syn match  gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite contains=@NoSpell
+syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity contains=@NoSpell
+syn match  gitDate      /\<\u\l\l \u\l\l \d\=\d \d\d:\d\d:\d\d \d\d\d\d [+-]\d\d\d\d/ contained contains=@NoSpell
+syn match  gitDate      /-\=\d\+ [+-]\d\d\d\d\>/               contained contains=@NoSpell
+syn match  gitDate      /\<\d\+ \l\+ ago\>/                    contained contains=@NoSpell
+syn match  gitType      /\<\%(tag\|commit\|tree\|blob\)\>/     contained nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitReference /\S\+\S\@!/                            contained contains=@NoSpell
+syn match  gitHash      /\<\x\{40,\}\>/             contained nextgroup=gitIdentity,gitHash skipwhite contains=@NoSpell
+syn match  gitReflogOld /^\x\{40,\} \@=/            contained nextgroup=gitReflogNew skipwhite contains=@NoSpell
+syn match  gitReflogNew /\<\x\{40,\} \@=/           contained nextgroup=gitIdentity skipwhite contains=@NoSpell
+syn match  gitHashAbbrev /\<\x\{4,\}\>/             contained nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
+syn match  gitHashStage /\<\x\{4,\}\>/              contained nextgroup=gitStage skipwhite contains=@NoSpell
+syn match  gitStage     /\<\d\t\@=/                 contained contains=@NoSpell
 
-syn match  gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite
-syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity
 
 syn match  gitNotesHeader /^Notes:\ze\n    /
 
@@ -68,7 +96,10 @@ hi def link gitEmailDelimiter    Delimiter
 hi def link gitEmail             Special
 hi def link gitDate              Number
 hi def link gitMode              Number
+hi def link gitHashStage         gitHash
 hi def link gitHashAbbrev        gitHash
+hi def link gitReflogOld         gitHash
+hi def link gitReflogNew         gitHash
 hi def link gitHash              Identifier
 hi def link gitReflogMiddle      gitReference
 hi def link gitReference         Function
index 63b1ce920f8a6efae957db5d3e620c7c3336ef58..42c8d4414f0f0f05a1061113726d5cca1d4218df 100644 (file)
@@ -2,71 +2,87 @@
 " Language:    git commit file
 " Maintainer:  Tim Pope <vimNOSPAM@tpope.org>
 " Filenames:   *.git/COMMIT_EDITMSG
-" Last Change: 2019 Dec 05
+" Last Change: 2022 Jan 05
 
 if exists("b:current_syntax")
   finish
 endif
 
+scriptencoding utf-8
+
 syn case match
 syn sync minlines=50
+syn sync linebreaks=1
 
 if has("spell")
   syn spell toplevel
 endif
 
 syn include @gitcommitDiff syntax/diff.vim
-syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff
+syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|@@\@!\|[^[:alnum:]\ +-]\S\@!\)\@=/ fold contains=@gitcommitDiff
 
 syn match   gitcommitSummary   "^.*\%<51v." contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
 syn match   gitcommitOverflow  ".*" contained contains=@Spell
-syn match   gitcommitBlank     "^[^#].*" contained contains=@Spell
+syn match   gitcommitBlank     "^.\+" contained contains=@Spell
+syn match   gitcommitFirstLine "\%^.*" nextgroup=gitcommitBlank,gitcommitComment skipnl
+
+let s:scissors = 0
+let s:l = search('^[#;@!$%^&|:] -\{24,\} >8 -\{24,\}$', 'cnW', '', 100)
+if s:l == 0
+  let s:l = line('$')
+elseif getline(s:l)[0] !=# getline(s:l - 1)[0]
+  let s:scissors = 1
+endif
+let s:comment = escape((matchstr(getline(s:l), '^[#;@!$%^&|:]\S\@!') . '#')[0], '^$.*[]~\"/')
 
-if get(g:, "gitcommit_cleanup") is# "scissors"
-  syn match gitcommitFirstLine "\%^.*" nextgroup=gitcommitBlank skipnl
-  syn region gitcommitComment start=/^# -\+ >8 -\+$/ end=/\%$/ contains=gitcommitDiff
+if s:scissors
+  let s:comment .= ' -\{24,\} >8 -\{24,\}$'
+  exe 'syn region gitcommitComment start="^' . s:comment . '" end="\%$" contains=gitcommitDiff'
 else
-  syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl
-  syn match gitcommitComment   "^#.*"
+  exe 'syn match gitcommitComment "^' . s:comment . '.*"'
 endif
+exe 'syn match   gitcommitTrailers "\n\@<=\n\%([[:alnum:]-]\+\s*:.*\|(cherry picked from commit .*\)\%(\n\s.*\|\n[[:alnum:]-]\+\s*:.*\|\n(cherry picked from commit .*\)*\%(\n\n*\%(' . s:comment . '\)\|\n*\%$\)\@="'
 
-syn match   gitcommitHead      "^\%(#   .*\n\)\+#$" contained transparent
-syn match   gitcommitOnBranch  "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
-syn match   gitcommitOnBranch  "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+unlet s:l s:comment s:scissors
+
+syn match   gitcommitTrailerToken "^[[:alnum:]-]\+\s*:" contained containedin=gitcommitTrailers
+
+syn match   gitcommitHash      "\<\x\{40,}\>" contains=@NoSpell display
+syn match   gitcommitOnBranch  "\%(^. \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
+syn match   gitcommitOnBranch  "\%(^. \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
 syn match   gitcommitBranch    "[^ ']\+" contained
-syn match   gitcommitNoBranch  "\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment
-syn match   gitcommitHeader    "\%(^# \)\@<=.*:$"      contained containedin=gitcommitComment
-syn region  gitcommitAuthor    matchgroup=gitCommitHeader start=/\%(^# \)\@<=\%(Author\|Committer\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent
-syn match   gitcommitNoChanges "\%(^# \)\@<=No changes$" contained containedin=gitcommitComment
+syn match   gitcommitNoBranch  "\%(^. \)\@<=Not currently on any branch." contained containedin=gitcommitComment
+syn match   gitcommitHeader    "\%(^. \)\@<=\S.*[::]\%(\n^$\)\@!$" contained containedin=gitcommitComment
+syn region  gitcommitAuthor    matchgroup=gitCommitHeader start=/\%(^. \)\@<=\%(Author\|Committer\|Date\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent
+syn match   gitcommitHeader    "\%(^. \)\@<=commit\%( \x\{40,\}$\)\@=" contained containedin=gitcommitComment nextgroup=gitcommitHash skipwhite
+syn match   gitcommitNoChanges "\%(^. \)\@<=No changes$" contained containedin=gitcommitComment
 
-syn region  gitcommitUntracked start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold
-syn match   gitcommitUntrackedFile  "\t\@<=.*" contained
+syn match   gitcommitType              "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained containedin=gitcommitComment nextgroup=gitcommitFile skipwhite
+syn match   gitcommitFile              ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitArrow
+syn match   gitcommitArrow             " -> " contained nextgroup=gitcommitFile
+syn match   gitcommitUntrackedFile     "\%(^.\t\)\@<=[^::/]*\%(/.*\)\=$" contained containedin=gitcommitComment
 
-syn region  gitcommitDiscarded start=/^# Change\%(s not staged for commit\|d but not updated\):/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold
-syn region  gitcommitSelected  start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold
-syn region  gitcommitUnmerged  start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold
+syn region  gitcommitUntracked start=/^\z(.\) Untracked files:$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+syn region  gitcommitDiscarded start=/^\z(.\) Change\%(s not staged for commit\|d but not updated\):$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader,gitcommitDiscardedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+syn region  gitcommitSelected  start=/^\z(.\) Changes to be committed:$/ end=/^\z1$\|^\z1\@!/ contains=gitcommitHeader,gitcommitSelectedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
+syn region  gitcommitUnmerged  start=/^\z(.\) Unmerged paths:$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader,gitcommitUnmergedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold
 
+syn match   gitcommitUntrackedFile     "\%(^.\t\)\@<=.*" contained containedin=gitcommitUntracked
 
-syn match   gitcommitDiscardedType     "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2     contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite
-syn match   gitcommitSelectedType      "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2     contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite
-syn match   gitcommitUnmergedType      "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2     contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite
-syn match   gitcommitDiscardedFile     ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
-syn match   gitcommitSelectedFile      ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
-syn match   gitcommitUnmergedFile      ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
+syn match   gitcommitDiscardedType     "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitDiscardedFile skipwhite
+syn match   gitcommitSelectedType      "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitSelectedFile skipwhite
+syn match   gitcommitUnmergedType      "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitUnmergedFile skipwhite
+syn match   gitcommitDiscardedFile     "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
+syn match   gitcommitSelectedFile      "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
+syn match   gitcommitUnmergedFile      "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitUnmergedArrow
 syn match   gitcommitDiscardedArrow    " -> " contained nextgroup=gitcommitDiscardedFile
 syn match   gitcommitSelectedArrow     " -> " contained nextgroup=gitcommitSelectedFile
-syn match   gitcommitUnmergedArrow     " -> " contained nextgroup=gitcommitSelectedFile
-
-syn match   gitcommitWarning           "\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl
-syn match   gitcommitWarning           "^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained
-syn match   gitcommitWarning           "^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$"
+syn match   gitcommitUnmergedArrow     " -> " contained nextgroup=gitcommitUnmergedFile
 
 hi def link gitcommitSummary           Keyword
+hi def link gitcommitTrailerToken      Label
 hi def link gitcommitComment           Comment
-hi def link gitcommitUntracked         gitcommitComment
-hi def link gitcommitDiscarded         gitcommitComment
-hi def link gitcommitSelected          gitcommitComment
-hi def link gitcommitUnmerged          gitcommitComment
+hi def link gitcommitHash              Identifier
 hi def link gitcommitOnBranch          Comment
 hi def link gitcommitBranch            Special
 hi def link gitcommitNoBranch          gitCommitBranch
index bc6f34d1a75fa0642670a5e1dbc6e9891234d156..13f157b005548da797ed649ed62e6b1f23230b04 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    git rebase --interactive
 " Maintainer:  Tim Pope <vimNOSPAM@tpope.org>
 " Filenames:   git-rebase-todo
-" Last Change: 2019 Dec 06
+" Last Change: 2022 Jan 05
 
 if exists("b:current_syntax")
   finish
@@ -10,8 +10,10 @@ endif
 
 syn case match
 
-syn match   gitrebaseHash   "\v<\x{7,}>"                               contained
-syn match   gitrebaseCommit "\v<\x{7,}>"    nextgroup=gitrebaseSummary skipwhite
+let s:c = escape((matchstr(getline('$'), '^[#;@!$%^&|:]\S\@!') . '#')[0], '^$.*[]~\"/')
+
+syn match   gitrebaseHash   "\v<\x{7,}>"                               contained contains=@NoSpell
+syn match   gitrebaseCommit "\v<\x{7,}>"    nextgroup=gitrebaseSummary skipwhite contains=@NoSpell
 syn match   gitrebasePick   "\v^p%(ick)=>"   nextgroup=gitrebaseCommit skipwhite
 syn match   gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
 syn match   gitrebaseEdit   "\v^e%(dit)=>"   nextgroup=gitrebaseCommit skipwhite
@@ -26,12 +28,15 @@ syn match   gitrebaseLabel  "\v^l(abel)=>"   nextgroup=gitrebaseName skipwhite
 syn match   gitrebaseReset  "\v^(t|reset)=>" nextgroup=gitrebaseName skipwhite
 syn match   gitrebaseSummary ".*"               contains=gitrebaseHash contained
 syn match   gitrebaseCommand ".*"                                      contained
-syn match   gitrebaseComment "^\s*#.*"             contains=gitrebaseHash
+exe 'syn match gitrebaseComment " \@<=' . s:c . ' empty$" containedin=gitrebaseSummary contained'
+exe 'syn match gitrebaseComment "^\s*' . s:c . '.*" contains=gitrebaseHash'
 syn match   gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite
 syn match   gitrebaseMergeOption "\v-[Cc]>"  nextgroup=gitrebaseMergeCommit skipwhite contained
 syn match   gitrebaseMergeCommit "\v<\x{7,}>"  nextgroup=gitrebaseName skipwhite contained
 syn match   gitrebaseName        "\v[^[:space:].*?i:^~/-]\S+" nextgroup=gitrebaseMergeComment skipwhite contained
-syn match   gitrebaseMergeComment "#"  nextgroup=gitrebaseSummary skipwhite contained
+exe 'syn match gitrebaseMergeComment "' . s:c . '"  nextgroup=gitrebaseSummary skipwhite contained'
+
+unlet s:c
 
 hi def link gitrebaseCommit         gitrebaseHash
 hi def link gitrebaseHash           Identifier
index a8b663714080de654e4e0b2f6793905c1d68c888..f9e15d57e54a0e55081cc38e1024e3b7138202b7 100644 (file)
@@ -1,8 +1,9 @@
 " Vim syntax file
 " Language: i3 config file
-" Maintainer: Mohamed Boughaba <mohamed dot bgb at gmail dot com>
+" Original Author: Mohamed Boughaba <mohamed dot bgb at gmail dot com>
+" Maintainer: Quentin Hibon (github user hiqua)
 " Version: 0.4
-" Last Change: 2021 Dec 14
+" Last Change: 2022 Jan 04
 
 " References:
 " http://i3wm.org/docs/userguide.html#configuring