changeset 30967:eb2638f278bf

Update runtime files Commit: https://github.com/vim/vim/commit/6ebe4f970b8b398087076a72a7aae6e680fb92da Author: Bram Moolenaar <Bram@vim.org> Date: Fri Oct 28 20:47:54 2022 +0100 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Wed, 02 Nov 2022 11:18:47 +0100
parents 685ee8453163
children 35265d9d24df
files .github/CODEOWNERS runtime/autoload/tohtml.vim runtime/doc/builtin.txt runtime/doc/ft_rust.txt runtime/doc/map.txt runtime/doc/message.txt runtime/doc/options.txt runtime/doc/pi_tar.txt runtime/doc/pi_zip.txt runtime/doc/quickref.txt runtime/doc/scroll.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/term.txt runtime/doc/todo.txt runtime/doc/various.txt runtime/ftplugin/apache.vim runtime/ftplugin/openvpn.vim runtime/optwin.vim runtime/plugin/manpager.vim runtime/syntax/2html.vim runtime/syntax/help.vim runtime/syntax/openvpn.vim runtime/syntax/vim.vim
diffstat 24 files changed, 479 insertions(+), 308 deletions(-) [+]
line wrap: on
line diff
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -104,6 +104,7 @@ runtime/doc/pi_vimball.txt		@cecamp
 runtime/doc/pi_zip.txt			@cecamp
 runtime/doc/ps1.txt			@heaths
 runtime/ftplugin/abaqus.vim		@costerwi
+runtime/ftplugin/apache.vim		@dubgeiser 
 runtime/ftplugin/awk.vim		@dkearns
 runtime/ftplugin/basic.vim		@dkearns
 runtime/ftplugin/bst.vim		@tpope
@@ -166,6 +167,7 @@ runtime/ftplugin/nginx.vim		@chr4
 runtime/ftplugin/nroff.vim		@a-vrma
 runtime/ftplugin/nsis.vim		@k-takata
 runtime/ftplugin/octave.vim		@dkearns
+runtime/ftplugin/openvpn.vim		@ObserverOfTime
 runtime/ftplugin/pascal.vim		@dkearns
 runtime/ftplugin/pbtxt.vim		@lakshayg
 runtime/ftplugin/pdf.vim		@tpope
@@ -294,6 +296,7 @@ runtime/plugin/netrwPlugin.vim		@cecamp
 runtime/plugin/tarPlugin.vim		@cecamp
 runtime/plugin/vimballPlugin.vim	@cecamp
 runtime/plugin/zipPlugin.vim		@cecamp
+runtime/plugin/manpager.vim		@Konfekt
 runtime/syntax/abaqus.vim		@costerwi
 runtime/syntax/aidl.vim			@dpelle
 runtime/syntax/amiga.vim		@cecamp
@@ -392,6 +395,7 @@ runtime/syntax/nginx.vim		@chr4
 runtime/syntax/ninja.vim		@nico
 runtime/syntax/nroff.vim		@jmarshall
 runtime/syntax/nsis.vim			@k-takata
+runtime/syntax/openvpn.vim		@ObserverOfTime
 runtime/syntax/pascal.vim		@dkearns
 runtime/syntax/pbtxt.vim		@lakshayg
 runtime/syntax/pdf.vim			@tpope
--- a/runtime/autoload/tohtml.vim
+++ b/runtime/autoload/tohtml.vim
@@ -712,6 +712,9 @@ func! tohtml#GetUserSettings() "{{{
     call tohtml#GetOption(user_settings,     'no_foldcolumn', user_settings.ignore_folding)
     call tohtml#GetOption(user_settings,      'hover_unfold', 0 )
     call tohtml#GetOption(user_settings,            'no_pre', 0 )
+    call tohtml#GetOption(user_settings,            'no_doc', 0 )
+    call tohtml#GetOption(user_settings,          'no_links', 0 )
+    call tohtml#GetOption(user_settings,       'no_modeline', 0 )
     call tohtml#GetOption(user_settings,        'no_invalid', 0 )
     call tohtml#GetOption(user_settings,      'whole_filler', 0 )
     call tohtml#GetOption(user_settings,         'use_xhtml', 0 )
@@ -752,7 +755,7 @@ func! tohtml#GetUserSettings() "{{{
 
     " pre_wrap doesn't do anything if not using pre or not using CSS
     if user_settings.no_pre || !user_settings.use_css
-      let user_settings.pre_wrap=0
+      let user_settings.pre_wrap = 0
     endif
     "}}}
 
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt*	For Vim version 9.0.  Last change: 2022 Oct 14
+*builtin.txt*	For Vim version 9.0.  Last change: 2022 Oct 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1583,11 +1583,9 @@ col({expr})	The result is a Number, whic
 		buffer.
 		For the cursor position, when 'virtualedit' is active, the
 		column is one higher if the cursor is after the end of the
-		line.  This can be used to obtain the column in Insert mode: >
-			:imap <F2> <C-O>:let save_ve = &ve<CR>
-				\<C-O>:set ve=all<CR>
-				\<C-O>:echo col(".") .. "\n" <Bar>
-				\let &ve = save_ve<CR>
+		line.  Also, when using a <Cmd> mapping the cursor isn't
+		moved, this can be used to obtain the column in Insert mode: >
+			:imap <F2> <Cmd>echo col(".")<CR>
 
 <		Can also be used as a |method|: >
 			GetPos()->col()
--- a/runtime/doc/ft_rust.txt
+++ b/runtime/doc/ft_rust.txt
@@ -1,70 +1,70 @@
-*ft_rust.txt*	For Vim version 9.0.  Last change: 2017 Nov 02
+*ft_rust.txt*	For Vim version 9.0.  Last change: 2022 Oct 17
 
 This is documentation for the Rust filetype plugin.
 
 ==============================================================================
-CONTENTS                                                      *rust*
+CONTENTS						      *rust*
 
-1. Introduction                                                   |rust-intro|
-2. Settings                                                    |rust-settings|
-3. Commands                                                    |rust-commands|
-4. Mappings                                                    |rust-mappings|
+1. Introduction							  |rust-intro|
+2. Settings						       |rust-settings|
+3. Commands						       |rust-commands|
+4. Mappings						       |rust-mappings|
 
 ==============================================================================
-INTRODUCTION                                                      *rust-intro*
+INTRODUCTION							  *rust-intro*
 
 This plugin provides syntax and supporting functionality for the Rust
 filetype.
 
 ==============================================================================
-SETTINGS                                                       *rust-settings*
+SETTINGS						       *rust-settings*
 
 This plugin has a few variables you can define in your vimrc that change the
 behavior of the plugin.
 
-                                                                *g:rustc_path*
+								*g:rustc_path*
 g:rustc_path~
 	Set this option to the path to rustc for use in the |:RustRun| and
 	|:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
 	    let g:rustc_path = $HOME .. "/bin/rustc"
 <
 
-                                                  *g:rustc_makeprg_no_percent*
+						  *g:rustc_makeprg_no_percent*
 g:rustc_makeprg_no_percent~
 	Set this option to 1 to have 'makeprg' default to "rustc" instead of
 	"rustc %": >
 	    let g:rustc_makeprg_no_percent = 1
 <
 
-                                                              *g:rust_conceal*
+							      *g:rust_conceal*
 g:rust_conceal~
 	Set this option to turn on the basic |conceal| support: >
 	    let g:rust_conceal = 1
 <
 
-                                                     *g:rust_conceal_mod_path*
+						     *g:rust_conceal_mod_path*
 g:rust_conceal_mod_path~
 	Set this option to turn on |conceal| for the path connecting token
 	"::": >
 	    let g:rust_conceal_mod_path = 1
 <
 
-                                                          *g:rust_conceal_pub*
+							  *g:rust_conceal_pub*
 g:rust_conceal_pub~
 	Set this option to turn on |conceal| for the "pub" token: >
 	    let g:rust_conceal_pub = 1
 <
 
-                                                     *g:rust_recommended_style*
+						     *g:rust_recommended_style*
 g:rust_recommended_style~
-        Set this option to enable vim indentation and textwidth settings to
-        conform to style conventions of the rust standard library (i.e. use 4
-        spaces for indents and sets 'textwidth' to 99). This option is enabled
+	Set this option to enable vim indentation and textwidth settings to
+	conform to style conventions of the rust standard library (i.e. use 4
+	spaces for indents and sets 'textwidth' to 99). This option is enabled
 	by default. To disable it: >
 	    let g:rust_recommended_style = 0
 <
 
-                                                                 *g:rust_fold*
+								 *g:rust_fold*
 g:rust_fold~
 	Set this option to turn on |folding|: >
 	    let g:rust_fold = 1
@@ -76,39 +76,39 @@ g:rust_fold~
 	2		Braced blocks are folded. 'foldlevel' is left at the
 			global value (all folds are closed by default).
 
-                                                  *g:rust_bang_comment_leader*
+						  *g:rust_bang_comment_leader*
 g:rust_bang_comment_leader~
 	Set this option to 1 to preserve the leader on multi-line doc comments
 	using the /*! syntax: >
 	    let g:rust_bang_comment_leader = 1
 <
 
-                                                 *g:ftplugin_rust_source_path*
+						 *g:ftplugin_rust_source_path*
 g:ftplugin_rust_source_path~
 	Set this option to a path that should be prepended to 'path' for Rust
 	source files: >
 	    let g:ftplugin_rust_source_path = $HOME .. '/dev/rust'
 <
 
-                                                       *g:rustfmt_command*
+						       *g:rustfmt_command*
 g:rustfmt_command~
 	Set this option to the name of the 'rustfmt' executable in your $PATH. If
 	not specified it defaults to 'rustfmt' : >
 	    let g:rustfmt_command = 'rustfmt'
 <
-                                                       *g:rustfmt_autosave*
+						       *g:rustfmt_autosave*
 g:rustfmt_autosave~
 	Set this option to 1 to run |:RustFmt| automatically when saving a
 	buffer. If not specified it defaults to 0 : >
 	    let g:rustfmt_autosave = 0
 <
-                                                       *g:rustfmt_fail_silently*
+						       *g:rustfmt_fail_silently*
 g:rustfmt_fail_silently~
 	Set this option to 1 to prevent 'rustfmt' from populating the
 	|location-list| with errors. If not specified it defaults to 0: >
 	    let g:rustfmt_fail_silently = 0
 <
-                                                       *g:rustfmt_options*
+						       *g:rustfmt_options*
 g:rustfmt_options~
 	Set this option to a string of options to pass to 'rustfmt'. The
 	write-mode is already set to 'overwrite'. If not specified it
@@ -116,13 +116,13 @@ g:rustfmt_options~
 	    let g:rustfmt_options = ''
 <
 
-                                                          *g:rust_playpen_url*
+							  *g:rust_playpen_url*
 g:rust_playpen_url~
 	Set this option to override the URL for the playpen to use: >
 	    let g:rust_playpen_url = 'https://play.rust-lang.org/'
 <
 
-                                                        *g:rust_shortener_url*
+							*g:rust_shortener_url*
 g:rust_shortener_url~
 	Set this option to override the URL for the URL shortener: >
 	    let g:rust_shortener_url = 'https://is.gd/'
@@ -130,9 +130,9 @@ g:rust_shortener_url~
 
 
 ==============================================================================
-COMMANDS                                                       *rust-commands*
+COMMANDS						       *rust-commands*
 
-:RustRun  [args]                                                    *:RustRun*
+:RustRun  [args]						    *:RustRun*
 :RustRun! [rustc-args] [--] [args]
 		Compiles and runs the current file. If it has unsaved changes,
 		it will be saved first using |:update|. If the current file is
@@ -150,7 +150,7 @@ COMMANDS                                
 		If |g:rustc_path| is defined, it is used as the path to rustc.
 		Otherwise it is assumed rustc can be found in $PATH.
 
-:RustExpand  [args]                                              *:RustExpand*
+:RustExpand  [args]						 *:RustExpand*
 :RustExpand! [TYPE] [args]
 		Expands the current file using --pretty and displays the
 		results in a new split. If the current file has unsaved
@@ -169,7 +169,7 @@ COMMANDS                                
 		If |g:rustc_path| is defined, it is used as the path to rustc.
 		Otherwise it is assumed rustc can be found in $PATH.
 
-:RustEmitIr [args]                                               *:RustEmitIr*
+:RustEmitIr [args]						 *:RustEmitIr*
 		Compiles the current file to LLVM IR and displays the results
 		in a new split. If the current file has unsaved changes, it
 		will be saved first using |:update|. If the current file is an
@@ -180,7 +180,7 @@ COMMANDS                                
 		If |g:rustc_path| is defined, it is used as the path to rustc.
 		Otherwise it is assumed rustc can be found in $PATH.
 
-:RustEmitAsm [args]                                             *:RustEmitAsm*
+:RustEmitAsm [args]						*:RustEmitAsm*
 		Compiles the current file to assembly and displays the results
 		in a new split. If the current file has unsaved changes, it
 		will be saved first using |:update|. If the current file is an
@@ -191,7 +191,7 @@ COMMANDS                                
 		If |g:rustc_path| is defined, it is used as the path to rustc.
 		Otherwise it is assumed rustc can be found in $PATH.
 
-:RustPlay                                                          *:RustPlay*
+:RustPlay							   *:RustPlay*
 		This command will only work if you have web-api.vim installed
 		(available at https://github.com/mattn/webapi-vim).  It sends the
 		current selection, or if nothing is selected, the entirety of the
@@ -204,7 +204,7 @@ COMMANDS                                
 		|g:rust_shortener_url| is the base URL for the shortener, by
 		default "https://is.gd/"
 
-:RustFmt                                                       *:RustFmt*
+:RustFmt						       *:RustFmt*
 		Runs |g:rustfmt_command| on the current buffer. If
 		|g:rustfmt_options| is set then those will be passed to the
 		executable.
@@ -214,12 +214,12 @@ COMMANDS                                
 		|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
 		then it will not populate the |location-list|.
 
-:RustFmtRange                                                  *:RustFmtRange*
+:RustFmtRange						       *:RustFmtRange*
 		Runs |g:rustfmt_command| with selected range. See
 		|:RustFmt| for any other information.
 
 ==============================================================================
-MAPPINGS                                                       *rust-mappings*
+MAPPINGS						       *rust-mappings*
 
 This plugin defines mappings for |[[| and |]]| to support hanging indents.
 
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 9.0.  Last change: 2022 Sep 26
+*map.txt*       For Vim version 9.0.  Last change: 2022 Oct 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1483,7 +1483,7 @@ See |:verbose-cmd| for more information.
 
 
 Command attributes ~
-                                                       *command-attributes*
+							*command-attributes*
 User-defined commands are treated by Vim just like any other Ex commands.  They
 can have arguments, or have a range specified.  Arguments are subject to
 completion as filenames, buffers, etc.  Exactly how this works depends upon the
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 9.0.  Last change: 2022 Jan 26
+*message.txt*   For Vim version 9.0.  Last change: 2022 Oct 18
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -635,6 +635,7 @@ probably means that some other program c
 find out what happened, and decide which version of the file you want to keep.
 Set the 'autoread' option if you want to do this automatically.
 This message is not given when 'buftype' is not empty.
+Also see the |FileChangedShell| autocommand.
 
 There is one situation where you get this message even though there is nothing
 wrong: If you save a file in Windows on the day the daylight saving time
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 9.0.  Last change: 2022 Oct 15
+*options.txt*	For Vim version 9.0.  Last change: 2022 Oct 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3048,11 +3048,13 @@ A jump table for the options with a shor
 	When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
 	not set yet, the default for 'fileencodings' is changed.
 
-			*'endofline'* *'eol'* *'noendofline'* *'noeol'*
-'endofline' 'eol'	boolean	(default on)
+			*'endoffile'* *'eof'* *'noendoffile'* *'noeof'*
+'endoffile' 'eof'	boolean	(default on)
 			local to buffer
+	Indicates that a CTRL-Z character was found at the end of the file
+	when reading it.  Normally only happens when 'fileformat' is "dos".
 	When writing a file and this option is off and the 'binary' option
-	is on, or 'fixeol' option is off, no CTRL-Z will be written for at the
+	is on, or 'fixeol' option is off, no CTRL-Z will be written at the
 	end of the file.
 
 			*'endofline'* *'eol'* *'noendofline'* *'noeol'*
--- a/runtime/doc/pi_tar.txt
+++ b/runtime/doc/pi_tar.txt
@@ -1,4 +1,4 @@
-*pi_tar.txt*	For Vim version 9.0.  Last change: 2020 Jan 07
+*pi_tar.txt*	For Vim version 9.0.  Last change: 2022 Oct 17
 
 		       +====================+
 		       | Tar File Interface |
@@ -80,20 +80,20 @@ 3. Options						*tar-options*
 
    These options are variables that one may change, typically in one's
    <.vimrc> file.
-                         Default
-   Variable               Value   Explanation
+			 Default
+   Variable		  Value   Explanation
    *g:tar_browseoptions*  "Ptf"   used to get a list of contents
-   *g:tar_readoptions*    "OPxf"  used to extract a file from a tarball
-   *g:tar_cmd*            "tar"   the name of the tar program
-   *g:tar_nomax*            0     if true, file window will not be maximized
-   *g:tar_secure*         undef   if exists:
+   *g:tar_readoptions*	  "OPxf"  used to extract a file from a tarball
+   *g:tar_cmd*		  "tar"   the name of the tar program
+   *g:tar_nomax*	    0	  if true, file window will not be maximized
+   *g:tar_secure*	  undef   if exists:
 					"--"s will be used to prevent unwanted
 					option expansion in tar commands.
 					Please be sure that your tar command
 					accepts "--"; Posix compliant tar
 					utilities do accept them.
 				  if not exists:
-				  	The tar plugin will reject any tar
+					The tar plugin will reject any tar
 					files or member files that begin with
 					"-"
 				  Not all tar's support the "--" which is why
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -1,4 +1,4 @@
-*pi_zip.txt*	For Vim version 9.0.  Last change: 2021 Nov 08
+*pi_zip.txt*	For Vim version 9.0.  Last change: 2022 Oct 17
 
 				+====================+
 				| Zip File Interface |
@@ -39,7 +39,7 @@ 2. Usage						*zip-usage* *zip-manual*
 
    OPTIONS~
 
-   							*g:zip_nomax*
+							*g:zip_nomax*
 
    If this variable exists and is true, the file window will not be
    automatically maximized when opened.
@@ -54,21 +54,21 @@ 2. Usage						*zip-usage* *zip-manual*
    under Windows (").  If you'd rather have no quotes, simply set
    g:zip_shq to the empty string (let g:zip_shq= "") in your <.vimrc>.
 
-   							*g:zip_unzipcmd*
+							*g:zip_unzipcmd*
    Use this option to specify the program which does the duty of "unzip".
    It's used during browsing. By default: >
-   	let g:zip_unzipcmd= "unzip"
+	let g:zip_unzipcmd= "unzip"
 <
 							*g:zip_zipcmd*
    Use this option to specify the program which does the duty of "zip".
    It's used during the writing (updating) of a file already in a zip
    file; by default: >
-   	let g:zip_zipcmd= "zip"
+	let g:zip_zipcmd= "zip"
 <
 							*g:zip_extractcmd*
    This option specifies the program (and any options needed) used to
    extract a file from a zip archive.  By default, >
-   	let g:zip_extractcmd= g:zip_unzipcmd
+	let g:zip_extractcmd= g:zip_unzipcmd
 <
    PREVENTING LOADING~
 
@@ -103,14 +103,14 @@ 3. Additional Extensions					*zip-extens
 ==============================================================================
 4. History							*zip-history* {{{1
    v32 Oct 22, 2021 * to avoid an issue with a vim 8.2 patch, zipfile: has
-   		      been changed to zipfile:// . This often shows up
+		      been changed to zipfile:// . This often shows up
 		      as zipfile:/// with zipped files that are root-based.
    v29 Apr 02, 2017 * (Klartext) reported that an encrypted zip file could
-   		      opened but the swapfile held unencrypted contents.
+		      opened but the swapfile held unencrypted contents.
 		      The solution is to edit the contents of a zip file
 		      using the |:noswapfile| modifier.
    v28 Oct 08, 2014 * changed the sanity checks for executables to reflect
-   		      the command actually to be attempted in zip#Read()
+		      the command actually to be attempted in zip#Read()
 		      and zip#Write()
 		    * added the extraction of a file capability
        Nov 30, 2015 * added *.epub to the |g:zipPlugin_ext| list
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 9.0.  Last change: 2022 Oct 15
+*quickref.txt*  For Vim version 9.0.  Last change: 2022 Oct 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -689,6 +689,7 @@ Short explanation of each option:		*opti
 'edcompatible'	  'ed'	    toggle flags of ":substitute" command
 'emoji'		  'emo'	    emoji characters are considered full width
 'encoding'	  'enc'     encoding used internally
+'endoffile'	  'eof'     write CTRL-Z at end of the file
 'endofline'	  'eol'     write <EOL> for last line in file
 'equalalways'	  'ea'	    windows are automatically made the same size
 'equalprg'	  'ep'	    external program to use for "=" command
--- a/runtime/doc/scroll.txt
+++ b/runtime/doc/scroll.txt
@@ -1,4 +1,4 @@
-*scroll.txt*    For Vim version 9.0.  Last change: 2022 May 07
+*scroll.txt*    For Vim version 9.0.  Last change: 2022 Oct 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -280,6 +280,17 @@ You can also use Alt and Ctrl modifiers.
 
 This only works when Vim gets the scroll wheel events, of course.  You can
 check if this works with the "xev" program.
+							*mouse-scrolling-off*
+If you do not want the mouse to cause scrolling (e.g. because resting your
+palm on the touchpad causes scroll events), you can disable that with: >
+	:map <ScrollWheelDown> <Nop>
+	:map! <ScrollWheelDown> <Nop>
+	:map <ScrollWheelUp> <Nop>
+	:map! <ScrollWheelUp> <Nop>
+	:map <ScrollWheelLeft> <Nop>
+	:map! <ScrollWheelLeft> <Nop>
+	:map <ScrollWheelRight> <Nop>
+	:map! <ScrollWheelRight> <Nop>
 
 When using XFree86, the /etc/XF86Config file should have the correct entry for
 your mouse.  For FreeBSD, this entry works for a Logitech scrollmouse: >
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 9.0.  Last change: 2022 Oct 14
+*syntax.txt*	For Vim version 9.0.  Last change: 2022 Oct 17
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -500,7 +500,7 @@ Force to omit the line numbers: >
 Go back to the default to use 'number' by deleting the variable: >
    :unlet g:html_number_lines
 <
-                                                             *g:html_line_ids*
+							*g:html_line_ids*
 Default: 1 if |g:html_number_lines| is set, 0 otherwise.
 When 1, adds an HTML id attribute to each line number, or to an empty <span>
 inserted for that purpose if no line numbers are shown. This ID attribute
@@ -692,6 +692,22 @@ the rendered page generated by 2html.vim
 >
    :let g:html_no_pre = 1
 <
+							       *g:html_no_doc*
+Default: 0.
+When 1 it doesn't generate a full HTML document with a DOCTYPE, <head>,
+<body>, etc. If |g:html_use_css| is enabled (the default) you'll have to
+define the CSS manually. The |g:html_dynamic_folds| and |g:html_line_ids|
+settings (off by default) also insert some JavaScript.
+
+
+							     *g:html_no_links*
+Default: 0.
+Don't generate <a> tags for text that looks like an URL.
+
+							  *g:html_no_modeline*
+Default: 0.
+Don't generate a modeline disabling folding.
+
 							  *g:html_expand_tabs*
 Default: 0 if 'tabstop' is 8, 'expandtab' is 0, 'vartabstop' is not in use,
 	       and no fold column or line numbers occur in the generated HTML;
@@ -2932,7 +2948,7 @@ Default folding is rather detailed, i.e.
 
 You can set "ruby_foldable_groups" to restrict which groups are foldable: >
 
-        :let ruby_foldable_groups = 'if case %'
+	:let ruby_foldable_groups = 'if case %'
 <
 The value is a space-separated list of keywords:
 
@@ -2940,22 +2956,22 @@ The value is a space-separated list of k
     --------  ------------------------------------- ~
     ALL        Most block syntax (default)
     NONE       Nothing
-    if         "if" or "unless" block
+    if	       "if" or "unless" block
     def        "def" block
     class      "class" block
     module     "module" block
-    do         "do" block
+    do	       "do" block
     begin      "begin" block
     case       "case" block
     for        "for", "while", "until" loops
-    {          Curly bracket block or hash literal
-    [          Array literal
-    %          Literal with "%" notation, e.g.: %w(STRING), %!STRING!
-    /          Regexp
+    {	       Curly bracket block or hash literal
+    [	       Array literal
+    %	       Literal with "%" notation, e.g.: %w(STRING), %!STRING!
+    /	       Regexp
     string     String and shell command output (surrounded by ', ", `)
-    :          Symbol
-    #          Multiline comment
-    <<         Here documents
+    :	       Symbol
+    #	       Multiline comment
+    <<	       Here documents
     __END__    Source code after "__END__" directive
 
 						*ruby_no_expensive*
@@ -3802,7 +3818,7 @@ SYNTAX ISKEYWORD SETTING				*:syn-iskeyw
 
 	clear:		Syntax specific iskeyword setting is disabled and the
 			buffer-local 'iskeyword' setting is used.
-	{option}        Set the syntax 'iskeyword' option to a new value.
+	{option}       	Set the syntax 'iskeyword' option to a new value.
 
 	Example: >
   :syntax iskeyword @,48-57,192-255,$,_
@@ -5280,7 +5296,7 @@ guisp={color-name}					*highlight-guisp*
 		"gg"	is the Green value
 		"bb"	is the Blue value
 	All values are hexadecimal, range from "00" to "ff".  Examples: >
-            :highlight Comment guifg=#11f0c3 guibg=#ff00ff
+	    :highlight Comment guifg=#11f0c3 guibg=#ff00ff
 <
 	If you are authoring a color scheme and use the same hexadecimal value
 	repeatedly, you can define a name for it in |v:colornames|. For
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -231,7 +231,9 @@
 'emoji'	options.txt	/*'emoji'*
 'enc'	options.txt	/*'enc'*
 'encoding'	options.txt	/*'encoding'*
+'endoffile'	options.txt	/*'endoffile'*
 'endofline'	options.txt	/*'endofline'*
+'eof'	options.txt	/*'eof'*
 'eol'	options.txt	/*'eol'*
 'ep'	options.txt	/*'ep'*
 'equalalways'	options.txt	/*'equalalways'*
@@ -598,7 +600,9 @@
 'noek'	options.txt	/*'noek'*
 'noemo'	options.txt	/*'noemo'*
 'noemoji'	options.txt	/*'noemoji'*
+'noendoffile'	options.txt	/*'noendoffile'*
 'noendofline'	options.txt	/*'noendofline'*
+'noeof'	options.txt	/*'noeof'*
 'noeol'	options.txt	/*'noeol'*
 'noequalalways'	options.txt	/*'noequalalways'*
 'noerrorbells'	options.txt	/*'noerrorbells'*
@@ -7250,8 +7254,11 @@ g:html_id_expr	syntax.txt	/*g:html_id_ex
 g:html_ignore_conceal	syntax.txt	/*g:html_ignore_conceal*
 g:html_ignore_folding	syntax.txt	/*g:html_ignore_folding*
 g:html_line_ids	syntax.txt	/*g:html_line_ids*
+g:html_no_doc	syntax.txt	/*g:html_no_doc*
 g:html_no_foldcolumn	syntax.txt	/*g:html_no_foldcolumn*
 g:html_no_invalid	syntax.txt	/*g:html_no_invalid*
+g:html_no_links	syntax.txt	/*g:html_no_links*
+g:html_no_modeline	syntax.txt	/*g:html_no_modeline*
 g:html_no_pre	syntax.txt	/*g:html_no_pre*
 g:html_no_progress	syntax.txt	/*g:html_no_progress*
 g:html_number_lines	syntax.txt	/*g:html_number_lines*
@@ -8418,6 +8425,7 @@ motion-count-multiplied	motion.txt	/*mot
 motion.txt	motion.txt	/*motion.txt*
 mouse-mode-table	term.txt	/*mouse-mode-table*
 mouse-overview	term.txt	/*mouse-overview*
+mouse-scrolling-off	scroll.txt	/*mouse-scrolling-off*
 mouse-swap-buttons	term.txt	/*mouse-swap-buttons*
 mouse-using	term.txt	/*mouse-using*
 mouse_col-variable	eval.txt	/*mouse_col-variable*
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt*      For Vim version 9.0.  Last change: 2022 Apr 23
+*term.txt*      For Vim version 9.0.  Last change: 2022 Oct 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -569,7 +569,7 @@ anymore.
 Vim supports using true colors in the terminal (taken from |highlight-guifg|
 and |highlight-guibg|), given that the terminal supports this. To make this
 work the 'termguicolors' option needs to be set.
-See https://gist.github.com/XVilka/8346728 for a list of terminals that
+See https://github.com/termstandard/colors for a list of terminals that
 support true colors.
 
 Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
@@ -1005,6 +1005,8 @@ and then drag) will result in whole word
 until the button is released, at which point the selection is per character
 again.
 
+For scrolling with the mouse see |scroll-mouse-wheel|.
+
 							*gpm-mouse*
 The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at
 compile time.  The GPM mouse driver (Linux console) does not support quadruple
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 9.0.  Last change: 2022 Oct 16
+*todo.txt*      For Vim version 9.0.  Last change: 2022 Oct 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -41,10 +41,7 @@ browser use: https://github.com/vim/vim/
 'smoothscroll':
 - CTRL-E and gj in long line with 'scrolloff' 5 not working well yet.
 - computing 'scrolloff' position row use w_skipcol
-
-Check textprop right/above/below with 'number' set and "n" in 'cpo'.
-
-Don't do anything for ":!". #11372
+- PR: Error in screen dump for Test_smoothscroll_one_long_line.  (PR #11436)
 
 
 Further Vim9 improvements, possibly after launch:
@@ -164,6 +161,8 @@ Terminal emulator window:
 - When 'encoding' is not utf-8, or the job is using another encoding, setup
   conversions.
 
+Crash when a variable is removed while listing variables (Issue #11435)
+
 Autoconf: must use autoconf 2.69, later version generates lots of warnings
 - try using autoconf 2.71 and fix all "obsolete" warnings  #11322
 
@@ -267,6 +266,9 @@ New English spell files also have very s
 French spell files don't work correctly.  #4916
     Make Vim understand the format somehow?
 
+When 'spelloptions' is "camel" then zG doesn't work on some words.
+(Gary Johnson, 17 Oct 2022)
+
 Make "g>" and "g<" in Visual mode move the text right or left.
 Also for a block selection.  #8558
 
@@ -340,6 +342,7 @@ Is this the right solution?  Need to cle
 So that replaying the register doesn't use keymap/langmap and still does the
 same thing.
 Also see #737: langmap not applied to replaying recording.
+Perhaps also related: #5147
 
 Matchparen doesn't remove highlight after undo. (#7054)
 Is OK when syntax HL is active.
@@ -380,6 +383,8 @@ and/or "sandbox" are set.
 
 Problem with auto-formatting - inserting space and putting cursor before added
 character. (#6154)
+Auto-formatting comments joins a following non-comment line when the comment
+ends in a space. (Adam Levy, 18 Oct 2022)
 
 When 'lazyredraw' is set sometimes the title is not updated.
 (Jason Franklin, 2020 Feb 3)  Looks like a race condition.
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 9.0.  Last change: 2022 Oct 13
+*various.txt*   For Vim version 9.0.  Last change: 2022 Oct 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -249,8 +249,7 @@ 8g8			Find an illegal UTF-8 byte sequenc
 
 							*:!cmd* *:!*
 :!{cmd}			Execute {cmd} with the shell.  See also the 'shell'
-			and 'shelltype' option. `:!` without a {cmd} is a no-op,
-			it does nothing.
+			and 'shelltype' option.
 							*E34*
 			Any '!' in {cmd} is replaced with the previous
 			external command (see also 'cpoptions').  But not when
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/apache.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin
+" Language:	apache configuration file
+" Maintainer:	Per Juchtmans <dubgeiser+vimNOSPAM@gmail.com>
+" Last Change:	2022 Oct 22
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+setlocal comments=:#
+setlocal commentstring=#\ %s
+
+let b:undo_ftplugin = "setlocal comments< commentstring<"
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/openvpn.vim
@@ -0,0 +1,14 @@
+" Vim filetype plugin
+" Language:	OpenVPN
+" Maintainer:	ObserverOfTime <chronobserver@disroot.org>
+" Last Change:	2022 Oct 16
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setlocal iskeyword+=-,.,/
+setlocal comments=:#,:; commentstring=#%s
+
+let b:undo_ftplugin = 'setl isk< com< cms<'
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2022 Oct 15
+" Last Change:	2022 Oct 28
 
 " If there already is an option window, jump to that one.
 let buf = bufnr('option-window')
@@ -1047,6 +1047,9 @@ call <SID>BinOptionL("bin")
 call <SID>AddOption("endofline", gettext("last line in the file has an end-of-line"))
 call append("$", "\t" .. s:local_to_buffer)
 call <SID>BinOptionL("eol")
+call <SID>AddOption("endoffile", gettext("last line in the file followed by CTRL-Z"))
+call append("$", "\t" .. s:local_to_buffer)
+call <SID>BinOptionL("eof")
 call <SID>AddOption("fixendofline", gettext("fixes missing end-of-line at end of text file"))
 call append("$", "\t" .. s:local_to_buffer)
 call <SID>BinOptionL("fixeol")
--- a/runtime/plugin/manpager.vim
+++ b/runtime/plugin/manpager.vim
@@ -1,6 +1,11 @@
 " Vim plugin for using Vim as manpager.
 " Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
-" Last Change: 2022 Sep 30
+" Last Change: 2022 Oct 17
+
+if exists('g:loaded_manpager_plugin')
+  finish
+endif
+let g:loaded_manpager_plugin = 1
 
 " Set up the current buffer (likely read from stdin) as a manpage
 command MANPAGER call s:ManPager()
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -815,202 +815,204 @@ endif
 
 " HTML header, with the title and generator ;-). Left free space for the CSS,
 " to be filled at the end.
-call extend(s:lines, [
-      \ "<html>",
-      \ "<head>"])
-" include encoding as close to the top as possible, but only if not already
-" contained in XML information (to avoid haggling over content type)
-if s:settings.encoding != "" && !s:settings.use_xhtml
-  if s:html5
-    call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
-  else
-    call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
-  endif
-endif
-call extend(s:lines, [
-      \ ("<title>".expand("%:p:~")."</title>"),
-      \ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
-      \ ("<meta name=\"plugin-version\" content=\"".s:pluginversion.'"'.s:tag_close)
-      \ ])
-call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_close)
-call add(s:lines, '<meta name="settings" content="'.
-      \ join(filter(keys(s:settings),'s:settings[v:val]'),',').
-      \ ',prevent_copy='.s:settings.prevent_copy.
-      \ ',use_input_for_pc='.s:settings.use_input_for_pc.
-      \ '"'.s:tag_close)
-call add(s:lines, '<meta name="colorscheme" content="'.
-      \ (exists('g:colors_name')
-      \ ? g:colors_name
-      \ : 'none'). '"'.s:tag_close)
-
-if s:settings.use_css
+if !s:settings.no_doc
   call extend(s:lines, [
-	\ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
-	\ s:settings.use_xhtml ? "" : "<!--"])
-  let s:ieonly = []
-  if s:settings.dynamic_folds
-    if s:settings.hover_unfold
-      " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
-      call extend(s:lines, [
-	    \ ".FoldColumn { text-decoration: none; white-space: pre; }",
-	    \ "",
-	    \ "body * { margin: 0; padding: 0; }", "",
-	    \ ".open-fold   > span.Folded { display: none;  }",
-	    \ ".open-fold   > .fulltext   { display: inline; }",
-	    \ ".closed-fold > .fulltext   { display: none;  }",
-	    \ ".closed-fold > span.Folded { display: inline; }",
-	    \ "",
-	    \ ".open-fold   > .toggle-open   { display: none;   }",
-	    \ ".open-fold   > .toggle-closed { display: inline; }",
-	    \ ".closed-fold > .toggle-open   { display: inline; }",
-	    \ ".closed-fold > .toggle-closed { display: none;   }",
-	    \ "", "",
-	    \ '/* opening a fold while hovering won''t be supported by IE6 and other',
-	    \ "similar browsers, but it should fail gracefully. */",
-	    \ ".closed-fold:hover > .fulltext      { display: inline; }",
-	    \ ".closed-fold:hover > .toggle-filler { display: none; }",
-	    \ ".closed-fold:hover > .Folded        { display: none; }"])
-      " TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
-      " should remove this? Leave it in for now, it was working at one point,
-      " and doesn't affect any modern browsers. Even newer IE versions should
-      " support the above code and ignore the following.
-      let s:ieonly = [
-	    \ "<!--[if lt IE 7]><style type=\"text/css\">",
-	    \ ".open-fold   .fulltext      { display: inline; }",
-	    \ ".open-fold   span.Folded    { display: none; }",
-	    \ ".open-fold   .toggle-open   { display: none; }",
-	    \ ".open-fold   .toggle-closed { display: inline; }",
-	    \ "",
-	    \ ".closed-fold .fulltext      { display: none; }",
-	    \ ".closed-fold span.Folded    { display: inline; }",
-	    \ ".closed-fold .toggle-open   { display: inline; }",
-	    \ ".closed-fold .toggle-closed { display: none; }",
-	    \ "</style>",
-	    \ "<![endif]-->",
-	    \]
+	\ "<html>",
+	\ "<head>"])
+  " include encoding as close to the top as possible, but only if not already
+  " contained in XML information (to avoid haggling over content type)
+  if s:settings.encoding != "" && !s:settings.use_xhtml
+    if s:html5
+      call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
     else
-      " if we aren't doing hover_unfold, use CSS 1 only
-      call extend(s:lines, [
-	    \ ".FoldColumn { text-decoration: none; white-space: pre; }",
-	    \ ".open-fold   .fulltext      { display: inline; }",
-	    \ ".open-fold   span.Folded    { display: none; }",
-	    \ ".open-fold   .toggle-open   { display: none; }",
-	    \ ".open-fold   .toggle-closed { display: inline; }",
-	    \ "",
-	    \ ".closed-fold .fulltext      { display: none; }",
-	    \ ".closed-fold span.Folded    { display: inline; }",
-	    \ ".closed-fold .toggle-open   { display: inline; }",
-	    \ ".closed-fold .toggle-closed { display: none; }",
-	    \])
+      call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
     endif
   endif
-  " else we aren't doing any dynamic folding, no need for any special rules
-
   call extend(s:lines, [
-	  \ s:settings.use_xhtml ? "" : '-->',
-	  \ "</style>",
-	  \])
-  call extend(s:lines, s:ieonly)
-  unlet s:ieonly
-endif
-
-let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
-
-" insert script tag if needed
-if s:uses_script
-  call extend(s:lines, [
-        \ "",
-        \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
-        \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
-endif
+	\ ("<title>".expand("%:p:~")."</title>"),
+	\ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
+	\ ("<meta name=\"plugin-version\" content=\"".s:pluginversion.'"'.s:tag_close)
+	\ ])
+  call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_close)
+  call add(s:lines, '<meta name="settings" content="'.
+	\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
+	\ ',prevent_copy='.s:settings.prevent_copy.
+	\ ',use_input_for_pc='.s:settings.use_input_for_pc.
+	\ '"'.s:tag_close)
+  call add(s:lines, '<meta name="colorscheme" content="'.
+	\ (exists('g:colors_name')
+	\ ? g:colors_name
+	\ : 'none'). '"'.s:tag_close)
 
-" insert javascript to toggle folds open and closed
-if s:settings.dynamic_folds
-  call extend(s:lines, [
-	\ "",
-	\ "function toggleFold(objID)",
-	\ "{",
-	\ "  var fold;",
-	\ "  fold = document.getElementById(objID);",
-	\ "  if (fold.className == 'closed-fold')",
-	\ "  {",
-	\ "    fold.className = 'open-fold';",
-	\ "  }",
-	\ "  else if (fold.className == 'open-fold')",
-	\ "  {",
-	\ "    fold.className = 'closed-fold';",
-	\ "  }",
-	\ "}"
-	\ ])
-endif
+  if s:settings.use_css
+    call extend(s:lines, [
+	  \ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
+	  \ s:settings.use_xhtml ? "" : "<!--"])
+    let s:ieonly = []
+    if s:settings.dynamic_folds
+      if s:settings.hover_unfold
+	" if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
+	call extend(s:lines, [
+	      \ ".FoldColumn { text-decoration: none; white-space: pre; }",
+	      \ "",
+	      \ "body * { margin: 0; padding: 0; }", "",
+	      \ ".open-fold   > span.Folded { display: none;  }",
+	      \ ".open-fold   > .fulltext   { display: inline; }",
+	      \ ".closed-fold > .fulltext   { display: none;  }",
+	      \ ".closed-fold > span.Folded { display: inline; }",
+	      \ "",
+	      \ ".open-fold   > .toggle-open   { display: none;   }",
+	      \ ".open-fold   > .toggle-closed { display: inline; }",
+	      \ ".closed-fold > .toggle-open   { display: inline; }",
+	      \ ".closed-fold > .toggle-closed { display: none;   }",
+	      \ "", "",
+	      \ '/* opening a fold while hovering won''t be supported by IE6 and other',
+	      \ "similar browsers, but it should fail gracefully. */",
+	      \ ".closed-fold:hover > .fulltext      { display: inline; }",
+	      \ ".closed-fold:hover > .toggle-filler { display: none; }",
+	      \ ".closed-fold:hover > .Folded        { display: none; }"])
+	" TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
+	" should remove this? Leave it in for now, it was working at one point,
+	" and doesn't affect any modern browsers. Even newer IE versions should
+	" support the above code and ignore the following.
+	let s:ieonly = [
+	      \ "<!--[if lt IE 7]><style type=\"text/css\">",
+	      \ ".open-fold   .fulltext      { display: inline; }",
+	      \ ".open-fold   span.Folded    { display: none; }",
+	      \ ".open-fold   .toggle-open   { display: none; }",
+	      \ ".open-fold   .toggle-closed { display: inline; }",
+	      \ "",
+	      \ ".closed-fold .fulltext      { display: none; }",
+	      \ ".closed-fold span.Folded    { display: inline; }",
+	      \ ".closed-fold .toggle-open   { display: inline; }",
+	      \ ".closed-fold .toggle-closed { display: none; }",
+	      \ "</style>",
+	      \ "<![endif]-->",
+	      \]
+      else
+	" if we aren't doing hover_unfold, use CSS 1 only
+	call extend(s:lines, [
+	      \ ".FoldColumn { text-decoration: none; white-space: pre; }",
+	      \ ".open-fold   .fulltext      { display: inline; }",
+	      \ ".open-fold   span.Folded    { display: none; }",
+	      \ ".open-fold   .toggle-open   { display: none; }",
+	      \ ".open-fold   .toggle-closed { display: inline; }",
+	      \ "",
+	      \ ".closed-fold .fulltext      { display: none; }",
+	      \ ".closed-fold span.Folded    { display: inline; }",
+	      \ ".closed-fold .toggle-open   { display: inline; }",
+	      \ ".closed-fold .toggle-closed { display: none; }",
+	      \])
+      endif
+    endif
+    " else we aren't doing any dynamic folding, no need for any special rules
 
-if s:settings.line_ids
-  " insert javascript to get IDs from line numbers, and to open a fold before
-  " jumping to any lines contained therein
-  call extend(s:lines, [
-	\ "",
-	\ "/* function to open any folds containing a jumped-to line before jumping to it */",
-	\ "function JumpToLine()",
-	\ "{",
-	\ "  var lineNum;",
-	\ "  lineNum = window.location.hash;",
-	\ "  lineNum = lineNum.substr(1); /* strip off '#' */",
-	\ "",
-	\ "  if (lineNum.indexOf('L') == -1) {",
-	\ "    lineNum = 'L'+lineNum;",
-	\ "  }",
-	\ "  var lineElem = document.getElementById(lineNum);"
-	\ ])
+    call extend(s:lines, [
+	    \ s:settings.use_xhtml ? "" : '-->',
+	    \ "</style>",
+	    \])
+    call extend(s:lines, s:ieonly)
+    unlet s:ieonly
+  endif
+
+  let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
 
+  " insert script tag if needed
+  if s:uses_script
+    call extend(s:lines, [
+	  \ "",
+	  \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
+	  \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
+  endif
+
+  " insert javascript to toggle folds open and closed
   if s:settings.dynamic_folds
     call extend(s:lines, [
 	  \ "",
-	  \ "  /* navigate upwards in the DOM tree to open all folds containing the line */",
-	  \ "  var node = lineElem;",
-	  \ "  while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
+	  \ "function toggleFold(objID)",
+	  \ "{",
+	  \ "  var fold;",
+	  \ "  fold = document.getElementById(objID);",
+	  \ "  if (fold.className == 'closed-fold')",
 	  \ "  {",
-	  \ "    if (node.className == 'closed-fold')",
-	  \ "    {",
-	  \ "      node.className = 'open-fold';",
-	  \ "    }",
-	  \ "    node = node.parentNode;",
+	  \ "    fold.className = 'open-fold';",
 	  \ "  }",
+	  \ "  else if (fold.className == 'open-fold')",
+	  \ "  {",
+	  \ "    fold.className = 'closed-fold';",
+	  \ "  }",
+	  \ "}"
 	  \ ])
   endif
-  call extend(s:lines, [
-	\ "  /* Always jump to new location even if the line was hidden inside a fold, or",
-	\ "   * we corrected the raw number to a line ID.",
-	\ "   */",
-	\ "  if (lineElem) {",
-	\ "    lineElem.scrollIntoView(true);",
-	\ "  }",
-	\ "  return true;",
-	\ "}",
-	\ "if ('onhashchange' in window) {",
-	\ "  window.onhashchange = JumpToLine;",
-	\ "}"
-	\ ])
+
+  if s:settings.line_ids
+    " insert javascript to get IDs from line numbers, and to open a fold before
+    " jumping to any lines contained therein
+    call extend(s:lines, [
+	  \ "",
+	  \ "/* function to open any folds containing a jumped-to line before jumping to it */",
+	  \ "function JumpToLine()",
+	  \ "{",
+	  \ "  var lineNum;",
+	  \ "  lineNum = window.location.hash;",
+	  \ "  lineNum = lineNum.substr(1); /* strip off '#' */",
+	  \ "",
+	  \ "  if (lineNum.indexOf('L') == -1) {",
+	  \ "    lineNum = 'L'+lineNum;",
+	  \ "  }",
+	  \ "  var lineElem = document.getElementById(lineNum);"
+	  \ ])
+
+    if s:settings.dynamic_folds
+      call extend(s:lines, [
+	    \ "",
+	    \ "  /* navigate upwards in the DOM tree to open all folds containing the line */",
+	    \ "  var node = lineElem;",
+	    \ "  while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
+	    \ "  {",
+	    \ "    if (node.className == 'closed-fold')",
+	    \ "    {",
+	    \ "      node.className = 'open-fold';",
+	    \ "    }",
+	    \ "    node = node.parentNode;",
+	    \ "  }",
+	    \ ])
+    endif
+    call extend(s:lines, [
+	  \ "  /* Always jump to new location even if the line was hidden inside a fold, or",
+	  \ "   * we corrected the raw number to a line ID.",
+	  \ "   */",
+	  \ "  if (lineElem) {",
+	  \ "    lineElem.scrollIntoView(true);",
+	  \ "  }",
+	  \ "  return true;",
+	  \ "}",
+	  \ "if ('onhashchange' in window) {",
+	  \ "  window.onhashchange = JumpToLine;",
+	  \ "}"
+	  \ ])
+  endif
+
+  " insert script closing tag if needed
+  if s:uses_script
+    call extend(s:lines, [
+	  \ '',
+	  \ s:settings.use_xhtml ? '//]]>' : '-->',
+	  \ "</script>"
+	  \ ])
+  endif
+
+  call extend(s:lines, ["</head>",
+	\ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
 endif
 
-" insert script closing tag if needed
-if s:uses_script
-  call extend(s:lines, [
-        \ '',
-        \ s:settings.use_xhtml ? '//]]>' : '-->',
-        \ "</script>"
-        \ ])
-endif
-
-call extend(s:lines, ["</head>",
-      \ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
-
 if s:settings.no_pre
   " if we're not using CSS we use a font tag which can't have a div inside
   if s:settings.use_css
-    call extend(s:lines, ["<div id='vimCodeElement".s:settings.id_suffix."'>"])
+    call extend(s:lines, ["<div id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
   endif
 else
-  call extend(s:lines, ["<pre id='vimCodeElement".s:settings.id_suffix."'>"])
+  call extend(s:lines, ["<pre id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
 endif
 
 exe s:orgwin . "wincmd w"
@@ -1721,12 +1723,15 @@ endif
 if s:settings.no_pre
   if !s:settings.use_css
     " Close off the font tag that encapsulates the whole <body>
-    call extend(s:lines, ["</font>", "</body>", "</html>"])
+    call extend(s:lines, ["</font>"])
   else
-    call extend(s:lines, ["</div>", "</body>", "</html>"])
+    call extend(s:lines, ["</div>"])
   endif
 else
-  call extend(s:lines, ["</pre>", "</body>", "</html>"])
+  call extend(s:lines, ["</pre>"])
+endif
+if !s:settings.no_doc
+  call extend(s:lines, ["</body>", "</html>"])
 endif
 
 exe s:newwin . "wincmd w"
@@ -1742,15 +1747,15 @@ unlet s:lines
 " The generated HTML is admittedly ugly and takes a LONG time to fold.
 " Make sure the user doesn't do syntax folding when loading a generated file,
 " using a modeline.
-call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
+if !s:settings.no_modeline
+  call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
+endif
 
 " Now, when we finally know which, we define the colors and styles
-if s:settings.use_css
+if s:settings.use_css && !s:settings.no_doc
   1;/<style\>/+1
-endif
 
-" Normal/global attributes
-if s:settings.use_css
+  " Normal/global attributes
   if s:settings.no_pre
     call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }")
     +
@@ -1874,7 +1879,9 @@ if s:settings.use_css
       endif
     endif
   endif
-else
+endif
+
+if !s:settings.use_css && !s:settings_no_doc
   " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
   " incorrect.
   execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
@@ -1882,7 +1889,7 @@ endif
 
 " Gather attributes for all other classes. Do diff first so that normal
 " highlight groups are inserted before it.
-if s:settings.use_css
+if s:settings.use_css && !s:settings.no_doc
   if s:diff_mode
     call append('.', filter(map(keys(s:diffstylelist), "s:diffstylelist[v:val]"), 'v:val != ""'))
   endif
@@ -1892,20 +1899,22 @@ if s:settings.use_css
 endif
 
 " Add hyperlinks
-" TODO: add option to not do this? Maybe just make the color the same as the
-" text highlight group normally is?
-%s+\(https\=://\S\{-}\)\(\([.,;:}]\=\(\s\|$\)\)\|[\\"'<>]\|&gt;\|&lt;\|&quot;\)+<a href="\1">\1</a>\2+ge
+if !s:settings.no_links
+  %s+\(https\=://\S\{-}\)\(\([.,;:}]\=\(\s\|$\)\)\|[\\"'<>]\|&gt;\|&lt;\|&quot;\)+<a href="\1">\1</a>\2+ge
+endif
 
 " The DTD
-if s:settings.use_xhtml
-  exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
-elseif s:html5
-  exe "normal! gg0i<!DOCTYPE html>\n"
-else
-  exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
+if !s:settings.no_doc
+  if s:settings.use_xhtml
+    exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
+  elseif s:html5
+    exe "normal! gg0i<!DOCTYPE html>\n"
+  else
+    exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
+  endif
 endif
 
-if s:settings.use_xhtml
+if s:settings.use_xhtml && !s:settings.no_doc
   exe "normal! gg/<html/e\na xmlns=\"http://www.w3.org/1999/xhtml\"\e"
 endif
 
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Vim help file
 " Maintainer:	Bram Moolenaar (Bram@vim.org)
-" Last Change:	2022 Sep 26
+" Last Change:	2022 Oct 17
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -11,7 +11,7 @@ endif
 let s:cpo_save = &cpo
 set cpo&vim
 
-syn match helpHeadline		"^[-A-Z .][-A-Z0-9 .()_]*\ze\(\s\+\*\|$\)"
+syn match helpHeadline		"^ *[-A-Z.][-A-Z0-9 .()_]*?\=\ze\(\s\+\*\|$\)"
 syn match helpSectionDelim	"^===.*===$"
 syn match helpSectionDelim	"^---.*--$"
 if has("conceal")
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/openvpn.vim
@@ -0,0 +1,72 @@
+" Vim syntax file
+" Language:	OpenVPN
+" Maintainer:	ObserverOfTime <chronobserver@disroot.org>
+" Filenames:	*.ovpn
+" Last Change:	2022 Oct 16
+
+if exists('b:current_syntax')
+    finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Options
+syntax match openvpnOption /^[a-z-]\+/
+            \ skipwhite nextgroup=openvpnArgList
+syntax match openvpnArgList /.*$/ transparent contained
+            \ contains=openvpnArgument,openvpnNumber,
+            \ openvpnIPv4Address,openvpnIPv6Address,
+            \ openvpnSignal,openvpnComment
+
+" Arguments
+syntax match openvpnArgument /[^\\"' \t]\+/
+            \ contained contains=openvpnEscape
+syntax region openvpnArgument matchgroup=openvpnQuote
+            \ start=/"/ skip=/\\"/ end=/"/
+            \ oneline contained contains=openvpnEscape
+syntax region openvpnArgument matchgroup=openvpnQuote
+            \ start=/'/ skip=/\\'/ end=/'/
+            \ oneline contained
+syntax match openvpnEscape /\\[\\" \t]/ contained
+
+" Numbers
+syntax match openvpnNumber /\<[1-9][0-9]*\(\.[0-9]\+\)\?\>/ contained
+
+" Signals
+syntax match openvpnSignal /SIG\(HUP\|INT\|TERM\|USER[12]\)/ contained
+
+" IP addresses
+syntax match openvpnIPv4Address /\(\d\{1,3}\.\)\{3}\d\{1,3}/
+            \ contained nextgroup=openvpnSlash
+syntax match openvpnIPv6Address /\([A-F0-9]\{1,4}:\)\{7}\[A-F0-9]\{1,4}/
+            \ contained nextgroup=openvpnSlash
+syntax match openvpnSlash "/" contained
+            \ nextgroup=openvpnIPv4Address,openvpnIPv6Address,openvpnNumber
+
+" Inline files
+syntax region openvpnInline matchgroup=openvpnTag
+            \ start=+^<\z([a-z-]\+\)>+ end=+^</\z1>+
+
+" Comments
+syntax keyword openvpnTodo contained TODO FIXME NOTE XXX
+syntax match openvpnComment /^[;#].*$/ contains=openvpnTodo
+syntax match openvpnComment /\s\+\zs[;#].*$/ contains=openvpnTodo
+
+hi def link openvpnArgument String
+hi def link openvpnComment Comment
+hi def link openvpnEscape SpecialChar
+hi def link openvpnIPv4Address Constant
+hi def link openvpnIPv6Address Constant
+hi def link openvpnNumber Number
+hi def link openvpnOption Keyword
+hi def link openvpnQuote Quote
+hi def link openvpnSignal Special
+hi def link openvpnSlash Delimiter
+hi def link openvpnTag Tag
+hi def link openvpnTodo Todo
+
+let b:current_syntax = 'openvpn'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 9.0 script
 " Maintainer:	Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change:	October 03, 2022
-" Version:	9.0-07
+" Last Change:	October 20, 2022
+" Version:	9.0-08
 " URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
 
@@ -30,14 +30,14 @@ syn match   vimCommand contained	"\<z[-+
 syn keyword vimStdPlugin contained	Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
 
 " vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained	acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmode sj smoothscroll spell spl srr statusline sw sxq tag tal tenc termwintype tgst titleold tpm ttimeoutlen ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
-syn keyword vimOption contained	ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showtabline slm sms spellcapcheck splitbelow ss stl swapfile syn tagbsearch tb term terse thesaurus titlestring tr ttm ttytype uc undoreload vb vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
-syn keyword vimOption contained	akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint kmp lbr listchars lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess shq sm sn spellfile splitkeep ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurusfunc tl ts tty tw udf updatecount vbs viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
-syn keyword vimOption contained	al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname si smartcase so spelllang splitright ssop sts swb syntax tagfunc tbidi termencoding textmode tildeop tm tsl ttybuiltin twk udir updatetime vdir viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
-syn keyword vimOption contained	aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak sidescroll smartindent softtabstop spelloptions spo st su swf ta taglength tbis termguicolors textwidth timeout to tsr ttyfast tws ul ur ve vif vts wcr wi wildmenu winfixheight wiv wrap ws
-syn keyword vimOption contained	allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lnr lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescrolloff smarttab sol spellsuggest spr sta sua switchbuf tabline tagrelative tbs termwinkey tf timeoutlen toolbar tsrfu ttym twsl undodir ut verbose viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
-syn keyword vimOption contained	altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showfulltag signcolumn smc sp spf sps stal suffixes sws tabpagemax tags tc termwinscroll tfu title toolbariconsize ttimeout ttymouse twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
-syn keyword vimOption contained	ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showmatch siso smd spc spk sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tgc titlelen top
+syn keyword vimOption contained	acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispoptions lop ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showfulltag signcolumn smc sp spf sps stal suffixes sws tabpagemax tags tc termwinscroll tfu title toolbariconsize ttimeout ttyscroll tx undolevels vartabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
+syn keyword vimOption contained	ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw lispwords lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showmatch siso smd spc spk sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tgc titlelen top ttimeoutlen ttytype uc undoreload vb vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
+syn keyword vimOption contained	akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint kmp lbr list lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmode sj smoothscroll spell spl srr statusline sw sxq tag tal tenc termwintype tgst titleold tpm ttm tw udf updatecount vbs viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
+syn keyword vimOption contained	al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs listchars ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showtabline slm sms spellcapcheck splitbelow ss stl swapfile syn tagbsearch tb term terse thesaurus titlestring tr tty twk udir updatetime vdir viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
+syn keyword vimOption contained	aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lm lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess shq sm sn spellfile splitkeep ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurusfunc tl ts ttybuiltin tws ul ur ve vif vts wcr wi wildmenu winfixheight wiv wrap ws
+syn keyword vimOption contained	allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lmap luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname si smartcase so spelllang splitright ssop sts swb syntax tagfunc tbidi termencoding textmode tildeop tm tsl ttyfast twsl undodir ut verbose viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
+syn keyword vimOption contained	altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace lnr lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak sidescroll smartindent softtabstop spelloptions spo st su swf ta taglength tbis termguicolors textwidth timeout to tsr ttym twt undofile varsofttabstop verbosefile viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
+syn keyword vimOption contained	ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp loadplugins lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescrolloff smarttab sol spellsuggest spr sta sua switchbuf tabline tagrelative tbs termwinkey tf timeoutlen toolbar tsrfu ttymouse
 
 " vimOptions: These are the turn-off setting variants {{{2
 syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoindent noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp noloadplugins nolz nomagic nomle nomodelineexpr nomore nomousehide noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscf noscrollfocus nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosmoothscroll nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
@@ -67,8 +67,8 @@ syn keyword vimErrSetting contained	bios
 
 " AutoCmd Events {{{2
 syn case ignore
-syn keyword vimAutoEvent contained	BufAdd BufDelete BufFilePost BufHidden BufNew BufRead BufReadPost BufUnload BufWinLeave BufWrite BufWritePost CmdlineChanged CmdlineLeave CmdwinEnter ColorScheme CompleteChanged CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileExplorer FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TextChanged TextChangedI TextChangedP TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinScrolled
-syn keyword vimAutoEvent contained	BufCreate BufEnter BufFilePre BufLeave BufNewFile BufReadCmd BufReadPre BufWinEnter BufWipeout BufWriteCmd BufWritePre CmdlineEnter CmdUndefined CmdwinLeave ColorSchemePre CompleteDone
+syn keyword vimAutoEvent contained	BufAdd BufDelete BufFilePost BufHidden BufNew BufRead BufReadPost BufUnload BufWinLeave BufWrite BufWritePost CmdlineChanged CmdlineLeave CmdwinEnter ColorScheme CompleteChanged CompleteDonePre CursorHoldI CursorMoved CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileExplorer FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TextChanged TextChangedI TextChangedP TextChangedT TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinScrolled
+syn keyword vimAutoEvent contained	BufCreate BufEnter BufFilePre BufLeave BufNewFile BufReadCmd BufReadPre BufWinEnter BufWipeout BufWriteCmd BufWritePre CmdlineEnter CmdUndefined CmdwinLeave ColorSchemePre CompleteDone CursorHold
 
 " Highlight commonly used Groupnames {{{2
 syn keyword vimGroup contained	Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
@@ -79,12 +79,12 @@ syn match vimHLGroup contained	"Conceal"
 syn case match
 
 " Function Names {{{2
-syn keyword vimFuncName contained	abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getcharmod getcmdpos getcursorcharpos getftime getmarklist getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove map mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
-syn keyword vimFuncName contained	acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharpos getcmdscreenpos getcwd getftype getmatches getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime maparg match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
-syn keyword vimFuncName contained	add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharsearch getcmdtype getenv getimstatus getmousepos getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log mapcheck matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
-syn keyword vimFuncName contained	and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufvar getcharstr getcmdwintype getfontname getjumplist getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 maplist matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
-syn keyword vimFuncName contained	append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getchangelist getcmdcompltype getcompletion getfperm getline getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
-syn keyword vimFuncName contained	appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchar getcmdline getcurpos getfsize getloclist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush
+syn keyword vimFuncName contained	abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getcharmod getcmdpos getcursorcharpos getftime getmarklist getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove maparg match matchend matchstrpos mode pathshorten popup_close popup_findecho popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
+syn keyword vimFuncName contained	acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharpos getcmdscreenpos getcwd getftype getmatches getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime mapcheck matchadd matchfuzzy max mzeval perleval popup_create popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
+syn keyword vimFuncName contained	add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharsearch getcmdtype getenv getimstatus getmousepos getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log maplist matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
+syn keyword vimFuncName contained	and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufvar getcharstr getcmdwintype getfontname getjumplist getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
+syn keyword vimFuncName contained	append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getchangelist getcmdcompltype getcompletion getfperm getline getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
+syn keyword vimFuncName contained	appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchar getcmdline getcurpos getfsize getloclist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush map
 
 "--- syntax here and above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1
@@ -649,7 +649,9 @@ syn match	vimCtrlChar	"[--]"
 
 " Beginners - Patterns that involve ^ {{{2
 " =========
+" Adjusted comment pattern - avoid matching string (appears in Vim9 code)
 syn match	vimLineComment	+^[ \t:]*"\("[^"]*"\|[^"]\)*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
+"syn match	vimLineComment	+^[ \t:]*".*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
 syn match	vim9LineComment	+^[ \t:]\+#.*$+	contains=@vimCommentGroup,vimCommentString,vimCommentTitle
 syn match	vimCommentTitle	'"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1	contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup
 syn match	vimContinue	"^\s*\\"