]> granicus.if.org Git - vim/commitdiff
Update runtime files
authorBram Moolenaar <Bram@vim.org>
Fri, 1 May 2020 14:07:38 +0000 (16:07 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 1 May 2020 14:07:38 +0000 (16:07 +0200)
22 files changed:
runtime/doc/change.txt
runtime/doc/cmdline.txt
runtime/doc/eval.txt
runtime/doc/help.txt
runtime/doc/index.txt
runtime/doc/insert.txt
runtime/doc/map.txt
runtime/doc/os_haiku.txt
runtime/doc/os_win32.txt
runtime/doc/repeat.txt
runtime/doc/tags
runtime/doc/terminal.txt
runtime/doc/textprop.txt
runtime/doc/todo.txt
runtime/doc/usr_08.txt
runtime/doc/usr_10.txt
runtime/doc/vim9.txt
runtime/ftplugin/man.vim
runtime/syntax/debchangelog.vim
runtime/syntax/debsources.vim
runtime/syntax/lex.vim
runtime/syntax/man.vim

index cf799a9deccaddbcbc4bdacf9c41825c54f5dbec..59004af14ab2c02ca3d0727b6b46c0c5a23846e2 100644 (file)
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 8.2.  Last change: 2020 Apr 11
+*change.txt*    For Vim version 8.2.  Last change: 2020 Apr 26
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -996,9 +996,9 @@ inside of strings can change!  Also see 'softtabstop' option. >
 5. Copying and moving text                             *copy-move*
 
                                                        *quote*
-"{a-zA-Z0-9.%#:-"}     Use register {a-zA-Z0-9.%#:-"} for next delete, yank
-                       or put (use uppercase character to append with
-                       delete and yank) ({.%#:} only work with put).
+"{register}            Use {register} for next delete, yank or put.  Use
+                       an uppercase character to append with delete and yank.
+                       Registers ".", "%", "#" and ":" only work with put.
 
                                                        *:reg* *:registers*
 :reg[isters]           Display the type and contents of all numbered and
index a01d4b97f15e33f6b643a8655a8dcb6425f550d8..ecaa73e894974b016ff084674a7f0db204181c8e 100644 (file)
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 8.2.  Last change: 2020 Feb 29
+*cmdline.txt*   For Vim version 8.2.  Last change: 2020 Apr 23
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -615,6 +615,7 @@ followed by another Vim command:
     :tcl
     :tcldo
     :tclfile
+    :terminal
     :vglobal
     :windo
     :write !
index 02ed78b2e15627284b82e5c979b8ea6d93cdc55f..8086bd560232a223cd9005d9889e0459dd2ff495 100644 (file)
@@ -2646,7 +2646,7 @@ prop_clear({lnum} [, {lnum-end} [, {props}]])
                                none    remove all text properties
 prop_find({props} [, {direction}])
                                Dict    search for a text property
-prop_list({lnum} [, {props}  List    text properties in {lnum}
+prop_list({lnum} [, {props}])  List    text properties in {lnum}
 prop_remove({props} [, {lnum} [, {lnum-end}]])
                                Number  remove a text property
 prop_type_add({name}, {props}) none    define a new property type
@@ -2654,7 +2654,7 @@ prop_type_change({name}, {props})
                                none    change an existing property type
 prop_type_delete({name} [, {props}])
                                none    delete a property type
-prop_type_get([{name} [, {props}])
+prop_type_get([{name} [, {props}]])
                                Dict    get property type values
 prop_type_list([{props}])      List    get list of property types
 pum_getpos()                   Dict    position and size of pum if visible
@@ -3050,7 +3050,7 @@ arglistid([{winnr} [, {tabnr}]])
                {winnr} can be the window number or the |window-ID|.
 
                                                        *argv()*
-argv([{nr} [, {winid}])
+argv([{nr} [, {winid}]])
                The result is the {nr}th file in the argument list.  See
                |arglist|.  "argv(0)" is the first one.  Example: >
        :let i = 0
@@ -5854,7 +5854,7 @@ has({feature} [, {check}])
 
                Note that to skip code that has a syntax error when the
                feature is not available, Vim may skip the rest of the line
-               and miss a following `endif`.  Therfore put the `endif` on a
+               and miss a following `endif`.  Therefore put the `endif` on a
                separate line: >
                        if has('feature')
                          let x = this->breaks->without->the->feature
index d858be1db0d45db0d8e87bd473a98738b1114a86..7de6fb663d03da8eb4c0a43006f433697810b0ef 100644 (file)
@@ -198,13 +198,13 @@ Remarks about specific systems ~
 |os_amiga.txt| Amiga
 |os_beos.txt|  BeOS and BeBox
 |os_dos.txt|   MS-DOS and MS-Windows common items
+|os_haiku.txt| Haiku
 |os_mac.txt|   Macintosh
 |os_mint.txt|  Atari MiNT
 |os_msdos.txt| MS-DOS (plain DOS and DOS box under Windows)
 |os_os2.txt|   OS/2
 |os_qnx.txt|   QNX
 |os_risc.txt|  RISC-OS
-|os_haiku.txt| Haiku
 |os_unix.txt|  Unix
 |os_vms.txt|   VMS
 |os_win32.txt| MS-Windows
index e5a3bd6b555639701ea470aad44288ff7926f3e3..315a5f3326fd214648d07f5d912d148ee9e328cd 100644 (file)
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 8.2.  Last change: 2020 Mar 27
+*index.txt*     For Vim version 8.2.  Last change: 2020 Apr 26
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -246,8 +246,7 @@ tag         char          note action in Normal mode        ~
                                2  filter Nmove text through the {filter}
                                   command
 |!!|           !!{filter}      2  filter N lines through the {filter} command
-|quote|                "{a-zA-Z0-9.%#:-"}  use register {a-zA-Z0-9.%#:-"} for next
-                                  delete, yank or put (uppercase to append)
+|quote|                "{register}        use {register} for next delete, yank or put
                                   ({.%#:} only work with put)
 |#|            #               1  search backward for the Nth occurrence of
                                   the ident under the cursor
@@ -1115,7 +1114,7 @@ tag               char            action in Terminal-Job mode     ~
 |t_CTRL-W_:|   CTRL-W :        enter an Ex command
 |t_CTRL-W_.|   CTRL-W .        type CTRL-W in the terminal
                CTRL-W CTRL-\   send a CTRL-\ to the job in the terminal
-|t_CTRL-W_quote|  CTRL-W " {0-9a-z"%#*:=}
+|t_CTRL-W_quote|  CTRL-W " {register}
                                paste register in the terminal
 |t_CTRL-W_CTRL-C| CTRL-W CTRL-C        forcefully ends the job
 |t_CTRL-W_CTRL-W| CTRL-W CTRL-W        move focus to the next window
index ff74d625f4ef16e6a2ee8236e3dd69eafbe5284f..fed81e5db4c9af1e194414eb84bcbacd3681e89f 100644 (file)
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 8.2.  Last change: 2020 Mar 25
+*insert.txt*    For Vim version 8.2.  Last change: 2020 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -666,7 +666,7 @@ Note: The keys that are valid in CTRL-X mode are not mapped.  This allows for
 ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
 Also, when doing completion with 'complete' mappings apply as usual.
 
-                                                       *E565*
+                                                       *E578* *E565*
 Note: While completion is active Insert mode can't be used recursively and
 buffer text cannot be changed.  Mappings that somehow invoke ":normal i.."
 will generate an E565 error.
index bf643c0ffca600ca06cd5245741f7ceba7d398eb..c142f231b5c8650f78d8f8ab085dd47702ce7bdb 100644 (file)
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2019 Dec 19
+*map.txt*       For Vim version 8.2.  Last change: 2020 Apr 23
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1492,7 +1492,7 @@ The valid escape sequences are
        <bang>  (See the '-bang' attribute) Expands to a ! if the
                command was executed with a ! modifier, otherwise
                expands to nothing.
-                                               *<mods>*
+                                               *<mods>* *:command-modifiers*
        <mods>  The command modifiers, if specified. Otherwise, expands to
                nothing. Supported modifiers are |:aboveleft|, |:belowright|,
                |:botright|, |:browse|, |:confirm|, |:hide|, |:keepalt|,
index 1ca338441df046b283c758de11a03ee263706445..6eff91c275834da46b9460d04d725de8c492e7f2 100644 (file)
@@ -25,8 +25,9 @@ targets personal computing.
  9. The meta key modifier      |haiku-meta|
 10. Mouse key mappings         |haiku-mouse|
 11. Color names                        |haiku-colors|
-12. Credits                    |haiku-support-credits|
-13. Bugs & to-do               |haiku-bugs|
+12. GUI Toolbar Images         |haiku-toolbar-images|
+13. Credits                    |haiku-support-credits|
+14. Bugs & to-do               |haiku-bugs|
 
 
 1. General                                             *haiku-general*
@@ -223,7 +224,7 @@ All the changes and patches released under vim-license.
 Thank you, all!
 
 
-13. Bugs & to-do                                       *haiku-bugs*
+14. Bugs & to-do                                       *haiku-bugs*
  
 The port is under development now and far away from the perfect state. For bug
 reports, patches and wishes, please use the Vim mailing list or Vim Github
index 7f378457d7de621d1c3f9cb5e4f85ff7ddb56211..1017d4d2610c9d956d5a99da2e4a9cea3e286210 100644 (file)
@@ -230,7 +230,7 @@ A. VisionFS can't handle certain dot (.) three letter extension file names.
    SCO declares this behavior required for backwards compatibility with 16bit
    DOS/Windows environments.  The two commands below demonstrate the behavior:
 >
-       echo Hello > file.bat~ 
+       echo Hello > file.bat~
        dir > file.bat
 <
    The result is that the "dir" command updates the "file.bat~" file, instead
index 04e09d3f52f3d887ad7c79e1c186fe8385acf2d5..365f6da1e9d18fa16d42ae971a0cbf27701d047e 100644 (file)
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 8.2.  Last change: 2019 Dec 07
+*repeat.txt*    For Vim version 8.2.  Last change: 2020 Apr 26
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -166,7 +166,7 @@ q                   Stops recording.  (Implementation note: The 'q' that
                        [addr] (default is current line).
 
 :[addr]@                                                       *:@@*
-:[addr]@@              Repeat the previous :@{0-9a-z"}.  First set cursor at
+:[addr]@@              Repeat the previous :@{register}.  First set cursor at
                        line [addr] (default is current line).
 
 ==============================================================================
index 301336ca4bbda383f5f68f3e75affd1bb02e49cb..e8d7d25a3922682647818f40056140c398dda9ae 100644 (file)
@@ -2272,6 +2272,7 @@ $VIM_POSIX        vi_diff.txt     /*$VIM_POSIX*
 :command-completion-custom     map.txt /*:command-completion-custom*
 :command-completion-customlist map.txt /*:command-completion-customlist*
 :command-count map.txt /*:command-count*
+:command-modifiers     map.txt /*:command-modifiers*
 :command-nargs map.txt /*:command-nargs*
 :command-range map.txt /*:command-range*
 :command-register      map.txt /*:command-register*
@@ -4363,6 +4364,7 @@ E561      if_cscop.txt    /*E561*
 E562   if_cscop.txt    /*E562*
 E563   if_cscop.txt    /*E563*
 E564   if_cscop.txt    /*E564*
+E565   insert.txt      /*E565*
 E566   if_cscop.txt    /*E566*
 E567   if_cscop.txt    /*E567*
 E568   if_cscop.txt    /*E568*
@@ -4374,6 +4376,7 @@ E574      starting.txt    /*E574*
 E575   starting.txt    /*E575*
 E576   starting.txt    /*E576*
 E577   starting.txt    /*E577*
+E578   insert.txt      /*E578*
 E579   eval.txt        /*E579*
 E580   eval.txt        /*E580*
 E581   eval.txt        /*E581*
@@ -9959,6 +9962,7 @@ vim-variable      eval.txt        /*vim-variable*
 vim.vim        syntax.txt      /*vim.vim*
 vim7   version7.txt    /*vim7*
 vim8   version8.txt    /*vim8*
+vim9   vim9.txt        /*vim9*
 vim9-differences       vim9.txt        /*vim9-differences*
 vim9-export    vim9.txt        /*vim9-export*
 vim9-import    vim9.txt        /*vim9-import*
index 8105b072f4867f2e6a718315a5ba41556e321a02..ddc0906a1518aa5e18ae178b7d211b57278ae1af 100644 (file)
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 8.2.  Last change: 2020 Mar 26
+*terminal.txt* For Vim version 8.2.  Last change: 2020 Apr 23
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -120,7 +120,7 @@ break (cursor keys start with an Esc, so they may break): >
 You can also create menus similar to terminal mode mappings, but you have to
 use |:tlmenu| instead of |:tmenu|.
 
-<                                                      *options-in-terminal*
+                                                       *options-in-terminal*
 After opening the terminal window and setting 'buftype' to "terminal" the
 TerminalOpen autocommand event is triggered.  This makes it possible to set
 options specifically for the window and buffer.  Example: >
@@ -183,6 +183,10 @@ Command syntax ~
                        keep the terminal open in Terminal-Normal mode.  This
                        can be changed with the ++close argument.
 
+                       No Vim command can follow, any | is included in
+                       [command].  Use `:execute` if you must have a Vim
+                       command following in the same line.
+
                        A new buffer will be created, using [command] or
                        'shell' as the name, prefixed with a "!".  If a buffer
                        by this name already exists a number is added in
index 5d55952eb5842eefbb0a09f5f4e55f7e63aea557..0793940b6d95bf32a417b82badb96663f5aadc07 100644 (file)
@@ -101,7 +101,7 @@ Manipulating text property types:
 prop_type_add({name}, {props})         define a new property type
 prop_type_change({name}, {props})      change an existing property type
 prop_type_delete({name} [, {props}])   delete a property type
-prop_type_get([{name} [, {props}]    get property type values
+prop_type_get([{name} [, {props}]])    get property type values
 prop_type_list([{props}])              get list of property types
 
 
@@ -111,7 +111,7 @@ prop_add({lnum}, {col}, {props})    add a text property
 prop_clear({lnum} [, {lnum-end} [, {bufnr}]])
                                        remove all text properties
 prop_find({props} [, {direction}])     search for a text property
-prop_list({lnum} [, {props})           text properties in {lnum}
+prop_list({lnum} [, {props}])                  text properties in {lnum}
 prop_remove({props} [, {lnum} [, {lnum-end}]])
                                        remove a text property
 
@@ -291,7 +291,7 @@ prop_type_delete({name} [, {props}])                        *prop_type_delete()*
                Can also be used as a |method|: >
                        GetPropName()->prop_type_delete()
 
-prop_type_get([{name} [, {props}]                    *prop_type_get()*
+prop_type_get([{name} [, {props}]])                    *prop_type_get()*
                Returns the properties of property type {name}.  This is a
                dictionary with the same fields as was given to
                prop_type_add().
index 14756f093d82482d9b2e87120a8f4558da690c95..fe419071453ce8ffceade77a38923c7fb4fc10e7 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2020 Apr 20
+*todo.txt*      For Vim version 8.2.  Last change: 2020 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -39,38 +39,59 @@ browser use: https://github.com/vim/vim/issues/1234
 -------------------- Known bugs and current work -----------------------
 
 Vim9 script:
-more tests for # comments:
-  check all calls to ends_excmd() and test that space before # is needed.
-  next: ex_findpat()
-func and partial types:
-- Calling unknown user function does not give proper error message:
-      assert_equal('123text', RefDef2Arg())  typo for "RetDef2Arg"
-- "func" inside "vim9script" doesn't work?  (Ben Jackson, #5670)
-- :func inside vim9script must still use a:arg
-- define function and create funcref in one step:
-       let ref = def(arg: type): rettype
-           body
-       enddef
+Big changes, need design:
+- Make closures work:
+  Grab the part of the stack that has the arguments and local vars.
+  Pass a pointer and offset to the closure where this stack fragment is (frame
+  pointer).
+  When a closure disappears at end of the function - nothing to do.
+  When a closure remains at end of the function: copy frame, attach to closure.
+- At the vim9 script level: Allow using a function that is defined later.
+  Requires compiling functions only when the whole script has been sourced.
+  Like Javascript "hoisting", but only at the script level:
+  1. Discovery phase: Read the file to find all functions, variable
+     declarations and imports If a variable has a constant expression we get
+     the type, otherwise it will be "any".  Follow imports recursively.
+  2. Compilation phase: compile :def function bodies, using declared types
+  3. Execution phase: Execute imports when encountered. (skip over functions)
+- When sourcing a script again, also delete script-local variables.
+Making everything work:
 - Test that a script-local function in Vim9 script cannot be deleted.
 - Test that a function defined inside a :def function is local to that
   function, g: functions can be defined and script-local functions cannot be
   defined.
-Also:
-- When wildcards are expanded, find `=expr` and evaluate it before invoking
-  the command. For example:  :edit `=filename`
+- Check that when using a user function name without prefix, it does not find
+  a global function.  Prefixing g: is required.
+- Compile let [var, var] = expr
+- Compile replacement of :s command: s/pat/\=expr/
+- Compile redir to local variable: var_redir_start().
+- Compile builtin functions that access local variables:
+    islocked()
+- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
+- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
+- Expand `=expr` in :mkspell
+- Support type for ":let"/":const" at script level for Vim9 script.
+    (Ben Jackson, #5671)
+    Can we share the code from ex_let_const() between direct execution and
+    compiling?
+- Disallow unlet for local/script/imported vars
+- Make "++nr" work.
+- expandcmd() with `=expr` in filename uses legacy expression.
+- eval_expr() in ex_cexpr()
+- eval_expr() call in dbg_parsearg() and debuggy_find()
+New syntax and functionality:
+- define function and create funcref in one step:
+       let ref = def(arg: type): rettype
+           body
+       enddef
+Improve error checking:
 - "echo Func()" is an error if Func() does not return anything.
-- Check all Ex commands, give error if they use an expression and should be
-  compiled.
+Also:
 - For range: make table of first ASCII character with flag to quickly check if
   it can be a Vim9 command. E.g. "+" can, but "." can't.
 - better implementation for partial and tests for that.
 - Make "g:imported = Export.exported" work in Vim9 script.
 - Make Foo.Bar() work to call the dict function. (#5676)
-- Support type for ":let"/":const" at script level for Vim9 script.
-    (Ben Jackson, #5671)
-    Can we share the code for :let between direct execution and compiling?
-- Disallow unlet for local/script/imported vars
-- Make "++nr" work.
 - Check that import in legacy script works and puts item in s:
 - Error in any command in "vim9script" aborts sourcing.
 - Find a way to test expressions in legacy and Vim9 script without duplication
@@ -93,6 +114,13 @@ Also:
 - Make accessing varargs faster: arg[expr]
        EVAL expr
        LOADVARARG (varags idx)
+Further improvements:
+- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
+  'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
+  'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
+- compile get_lambda_tv() in popup_add_timeout()
+- compile "skip" argument of searchpair()
+- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
 
 Popup windows:
 - With some sequence get get hidden finished terminal buffer. (#5768)
@@ -198,7 +226,7 @@ Terminal emulator window:
   conversions.
 
 Error numbers available:
-E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
+E453, E454, E460, E489, E491, E610, E611, E653,
 E856, E857, E861, E900
 
 Buffer autocommands are a bit inconsistent.  Add a separate set of
@@ -222,8 +250,13 @@ Ready to include.
 
 Patch to add "-d" to xxd. (#5616)
 
+Patch for the Haiku port: #5961
+
 Patch to add Turkish manual. (Emir Sarı, #5641)
 
+Patch to support different color for undercurl in cterm.
+(Timur Celik, #6011)
+
 Patch to support cindent option to handle pragmas differently.
 (Max Rumpf, #5468)
 
@@ -234,6 +267,9 @@ manager.  Problem with Motif? Now test_gui crashes in submenu_change().
 Athena is OK.
 Motif: Build on Ubuntu can't enter any text in dialog text fields.
 
+:map output does not clear the reset of the command line.
+(#5623, also see #5962)
+
 Patch to properly break CJK lines: Anton Kochkov, #3875
 Flag in 'formatoptions' is not used in the tests.
 
@@ -248,7 +284,10 @@ Ready to include?  Review the code.
 When 'lazyredraw' is set sometimes the title is not updated.
 (Jason Franklin, 2020 Feb 3)  Looks like a race condition.
 
-Patch to delete BeOS code. (#5817)
+Patch to delete BeOS code. (#5817)  Anyone who wants to keep it?
+
+With bash ":make" does not set v:shell_error.  Possible solution: set
+'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}"  #5994
 
 Strange sequence of BufWipeout and BufNew events while doing omni-complete.
 (Paul Jolly, #5656)
@@ -317,6 +356,8 @@ unlisted. (#4478)
 
 Patch to include reduce() function. (#5481)
 
+When SIGTSTP is ignored, don't let CTRL-Z suspend Vim? (Kurtis Rader, #5990)
+
 Statusline highlighting error, off by one. (#5599)
 
 Enable 'termbidi' if $VTE_VERSION >= 5703 ?
@@ -331,11 +372,6 @@ Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
 The :syntax cchar value can only be a single character.  It would be useful to
 support combining characters. (Charles Campbell)  Also #4687
 
-Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
-It can replace the BeOS code, which is likely not used anymore.
-Now on github: #1856.  Updated Oct 2017
-Got permission to include this under the Vim license.
-
 "--cleanFOO" does not result in an error. (#5537)
 
 Add "t" action to settagstack(): truncate and add new entries. (#5405)
index a5e21f3919700736f2656b1d9afee3e874ea030c..57287d0f4399340929b008b7895a3b4f19cec673 100644 (file)
@@ -402,7 +402,7 @@ Another way to start in diff mode can be done from inside Vim.  Edit the
 "main.c" file, then make a split and show the differences: >
 
        :edit main.c
-       :vertical diffsplit main.c~ 
+       :vertical diffsplit main.c~
 
 The ":vertical" command is used to make the window split vertically.  If you
 omit this, you will get a horizontal split.
index d5799193f81761413b4e5e832e11748ceb167a02..7898618b4ee14f21f811cd6f2006afc79e9a6e95 100644 (file)
@@ -687,7 +687,7 @@ with any motion command, with text objects and in Visual mode.
 lowercase.  This can be shortened to "guu".  "gUgU" is shortened to "gUU" and
 "g~g~" to "g~~".  Example: >
 
-                               g~~ 
+                               g~~
 <      Some GIRLS have Fun    ---->   sOME girls HAVE fUN ~
 
 ==============================================================================
index 704e801c26a6e98b2728d16085d7b3f264d90536..525393dacb4d4e104dcd18421e5afa09114a76d6 100644 (file)
@@ -1,4 +1,4 @@
-*vim9.txt*     For Vim version 8.2.  Last change: 2020 Apr 19
+*vim9.txt*     For Vim version 8.2.  Last change: 2020 Apr 30
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -6,7 +6,7 @@
 
 THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
 
-Vim9 script commands and expressions.
+Vim9 script commands and expressions.                  *vim9*
 
 Most expression help is in |eval.txt|.  This file is about the new syntax and
 features in Vim9 script.
@@ -28,29 +28,32 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
 
 THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
 
-Vim script has been growing over time, while keeping backwards compatibility.
-That means bad choices from the past often can't be changed.  Execution is
-quite slow, every line is parsed every time it is executed.
+Vim script has been growing over time, while preserving backwards
+compatibility.  That means bad choices from the past often can't be changed
+and compability with Vi restricts possible solutions.  Execution is quite
+slow, each line is parsed every time it is executed.
 
-The main goal of Vim9 script is to drastically improve performance.  An
-increase in execution speed of 10 to 100 times can be expected.  A secondary
-goal is to avoid Vim-specific constructs and get closer to commonly used
-programming languages, such as JavaScript, TypeScript and Java.
+The main goal of Vim9 script is to drastically improve performance.  This is
+accomplished by compiling commands into instructions that can be efficiently
+executed.  An increase in execution speed of 10 to 100 times can be expected.
+
+A secondary goal is to avoid Vim-specific constructs and get closer to
+commonly used programming languages, such as JavaScript, TypeScript and Java.
 
 The performance improvements can only be achieved by not being 100% backwards
 compatible.  For example, in a function the arguments are not available in the
-"a:" dictionary, as creating that dictionary adds quite a lot of overhead.
-Other differences are more subtle, such as how errors are handled.
+"a:" dictionary, because creating that dictionary adds quite a lot of
+overhead.  Other differences are more subtle, such as how errors are handled.
 
 The Vim9 script syntax and semantics are used in:
 - a function defined with the `:def` command
 - a script file where the first command is `vim9script`
 
 When using `:function` in a Vim9 script file the legacy syntax is used.
-However, this is discouraged.
+However, this can be confusing and is therefore discouraged.
 
-Vim9 script and legacy Vim script can be mixed.  There is no need to rewrite
-old scripts, they keep working as before.
+Vim9 script and legacy Vim script can be mixed.  There is no requirement to
+rewrite old scripts, they keep working as before.
 
 ==============================================================================
 
@@ -62,9 +65,9 @@ Comments starting with # ~
 
 In Vim script comments normally start with double quote.  That can also be the
 start of a string, thus in many places it cannot be used.  In Vim9 script a
-comment can also start with #.  Normally this is a command to list text with
+comment can also start with #.  In Vi this is a command to list text with
 numbers, but you can also use `:number` for that. >
-       let count = 0  # number of occurences of Ni!
+       let count = 0  # number of occurences
 
 To improve readability there must be a space between the command and the #
 that starts a comment.  Note that #{ is the start of a dictionary, therefore
@@ -73,40 +76,59 @@ it cannot start a comment.
 
 Vim9 functions ~
 
+A function defined with `:def` is compiled.  Execution is many times faster,
+often 10x to 100x times.
+
+Many errors are already found when compiling, before the function is called.
+The syntax is strict, to enforce code that is easy to read and understand.
+
 `:def` has no extra arguments like `:function` does: "range", "abort", "dict"
 or "closure".  A `:def` function always aborts on an error, does not get a
 range passed and cannot be a "dict" function.
 
-In the function body:
-- Arguments are accessed by name, without "a:".
-- There is no "a:" dictionary or "a:000" list.  Variable arguments are defined
-  with a name and have a list type: >
-       def MyFunc(...itemlist: list<type>)
+The argument types and return type need to be specified.  The "any" type can
+be used, type checking will then be done at runtime, like with legacy
+functions.
+
+Arguments are accessed by name, without "a:".  There is no "a:" dictionary or
+"a:000" list.
+
+Variable arguments are defined as the last argument, with a name and have a
+list type, similar to Typescript.  For example, a list of numbers: >
+       def MyFunc(...itemlist: list<number>)
           for item in itemlist
             ...
 
 
-Functions are script-local by default ~
+Functions and variables are script-local by default ~
 
 When using `:function` or `:def` to specify a new function at the script level
 in a Vim9 script, the function is local to the script, as if "s:" was
-prefixed.  To define a global function the "g:" prefix must be used.
+prefixed.  Using the "s:" prefix is optional.
+
+To define or use a global function or variable the "g:" prefix must be used.
 
 When using `:function` or `:def` to specify a new function inside a function,
 the function is local to the function.  It is not possible to define a
-script-local function inside a function. To define a global function the "g:"
-prefix must be used.
+script-local function inside a function. It is possible to define a global
+function, using the "g:" prefix.
 
 When referring to a function and no "s:" or "g:" prefix is used, Vim will
 search for the function in this order:
-- Local to the current function scope.
+- Local to the current scope and outer scopes up to the function scope.
 - Local to the current script file.
 - Imported functions, see `:import`.
-- Global.
+In all cases the function must be defined before used.  To make a call cycle a
+global function needs to be used. (TODO: can we fix this?)
+
+The result is that functions and variables without a namespace can always be
+found in the script, either defined there or imported.  Global functions and
+variables could be defined anywhere (good luck finding where!).
 
 Global functions can be defined and deleted at nearly any time.  In Vim9
 script script-local functions are defined once when the script is sourced and
-cannot be deleted.
+cannot be deleted.  Except that when the same script is sourced again all
+existing script-local functions and variables are deleted.
 
 
 Variable declarations with :let and :const ~
@@ -156,12 +178,12 @@ and without `:let`, because there is no rule about where they are declared.
 Variables cannot shadow previously defined variables.
 Variables may shadow Ex commands, rename the variable if needed.
 
-Global variables must be prefixed with "g:", also at the script level.
-However, global user defined functions are used without "g:". >
+Global variables and user defined functions must be prefixed with "g:", also
+at the script level. >
        vim9script
        let script_local = 'text'
        let g:global = 'value'
-       let Funcref = ThatFunction
+       let Funcref = g:ThatFunction
 
 Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
 used to repeat a `:substitute` command.
index f627035eb266aa148033f22b5ddc9ea45974a819..ec290ab1eee656fa48341fab66a142f3612af7c5 100644 (file)
@@ -1,7 +1,8 @@
 " Vim filetype plugin file
 " Language:    man
-" Maintainer:  SungHyun Nam <goweol@gmail.com>
-" Last Change:         2020 Apr 13
+" Maintainer:  Jason Franklin <vim@justemail.net>
+" Previous Maintainer: SungHyun Nam <goweol@gmail.com>
+" Last Change:         2020 Apr 30
 
 " To make the ":Man" command available before editing a manual page, source
 " this script from your startup vimrc file.
@@ -205,7 +206,7 @@ func <SID>GetPage(cmdmods, ...)
   endif
   let env_cmd = s:env_has_u ? 'env -u MANPAGER' : 'env MANPAGER=cat'
   let env_cmd .= ' GROFF_NO_SGR=1'
-  let man_cmd = env_cmd . ' man ' . s:GetCmdArg(sect, page) . ' | col -b'
+  let man_cmd = env_cmd . ' man ' . s:GetCmdArg(sect, page) . ' 2>/dev/null | col -b'
   silent exec "r !" . man_cmd
 
   if unsetwidth
index 8d282da445b4a1620ed0a8a2e31eb0d4e13aee0c..7321e90b3053ff7f042b5ab4d4f7a0c8d94205a4 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2020 Feb 02
+" Last Change: 2020 Apr 27
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
 
 " Standard syntax initialization
@@ -24,7 +24,7 @@ let s:supported = [
       \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'groovy', 'devel'
       \ ]
 let s:unsupported = [
       \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
index e97d3274ba615bdc92470a3eb0604e3daa546d99..b594443119fafbea7a6d1f14902578ce94ccc38f 100644 (file)
@@ -2,7 +2,7 @@
 " Language:     Debian sources.list
 " Maintainer:   Debian Vim Maintainers
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2020 Feb 02
+" Last Change: 2020 Apr 27
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
 
 " Standard syntax initialization
@@ -26,7 +26,7 @@ let s:supported = [
       \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'groovy', 'devel'
       \ ]
 let s:unsupported = [
       \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
index 9e0b307d682519659f0936e53762e7809d9020fc..dff70eb3b74437e15358a9a7fb2a360ac2dcc5d2 100644 (file)
@@ -1,22 +1,19 @@
 " Vim syntax file
-" Language:    Lex
+" Language:    Lex and Flex
 " Maintainer:  Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change: Aug 31, 2016
-" Version:     17
-" URL: http://mysite.verizon.net/astronaut/vim/index.html#SYNTAX_LEX
-"
-" Option:
-"   lex_uses_cpp : if this variable exists, then C++ is loaded rather than C
+" Contributor: Robert A. van Engelen <engelen@acm.org>
+" Last Change: Apr 24, 2020
+" Version:     18
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
   finish
 endif
 
-" Read the C/C++ syntax to start with
-let s:Cpath= fnameescape(expand("<sfile>:p:h").(exists("g:lex_uses_cpp")? "/cpp.vim" : "/c.vim"))
+" Read the C++ syntax to start with
+let s:Cpath= fnameescape(expand("<sfile>:p:h")."/cpp.vim")
 if !filereadable(s:Cpath)
- for s:Cpath in split(globpath(&rtp,(exists("g:lex_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n")
+ for s:Cpath in split(globpath(&rtp,"syntax/cpp.vim"),"\n")
   if filereadable(fnameescape(s:Cpath))
    let s:Cpath= fnameescape(s:Cpath)
    break
@@ -29,115 +26,163 @@ exe "syn include @lexCcode ".s:Cpath
 " --- Lex stuff ---
 " --- ========= ---
 
-" Options Section
-syn match lexOptions '^%\s*option\>.*$' contains=lexPatString
+" Definitions
+" %%
+" Rules
+" %%
+" User Code
+"
+" --- ======= ---
+" --- Example ---
+" --- ======= ---
+"
+"   // this is a valid lex file
+"   // indented initial code block
+"   #include <stdlib.h>
+" %{
+" // initial code block
+" #include <stdio.h>
+" const char *sep = "";
+" %}
+" %option outfile="scanner.c" noyywrap nodefault
+" %x COMMENT
+" id      [A-Za-z_][A-Za-z0-9_]*
+" %%
+"   // indented initial action code block
+"   printf("BEGIN");
+" {id}    printf("%s%s", sep, yytext); sep = "";
+" .       |
+" \n      { sep = "\n"; }
+" "/*"    { BEGIN COMMENT; }
+" "//".*  { }
+" <COMMENT>{
+" "*/"    { BEGIN INITIAL; }
+" .|\n    
+" }
+" <*><<EOF>> { // end of file
+"              printf("\nEND\n");
+"              yyterminate();
+"            }
+" %%
+" void scan()
+" {
+"   while (yylex())
+"     continue;
+" }
+" /* main program */
+" int main()
+" { 
+"   scan();
+" }   
 
-" Abbreviations Section
+" Definitions Section with initial code blocks, abbreviations, options, states
 if has("folding")
- syn region lexAbbrvBlock      fold start="^\(\h\+\s\|%{\)"    end="^\ze%%$"   skipnl  nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+ syn region lexAbbrvBlock      fold    start="^\S"     end="^\ze%%"    skipnl  nextgroup=lexPatBlock   contains=lexOptions,lexAbbrv,lexInitialCodeBlock,lexInclude,lexAbbrvComment,lexStartState
 else
- syn region lexAbbrvBlock      start="^\(\h\+\s\|%{\)" end="^\ze%%$"   skipnl  nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
+ syn region lexAbbrvBlock              start="^\S"     end="^\ze%%"    skipnl  nextgroup=lexPatBlock   contains=lexOptions,lexAbbrv,lexInitialCodeBlock,lexInclude,lexAbbrvComment,lexStartState
 endif
-syn match  lexAbbrv            "^\I\i*\s"me=e-1                        skipwhite       contained nextgroup=lexAbbrvRegExp
-syn match  lexAbbrv            "^%[sx]"                                        contained
-syn match  lexAbbrvRegExp      "\s\S.*$"lc=1                           contained nextgroup=lexAbbrv,lexInclude
+syn match  lexOptions          "^%\a\+\(\s.*\|[^{]*\)$"                                contains=lexOptionsEq,lexPatString,lexSlashQuote,lexBrace,lexSlashBrace
+syn match  lexOptionsEq                "="                                     skipwhite       contained
+syn match  lexAbbrv            "^\I\i*\s"me=e-1                        skipwhite       contained       nextgroup=lexAbbrvPat
+syn match  lexAbbrvPat         "\s\S.*$"lc=1                                           contained       contains=lexPatAbbrv,lexPatString,lexSlashQuote,lexBrace,lexSlashBrace  nextgroup=lexAbbrv,lexInclude
+syn match  lexStartState       "^%\(xs\?\|s\)\(t\(a\(t\(e\?\)\?\)\?\)\?\)\?\(\s\+\I\i*\)\+\s*$"        contained       contains=lexStartStateCmd
+syn match  lexStartStateCmd    '^%\(xs\?\|s\)\(t\(a\(t\(e\?\)\?\)\?\)\?\)\?'   contained
 if has("folding")
- syn region lexInclude fold matchgroup=lexSep  start="^%{"     end="%}"        contained       contains=@lexCcode
- syn region lexAbbrvComment    fold                    start="^\s\+/\*"        end="\*/"       contains=@Spell
- syn region lexAbbrvComment    fold                    start="\%^/\*"  end="\*/"       contains=@Spell
- syn region lexStartState      fold matchgroup=lexAbbrv        start="^%\a\+"  end="$" contained
+ syn region lexInitialCodeBlock        fold                            start="^\s\+"   end="^\S"me=e-1                 contains=@lexCcode
+ syn region lexInclude         fold    matchgroup=lexSep       start="^%\a*{"  end="^%\?}"     contained       contains=@lexCcode,lexCFunctions
+ syn region lexAbbrvComment    fold                            start="^\s*//"  end="$"         contains=@Spell
+ syn region lexAbbrvComment    fold                            start="^\s*/\*" end="\*/"       contains=@Spell
 else
- syn region lexInclude matchgroup=lexSep               start="^%{"     end="%}"        contained       contains=@lexCcode
- syn region lexAbbrvComment                            start="^\s\+/\*"        end="\*/"       contains=@Spell
- syn region lexAbbrvComment                            start="\%^/\*"  end="\*/"       contains=@Spell
- syn region lexStartState      matchgroup=lexAbbrv             start="^%\a\+"  end="$" contained
+ syn region lexInitialCodeBlock                                        start="^\s\+"   end="^\S"me=e-1                 contains=@lexCcode
+ syn region lexInclude                 matchgroup=lexSep       start="^%\a*{"  end="^%\?}"     contained       contains=@lexCcode,lexCFunctions
+ syn region lexAbbrvComment                                    start="^\s*//"  end="$"         contains=@Spell
+ syn region lexAbbrvComment                                    start="^\s*/\*" end="\*/"       contains=@Spell
 endif
 
-"%% : Patterns {Actions}
+" Rules Section with patterns and actions
 if has("folding")
- syn region lexPatBlock        fold matchgroup=Todo    start="^%%$" matchgroup=Todo    end="^%\ze%$"   skipnl  skipwhite       nextgroup=lexFinalCodeBlock     contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
- syn region lexPat             fold                    start=+\S+ skip="\\\\\|\\."     end="\s"me=e-1  skipwhite       contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
- syn region lexPatInclude      fold matchgroup=lexSep  start="^%{"     end="%}"        contained       contains=lexPatCode
- syn region lexBrace   fold                    start="\[" skip=+\\\\\|\\+      end="]"                 contained
- syn region lexPatString       fold matchgroup=String  start=+"+       skip=+\\\\\|\\"+        matchgroup=String end=+"+       contained
+ syn region lexPatBlock                fold    matchgroup=Todo         start="^%%"     matchgroup=Todo         end="^\ze%%"    skipnl  skipwhite       nextgroup=lexFinalCodeBlock     contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPat             fold                            start="\S"      skip="\\\\\|\\\s"       end="\ze\(\s*$\|\s\+\(\h\|{\W\|{$\|[-+*]\|//\|/\*\)\)"  skipwhite       contained nextgroup=lexMorePat,lexPatSep,lexPatEnd      contains=lexPatTag,lexPatString,lexSlashQuote,lexPatAbbrv,lexBrace,lexSlashBrace
+ syn region lexPatInclude      fold    matchgroup=lexSep       start="^%{"     end="^%}"       contained       contains=@lexCcode
+ syn region lexBrace           fold    matchgroup=Character    start="\["      skip="\\.\|\[:\a\+:\]\|\[\.\a\+\.\]\|\[=.=\]"   end="\]"        contained
+ syn region lexPatString       fold    matchgroup=String       start=+"+       skip=+\\\\\|\\"+        matchgroup=String       end=+"+ contained
 else
- syn region lexPatBlock        matchgroup=Todo         start="^%%$" matchgroup=Todo    end="^%%$"      skipnl  skipwhite       nextgroup=lexFinalCodeBlock     contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
- syn region lexPat                                     start=+\S+ skip="\\\\\|\\."     end="\s"me=e-1  skipwhite       contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
- syn region lexPatInclude      matchgroup=lexSep               start="^%{"     end="%}"        contained       contains=lexPatCode
- syn region lexBrace                           start="\[" skip=+\\\\\|\\+      end="]"                 contained
- syn region lexPatString       matchgroup=String               start=+"+       skip=+\\\\\|\\"+        matchgroup=String end=+"+       contained
+ syn region lexPatBlock                        matchgroup=Todo         start="^%%"     matchgroup=Todo         end="^\ze%%"    skipnl  skipwhite       nextgroup=lexFinalCodeBlock     contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPat                                             start="\S"      skip="\\\\\|\\\s"       end="\ze\(\s*$\|\s\+\(\h\|{\W\|{$\|[-+*]\|//\|/\*\)\)"  skipwhite       contained nextgroup=lexMorePat,lexPatSep,lexPatEnd      contains=lexPatTag,lexPatString,lexSlashQuote,lexPatAbbrv,lexBrace,lexSlashBrace
+ syn region lexPatInclude              matchgroup=lexSep       start="^%{"     end="^%}"       contained       contains=@lexCcode
+ syn region lexBrace                   matchgroup=Character    start="\["      skip="\\.\|\[:\a\+:\]\|\[\.\a\+\.\]\|\[=.=\]"   end="\]"        contained
+ syn region lexPatString               matchgroup=String       start=+"+       skip=+\\\\\|\\"+        matchgroup=String       end=+"+ contained
 endif
-syn match  lexPatTag   "^<\I\i*\(,\I\i*\)*>"                   contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
-syn match  lexPatTagZone       "^<\I\i*\(,\I\i*\)*>\s\+\ze{"                   contained nextgroup=lexPatTagZoneStart
-syn match  lexPatTag   +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+              contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep
-
-" Lex Patterns
-syn region lexPattern  start='[^ \t{}]'        end="$"                 contained       contains=lexPatRange
-syn region lexPatRange matchgroup=Delimiter    start='\['      skip='\\\\\|\\.'        end='\]'        contains=lexEscape
-syn match  lexEscape   '\%(\\\\\)*\\.'                         contained
+syn match  lexPatAbbrv         "{\I\i*}"hs=s+1,he=e-1                                  contained
+syn match  lexPatTag           "^<\^\?\(\I\i*\|\*\)\(,\^\?\(\I\i*\|\*\)\)*>"           contained       nextgroup=lexPat,lexMorePat,lexPatSep,lexPatEnd
+syn match  lexPatTagZone       "^<\^\?\(\I\i*\|\*\)\(,\^\?\(\I\i*\|\*\)\)*>\s*{$"me=e-1        contained       nextgroup=lexPatTagZoneStart
 
 if has("folding")
- syn region lexPatTagZoneStart matchgroup=lexPatTag    fold    start='{' end='}'       contained contains=lexPat,lexPatComment
- syn region lexPatComment      start="\s\+/\*" end="\*/"       fold    skipnl  contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatTagZoneStart fold    matchgroup=lexPatTag    start='{$'      end='^}'        skipnl  skipwhite       contained       contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPatComment      fold    start="//"      end="$"         skipnl  contained       contains=cTodo  skipwhite       nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatComment      fold    start="/\*"     end="\*/"       skipnl  contained       contains=cTodo  skipwhite       nextgroup=lexPatComment,lexPat,@Spell
 else
- syn region lexPatTagZoneStart matchgroup=lexPatTag            start='{' end='}'       contained contains=lexPat,lexPatComment
- syn region lexPatComment      start="\s\+/\*" end="\*/"               skipnl  contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatTagZoneStart         matchgroup=lexPatTag            start='{'       end='^}'        skipnl  skipwhitecontained      contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatSep,lexPatInclude
+ syn region lexPatComment              start="//"      end="$"         skipnl  contained       contains=cTodo  skipwhite       nextgroup=lexPatComment,lexPat,@Spell
+ syn region lexPatComment              start="/\*"     end="\*/"       skipnl  contained       contains=cTodo  skipwhite       nextgroup=lexPatComment,lexPat,@Spell
 endif
-syn match  lexPatCodeLine      "[^{\[].*"                              contained contains=@lexCcode
-syn match  lexMorePat  "\s*|\s*$"                      skipnl  contained nextgroup=lexPat,lexPatTag,lexPatComment
-syn match  lexPatSep   "\s\+"                                  contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
+syn match  lexPatEnd           "\s*$"                          skipnl  contained
+syn match  lexPatCodeLine      "[^{\[].*"                              contained       contains=@lexCcode,lexCFunctions
+syn match  lexMorePat          "\s*|\s*$"                      skipnl  contained       nextgroup=lexPat,lexPatTag,lexPatComment
+syn match  lexPatSep           "\s\+"                                  contained       nextgroup=lexMorePat,lexPatCode,lexPatCodeLine
 syn match  lexSlashQuote       +\(\\\\\)*\\"+                          contained
+syn match  lexSlashBrace       +\(\\\\\)*\\\[+                         contained
 if has("folding")
- syn region lexPatCode matchgroup=Delimiter start="{" end="}"  fold    skipnl contained contains=@lexCcode,lexCFunctions
+ syn region lexPatCode         fold    matchgroup=Delimiter    start="{"       end="}" skipnl  contained       contains=@lexCcode,lexCFunctions
 else
- syn region lexPatCode matchgroup=Delimiter start="{" end="}"  skipnl  contained contains=@lexCcode,lexCFunctions
+ syn region lexPatCode                 matchgroup=Delimiter    start="{"       end="}" skipnl  contained       contains=@lexCcode,lexCFunctions
 endif
 
-" Lex "functions" which may appear in C/C++ code blocks
-syn keyword lexCFunctions      BEGIN   input   unput   woutput yyleng  yylook  yytext
-syn keyword lexCFunctions      ECHO    output  winput  wunput  yyless  yymore  yywrap
+" User Code Section with final code block
+syn region lexFinalCodeBlock   matchgroup=Todo start="^%%"     end="\%$"       contained       contains=@lexCcode
 
-" %%
-"  lexAbbrevBlock
-" %%
-"  lexPatBlock
-" %%
-"  lexFinalCodeBlock
-syn region lexFinalCodeBlock matchgroup=Todo start="%$"me=e-1 end="\%$"        contained       contains=@lexCcode
+" Lex macros which may appear in C/C++ code blocks
+syn keyword lexCFunctions      BEGIN   ECHO    REJECT  yytext  YYText  yyleng  YYLeng  yymore  yyless  yywrap  yylook
+syn keyword lexCFunctions      yyrestart       yyterminate     yylineno        yycolumno       yyin    yyout
+syn keyword lexCFunctions      input   unput   output          winput          wunput          woutput
+syn keyword lexCFunctions      yyinput yyunput yyoutput        yywinput        yywunput        yywoutput
 
 " <c.vim> includes several ALLBUTs; these have to be treated so as to exclude lex* groups
-syn cluster cParenGroup        add=lex.*
+syn cluster cParenGroup                add=lex.*
 syn cluster cDefineGroup       add=lex.*
 syn cluster cPreProcGroup      add=lex.*
-syn cluster cMultiGroup        add=lex.*
+syn cluster cMultiGroup                add=lex.*
 
 " Synchronization
 syn sync clear
 syn sync minlines=500
 syn sync match lexSyncPat      grouphere  lexPatBlock  "^%[a-zA-Z]"
 syn sync match lexSyncPat      groupthere lexPatBlock  "^<$"
-syn sync match lexSyncPat      groupthere lexPatBlock  "^%%$"
+syn sync match lexSyncPat      groupthere lexPatBlock  "^%%"
 
 " The default highlighting.
 if !exists("skip_lex_syntax_inits")
  hi def link lexAbbrvComment   lexPatComment
- hi def link lexAbbrvRegExp    Macro
- hi def link lexAbbrv  SpecialChar
- hi def link lexBrace  lexPat
- hi def link lexCFunctions     Function
- hi def link lexCstruct        cStructure
- hi def link lexMorePat        SpecialChar
- hi def link lexOptions        PreProc
+ hi def link lexAbbrvPat       lexPat
+ hi def link lexAbbrv          Special
+ hi def link lexBrace          lexPat
+ hi def link lexCFunctions     PreProc
+ hi def link lexMorePat                Special
+ hi def link lexOptions                PreProc
+ hi def link lexOptionsEq      Operator
  hi def link lexPatComment     Comment
  hi def link lexPat            Function
- hi def link lexPatString      Function
- hi def link lexPatTag Special
+ hi def link lexPatString      lexPat
+ hi def link lexPatAbbrv       Special
+ hi def link lexPatTag         Statement
  hi def link lexPatTagZone     lexPatTag
  hi def link lexSep            Delimiter
  hi def link lexSlashQuote     lexPat
- hi def link lexStartState     Statement
+ hi def link lexSlashBrace     lexPat
+ hi def link lexStartState     lexPatTag
+ hi def link lexStartStateCmd  Special
 endif
 
 let b:current_syntax = "lex"
 
-" vim:ts=10
+" vim:ts=8
index 5bdba86212eeacb96faef264a7ad1339d5f7b397..56f6d10de2b2168ec70adc87d815a018c5a7543e 100644 (file)
@@ -1,9 +1,10 @@
 " Vim syntax file
 " Language:    Man page
-" Maintainer:  SungHyun Nam <goweol@gmail.com>
+" Maintainer:  Jason Franklin <vim@justemail.net>
+" Previous Maintainer: SungHyun Nam <goweol@gmail.com>
 " Previous Maintainer: Gautam H. Mudunuri <gmudunur@informatica.com>
 " Version Info:
-" Last Change: 2020 Apr 15
+" Last Change: 2020 Apr 30
 
 " Additional highlighting by Johannes Tanzler <johannes.tanzler@aon.at>:
 "      * manSubHeading
@@ -19,9 +20,6 @@ runtime! syntax/ctrlh.vim
 
 syn case ignore
 
-syn match manHeader '\%1l.*'
-exe 'syn match manFooter ''\%' . line('$') . 'l.*'''
-
 syn match  manReference       "\f\+([1-9][a-z]\=)"
 syn match  manSectionHeading  "^[a-z][a-z -]*[a-z]$"
 syn match  manSubHeading      "^\s\{3\}[a-z][a-z -]*[a-z]$"
@@ -29,6 +27,9 @@ syn match  manOptionDesc      "^\s*[+-][a-z0-9]\S*"
 syn match  manLongOptionDesc  "^\s*--[a-z0-9-]\S*"
 " syn match  manHistory                "^[a-z].*last change.*$"
 
+syn match manHeader '\%1l.*'
+exe 'syn match manFooter ''\%' . line('$') . 'l.*'''
+
 if getline(1) =~ '^[a-zA-Z_]\+([23])'
   syntax include @cCode <sfile>:p:h/c.vim
   syn match manCFuncDefinition  display "\<\h\w*\>\s*("me=e-1 contained