changeset 30085:ebed259f919f

Update runtime files Commit: https://github.com/vim/vim/commit/0daafaa7d99ef500f76b1b12f5fe8153e2fcaea0 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Sep 4 17:45:43 2022 +0100 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Sun, 04 Sep 2022 19:00:05 +0200
parents f4a27718e608
children a5417ca098af
files runtime/colors/blue.vim runtime/colors/darkblue.vim runtime/colors/delek.vim runtime/colors/desert.vim runtime/colors/elflord.vim runtime/colors/evening.vim runtime/colors/habamax.vim runtime/colors/industry.vim runtime/colors/koehler.vim runtime/colors/lunaperche.vim runtime/colors/morning.vim runtime/colors/murphy.vim runtime/colors/pablo.vim runtime/colors/peachpuff.vim runtime/colors/quiet.vim runtime/colors/ron.vim runtime/colors/shine.vim runtime/colors/slate.vim runtime/colors/torte.vim runtime/colors/zellner.vim runtime/doc/Makefile runtime/doc/autocmd.txt runtime/doc/builtin.txt runtime/doc/eval.txt runtime/doc/help.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/userfunc.txt runtime/doc/windows.txt runtime/ftplugin/gdscript.vim runtime/indent/testdir/runtest.vim runtime/indent/testdir/vim.in runtime/indent/testdir/vim.ok runtime/indent/vim.vim runtime/indent/yaml.vim runtime/syntax/gdresource.vim runtime/syntax/gdscript.vim runtime/syntax/sh.vim runtime/syntax/vim.vim
diffstat 39 files changed, 925 insertions(+), 690 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/colors/blue.vim
+++ b/runtime/colors/blue.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:34 MSK
+" Last Updated: Fri 02 Sep 2022 09:41:44 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -57,7 +57,7 @@ hi ToolbarLine guifg=NONE guibg=NONE gui
 hi VertSplit guifg=#008787 guibg=NONE gui=NONE cterm=NONE
 hi Visual guifg=#ffffff guibg=#008787 gui=NONE cterm=NONE
 hi VisualNOS guifg=#008787 guibg=#ffffff gui=NONE cterm=NONE
-hi WarningMsg guifg=#d70000 guibg=NONE gui=NONE cterm=NONE
+hi WarningMsg guifg=#d787d7 guibg=NONE gui=NONE cterm=NONE
 hi WildMenu guifg=#000087 guibg=#ffd700 gui=NONE cterm=NONE
 hi debugBreakpoint guifg=#00ff00 guibg=#000087 gui=reverse cterm=reverse
 hi debugPC guifg=#5fffff guibg=#000087 gui=reverse cterm=reverse
@@ -120,6 +120,8 @@ hi! link Structure Type
 hi! link Tag Special
 hi! link Typedef Type
 hi! link Terminal Normal
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
 hi DiffChange guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
 hi DiffText guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
@@ -165,7 +167,7 @@ if s:t_Co >= 256
   hi VertSplit ctermfg=30 ctermbg=NONE cterm=NONE
   hi Visual ctermfg=231 ctermbg=30 cterm=NONE
   hi VisualNOS ctermfg=30 ctermbg=231 cterm=NONE
-  hi WarningMsg ctermfg=160 ctermbg=NONE cterm=NONE
+  hi WarningMsg ctermfg=176 ctermbg=NONE cterm=NONE
   hi WildMenu ctermfg=18 ctermbg=220 cterm=NONE
   hi debugBreakpoint ctermfg=46 ctermbg=18 cterm=reverse
   hi debugPC ctermfg=87 ctermbg=18 cterm=reverse
@@ -228,6 +230,8 @@ if s:t_Co >= 256
   hi! link Tag Special
   hi! link Typedef Type
   hi! link Terminal Normal
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
   hi DiffChange ctermfg=231 ctermbg=67 cterm=NONE
   hi DiffText ctermfg=16 ctermbg=251 cterm=NONE
@@ -276,7 +280,7 @@ if s:t_Co >= 16
   hi VertSplit ctermfg=darkcyan ctermbg=NONE cterm=NONE
   hi Visual ctermfg=white ctermbg=darkcyan cterm=NONE
   hi VisualNOS ctermfg=darkcyan ctermbg=white cterm=NONE
-  hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
+  hi WarningMsg ctermfg=magenta ctermbg=NONE cterm=NONE
   hi WildMenu ctermfg=darkblue ctermbg=yellow cterm=NONE
   hi debugBreakpoint ctermfg=green ctermbg=darkblue cterm=reverse
   hi debugPC ctermfg=cyan ctermbg=darkblue cterm=reverse
@@ -339,6 +343,8 @@ if s:t_Co >= 16
   hi! link Tag Special
   hi! link Typedef Type
   hi! link Terminal Normal
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
   hi DiffChange ctermfg=white ctermbg=blue cterm=NONE
   hi DiffText ctermfg=black ctermbg=grey cterm=NONE
@@ -449,6 +455,8 @@ if s:t_Co >= 8
   hi! link Tag Special
   hi! link Typedef Type
   hi! link Terminal Normal
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
   hi DiffChange ctermfg=white ctermbg=darkblue cterm=NONE
   hi DiffText ctermfg=black ctermbg=grey cterm=NONE
--- a/runtime/colors/darkblue.vim
+++ b/runtime/colors/darkblue.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original author Bohdan Vlasyuk <bohdan@vstu.edu.ua>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:35 MSK
+" Last Updated: Fri 02 Sep 2022 09:40:36 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -65,6 +65,8 @@ hi! link diffCommon WarningMsg
 hi! link diffBDiffer WarningMsg
 hi! link lCursor Cursor
 hi! link CurSearch Search
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#c0c0c0 guibg=#000040 gui=NONE cterm=NONE
 hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
 hi ColorColumn guifg=#c0c0c0 guibg=#8b0000 gui=NONE cterm=NONE
@@ -171,6 +173,8 @@ if s:t_Co >= 256
   hi! link diffBDiffer WarningMsg
   hi! link lCursor Cursor
   hi! link CurSearch Search
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=252 ctermbg=17 cterm=NONE
   hi Conceal ctermfg=NONE ctermbg=NONE cterm=NONE
   hi ColorColumn ctermfg=252 ctermbg=88 cterm=NONE
--- a/runtime/colors/delek.vim
+++ b/runtime/colors/delek.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer David Schweikert <david@schweikert.ch>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:36 MSK
+" Last Updated: Sun 04 Sep 2022 09:31:26 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -25,6 +25,8 @@ hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
 hi! link ErrorMsg Error
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
 hi EndOfBuffer guifg=#bcbcbc guibg=NONE gui=NONE cterm=NONE
 hi StatusLine guifg=#ffff00 guibg=#00008b gui=bold cterm=bold
@@ -57,7 +59,7 @@ hi Error guifg=#ff0000 guibg=#ffffff gui
 hi WarningMsg guifg=#cd00cd guibg=#ffffff gui=NONE cterm=NONE
 hi MoreMsg guifg=#000000 guibg=#ffffff gui=bold cterm=bold
 hi ModeMsg guifg=#000000 guibg=#ffffff gui=bold cterm=bold
-hi Question guifg=#00cd00 guibg=NONE gui=bold cterm=bold
+hi Question guifg=#008700 guibg=NONE gui=bold cterm=bold
 hi Todo guifg=#000000 guibg=#ffff00 gui=NONE cterm=NONE
 hi MatchParen guifg=#ffffff guibg=#ff1493 gui=NONE cterm=NONE
 hi Search guifg=#ffffff guibg=#cd00cd gui=NONE cterm=NONE
@@ -97,6 +99,8 @@ if s:t_Co >= 256
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
   hi! link ErrorMsg Error
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=16 ctermbg=231 cterm=NONE
   hi EndOfBuffer ctermfg=250 ctermbg=NONE cterm=NONE
   hi StatusLine ctermfg=226 ctermbg=18 cterm=bold
@@ -129,7 +133,7 @@ if s:t_Co >= 256
   hi WarningMsg ctermfg=164 ctermbg=231 cterm=NONE
   hi MoreMsg ctermfg=16 ctermbg=231 cterm=bold
   hi ModeMsg ctermfg=16 ctermbg=231 cterm=bold
-  hi Question ctermfg=40 ctermbg=NONE cterm=bold
+  hi Question ctermfg=28 ctermbg=NONE cterm=bold
   hi Todo ctermfg=16 ctermbg=226 cterm=NONE
   hi MatchParen ctermfg=231 ctermbg=198 cterm=NONE
   hi Search ctermfg=231 ctermbg=164 cterm=NONE
--- a/runtime/colors/desert.vim
+++ b/runtime/colors/desert.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Hans Fugal <hans@fugal.net>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:37 MSK
+" Last Updated: Fri 02 Sep 2022 09:39:21 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -25,6 +25,8 @@ hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
 hi! link EndOfBuffer NonText
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#ffffff guibg=#333333 gui=NONE cterm=NONE
 hi StatusLine guifg=#333333 guibg=#c2bfa5 gui=NONE cterm=NONE
 hi StatusLineNC guifg=#7f7f8c guibg=#c2bfa5 gui=NONE cterm=NONE
@@ -97,6 +99,8 @@ if s:t_Co >= 256
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
   hi! link EndOfBuffer NonText
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=231 ctermbg=236 cterm=NONE
   hi StatusLine ctermfg=236 ctermbg=144 cterm=NONE
   hi StatusLineNC ctermfg=242 ctermbg=144 cterm=NONE
--- a/runtime/colors/elflord.vim
+++ b/runtime/colors/elflord.vim
@@ -3,7 +3,7 @@
 " Maintainer:   original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:37 MSK
+" Last Updated: Fri 02 Sep 2022 09:44:22 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -43,6 +43,8 @@ hi! link lCursor Cursor
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/evening.vim
+++ b/runtime/colors/evening.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:38 MSK
+" Last Updated: Sun 04 Sep 2022 09:48:34 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -16,7 +16,7 @@ let g:colors_name = 'evening'
 let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
-  let g:terminal_ansi_colors = ['#000000', '#ffa500', '#2e8b57', '#ffff00', '#006faf', '#8b008b', '#008b8b', '#bebebe', '#4d4d4d', '#ff5f5f', '#00ff00', '#ffff60', '#0087ff', '#ff80ff', '#00ffff', '#ffffff']
+  let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0087ff', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
 endif
 hi! link VertSplit StatusLineNC
 hi! link StatusLineTerm StatusLine
@@ -64,6 +64,8 @@ hi! link String Constant
 hi! link Structure Type
 hi! link Tag Special
 hi! link Typedef Type
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#ffffff guibg=#333333 gui=NONE cterm=NONE
 hi ColorColumn guifg=NONE guibg=#8b0000 gui=NONE cterm=NONE
 hi CursorLine guifg=NONE guibg=#666666 gui=NONE cterm=NONE
@@ -98,7 +100,7 @@ hi ToolbarButton guifg=NONE guibg=#99999
 hi ToolbarLine guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
 hi Visual guifg=#ffffff guibg=#999999 gui=NONE cterm=NONE
 hi VisualNOS guifg=NONE guibg=NONE gui=bold,underline ctermfg=NONE ctermbg=NONE cterm=bold,underline
-hi WarningMsg guifg=#8b0000 guibg=NONE gui=NONE cterm=NONE
+hi WarningMsg guifg=#ff0000 guibg=NONE gui=NONE cterm=NONE
 hi WildMenu guifg=#000000 guibg=#ffff00 gui=bold cterm=bold
 hi debugBreakpoint guifg=#00008b guibg=#ff0000 gui=NONE cterm=NONE
 hi debugPC guifg=#00008b guibg=#0000ff gui=NONE cterm=NONE
@@ -170,6 +172,8 @@ if s:t_Co >= 256
   hi! link Structure Type
   hi! link Tag Special
   hi! link Typedef Type
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=231 ctermbg=236 cterm=NONE
   hi ColorColumn ctermfg=NONE ctermbg=88 cterm=NONE
   hi CursorLine ctermfg=NONE ctermbg=241 cterm=NONE
@@ -204,7 +208,7 @@ if s:t_Co >= 256
   hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
   hi Visual ctermfg=231 ctermbg=246 cterm=NONE
   hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=bold,underline
-  hi WarningMsg ctermfg=88 ctermbg=NONE cterm=NONE
+  hi WarningMsg ctermfg=196 ctermbg=NONE cterm=NONE
   hi WildMenu ctermfg=16 ctermbg=226 cterm=bold
   hi debugBreakpoint ctermfg=18 ctermbg=196 cterm=NONE
   hi debugPC ctermfg=18 ctermbg=21 cterm=NONE
@@ -279,6 +283,8 @@ if s:t_Co >= 16
   hi! link Structure Type
   hi! link Tag Special
   hi! link Typedef Type
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=white ctermbg=black cterm=NONE
   hi ColorColumn ctermfg=white ctermbg=darkred cterm=NONE
   hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline
@@ -313,7 +319,7 @@ if s:t_Co >= 16
   hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE
   hi Visual ctermfg=white ctermbg=darkgray cterm=NONE
   hi VisualNOS ctermfg=NONE ctermbg=NONE cterm=bold,underline
-  hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=NONE
+  hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
   hi WildMenu ctermfg=black ctermbg=darkyellow cterm=bold
   hi debugBreakpoint ctermfg=darkblue ctermbg=red cterm=NONE
   hi debugPC ctermfg=darkblue ctermbg=blue cterm=NONE
@@ -494,13 +500,26 @@ endif
 " Color: grey30        #4d4d4d           239               darkgray
 " Color: grey40        #666666           241               darkgray
 " Color: grey60        #999999           246               darkgray
-" Color: xtermblue     #0087ff           33                blue
-" Color: xtermdarkblue #006faf           25                darkblue
-" Color: xtermred      #ff5f5f           203               red
 " Color: comment       #80a0ff           111               lightblue
 " Color: darkred       #8b0000           88                darkred
-" Term colors: black orange seagreen yellow xtermdarkblue darkmagenta darkcyan grey
-" Term colors: grey30 xtermred green lightyellow xtermblue magenta cyan white
+" Color: x_black       #000000           16                black
+" Color: x_darkred     #cd0000           160               darkred
+" Color: x_darkgreen   #00cd00           40                darkgreen
+" Color: x_darkyellow  #cdcd00           184               darkyellow
+" Color: x_darkblue_m  #0087ff           33                darkblue
+" Color: x_darkmagenta #cd00cd           164               darkmagenta
+" Color: x_darkcyan    #00cdcd           44                darkcyan
+" Color: x_gray        #e5e5e5           254               gray
+" Color: x_darkgray    #7f7f7f           244               darkgray
+" Color: x_red         #ff0000           196               red
+" Color: x_green       #00ff00           46                green
+" Color: x_yellow      #ffff00           226               yellow
+" Color: x_blue        #5c5cff           63                blue
+" Color: x_magenta     #ff00ff           201               magenta
+" Color: x_cyan        #00ffff           51                cyan
+" Color: x_white       #ffffff           231               white
+" Term colors: x_black x_darkred x_darkgreen x_darkyellow x_darkblue_m x_darkmagenta x_darkcyan x_gray
+" Term colors: x_darkgray x_red x_green x_yellow x_blue x_magenta x_cyan x_white
 " Color: bgDiffA     #5F875F        65             darkgreen
 " Color: bgDiffC     #5F87AF        67             blue
 " Color: bgDiffD     #AF5FAF        133            magenta
--- a/runtime/colors/habamax.vim
+++ b/runtime/colors/habamax.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Maxim Kim <habamax@gmail.com>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:38 MSK
+" Last Updated: Fri 02 Sep 2022 09:45:11 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -21,6 +21,8 @@ endif
 hi! link Terminal Normal
 hi! link StatuslineTerm Statusline
 hi! link StatuslineTermNC StatuslineNC
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi! link javaScriptFunction Statement
 hi! link javaScriptIdentifier Statement
 hi! link sqlKeyword Statement
@@ -142,6 +144,8 @@ if s:t_Co >= 256
   hi! link Terminal Normal
   hi! link StatuslineTerm Statusline
   hi! link StatuslineTermNC StatuslineNC
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi! link javaScriptFunction Statement
   hi! link javaScriptIdentifier Statement
   hi! link sqlKeyword Statement
--- a/runtime/colors/industry.vim
+++ b/runtime/colors/industry.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Shian Lee.
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:39 MSK
+" Last Updated: Sun 04 Sep 2022 09:50:04 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -51,7 +51,7 @@ hi Underlined guifg=#87afff guibg=NONE g
 hi Error guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
 hi ErrorMsg guifg=#ffffff guibg=#ff0000 gui=NONE cterm=NONE
 hi ModeMsg guifg=#ffffff guibg=NONE gui=bold cterm=bold
-hi WarningMsg guifg=#870000 guibg=NONE gui=bold cterm=bold
+hi WarningMsg guifg=#ff0000 guibg=NONE gui=bold cterm=bold
 hi MoreMsg guifg=#5fd75f guibg=NONE gui=bold cterm=bold
 hi Question guifg=#00ff00 guibg=NONE gui=bold cterm=bold
 hi Todo guifg=#005fff guibg=#ffff00 gui=NONE cterm=NONE
@@ -84,6 +84,8 @@ hi! link LineNrBelow LineNr
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi DiffAdd guifg=#ffffff guibg=#5f875f gui=NONE cterm=NONE
 hi DiffChange guifg=#ffffff guibg=#5f87af gui=NONE cterm=NONE
 hi DiffText guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
@@ -123,7 +125,7 @@ if s:t_Co >= 256
   hi Error ctermfg=231 ctermbg=196 cterm=NONE
   hi ErrorMsg ctermfg=231 ctermbg=196 cterm=NONE
   hi ModeMsg ctermfg=231 ctermbg=NONE cterm=bold
-  hi WarningMsg ctermfg=88 ctermbg=NONE cterm=bold
+  hi WarningMsg ctermfg=196 ctermbg=NONE cterm=bold
   hi MoreMsg ctermfg=77 ctermbg=NONE cterm=bold
   hi Question ctermfg=46 ctermbg=NONE cterm=bold
   hi Todo ctermfg=27 ctermbg=226 cterm=NONE
@@ -156,6 +158,8 @@ if s:t_Co >= 256
   hi! link CurSearch Search
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi DiffAdd ctermfg=231 ctermbg=65 cterm=NONE
   hi DiffChange ctermfg=231 ctermbg=67 cterm=NONE
   hi DiffText ctermfg=16 ctermbg=251 cterm=NONE
@@ -198,7 +202,7 @@ if s:t_Co >= 16
   hi Error ctermfg=white ctermbg=red cterm=NONE
   hi ErrorMsg ctermfg=white ctermbg=red cterm=NONE
   hi ModeMsg ctermfg=white ctermbg=NONE cterm=bold
-  hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=bold
+  hi WarningMsg ctermfg=red ctermbg=NONE cterm=bold
   hi MoreMsg ctermfg=darkgreen ctermbg=NONE cterm=bold
   hi Question ctermfg=green ctermbg=NONE cterm=bold
   hi Todo ctermfg=blue ctermbg=yellow cterm=NONE
@@ -231,6 +235,8 @@ if s:t_Co >= 16
   hi! link CurSearch Search
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi DiffAdd ctermfg=white ctermbg=darkgreen cterm=NONE
   hi DiffChange ctermfg=white ctermbg=blue cterm=NONE
   hi DiffText ctermfg=black ctermbg=grey cterm=NONE
--- a/runtime/colors/koehler.vim
+++ b/runtime/colors/koehler.vim
@@ -3,7 +3,7 @@
 " Maintainer:   original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:39 MSK
+" Last Updated: Fri 02 Sep 2022 09:23:56 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -49,6 +49,8 @@ hi! link lCursor Cursor
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/lunaperche.vim
+++ b/runtime/colors/lunaperche.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Maxim Kim <habamax@gmail.com>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Vim License (see `:help license`)
-" Last Updated: Tue 23 Aug 2022 16:50:40 MSK
+" Last Updated: Sat 03 Sep 2022 14:31:51 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -81,18 +81,31 @@ hi! link shOption Normal
 hi! link shCommandSub Normal
 hi! link shDerefPattern shQuote
 hi! link shDerefOp Special
+hi! link phpStorageClass Statement
+hi! link phpStructure Statement
+hi! link phpInclude Statement
+hi! link phpDefine Statement
+hi! link phpSpecialFunction Normal
+hi! link phpParent Normal
+hi! link phpComparison Normal
+hi! link phpOperator Normal
+hi! link phpVarSelector Special
+hi! link phpMemberSelector Special
+hi! link phpDocCustomTags phpDocTags
 hi! link Terminal Normal
 hi! link StatuslineTerm Statusline
 hi! link StatuslineTermNC StatuslineNC
 hi! link LineNrAbove LineNr
 hi! link LineNrBelow LineNr
+hi! link MessageWindow PMenu
+hi! link PopupNotification Todo
 if &background ==# 'dark'
   if (has('termguicolors') && &termguicolors) || has('gui_running')
     let g:terminal_ansi_colors = ['#000000', '#af5f5f', '#5faf5f', '#af875f', '#5f87af', '#d787af', '#5fafaf', '#c6c6c6', '#767676', '#ff5f5f', '#5fd75f', '#ffd787', '#87afd7', '#ffafd7', '#5fd7d7', '#ffffff']
   endif
   hi Normal guifg=#c6c6c6 guibg=#000000 gui=NONE cterm=NONE
-  hi Statusline guifg=#000000 guibg=#c6c6c6 gui=bold cterm=bold
-  hi StatuslineNC guifg=#000000 guibg=#767676 gui=NONE cterm=NONE
+  hi Statusline guifg=#c6c6c6 guibg=#000000 gui=bold,reverse cterm=bold,reverse
+  hi StatuslineNC guifg=#767676 guibg=#000000 gui=reverse cterm=reverse
   hi VertSplit guifg=#767676 guibg=#767676 gui=NONE cterm=NONE
   hi TabLine guifg=#000000 guibg=#c6c6c6 gui=NONE cterm=NONE
   hi TabLineFill guifg=NONE guibg=#767676 gui=NONE cterm=NONE
@@ -107,7 +120,7 @@ if &background ==# 'dark'
   hi EndOfBuffer guifg=#585858 guibg=NONE gui=NONE cterm=NONE
   hi SpecialKey guifg=#585858 guibg=NONE gui=NONE cterm=NONE
   hi Pmenu guifg=NONE guibg=#1c1c1c gui=NONE cterm=NONE
-  hi PmenuSel guifg=NONE guibg=#005f00 gui=NONE cterm=NONE
+  hi PmenuSel guifg=NONE guibg=#444444 gui=NONE cterm=NONE
   hi PmenuThumb guifg=NONE guibg=#c6c6c6 gui=NONE cterm=NONE
   hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
   hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -169,7 +182,6 @@ if &background ==# 'dark'
   hi dirFilterMenuBookmarkPath guifg=#878787 guibg=NONE gui=NONE cterm=NONE
   hi dirFilterMenuHistoryPath guifg=#878787 guibg=NONE gui=NONE cterm=NONE
   hi FilterMenuLineNr guifg=#878787 guibg=NONE gui=NONE cterm=NONE
-  hi CocMenuSel guifg=NONE guibg=#005f00 gui=NONE cterm=NONE
   hi CocSearch guifg=#ffd787 guibg=NONE gui=NONE cterm=NONE
 else
   " Light background
@@ -193,7 +205,7 @@ else
   hi EndOfBuffer guifg=#9e9e9e guibg=NONE gui=NONE cterm=NONE
   hi SpecialKey guifg=#9e9e9e guibg=NONE gui=NONE cterm=NONE
   hi Pmenu guifg=NONE guibg=#eeeeee gui=NONE cterm=NONE
-  hi PmenuSel guifg=NONE guibg=#afd7af gui=NONE cterm=NONE
+  hi PmenuSel guifg=NONE guibg=#c6c6c6 gui=NONE cterm=NONE
   hi PmenuThumb guifg=NONE guibg=#767676 gui=NONE cterm=NONE
   hi PmenuSbar guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
   hi SignColumn guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -256,7 +268,6 @@ else
   hi dirFilterMenuHistoryPath guifg=#626262 guibg=NONE gui=NONE cterm=NONE
   hi FilterMenuDirectorySubtle guifg=#626262 guibg=NONE gui=NONE cterm=NONE
   hi FilterMenuLineNr guifg=#626262 guibg=NONE gui=NONE cterm=NONE
-  hi CocMenuSel guifg=NONE guibg=#afd7af gui=NONE cterm=NONE
   hi CocSearch guifg=#870000 guibg=NONE gui=NONE cterm=NONE
 endif
 
@@ -329,15 +340,28 @@ if s:t_Co >= 256
   hi! link shCommandSub Normal
   hi! link shDerefPattern shQuote
   hi! link shDerefOp Special
+  hi! link phpStorageClass Statement
+  hi! link phpStructure Statement
+  hi! link phpInclude Statement
+  hi! link phpDefine Statement
+  hi! link phpSpecialFunction Normal
+  hi! link phpParent Normal
+  hi! link phpComparison Normal
+  hi! link phpOperator Normal
+  hi! link phpVarSelector Special
+  hi! link phpMemberSelector Special
+  hi! link phpDocCustomTags phpDocTags
   hi! link Terminal Normal
   hi! link StatuslineTerm Statusline
   hi! link StatuslineTermNC StatuslineNC
   hi! link LineNrAbove LineNr
   hi! link LineNrBelow LineNr
+  hi! link MessageWindow PMenu
+  hi! link PopupNotification Todo
   if &background ==# 'dark'
     hi Normal ctermfg=251 ctermbg=16 cterm=NONE
-    hi Statusline ctermfg=16 ctermbg=251 cterm=bold
-    hi StatuslineNC ctermfg=16 ctermbg=243 cterm=NONE
+    hi Statusline ctermfg=251 ctermbg=16 cterm=bold,reverse
+    hi StatuslineNC ctermfg=243 ctermbg=16 cterm=reverse
     hi VertSplit ctermfg=243 ctermbg=243 cterm=NONE
     hi TabLine ctermfg=16 ctermbg=251 cterm=NONE
     hi TabLineFill ctermfg=NONE ctermbg=243 cterm=NONE
@@ -352,7 +376,7 @@ if s:t_Co >= 256
     hi EndOfBuffer ctermfg=240 ctermbg=NONE cterm=NONE
     hi SpecialKey ctermfg=240 ctermbg=NONE cterm=NONE
     hi Pmenu ctermfg=NONE ctermbg=234 cterm=NONE
-    hi PmenuSel ctermfg=NONE ctermbg=22 cterm=NONE
+    hi PmenuSel ctermfg=NONE ctermbg=238 cterm=NONE
     hi PmenuThumb ctermfg=NONE ctermbg=251 cterm=NONE
     hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
     hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -412,7 +436,6 @@ if s:t_Co >= 256
     hi dirFilterMenuBookmarkPath ctermfg=102 ctermbg=NONE cterm=NONE
     hi dirFilterMenuHistoryPath ctermfg=102 ctermbg=NONE cterm=NONE
     hi FilterMenuLineNr ctermfg=102 ctermbg=NONE cterm=NONE
-    hi CocMenuSel ctermfg=NONE ctermbg=22 cterm=NONE
     hi CocSearch ctermfg=222 ctermbg=NONE cterm=NONE
   else
     " Light background
@@ -433,7 +456,7 @@ if s:t_Co >= 256
     hi EndOfBuffer ctermfg=247 ctermbg=NONE cterm=NONE
     hi SpecialKey ctermfg=247 ctermbg=NONE cterm=NONE
     hi Pmenu ctermfg=NONE ctermbg=255 cterm=NONE
-    hi PmenuSel ctermfg=NONE ctermbg=151 cterm=NONE
+    hi PmenuSel ctermfg=NONE ctermbg=251 cterm=NONE
     hi PmenuThumb ctermfg=NONE ctermbg=243 cterm=NONE
     hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
     hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -494,7 +517,6 @@ if s:t_Co >= 256
     hi dirFilterMenuHistoryPath ctermfg=241 ctermbg=NONE cterm=NONE
     hi FilterMenuDirectorySubtle ctermfg=241 ctermbg=NONE cterm=NONE
     hi FilterMenuLineNr ctermfg=241 ctermbg=NONE cterm=NONE
-    hi CocMenuSel ctermfg=NONE ctermbg=151 cterm=NONE
     hi CocSearch ctermfg=88 ctermbg=NONE cterm=NONE
   endif
   unlet s:t_Co
@@ -504,8 +526,8 @@ endif
 if s:t_Co >= 16
   if &background ==# 'dark'
     hi Normal ctermfg=grey ctermbg=black cterm=NONE
-    hi Statusline ctermfg=black ctermbg=grey cterm=bold
-    hi StatuslineNC ctermfg=black ctermbg=darkgrey cterm=NONE
+    hi Statusline ctermfg=grey ctermbg=black cterm=bold,reverse
+    hi StatuslineNC ctermfg=darkgrey ctermbg=black cterm=reverse
     hi VertSplit ctermfg=darkgrey ctermbg=darkgrey cterm=NONE
     hi TabLine ctermfg=black ctermbg=grey cterm=NONE
     hi TabLineFill ctermfg=NONE ctermbg=darkgrey cterm=NONE
@@ -520,7 +542,7 @@ if s:t_Co >= 16
     hi EndOfBuffer ctermfg=grey ctermbg=NONE cterm=NONE
     hi SpecialKey ctermfg=grey ctermbg=NONE cterm=NONE
     hi Pmenu ctermfg=black ctermbg=darkgrey cterm=NONE
-    hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
+    hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
     hi PmenuThumb ctermfg=NONE ctermbg=grey cterm=NONE
     hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
     hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -567,6 +589,20 @@ if s:t_Co >= 16
     hi diffAdded ctermfg=green ctermbg=NONE cterm=NONE
     hi diffRemoved ctermfg=darkred ctermbg=NONE cterm=NONE
     hi diffSubname ctermfg=magenta ctermbg=NONE cterm=NONE
+    hi dirType ctermfg=darkmagenta ctermbg=NONE cterm=NONE
+    hi dirPermissionUser ctermfg=darkgreen ctermbg=NONE cterm=NONE
+    hi dirPermissionGroup ctermfg=darkyellow ctermbg=NONE cterm=NONE
+    hi dirPermissionOther ctermfg=darkcyan ctermbg=NONE cterm=NONE
+    hi dirOwner ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi dirGroup ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi dirTime ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi dirSize ctermfg=yellow ctermbg=NONE cterm=NONE
+    hi dirSizeMod ctermfg=darkmagenta ctermbg=NONE cterm=NONE
+    hi FilterMenuDirectorySubtle ctermfg=grey ctermbg=NONE cterm=NONE
+    hi dirFilterMenuBookmarkPath ctermfg=grey ctermbg=NONE cterm=NONE
+    hi dirFilterMenuHistoryPath ctermfg=grey ctermbg=NONE cterm=NONE
+    hi FilterMenuLineNr ctermfg=grey ctermbg=NONE cterm=NONE
+    hi CocSearch ctermfg=yellow ctermbg=NONE cterm=NONE
   else
     " Light background
     hi Normal ctermfg=black ctermbg=white cterm=NONE
@@ -586,7 +622,7 @@ if s:t_Co >= 16
     hi EndOfBuffer ctermfg=darkgrey ctermbg=NONE cterm=NONE
     hi SpecialKey ctermfg=darkgrey ctermbg=NONE cterm=NONE
     hi Pmenu ctermfg=black ctermbg=grey cterm=NONE
-    hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
+    hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
     hi PmenuThumb ctermfg=NONE ctermbg=darkgrey cterm=NONE
     hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
     hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -633,6 +669,21 @@ if s:t_Co >= 16
     hi diffAdded ctermfg=darkgreen ctermbg=NONE cterm=NONE
     hi diffRemoved ctermfg=red ctermbg=NONE cterm=NONE
     hi diffSubname ctermfg=darkmagenta ctermbg=NONE cterm=NONE
+    hi dirType ctermfg=darkcyan ctermbg=NONE cterm=NONE
+    hi dirPermissionUser ctermfg=darkyellow ctermbg=NONE cterm=NONE
+    hi dirPermissionGroup ctermfg=darkgreen ctermbg=NONE cterm=NONE
+    hi dirPermissionOther ctermfg=darkmagenta ctermbg=NONE cterm=NONE
+    hi dirOwner ctermfg=grey ctermbg=NONE cterm=NONE
+    hi dirGroup ctermfg=grey ctermbg=NONE cterm=NONE
+    hi dirTime ctermfg=grey ctermbg=NONE cterm=NONE
+    hi dirSize ctermfg=darkred ctermbg=NONE cterm=NONE
+    hi dirSizeMod ctermfg=darkcyan ctermbg=NONE cterm=NONE
+    hi dirLink ctermfg=darkgreen ctermbg=NONE cterm=bold
+    hi dirFilterMenuBookmarkPath ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi dirFilterMenuHistoryPath ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi FilterMenuDirectorySubtle ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi FilterMenuLineNr ctermfg=darkgrey ctermbg=NONE cterm=NONE
+    hi CocSearch ctermfg=darkred ctermbg=NONE cterm=NONE
   endif
   unlet s:t_Co
   finish
@@ -659,7 +710,7 @@ if s:t_Co >= 8
     hi Pmenu ctermfg=black ctermbg=grey cterm=NONE
     hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
     hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
-    hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
+    hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
     hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
     hi Error ctermfg=grey ctermbg=darkred cterm=NONE
     hi ErrorMsg ctermfg=grey ctermbg=darkred cterm=NONE
@@ -688,7 +739,7 @@ if s:t_Co >= 8
     hi Comment ctermfg=darkblue ctermbg=NONE cterm=NONE
     hi Constant ctermfg=darkred ctermbg=NONE cterm=NONE
     hi Identifier ctermfg=NONE ctermbg=NONE cterm=NONE
-    hi Statement ctermfg=black ctermbg=NONE cterm=bold
+    hi Statement ctermfg=grey ctermbg=NONE cterm=bold
     hi Type ctermfg=darkgreen ctermbg=NONE cterm=bold
     hi PreProc ctermfg=darkyellow ctermbg=NONE cterm=NONE
     hi Special ctermfg=darkcyan ctermbg=NONE cterm=NONE
@@ -722,7 +773,7 @@ if s:t_Co >= 8
     hi Pmenu ctermfg=grey ctermbg=black cterm=NONE
     hi PmenuThumb ctermfg=NONE ctermbg=darkgreen cterm=NONE
     hi PmenuSbar ctermfg=NONE ctermbg=NONE cterm=NONE
-    hi PmenuSel ctermfg=black ctermbg=darkgreen cterm=NONE
+    hi PmenuSel ctermfg=black ctermbg=darkcyan cterm=NONE
     hi SignColumn ctermfg=NONE ctermbg=NONE cterm=NONE
     hi Error ctermfg=grey ctermbg=darkred cterm=NONE
     hi ErrorMsg ctermfg=grey ctermbg=darkred cterm=NONE
@@ -864,7 +915,7 @@ endif
 " Color: colorlC                 #FF5FFF        207            magenta
 " Color: colorV                  #005F87        24             darkblue
 " Color: colorMP                 #C5E7C5        30             darkcyan
-" Color: colorPMenuSel           #005F00        22             darkgreen
+" Color: colorPMenuSel           #444444        238            darkcyan
 " Color: colorDim                #878787        102            grey
 " Color: diffAdd                 #AF87AF        139            darkmagenta
 " Color: diffDelete              #D78787        174            darkred
@@ -898,7 +949,7 @@ endif
 " Color: colorlC                 #FF00FF        201            magenta
 " Color: colorV                  #5F87AF        67             darkblue
 " Color: colorMP                 #C5E7C5        30             darkcyan
-" Color: colorPMenuSel           #AFD7AF        151            darkgreen
+" Color: colorPMenuSel           #C6C6C6        251            darkcyan
 " Color: colorDim                #626262        241            darkgrey
 " Color: diffAdd                 #D7AFD7        182            darkmagenta
 " Color: diffDelete              #870000        88             darkred
--- a/runtime/colors/morning.vim
+++ b/runtime/colors/morning.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Bram Moolenaar <Bram@vim.org>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:41 MSK
+" Last Updated: Fri 02 Sep 2022 09:46:24 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -26,6 +26,8 @@ hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
 hi! link StatuslineTerm Statusline
 hi! link StatuslineTermNC StatuslineNC
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#000000 guibg=#e4e4e4 gui=NONE cterm=NONE
 hi EndOfBuffer guifg=#0000ff guibg=#cccccc gui=bold cterm=bold
 hi Folded guifg=#00008b guibg=#d3d3d3 gui=NONE cterm=NONE
@@ -96,6 +98,8 @@ if s:t_Co >= 256
   hi! link CursorLineSign CursorLine
   hi! link StatuslineTerm Statusline
   hi! link StatuslineTermNC StatuslineNC
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=16 ctermbg=254 cterm=NONE
   hi EndOfBuffer ctermfg=21 ctermbg=252 cterm=bold
   hi Folded ctermfg=18 ctermbg=252 cterm=NONE
--- a/runtime/colors/murphy.vim
+++ b/runtime/colors/murphy.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Ron Aaron <ron@ronware.org>.
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:41 MSK
+" Last Updated: Fri 02 Sep 2022 09:47:20 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -26,6 +26,8 @@ hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
 hi! link StatusLineTerm StatusLine
 hi! link StatusLineTermNC StatusLineNC
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#87ff87 guibg=#000000 gui=NONE cterm=NONE
 hi EndOfBuffer guifg=#0000ff guibg=#000000 gui=NONE cterm=NONE
 hi StatusLine guifg=#ffffff guibg=#00008b gui=NONE cterm=NONE
@@ -96,6 +98,8 @@ if s:t_Co >= 256
   hi! link CursorLineSign CursorLine
   hi! link StatusLineTerm StatusLine
   hi! link StatusLineTermNC StatusLineNC
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=120 ctermbg=16 cterm=NONE
   hi EndOfBuffer ctermfg=21 ctermbg=16 cterm=NONE
   hi StatusLine ctermfg=231 ctermbg=18 cterm=NONE
--- a/runtime/colors/pablo.vim
+++ b/runtime/colors/pablo.vim
@@ -3,7 +3,7 @@
 " Maintainer:   Original maintainerRon Aaron <ron@ronware.org>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:42 MSK
+" Last Updated: Sun 04 Sep 2022 09:53:40 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -17,13 +17,15 @@ let s:t_Co = exists('&t_Co') && !has('gu
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
 endif
-hi Normal guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
 hi! link Terminal Normal
 hi! link StatusLineTerm StatusLine
 hi! link StatusLineTermNC StatusLineNC
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
+hi Normal guifg=#ffffff guibg=#000000 gui=NONE cterm=NONE
 hi Comment guifg=#808080 guibg=NONE gui=NONE cterm=NONE
 hi Constant guifg=#00ffff guibg=NONE gui=NONE cterm=NONE
 hi Identifier guifg=#00c0c0 guibg=NONE gui=NONE cterm=NONE
@@ -88,13 +90,15 @@ hi DiffText guifg=#000000 guibg=#c6c6c6 
 hi DiffDelete guifg=#ffffff guibg=#af5faf gui=NONE cterm=NONE
 
 if s:t_Co >= 256
-  hi Normal ctermfg=231 ctermbg=16 cterm=NONE
   hi! link Terminal Normal
   hi! link StatusLineTerm StatusLine
   hi! link StatusLineTermNC StatusLineNC
   hi! link CurSearch Search
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
+  hi Normal ctermfg=231 ctermbg=16 cterm=NONE
   hi Comment ctermfg=244 ctermbg=NONE cterm=NONE
   hi Constant ctermfg=51 ctermbg=NONE cterm=NONE
   hi Identifier ctermfg=37 ctermbg=NONE cterm=NONE
@@ -117,7 +121,7 @@ if s:t_Co >= 256
   hi NonText ctermfg=63 ctermbg=NONE cterm=bold
   hi EndOfBuffer ctermfg=63 ctermbg=NONE cterm=bold
   hi ErrorMsg ctermfg=231 ctermbg=160 cterm=NONE
-  hi WarningMsg ctermfg=224 ctermbg=NONE cterm=NONE
+  hi WarningMsg ctermfg=196 ctermbg=NONE cterm=NONE
   hi SignColumn ctermfg=51 ctermbg=248 cterm=NONE
   hi ColorColumn ctermfg=NONE ctermbg=239 cterm=NONE
   hi FoldColumn ctermfg=102 ctermbg=236 cterm=NONE
@@ -163,12 +167,6 @@ endif
 
 if s:t_Co >= 16
   hi Normal ctermfg=white ctermbg=black cterm=NONE
-  hi! link Terminal Normal
-  hi! link StatusLineTerm StatusLine
-  hi! link StatusLineTermNC StatusLineNC
-  hi! link CurSearch Search
-  hi! link CursorLineFold CursorLine
-  hi! link CursorLineSign CursorLine
   hi Comment ctermfg=darkgrey ctermbg=NONE cterm=NONE
   hi Constant ctermfg=cyan ctermbg=NONE cterm=NONE
   hi Identifier ctermfg=darkcyan ctermbg=NONE cterm=NONE
@@ -191,7 +189,7 @@ if s:t_Co >= 16
   hi NonText ctermfg=blue ctermbg=NONE cterm=bold
   hi EndOfBuffer ctermfg=blue ctermbg=NONE cterm=bold
   hi ErrorMsg ctermfg=white ctermbg=darkred cterm=NONE
-  hi WarningMsg ctermfg=darkred ctermbg=NONE cterm=NONE
+  hi WarningMsg ctermfg=red ctermbg=NONE cterm=NONE
   hi SignColumn ctermfg=cyan ctermbg=black cterm=NONE
   hi ColorColumn ctermfg=white ctermbg=darkgrey cterm=NONE
   hi FoldColumn ctermfg=NONE ctermbg=NONE cterm=NONE
@@ -405,7 +403,7 @@ endif
 " Color: SpecialKey     #00ffff     81             cyan
 " Color: StatusLineTerm #90ee90     121            darkgreen
 " Color: Title          #ff00ff     225            magenta
-" Color: WarningMsg     #ff0000     224            darkred
+" Color: WarningMsg     #ff0000     196            red
 " Color: ToolbarLine    #7f7f7f     242            darkgrey
 " Color: ToolbarButton  #d3d3d3     254            grey
 " Color: Underlined     #80a0ff     111            darkgreen
--- a/runtime/colors/peachpuff.vim
+++ b/runtime/colors/peachpuff.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:42 MSK
+" Last Updated: Fri 02 Sep 2022 09:50:02 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -24,6 +24,8 @@ hi! link LineNrBelow LineNr
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#000000 guibg=#ffdab9 gui=NONE cterm=NONE
 hi Folded guifg=#000000 guibg=#e3c1a5 gui=NONE cterm=NONE
 hi CursorLine guifg=NONE guibg=#f5c195 gui=NONE cterm=NONE
@@ -94,6 +96,8 @@ if s:t_Co >= 256
   hi! link CurSearch Search
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=16 ctermbg=223 cterm=NONE
   hi Folded ctermfg=16 ctermbg=252 cterm=NONE
   hi CursorLine ctermfg=NONE ctermbg=180 cterm=NONE
--- a/runtime/colors/quiet.vim
+++ b/runtime/colors/quiet.vim
@@ -4,7 +4,7 @@
 " Maintainer:   neutaaaaan <neutaaaaan-gh@protonmail.com>
 " Website:      https://github.com/vim/colorschemes
 " License:      Vim License (see `:help license`)`
-" Last Updated: Tue 23 Aug 2022 16:50:43 MSK
+" Last Updated: Fri 02 Sep 2022 09:55:30 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -16,6 +16,8 @@ let s:t_Co = exists('&t_Co') && !has('gu
 hi! link Terminal Normal
 hi! link StatusLineTerm StatusLine
 hi! link StatusLineTermNC StatusLineNC
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi! link Boolean Constant
 hi! link Character Constant
 hi! link Conditional Statement
--- a/runtime/colors/ron.vim
+++ b/runtime/colors/ron.vim
@@ -3,7 +3,7 @@
 " Maintainer:   original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:45 MSK
+" Last Updated: Fri 02 Sep 2022 09:50:56 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -46,6 +46,8 @@ hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
 hi! link LineNrAbove LineNr
 hi! link LineNrBelow LineNr
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/shine.vim
+++ b/runtime/colors/shine.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer is Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:46 MSK
+" Last Updated: Fri 02 Sep 2022 09:51:42 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -28,6 +28,8 @@ hi! link EndOfBuffer NonText
 hi! link ErrorMsg Error
 hi! link Tag Special
 hi! link Operator Statement
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
 hi Folded guifg=#00008b guibg=#dadada gui=NONE cterm=NONE
 hi CursorLine guifg=NONE guibg=#dadada gui=NONE cterm=NONE
@@ -104,6 +106,8 @@ if s:t_Co >= 256
   hi! link ErrorMsg Error
   hi! link Tag Special
   hi! link Operator Statement
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=16 ctermbg=231 cterm=NONE
   hi Folded ctermfg=18 ctermbg=253 cterm=NONE
   hi CursorLine ctermfg=NONE ctermbg=253 cterm=NONE
--- a/runtime/colors/slate.vim
+++ b/runtime/colors/slate.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Ralph Amissah <ralph@amissah.com>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:46 MSK
+" Last Updated: Fri 02 Sep 2022 09:52:25 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -24,6 +24,8 @@ hi! link LineNrBelow LineNr
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#ffffff guibg=#262626 gui=NONE cterm=NONE
 hi EndOfBuffer guifg=#5f87d7 guibg=NONE gui=NONE cterm=NONE
 hi StatusLine guifg=#000000 guibg=#afaf87 gui=NONE cterm=NONE
@@ -99,6 +101,8 @@ if s:t_Co >= 256
   hi! link CurSearch Search
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=231 ctermbg=235 cterm=NONE
   hi EndOfBuffer ctermfg=68 ctermbg=NONE cterm=NONE
   hi StatusLine ctermfg=16 ctermbg=144 cterm=NONE
--- a/runtime/colors/torte.vim
+++ b/runtime/colors/torte.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Thorsten Maerz <info@netztorte.de>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:47 MSK
+" Last Updated: Fri 02 Sep 2022 09:53:21 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -26,6 +26,8 @@ hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
 hi! link StatusLineTerm StatusLine
 hi! link StatusLineTermNC StatusLineNC
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#cccccc guibg=#000000 gui=NONE cterm=NONE
 hi Comment guifg=#80a0ff guibg=NONE gui=NONE cterm=NONE
 hi Constant guifg=#ffa0a0 guibg=NONE gui=NONE cterm=NONE
@@ -97,6 +99,8 @@ if s:t_Co >= 256
   hi! link CursorLineSign CursorLine
   hi! link StatusLineTerm StatusLine
   hi! link StatusLineTermNC StatusLineNC
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=251 ctermbg=16 cterm=NONE
   hi Comment ctermfg=111 ctermbg=NONE cterm=NONE
   hi Constant ctermfg=217 ctermbg=NONE cterm=NONE
--- a/runtime/colors/zellner.vim
+++ b/runtime/colors/zellner.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue 23 Aug 2022 16:50:48 MSK
+" Last Updated: Fri 02 Sep 2022 09:54:15 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -24,6 +24,8 @@ hi! link LineNrBelow LineNr
 hi! link CurSearch Search
 hi! link CursorLineFold CursorLine
 hi! link CursorLineSign CursorLine
+hi! link MessageWindow Pmenu
+hi! link PopupNotification Todo
 hi Normal guifg=#000000 guibg=#ffffff gui=NONE cterm=NONE
 hi Folded guifg=#00008b guibg=#d3d3d3 gui=NONE cterm=NONE
 hi CursorLine guifg=NONE guibg=#e5e5e5 gui=NONE cterm=NONE
@@ -95,6 +97,8 @@ if s:t_Co >= 256
   hi! link CurSearch Search
   hi! link CursorLineFold CursorLine
   hi! link CursorLineSign CursorLine
+  hi! link MessageWindow Pmenu
+  hi! link PopupNotification Todo
   hi Normal ctermfg=16 ctermbg=231 cterm=NONE
   hi Folded ctermfg=18 ctermbg=252 cterm=NONE
   hi CursorLine ctermfg=NONE ctermbg=254 cterm=NONE
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -115,6 +115,7 @@ DOCS = \
 	todo.txt \
 	uganda.txt \
 	undo.txt \
+	userfunc.txt \
 	usr_01.txt \
 	usr_02.txt \
 	usr_03.txt \
@@ -265,6 +266,7 @@ HTMLS = \
 	todo.html \
 	uganda.html \
 	undo.html \
+	userfunc.html \
 	usr_01.html \
 	usr_02.html \
 	usr_03.html \
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -640,6 +640,8 @@ CmdwinLeave			Before leaving the command
 				|cmdwin-char|
 							*ColorScheme*
 ColorScheme			After loading a color scheme. |:colorscheme|
+				Not triggered if the color scheme is not
+				found.
 				The pattern is matched against the
 				colorscheme name. <afile> can be used for the
 				name of the actual file where this option was
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1671,7 +1671,7 @@ complete_info([{what}])				*complete_inf
 				typed text only, or the last completion after
 				no item is selected when using the <Up> or
 				<Down> keys)
-		   inserted	Inserted string. [NOT IMPLEMENT YET]
+		   inserted	Inserted string. [NOT IMPLEMENTED YET]
 
 							*complete_info_mode*
 		mode values are:
@@ -3038,10 +3038,10 @@ function({name} [, {arglist}] [, {dict}]
 		Funcref.  The extra arguments are appended to the list of
 		arguments.  Example: >
 			func Callback(arg1, arg2, name)
-			...
+			"...
 			let Func = function('Callback', ['one'])
 			let Func2 = function(Func, ['two'])
-			...
+			"...
 			call Func2('name')
 <		Invokes the function as with: >
 			call Callback('one', 'two', 'name')
@@ -3051,22 +3051,23 @@ function({name} [, {arglist}] [, {dict}]
 			function Callback() dict
 			   echo "called for " .. self.name
 			endfunction
-			...
+			"...
 			let context = {"name": "example"}
 			let Func = function('Callback', context)
-			...
+			"...
 			call Func()	" will echo: called for example
 <		The use of function() is not needed when there are no extra
-		arguments, these two are equivalent: >
+		arguments, these two are equivalent, if Callback() is defined
+		as context.Callback(): >
 			let Func = function('Callback', context)
 			let Func = context.Callback
 
 <		The argument list and the Dictionary can be combined: >
 			function Callback(arg1, count) dict
-			...
+			"...
 			let context = {"name": "example"}
 			let Func = function('Callback', ['one'], context)
-			...
+			"...
 			call Func(500)
 <		Invokes the function as with: >
 			call context.Callback('one', 500)
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2629,503 +2629,12 @@ help file: |builtin-functions|.
 5. Defining functions					*user-functions*
 
 New functions can be defined.  These can be called just like builtin
-functions.  The function executes a sequence of Ex commands.  Normal mode
-commands can be executed with the |:normal| command.
-
-This section is about the legacy functions. For the Vim9 functions, which
-execute much faster, support type checking and more, see |vim9.txt|.
-
-The function name must start with an uppercase letter, to avoid confusion with
-builtin functions.  To prevent from using the same name in different scripts
-avoid obvious, short names.  A good habit is to start the function name with
-the name of the script, e.g., "HTMLcolor()".
-
-In legacy script it is also possible to use curly braces, see
-|curly-braces-names|.
-The |autoload| facility is useful to define a function only when it's called.
-
-							*local-function*
-A function local to a legacy script must start with "s:".  A local script
-function can only be called from within the script and from functions, user
-commands and autocommands defined in the script.  It is also possible to call
-the function from a mapping defined in the script, but then |<SID>| must be
-used instead of "s:" when the mapping is expanded outside of the script.
-There are only script-local functions, no buffer-local or window-local
-functions.
-
-In |Vim9| script functions are local to the script by default, prefix "g:" to
-define a global function.
-
-				*:fu* *:function* *E128* *E129* *E123* *E454*
-:fu[nction]		List all functions and their arguments.
-
-:fu[nction] {name}	List function {name}.
-			{name} can also be a |Dictionary| entry that is a
-			|Funcref|: >
-				:function dict.init
-
-:fu[nction] /{pattern}	List functions with a name matching {pattern}.
-			Example that lists all functions ending with "File": >
-				:function /File$
-<
-							*:function-verbose*
-When 'verbose' is non-zero, listing a function will also display where it was
-last defined. Example: >
-
-    :verbose function SetFileTypeSH
-	function SetFileTypeSH(name)
-	    Last set from /usr/share/vim/vim-7.0/filetype.vim
-<
-See |:verbose-cmd| for more information.
-
-						*E124* *E125* *E853* *E884*
-:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
-			Define a new function by the name {name}.  The body of
-			the function follows in the next lines, until the
-			matching |:endfunction|.
-								*E1267*
-			The name must be made of alphanumeric characters and
-			'_', and must start with a capital or "s:" (see
-			above).  Note that using "b:" or "g:" is not allowed.
-			(since patch 7.4.260 E884 is given if the function
-			name has a colon in the name, e.g. for "foo:bar()".
-			Before that patch no error was given).
-
-			{name} can also be a |Dictionary| entry that is a
-			|Funcref|: >
-				:function dict.init(arg)
-<			"dict" must be an existing dictionary.  The entry
-			"init" is added if it didn't exist yet.  Otherwise [!]
-			is required to overwrite an existing function.  The
-			result is a |Funcref| to a numbered function.  The
-			function can only be used with a |Funcref| and will be
-			deleted if there are no more references to it.
-								*E127* *E122*
-			When a function by this name already exists and [!] is
-			not used an error message is given.  There is one
-			exception: When sourcing a script again, a function
-			that was previously defined in that script will be
-			silently replaced.
-			When [!] is used, an existing function is silently
-			replaced.  Unless it is currently being executed, that
-			is an error.
-			NOTE: Use ! wisely.  If used without care it can cause
-			an existing function to be replaced unexpectedly,
-			which is hard to debug.
-			NOTE: In Vim9 script script-local functions cannot be
-			deleted or redefined.
-
-			For the {arguments} see |function-argument|.
-
-					*:func-range* *a:firstline* *a:lastline*
-			When the [range] argument is added, the function is
-			expected to take care of a range itself.  The range is
-			passed as "a:firstline" and "a:lastline".  If [range]
-			is excluded, ":{range}call" will call the function for
-			each line in the range, with the cursor on the start
-			of each line.  See |function-range-example|.
-			The cursor is still moved to the first line of the
-			range, as is the case with all Ex commands.
-								*:func-abort*
-			When the [abort] argument is added, the function will
-			abort as soon as an error is detected.
-								*:func-dict*
-			When the [dict] argument is added, the function must
-			be invoked through an entry in a |Dictionary|.  The
-			local variable "self" will then be set to the
-			dictionary.  See |Dictionary-function|.
-						*:func-closure* *E932*
-			When the [closure] argument is added, the function
-			can access variables and arguments from the outer
-			scope.  This is usually called a closure.  In this
-			example Bar() uses "x" from the scope of Foo().  It
-			remains referenced even after Foo() returns: >
-				:function! Foo()
-				:  let x = 0
-				:  function! Bar() closure
-				:    let x += 1
-				:    return x
-				:  endfunction
-				:  return funcref('Bar')
-				:endfunction
-
-				:let F = Foo()
-				:echo F()
-<				1 >
-				:echo F()
-<				2 >
-				:echo F()
-<				3
-
-						*function-search-undo*
-			The last used search pattern and the redo command "."
-			will not be changed by the function.  This also
-			implies that the effect of |:nohlsearch| is undone
-			when the function returns.
-
-			*:endf* *:endfunction* *E126* *E193* *W22* *E1151*
-:endf[unction] [argument]
-			The end of a function definition.  Best is to put it
-			on a line by its own, without [argument].
-
-			[argument] can be:
-				| command	command to execute next
-				\n command	command to execute next
-				" comment	always ignored
-				anything else	ignored, warning given when
-						'verbose' is non-zero
-			The support for a following command was added in Vim
-			8.0.0654, before that any argument was silently
-			ignored.
-
-			To be able to define a function inside an `:execute`
-			command, use line breaks instead of |:bar|: >
-				:exe "func Foo()\necho 'foo'\nendfunc"
-<
-				*:delf* *:delfunction* *E131* *E933* *E1084*
-:delf[unction][!] {name}
-			Delete function {name}.
-			{name} can also be a |Dictionary| entry that is a
-			|Funcref|: >
-				:delfunc dict.init
-<			This will remove the "init" entry from "dict".  The
-			function is deleted if there are no more references to
-			it.
-			With the ! there is no error if the function does not
-			exist.
-							*:retu* *:return* *E133*
-:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
-			evaluated and returned as the result of the function.
-			If "[expr]" is not given, the number 0 is returned.
-			When a function ends without an explicit ":return",
-			the number 0 is returned.
-			In a :def function *E1095* is given if unreachable
-			code follows after the `:return`.
-			In legacy script there is no check for unreachable
-			lines, thus there is no warning if commands follow
-			`:return`.
-
-			If the ":return" is used after a |:try| but before the
-			matching |:finally| (if present), the commands
-			following the ":finally" up to the matching |:endtry|
-			are executed first.  This process applies to all
-			nested ":try"s inside the function.  The function
-			returns at the outermost ":endtry".
-
-						*function-argument* *a:var*
-An argument can be defined by giving its name.  In the function this can then
-be used as "a:name" ("a:" for argument).
-					*a:0* *a:1* *a:000* *E740* *...*
-Up to 20 arguments can be given, separated by commas.  After the named
-arguments an argument "..." can be specified, which means that more arguments
-may optionally be following.  In the function the extra arguments can be used
-as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
-can be 0).  "a:000" is set to a |List| that contains these arguments.  Note
-that "a:1" is the same as "a:000[0]".
-							*E742* *E1090*
-The a: scope and the variables in it cannot be changed, they are fixed.
-However, if a composite type is used, such as |List| or |Dictionary| , you can
-change their contents.  Thus you can pass a |List| to a function and have the
-function add an item to it.  If you want to make sure the function cannot
-change a |List| or |Dictionary| use |:lockvar|.
-
-It is also possible to define a function without any arguments.  You must
-still supply the () then.
-
-It is allowed to define another function inside a function body.
-
-						*optional-function-argument*
-You can provide default values for positional named arguments.  This makes
-them optional for function calls.  When a positional argument is not
-specified at a call, the default expression is used to initialize it.
-This only works for functions declared with `:function` or `:def`, not for
-lambda expressions |expr-lambda|.
-
-Example: >
-  function Something(key, value = 10)
-     echo a:key .. ": " .. a:value
-  endfunction
-  call Something('empty')	"empty: 10"
-  call Something('key', 20)	"key: 20"
-
-The argument default expressions are evaluated at the time of the function
-call, not definition.  Thus it is possible to use an expression which is
-invalid the moment the function is defined.  The expressions are also only
-evaluated when arguments are not specified during a call.
-						*none-function_argument*
-You can pass |v:none| to use the default expression.  Note that this means you
-cannot pass v:none as an ordinary value when an argument has a default
-expression.
-
-Example: >
-  function Something(a = 10, b = 20, c = 30)
-  endfunction
-  call Something(1, v:none, 3)	    " b = 20
-<
-								*E989*
-Optional arguments with default expressions must occur after any mandatory
-arguments.  You can use "..." after all optional named arguments.
-
-It is possible for later argument defaults to refer to prior arguments,
-but not the other way around.  They must be prefixed with "a:", as with all
-arguments.
-
-Example that works: >
-  :function Okay(mandatory, optional = a:mandatory)
-  :endfunction
-Example that does NOT work: >
-  :function NoGood(first = a:second, second = 10)
-  :endfunction
-<
-When not using "...", the number of arguments in a function call must be at
-least equal to the number of mandatory named arguments.  When using "...", the
-number of arguments may be larger than the total of mandatory and optional
-arguments.
-
-							*local-variables*
-Inside a function local variables can be used.  These will disappear when the
-function returns.  Global variables need to be accessed with "g:".
-
-Example: >
-  :function Table(title, ...)
-  :  echohl Title
-  :  echo a:title
-  :  echohl None
-  :  echo a:0 .. " items:"
-  :  for s in a:000
-  :    echon ' ' .. s
-  :  endfor
-  :endfunction
-
-This function can then be called with: >
-  call Table("Table", "line1", "line2")
-  call Table("Empty Table")
-
-To return more than one value, return a |List|: >
-  :function Compute(n1, n2)
-  :  if a:n2 == 0
-  :    return ["fail", 0]
-  :  endif
-  :  return ["ok", a:n1 / a:n2]
-  :endfunction
-
-This function can then be called with: >
-  :let [success, div] = Compute(102, 6)
-  :if success == "ok"
-  :  echo div
-  :endif
-<
-						*:cal* *:call* *E107*
-:[range]cal[l] {name}([arguments])
-		Call a function.  The name of the function and its arguments
-		are as specified with `:function`.  Up to 20 arguments can be
-		used.  The returned value is discarded.
-		In |Vim9| script using `:call` is optional, these two lines do
-		the same thing: >
-			call SomeFunc(arg)
-			SomeFunc(arg)
-<		Without a range and for functions that accept a range, the
-		function is called once.  When a range is given the cursor is
-		positioned at the start of the first line before executing the
-		function.
-		When a range is given and the function doesn't handle it
-		itself, the function is executed for each line in the range,
-		with the cursor in the first column of that line.  The cursor
-		is left at the last line (possibly moved by the last function
-		call).  The arguments are re-evaluated for each line.  Thus
-		this works:
-						*function-range-example*  >
-	:function Mynumber(arg)
-	:  echo line(".") .. " " .. a:arg
-	:endfunction
-	:1,5call Mynumber(getline("."))
-<
-		The "a:firstline" and "a:lastline" are defined anyway, they
-		can be used to do something different at the start or end of
-		the range.
-
-		Example of a function that handles the range itself: >
-
-	:function Cont() range
-	:  execute (a:firstline + 1) .. "," .. a:lastline .. 's/^/\t\\ '
-	:endfunction
-	:4,8call Cont()
-<
-		This function inserts the continuation character "\" in front
-		of all the lines in the range, except the first one.
-
-		When the function returns a composite value it can be further
-		dereferenced, but the range will not be used then.  Example: >
-	:4,8call GetDict().method()
-<		Here GetDict() gets the range but method() does not.
-
-								*E117*
-When a function cannot be found the error "E117: Unknown function" will be
-given.  If the function was using an autoload path or an autoload import and
-the script is a |Vim9| script, this may also be caused by the function not
-being exported.
-
-								*E132*
-The recursiveness of user functions is restricted with the |'maxfuncdepth'|
-option.
-
-It is also possible to use `:eval`.  It does not support a range, but does
-allow for method chaining, e.g.: >
-	eval GetList()->Filter()->append('$')
-
-A function can also be called as part of evaluating an expression or when it
-is used as a method: >
-	let x = GetList()
-	let y = GetList()->Filter()
-
-
-CLEANING UP IN A FUNCTION ~
-							*:defer*
-:defer {func}({args})	Call {func} when the current function is done.
-			{args} are evaluated here.
-
-Quite often a command in a function has a global effect, which must be undone
-when the function finishes.  Handling this in all kinds of situations can be a
-hassle.  Especially when an unexpected error is encountered.  This can be done
-with `try` / `finally` blocks, but this gets complicated when there is more
-than one.
-
-A much simpler solution is using `defer`.  It schedules a function call when
-the function is returning, no matter if there is an error.  Example: >
-	func Filter(text)
-	  call writefile(a:text, 'Tempfile')
-	  call system('filter < Tempfile > Outfile')
-	  call Handle('Outfile')
-	  call delete('Tempfile')
-	  call delete('Outfile')
-	endfunc
-
-Here 'Tempfile' and 'Outfile' will not be deleted if something causes the
-function to abort.  `:defer` can be used to avoid that: >
-	func Filter(text)
-	  call writefile(a:text, 'Tempfile')
-	  defer delete('Tempfile')
-	  defer delete('Outfile')
-	  call system('filter < Tempfile > Outfile')
-	  call Handle('Outfile')
-	endfunc
-
-Note that deleting "Outfile" is scheduled before calling system(), since it
-can be created even when `system()` fails.
-
-The defered functions are called in reverse order, the last one added is
-executed first.  A useless example: >
-	func Useless()
-	  for s in range(3)
-	    defer execute('echomsg "number ' .. s .. '"')
-	  endfor
-	endfunc
-
-Now `:messages` shows:
-	number 2
-	number 1
-	number 0
-
-Any return value of the deferred function is discarded.  The function cannot
-be followed by anything, such as "->func" or ".member".  Currently `:defer
-GetArg()->TheFunc()` does not work, it may work in a later version.
-
-Errors are reported but do not cause aborting execution of deferred functions.
-
-No range is accepted.
-
-
-AUTOMATICALLY LOADING FUNCTIONS ~
-							*autoload-functions*
-When using many or large functions, it's possible to automatically define them
-only when they are used.  There are two methods: with an autocommand and with
-the "autoload" directory in 'runtimepath'.
-
-
-Using an autocommand ~
-
-This is introduced in the user manual, section |51.4|.
-
-The autocommand is useful if you have a plugin that is a long Vim script file.
-You can define the autocommand and quickly quit the script with `:finish`.
-That makes Vim startup faster.  The autocommand should then load the same file
-again, setting a variable to skip the `:finish` command.
-
-Use the FuncUndefined autocommand event with a pattern that matches the
-function(s) to be defined.  Example: >
-
-	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
-
-The file "~/vim/bufnetfuncs.vim" should then define functions that start with
-"BufNet".  Also see |FuncUndefined|.
-
-
-Using an autoload script ~
-							*autoload* *E746*
-This is introduced in the user manual, section |52.2|.
-
-Using a script in the "autoload" directory is simpler, but requires using
-exactly the right file name.  A function that can be autoloaded has a name
-like this: >
-
-	:call filename#funcname()
-
-These functions are always global, in Vim9 script "g:" needs to be used: >
-	:call g:filename#funcname()
-
-When such a function is called, and it is not defined yet, Vim will search the
-"autoload" directories in 'runtimepath' for a script file called
-"filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
-then define the function like this: >
-
-	function filename#funcname()
-	   echo "Done!"
-	endfunction
-
-The file name and the name used before the # in the function must match
-exactly, and the defined function must have the name exactly as it will be
-called.  In Vim9 script the "g:" prefix must be used: >
-	function g:filename#funcname()
-
-or for a compiled function: >
-	def g:filename#funcname()
-
-It is possible to use subdirectories.  Every # in the function name works like
-a path separator.  Thus when calling a function: >
-
-	:call foo#bar#func()
-
-Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
-
-This also works when reading a variable that has not been set yet: >
-
-	:let l = foo#bar#lvar
-
-However, when the autoload script was already loaded it won't be loaded again
-for an unknown variable.
-
-When assigning a value to such a variable nothing special happens.  This can
-be used to pass settings to the autoload script before it's loaded: >
-
-	:let foo#bar#toggle = 1
-	:call foo#bar#func()
-
-Note that when you make a mistake and call a function that is supposed to be
-defined in an autoload script, but the script doesn't actually define the
-function, you will get an error message for the missing function.  If you fix
-the autoload script it won't be automatically loaded again.  Either restart
-Vim or manually source the script.
-
-Also note that if you have two script files, and one calls a function in the
-other and vice versa, before the used function is defined, it won't work.
-Avoid using the autoload functionality at the toplevel.
-
-In |Vim9| script you will get error *E1263* if you define a function with
-a "#" character in the name.  You should use a name without "#" and use
-`:export`.
-
-Hint: If you distribute a bunch of scripts you can pack them together with the
-|vimball| utility.  Also read the user manual |distribute-script|.
+functions.  The function takes arguments, executes a sequence of Ex commands
+and can return a value.
+
+You can find most information about defining functions in |userfunc.txt|.
+For Vim9 functions, which execute much faster, support type checking and more,
+see |vim9.txt|.
 
 ==============================================================================
 6. Curly braces names					*curly-braces-names*
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -141,6 +141,7 @@ Advanced editing ~
 |autocmd.txt|	automatically executing commands on an event
 |eval.txt|	expression evaluation, conditional commands
 |builtin.txt|	builtin functions
+|userfunc.txt|	defining user functions
 |channel.txt|	Jobs, Channels, inter-process communication
 |fold.txt|	hide (fold) ranges of lines
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1582,7 +1582,7 @@
 -xrm	gui_x11.txt	/*-xrm*
 -y	starting.txt	/*-y*
 .	repeat.txt	/*.*
-...	eval.txt	/*...*
+...	userfunc.txt	/*...*
 .Xdefaults	gui_x11.txt	/*.Xdefaults*
 .aff	spell.txt	/*.aff*
 .dic	spell.txt	/*.dic*
@@ -2260,8 +2260,8 @@ 90.5	usr_90.txt	/*90.5*
 :caddfile	quickfix.txt	/*:caddfile*
 :caf	quickfix.txt	/*:caf*
 :cafter	quickfix.txt	/*:cafter*
-:cal	eval.txt	/*:cal*
-:call	eval.txt	/*:call*
+:cal	userfunc.txt	/*:cal*
+:call	userfunc.txt	/*:call*
 :cat	eval.txt	/*:cat*
 :catch	eval.txt	/*:catch*
 :cb	quickfix.txt	/*:cb*
@@ -2405,13 +2405,14 @@ 90.5	usr_90.txt	/*90.5*
 :def	vim9.txt	/*:def*
 :defc	vim9.txt	/*:defc*
 :defcompile	vim9.txt	/*:defcompile*
+:defer	userfunc.txt	/*:defer*
 :del	change.txt	/*:del*
 :delc	map.txt	/*:delc*
 :delcommand	map.txt	/*:delcommand*
 :delcr	todo.txt	/*:delcr*
 :delete	change.txt	/*:delete*
-:delf	eval.txt	/*:delf*
-:delfunction	eval.txt	/*:delfunction*
+:delf	userfunc.txt	/*:delf*
+:delfunction	userfunc.txt	/*:delfunction*
 :delm	motion.txt	/*:delm*
 :delmarks	motion.txt	/*:delmarks*
 :di	change.txt	/*:di*
@@ -2488,10 +2489,10 @@ 90.5	usr_90.txt	/*90.5*
 :endclass	vim9.txt	/*:endclass*
 :enddef	vim9.txt	/*:enddef*
 :endenum	vim9.txt	/*:endenum*
-:endf	eval.txt	/*:endf*
+:endf	userfunc.txt	/*:endf*
 :endfo	eval.txt	/*:endfo*
 :endfor	eval.txt	/*:endfor*
-:endfunction	eval.txt	/*:endfunction*
+:endfunction	userfunc.txt	/*:endfunction*
 :endif	eval.txt	/*:endif*
 :endinterface	vim9.txt	/*:endinterface*
 :endt	eval.txt	/*:endt*
@@ -2553,13 +2554,13 @@ 90.5	usr_90.txt	/*90.5*
 :foldo	fold.txt	/*:foldo*
 :foldopen	fold.txt	/*:foldopen*
 :for	eval.txt	/*:for*
-:fu	eval.txt	/*:fu*
-:func-abort	eval.txt	/*:func-abort*
-:func-closure	eval.txt	/*:func-closure*
-:func-dict	eval.txt	/*:func-dict*
-:func-range	eval.txt	/*:func-range*
-:function	eval.txt	/*:function*
-:function-verbose	eval.txt	/*:function-verbose*
+:fu	userfunc.txt	/*:fu*
+:func-abort	userfunc.txt	/*:func-abort*
+:func-closure	userfunc.txt	/*:func-closure*
+:func-dict	userfunc.txt	/*:func-dict*
+:func-range	userfunc.txt	/*:func-range*
+:function	userfunc.txt	/*:function*
+:function-verbose	userfunc.txt	/*:function-verbose*
 :g	repeat.txt	/*:g*
 :global	repeat.txt	/*:global*
 :go	motion.txt	/*:go*
@@ -2599,6 +2600,8 @@ 90.5	usr_90.txt	/*90.5*
 :his	cmdline.txt	/*:his*
 :history	cmdline.txt	/*:history*
 :history-indexing	cmdline.txt	/*:history-indexing*
+:hor	windows.txt	/*:hor*
+:horizontal	windows.txt	/*:horizontal*
 :i	insert.txt	/*:i*
 :ia	map.txt	/*:ia*
 :iabbrev	map.txt	/*:iabbrev*
@@ -3049,8 +3052,8 @@ 90.5	usr_90.txt	/*90.5*
 :ret	change.txt	/*:ret*
 :retab	change.txt	/*:retab*
 :retab!	change.txt	/*:retab!*
-:retu	eval.txt	/*:retu*
-:return	eval.txt	/*:return*
+:retu	userfunc.txt	/*:retu*
+:return	userfunc.txt	/*:return*
 :rew	editing.txt	/*:rew*
 :rewind	editing.txt	/*:rewind*
 :ri	change.txt	/*:ri*
@@ -4078,7 +4081,7 @@ E1066	vim9.txt	/*E1066*
 E1067	eval.txt	/*E1067*
 E1068	vim9.txt	/*E1068*
 E1069	vim9.txt	/*E1069*
-E107	eval.txt	/*E107*
+E107	userfunc.txt	/*E107*
 E1071	vim9.txt	/*E1071*
 E1072	eval.txt	/*E1072*
 E1073	vim9.txt	/*E1073*
@@ -4093,18 +4096,18 @@ E1080	vim9.txt	/*E1080*
 E1081	eval.txt	/*E1081*
 E1082	vim9.txt	/*E1082*
 E1083	editing.txt	/*E1083*
-E1084	eval.txt	/*E1084*
+E1084	userfunc.txt	/*E1084*
 E1085	eval.txt	/*E1085*
 E1087	vim9.txt	/*E1087*
 E1088	vim9.txt	/*E1088*
 E1089	eval.txt	/*E1089*
 E109	eval.txt	/*E109*
-E1090	eval.txt	/*E1090*
+E1090	userfunc.txt	/*E1090*
 E1091	vim9.txt	/*E1091*
 E1092	various.txt	/*E1092*
 E1093	eval.txt	/*E1093*
 E1094	vim9.txt	/*E1094*
-E1095	eval.txt	/*E1095*
+E1095	userfunc.txt	/*E1095*
 E1096	vim9.txt	/*E1096*
 E1097	vim9.txt	/*E1097*
 E1098	eval.txt	/*E1098*
@@ -4167,7 +4170,7 @@ E1148	eval.txt	/*E1148*
 E1149	vim9.txt	/*E1149*
 E115	eval.txt	/*E115*
 E1150	vim9.txt	/*E1150*
-E1151	eval.txt	/*E1151*
+E1151	userfunc.txt	/*E1151*
 E1152	vim9.txt	/*E1152*
 E1153	eval.txt	/*E1153*
 E1154	eval.txt	/*E1154*
@@ -4187,7 +4190,7 @@ E1166	eval.txt	/*E1166*
 E1167	vim9.txt	/*E1167*
 E1168	vim9.txt	/*E1168*
 E1169	eval.txt	/*E1169*
-E117	eval.txt	/*E117*
+E117	userfunc.txt	/*E117*
 E1170	vim9.txt	/*E1170*
 E1171	vim9.txt	/*E1171*
 E1172	vim9.txt	/*E1172*
@@ -4243,7 +4246,7 @@ E1216	builtin.txt	/*E1216*
 E1217	vim9.txt	/*E1217*
 E1218	vim9.txt	/*E1218*
 E1219	vim9.txt	/*E1219*
-E122	eval.txt	/*E122*
+E122	userfunc.txt	/*E122*
 E1220	vim9.txt	/*E1220*
 E1221	vim9.txt	/*E1221*
 E1222	vim9.txt	/*E1222*
@@ -4254,7 +4257,7 @@ E1226	vim9.txt	/*E1226*
 E1227	vim9.txt	/*E1227*
 E1228	vim9.txt	/*E1228*
 E1229	eval.txt	/*E1229*
-E123	eval.txt	/*E123*
+E123	userfunc.txt	/*E123*
 E1230	options.txt	/*E1230*
 E1231	map.txt	/*E1231*
 E1232	builtin.txt	/*E1232*
@@ -4264,7 +4267,7 @@ E1236	vim9.txt	/*E1236*
 E1237	map.txt	/*E1237*
 E1238	vim9.txt	/*E1238*
 E1239	builtin.txt	/*E1239*
-E124	eval.txt	/*E124*
+E124	userfunc.txt	/*E124*
 E1240	change.txt	/*E1240*
 E1241	change.txt	/*E1241*
 E1242	change.txt	/*E1242*
@@ -4275,7 +4278,7 @@ E1246	eval.txt	/*E1246*
 E1247	cmdline.txt	/*E1247*
 E1248	vim9.txt	/*E1248*
 E1249	syntax.txt	/*E1249*
-E125	eval.txt	/*E125*
+E125	userfunc.txt	/*E125*
 E1250	vim9.txt	/*E1250*
 E1251	vim9.txt	/*E1251*
 E1252	vim9.txt	/*E1252*
@@ -4286,18 +4289,18 @@ E1256	vim9.txt	/*E1256*
 E1257	vim9.txt	/*E1257*
 E1258	vim9.txt	/*E1258*
 E1259	vim9.txt	/*E1259*
-E126	eval.txt	/*E126*
+E126	userfunc.txt	/*E126*
 E1260	vim9.txt	/*E1260*
 E1261	vim9.txt	/*E1261*
 E1262	vim9.txt	/*E1262*
-E1263	eval.txt	/*E1263*
+E1263	userfunc.txt	/*E1263*
 E1264	vim9.txt	/*E1264*
 E1265	eval.txt	/*E1265*
 E1266	if_pyth.txt	/*E1266*
-E1267	eval.txt	/*E1267*
+E1267	userfunc.txt	/*E1267*
 E1268	vim9.txt	/*E1268*
 E1269	vim9.txt	/*E1269*
-E127	eval.txt	/*E127*
+E127	userfunc.txt	/*E127*
 E1270	change.txt	/*E1270*
 E1271	vim9.txt	/*E1271*
 E1272	vim9.txt	/*E1272*
@@ -4308,7 +4311,7 @@ E1276	builtin.txt	/*E1276*
 E1277	channel.txt	/*E1277*
 E1278	eval.txt	/*E1278*
 E1279	eval.txt	/*E1279*
-E128	eval.txt	/*E128*
+E128	userfunc.txt	/*E128*
 E1280	spell.txt	/*E1280*
 E1281	pattern.txt	/*E1281*
 E1282	eval.txt	/*E1282*
@@ -4319,7 +4322,7 @@ E1286	builtin.txt	/*E1286*
 E1287	builtin.txt	/*E1287*
 E1288	builtin.txt	/*E1288*
 E1289	builtin.txt	/*E1289*
-E129	eval.txt	/*E129*
+E129	userfunc.txt	/*E129*
 E1290	change.txt	/*E1290*
 E1291	testing.txt	/*E1291*
 E1292	cmdline.txt	/*E1292*
@@ -4328,10 +4331,11 @@ E1294	textprop.txt	/*E1294*
 E1295	textprop.txt	/*E1295*
 E1296	textprop.txt	/*E1296*
 E1297	vim9.txt	/*E1297*
+E1298	vim9.txt	/*E1298*
 E13	message.txt	/*E13*
-E131	eval.txt	/*E131*
-E132	eval.txt	/*E132*
-E133	eval.txt	/*E133*
+E131	userfunc.txt	/*E131*
+E132	userfunc.txt	/*E132*
+E133	userfunc.txt	/*E133*
 E134	change.txt	/*E134*
 E135	autocmd.txt	/*E135*
 E136	starting.txt	/*E136*
@@ -4396,7 +4400,7 @@ E19	message.txt	/*E19*
 E190	message.txt	/*E190*
 E191	motion.txt	/*E191*
 E192	message.txt	/*E192*
-E193	eval.txt	/*E193*
+E193	userfunc.txt	/*E193*
 E194	message.txt	/*E194*
 E195	starting.txt	/*E195*
 E196	various.txt	/*E196*
@@ -4675,7 +4679,7 @@ E450	popup.txt	/*E450*
 E451	eval.txt	/*E451*
 E452	eval.txt	/*E452*
 E453	syntax.txt	/*E453*
-E454	eval.txt	/*E454*
+E454	userfunc.txt	/*E454*
 E455	print.txt	/*E455*
 E456	print.txt	/*E456*
 E457	print.txt	/*E457*
@@ -4978,13 +4982,13 @@ E737	builtin.txt	/*E737*
 E738	eval.txt	/*E738*
 E739	builtin.txt	/*E739*
 E74	message.txt	/*E74*
-E740	eval.txt	/*E740*
+E740	userfunc.txt	/*E740*
 E741	eval.txt	/*E741*
-E742	eval.txt	/*E742*
+E742	userfunc.txt	/*E742*
 E743	eval.txt	/*E743*
 E744	netbeans.txt	/*E744*
 E745	eval.txt	/*E745*
-E746	eval.txt	/*E746*
+E746	userfunc.txt	/*E746*
 E747	editing.txt	/*E747*
 E748	repeat.txt	/*E748*
 E749	various.txt	/*E749*
@@ -5101,7 +5105,7 @@ E85	options.txt	/*E85*
 E850	change.txt	/*E850*
 E851	gui_x11.txt	/*E851*
 E852	gui_x11.txt	/*E852*
-E853	eval.txt	/*E853*
+E853	userfunc.txt	/*E853*
 E854	options.txt	/*E854*
 E855	autocmd.txt	/*E855*
 E856	testing.txt	/*E856*
@@ -5135,7 +5139,7 @@ E880	if_pyth.txt	/*E880*
 E881	autocmd.txt	/*E881*
 E882	builtin.txt	/*E882*
 E883	builtin.txt	/*E883*
-E884	eval.txt	/*E884*
+E884	userfunc.txt	/*E884*
 E885	sign.txt	/*E885*
 E886	starting.txt	/*E886*
 E887	if_pyth.txt	/*E887*
@@ -5188,8 +5192,8 @@ E929	starting.txt	/*E929*
 E93	windows.txt	/*E93*
 E930	builtin.txt	/*E930*
 E931	message.txt	/*E931*
-E932	eval.txt	/*E932*
-E933	eval.txt	/*E933*
+E932	userfunc.txt	/*E932*
+E933	userfunc.txt	/*E933*
 E934	sign.txt	/*E934*
 E935	builtin.txt	/*E935*
 E936	autocmd.txt	/*E936*
@@ -5250,7 +5254,7 @@ E985	eval.txt	/*E985*
 E986	tagsrch.txt	/*E986*
 E987	tagsrch.txt	/*E987*
 E988	gui_w32.txt	/*E988*
-E989	eval.txt	/*E989*
+E989	userfunc.txt	/*E989*
 E99	diff.txt	/*E99*
 E990	eval.txt	/*E990*
 E991	eval.txt	/*E991*
@@ -5572,7 +5576,7 @@ W18	syntax.txt	/*W18*
 W19	autocmd.txt	/*W19*
 W20	if_pyth.txt	/*W20*
 W21	if_pyth.txt	/*W21*
-W22	eval.txt	/*W22*
+W22	userfunc.txt	/*W22*
 WORD	motion.txt	/*WORD*
 WSL	os_win32.txt	/*WSL*
 WWW	intro.txt	/*WWW*
@@ -5707,12 +5711,12 @@ a'	motion.txt	/*a'*
 a(	motion.txt	/*a(*
 a)	motion.txt	/*a)*
 a4	print.txt	/*a4*
-a:0	eval.txt	/*a:0*
-a:000	eval.txt	/*a:000*
-a:1	eval.txt	/*a:1*
-a:firstline	eval.txt	/*a:firstline*
-a:lastline	eval.txt	/*a:lastline*
-a:var	eval.txt	/*a:var*
+a:0	userfunc.txt	/*a:0*
+a:000	userfunc.txt	/*a:000*
+a:1	userfunc.txt	/*a:1*
+a:firstline	userfunc.txt	/*a:firstline*
+a:lastline	userfunc.txt	/*a:lastline*
+a:var	userfunc.txt	/*a:var*
 a<	motion.txt	/*a<*
 a>	motion.txt	/*a>*
 aB	motion.txt	/*aB*
@@ -5858,8 +5862,8 @@ autocommand-events	autocmd.txt	/*autocom
 autocommand-pattern	autocmd.txt	/*autocommand-pattern*
 autocommands	autocmd.txt	/*autocommands*
 autoformat	change.txt	/*autoformat*
-autoload	eval.txt	/*autoload*
-autoload-functions	eval.txt	/*autoload-functions*
+autoload	userfunc.txt	/*autoload*
+autoload-functions	userfunc.txt	/*autoload-functions*
 avoid-hit-enter	version5.txt	/*avoid-hit-enter*
 aw	motion.txt	/*aw*
 a{	motion.txt	/*a{*
@@ -6493,6 +6497,7 @@ decada_members	ft_ada.txt	/*decada_membe
 deepcopy()	builtin.txt	/*deepcopy()*
 defaults.vim	starting.txt	/*defaults.vim*
 defaults.vim-explained	usr_05.txt	/*defaults.vim-explained*
+define-function	userfunc.txt	/*define-function*
 definition-search	tagsrch.txt	/*definition-search*
 definitions	intro.txt	/*definitions*
 delete()	builtin.txt	/*delete()*
@@ -7131,11 +7136,11 @@ ftplugins	usr_05.txt	/*ftplugins*
 fullcommand()	builtin.txt	/*fullcommand()*
 funcref()	builtin.txt	/*funcref()*
 function()	builtin.txt	/*function()*
-function-argument	eval.txt	/*function-argument*
+function-argument	userfunc.txt	/*function-argument*
 function-key	intro.txt	/*function-key*
 function-list	usr_41.txt	/*function-list*
-function-range-example	eval.txt	/*function-range-example*
-function-search-undo	eval.txt	/*function-search-undo*
+function-range-example	userfunc.txt	/*function-range-example*
+function-search-undo	userfunc.txt	/*function-search-undo*
 function_key	intro.txt	/*function_key*
 functions	eval.txt	/*functions*
 fuzzy-matching	pattern.txt	/*fuzzy-matching*
@@ -8182,10 +8187,10 @@ lnum-variable	eval.txt	/*lnum-variable*
 load-plugins	starting.txt	/*load-plugins*
 load-vim-script	repeat.txt	/*load-vim-script*
 local-additions	help.txt	/*local-additions*
-local-function	eval.txt	/*local-function*
+local-function	userfunc.txt	/*local-function*
 local-options	options.txt	/*local-options*
 local-variable	eval.txt	/*local-variable*
-local-variables	eval.txt	/*local-variables*
+local-variables	userfunc.txt	/*local-variables*
 local_markfilelist	pi_netrw.txt	/*local_markfilelist*
 locale	mbyte.txt	/*locale*
 locale-name	mbyte.txt	/*locale-name*
@@ -8797,7 +8802,7 @@ no_plugin_maps	filetype.txt	/*no_plugin_
 nocombine	syntax.txt	/*nocombine*
 non-greedy	pattern.txt	/*non-greedy*
 non-zero-arg	eval.txt	/*non-zero-arg*
-none-function_argument	eval.txt	/*none-function_argument*
+none-function_argument	userfunc.txt	/*none-function_argument*
 none-variable	eval.txt	/*none-variable*
 normal-index	index.txt	/*normal-index*
 not-compatible	usr_01.txt	/*not-compatible*
@@ -8851,7 +8856,7 @@ option-value-function	options.txt	/*opti
 option-window	options.txt	/*option-window*
 option_restore()	todo.txt	/*option_restore()*
 option_save()	todo.txt	/*option_save()*
-optional-function-argument	eval.txt	/*optional-function-argument*
+optional-function-argument	userfunc.txt	/*optional-function-argument*
 options	options.txt	/*options*
 options-changed	version5.txt	/*options-changed*
 options-in-terminal	terminal.txt	/*options-in-terminal*
@@ -10326,6 +10331,7 @@ user-cmd-ambiguous	map.txt	/*user-cmd-am
 user-commands	map.txt	/*user-commands*
 user-functions	eval.txt	/*user-functions*
 user-manual	usr_toc.txt	/*user-manual*
+userfunc.txt	userfunc.txt	/*userfunc.txt*
 using-<Plug>	usr_51.txt	/*using-<Plug>*
 using-menus	gui.txt	/*using-menus*
 using-scripts	repeat.txt	/*using-scripts*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -38,12 +38,17 @@ browser use: https://github.com/vim/vim/
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-cmdheight=0:
-- :g/pattern should not use message window  #11012
-
-*.sil detection with FTsil() (lacygoill, Aug 25)
-
-Avoid using "Xfile" and "Xdir" in tests, use specific names.
+When using :echomessage do use msg_row and msg_col, but save and restore.
+How to test any failure?
+
+Improve :defer command:
+    - Use "D" flag of writefile() in tests.
+    - test "defer func()->funcouter()" fails (or use "funcouter")
+    - test "defer func().arg" fails
+    - test partial fails
+    - check arguments at :defer command
+    - Also when function does "qa!" or "cq"?
+
 
 Further Vim9 improvements, possibly after launch:
 - Use Vim9 for more runtime files.
@@ -183,10 +188,7 @@ Terminal emulator window:
 - When 'encoding' is not utf-8, or the job is using another encoding, setup
   conversions.
 
-Cleanup:
-- Remove FEAT_FOOTER ?
-
-Add 'splitscroll'  #10682  Useful?  Any remaining trouble?
+Add 'splitscroll'  #10682  Anything remaining
 
 Autoconf: must use autoconf 2.69, later version generates lots of warnings
 - try using autoconf 2.71 and fix all "obsolete" warnings
@@ -196,6 +198,8 @@ Can deref_func_name() and deref_function
 After patch 8.2.4915 w_botline is computed much more often. Can this be
 reduced?
 
+Add BufDeletePost.  #11041
+
 NFA regexp does not handle composing characters well: #10286
     [ɔ̃] matches both ɔ and ɔ̃
     \(ɔ\|ɔ̃\) matches ɔ and not ɔ̃
@@ -3753,6 +3757,7 @@ Syntax highlighting:
     - use treesitter, NeoVim uses it - Many people don't like it.
 	After changes requires rebuilding the library.
     - use TextMate, vscode uses it.  #9087 - Other people don't like it.
+	    https://github.com/icedman/vim-textmate
       Vscode is asked to switch to treesitter:
       https://github.com/microsoft/vscode/issues/50140
     - sublime grammar?
new file mode 100644
--- /dev/null
+++ b/runtime/doc/userfunc.txt
@@ -0,0 +1,530 @@
+*userfunc.txt*	For Vim version 9.0.  Last change: 2022 Jun 17
+
+
+		  VIM REFERENCE MANUAL	  by Bram Moolenaar
+
+
+Defining and using functions.
+
+This is introduced in section |41.7| of the user manual.
+
+1. Defining a fuction			|define-function|
+2. Calling a fuction			|:call|
+3. Cleaning up in a function		|:defer|
+4. Automatically loading functions	|autoload-functions|
+
+==============================================================================
+
+1. Defining a fuction ~
+						*define-function*
+New functions can be defined.  These can be called just like builtin
+functions.  The function executes a sequence of Ex commands.  Normal mode
+commands can be executed with the |:normal| command.
+
+The function name must start with an uppercase letter, to avoid confusion with
+builtin functions.  To prevent from using the same name in different scripts
+make them script-local.  If you do use a global function the avoid obvious,
+short names.  A good habit is to start the function name with the name of the
+script, e.g., "HTMLcolor()".
+
+In legacy script it is also possible to use curly braces, see
+|curly-braces-names|.
+
+The |autoload| facility is useful to define a function only when it's called.
+
+							*local-function*
+A function local to a legacy script must start with "s:".  A local script
+function can only be called from within the script and from functions, user
+commands and autocommands defined in the script.  It is also possible to call
+the function from a mapping defined in the script, but then |<SID>| must be
+used instead of "s:" when the mapping is expanded outside of the script.
+There are only script-local functions, no buffer-local or window-local
+functions.
+
+In |Vim9| script functions are local to the script by default, prefix "g:" to
+define a global function.
+
+				*:fu* *:function* *E128* *E129* *E123* *E454*
+:fu[nction]		List all functions and their arguments.
+
+:fu[nction] {name}	List function {name}.
+			{name} can also be a |Dictionary| entry that is a
+			|Funcref|: >
+				:function dict.init
+
+:fu[nction] /{pattern}	List functions with a name matching {pattern}.
+			Example that lists all functions ending with "File": >
+				:function /File$
+<
+							*:function-verbose*
+When 'verbose' is non-zero, listing a function will also display where it was
+last defined. Example: >
+
+    :verbose function SetFileTypeSH
+	function SetFileTypeSH(name)
+	    Last set from /usr/share/vim/vim-7.0/filetype.vim
+<
+See |:verbose-cmd| for more information.
+
+						*E124* *E125* *E853* *E884*
+:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure]
+			Define a new function by the name {name}.  The body of
+			the function follows in the next lines, until the
+			matching |:endfunction|.
+								*E1267*
+			The name must be made of alphanumeric characters and
+			'_', and must start with a capital or "s:" (see
+			above).  Note that using "b:" or "g:" is not allowed.
+			(since patch 7.4.260 E884 is given if the function
+			name has a colon in the name, e.g. for "foo:bar()".
+			Before that patch no error was given).
+
+			{name} can also be a |Dictionary| entry that is a
+			|Funcref|: >
+				:function dict.init(arg)
+<			"dict" must be an existing dictionary.  The entry
+			"init" is added if it didn't exist yet.  Otherwise [!]
+			is required to overwrite an existing function.  The
+			result is a |Funcref| to a numbered function.  The
+			function can only be used with a |Funcref| and will be
+			deleted if there are no more references to it.
+								*E127* *E122*
+			When a function by this name already exists and [!] is
+			not used an error message is given.  There is one
+			exception: When sourcing a script again, a function
+			that was previously defined in that script will be
+			silently replaced.
+			When [!] is used, an existing function is silently
+			replaced.  Unless it is currently being executed, that
+			is an error.
+			NOTE: Use ! wisely.  If used without care it can cause
+			an existing function to be replaced unexpectedly,
+			which is hard to debug.
+			NOTE: In Vim9 script script-local functions cannot be
+			deleted or redefined.
+
+			For the {arguments} see |function-argument|.
+
+					*:func-range* *a:firstline* *a:lastline*
+			When the [range] argument is added, the function is
+			expected to take care of a range itself.  The range is
+			passed as "a:firstline" and "a:lastline".  If [range]
+			is excluded, ":{range}call" will call the function for
+			each line in the range, with the cursor on the start
+			of each line.  See |function-range-example|.
+			The cursor is still moved to the first line of the
+			range, as is the case with all Ex commands.
+								*:func-abort*
+			When the [abort] argument is added, the function will
+			abort as soon as an error is detected.
+								*:func-dict*
+			When the [dict] argument is added, the function must
+			be invoked through an entry in a |Dictionary|.  The
+			local variable "self" will then be set to the
+			dictionary.  See |Dictionary-function|.
+						*:func-closure* *E932*
+			When the [closure] argument is added, the function
+			can access variables and arguments from the outer
+			scope.  This is usually called a closure.  In this
+			example Bar() uses "x" from the scope of Foo().  It
+			remains referenced even after Foo() returns: >
+				:function! Foo()
+				:  let x = 0
+				:  function! Bar() closure
+				:    let x += 1
+				:    return x
+				:  endfunction
+				:  return funcref('Bar')
+				:endfunction
+
+				:let F = Foo()
+				:echo F()
+<				1 >
+				:echo F()
+<				2 >
+				:echo F()
+<				3
+
+						*function-search-undo*
+			The last used search pattern and the redo command "."
+			will not be changed by the function.  This also
+			implies that the effect of |:nohlsearch| is undone
+			when the function returns.
+
+			*:endf* *:endfunction* *E126* *E193* *W22* *E1151*
+:endf[unction] [argument]
+			The end of a function definition.  Best is to put it
+			on a line by its own, without [argument].
+
+			[argument] can be:
+				| command	command to execute next
+				\n command	command to execute next
+				" comment	always ignored
+				anything else	ignored, warning given when
+						'verbose' is non-zero
+			The support for a following command was added in Vim
+			8.0.0654, before that any argument was silently
+			ignored.
+
+			To be able to define a function inside an `:execute`
+			command, use line breaks instead of |:bar|: >
+				:exe "func Foo()\necho 'foo'\nendfunc"
+<
+				*:delf* *:delfunction* *E131* *E933* *E1084*
+:delf[unction][!] {name}
+			Delete function {name}.
+			{name} can also be a |Dictionary| entry that is a
+			|Funcref|: >
+				:delfunc dict.init
+<			This will remove the "init" entry from "dict".  The
+			function is deleted if there are no more references to
+			it.
+			With the ! there is no error if the function does not
+			exist.
+							*:retu* *:return* *E133*
+:retu[rn] [expr]	Return from a function.  When "[expr]" is given, it is
+			evaluated and returned as the result of the function.
+			If "[expr]" is not given, the number 0 is returned.
+			When a function ends without an explicit ":return",
+			the number 0 is returned.
+			In a :def function *E1095* is given if unreachable
+			code follows after the `:return`.
+			In legacy script there is no check for unreachable
+			lines, thus there is no warning if commands follow
+			`:return`.
+
+			If the ":return" is used after a |:try| but before the
+			matching |:finally| (if present), the commands
+			following the ":finally" up to the matching |:endtry|
+			are executed first.  This process applies to all
+			nested ":try"s inside the function.  The function
+			returns at the outermost ":endtry".
+
+						*function-argument* *a:var*
+An argument can be defined by giving its name.  In the function this can then
+be used as "a:name" ("a:" for argument).
+					*a:0* *a:1* *a:000* *E740* *...*
+Up to 20 arguments can be given, separated by commas.  After the named
+arguments an argument "..." can be specified, which means that more arguments
+may optionally be following.  In the function the extra arguments can be used
+as "a:1", "a:2", etc.  "a:0" is set to the number of extra arguments (which
+can be 0).  "a:000" is set to a |List| that contains these arguments.  Note
+that "a:1" is the same as "a:000[0]".
+							*E742* *E1090*
+The a: scope and the variables in it cannot be changed, they are fixed.
+However, if a composite type is used, such as |List| or |Dictionary| , you can
+change their contents.  Thus you can pass a |List| to a function and have the
+function add an item to it.  If you want to make sure the function cannot
+change a |List| or |Dictionary| use |:lockvar|.
+
+It is also possible to define a function without any arguments.  You must
+still supply the () then.
+
+It is allowed to define another function inside a function body.
+
+						*optional-function-argument*
+You can provide default values for positional named arguments.  This makes
+them optional for function calls.  When a positional argument is not
+specified at a call, the default expression is used to initialize it.
+This only works for functions declared with `:function` or `:def`, not for
+lambda expressions |expr-lambda|.
+
+Example: >
+  function Something(key, value = 10)
+     echo a:key .. ": " .. a:value
+  endfunction
+  call Something('empty')	"empty: 10"
+  call Something('key', 20)	"key: 20"
+
+The argument default expressions are evaluated at the time of the function
+call, not definition.  Thus it is possible to use an expression which is
+invalid the moment the function is defined.  The expressions are also only
+evaluated when arguments are not specified during a call.
+						*none-function_argument*
+You can pass |v:none| to use the default expression.  Note that this means you
+cannot pass v:none as an ordinary value when an argument has a default
+expression.
+
+Example: >
+  function Something(a = 10, b = 20, c = 30)
+  endfunction
+  call Something(1, v:none, 3)	    " b = 20
+<
+								*E989*
+Optional arguments with default expressions must occur after any mandatory
+arguments.  You can use "..." after all optional named arguments.
+
+It is possible for later argument defaults to refer to prior arguments,
+but not the other way around.  They must be prefixed with "a:", as with all
+arguments.
+
+Example that works: >
+  :function Okay(mandatory, optional = a:mandatory)
+  :endfunction
+Example that does NOT work: >
+  :function NoGood(first = a:second, second = 10)
+  :endfunction
+<
+When not using "...", the number of arguments in a function call must be at
+least equal to the number of mandatory named arguments.  When using "...", the
+number of arguments may be larger than the total of mandatory and optional
+arguments.
+
+							*local-variables*
+Inside a function local variables can be used.  These will disappear when the
+function returns.  Global variables need to be accessed with "g:".
+Inside functions local variables are accessed without prepending anything.
+But you can also prepend "l:" if you like.  This is required for some reserved
+names, such as "count".
+
+Example: >
+  :function Table(title, ...)
+  :  echohl Title
+  :  echo a:title
+  :  echohl None
+  :  echo a:0 .. " items:"
+  :  for s in a:000
+  :    echon ' ' .. s
+  :  endfor
+  :endfunction
+
+This function can then be called with: >
+  call Table("Table", "line1", "line2")
+  call Table("Empty Table")
+
+To return more than one value, return a |List|: >
+  :function Compute(n1, n2)
+  :  if a:n2 == 0
+  :    return ["fail", 0]
+  :  endif
+  :  return ["ok", a:n1 / a:n2]
+  :endfunction
+
+This function can then be called with: >
+  :let [success, div] = Compute(102, 6)
+  :if success == "ok"
+  :  echo div
+  :endif
+<
+==============================================================================
+
+2. Calling a fuction ~
+						*:cal* *:call* *E107*
+:[range]cal[l] {name}([arguments])
+		Call a function.  The name of the function and its arguments
+		are as specified with `:function`.  Up to 20 arguments can be
+		used.  The returned value is discarded.
+		In |Vim9| script using `:call` is optional, these two lines do
+		the same thing: >
+			call SomeFunc(arg)
+			SomeFunc(arg)
+<		Without a range and for functions that accept a range, the
+		function is called once.  When a range is given the cursor is
+		positioned at the start of the first line before executing the
+		function.
+		When a range is given and the function doesn't handle it
+		itself, the function is executed for each line in the range,
+		with the cursor in the first column of that line.  The cursor
+		is left at the last line (possibly moved by the last function
+		call).  The arguments are re-evaluated for each line.  Thus
+		this works:
+						*function-range-example*  >
+	:function Mynumber(arg)
+	:  echo line(".") .. " " .. a:arg
+	:endfunction
+	:1,5call Mynumber(getline("."))
+<
+		The "a:firstline" and "a:lastline" are defined anyway, they
+		can be used to do something different at the start or end of
+		the range.
+
+		Example of a function that handles the range itself: >
+
+	:function Cont() range
+	:  execute (a:firstline + 1) .. "," .. a:lastline .. 's/^/\t\\ '
+	:endfunction
+	:4,8call Cont()
+<
+		This function inserts the continuation character "\" in front
+		of all the lines in the range, except the first one.
+
+		When the function returns a composite value it can be further
+		dereferenced, but the range will not be used then.  Example: >
+	:4,8call GetDict().method()
+<		Here GetDict() gets the range but method() does not.
+
+								*E117*
+When a function cannot be found the error "E117: Unknown function" will be
+given.  If the function was using an autoload path or an autoload import and
+the script is a |Vim9| script, this may also be caused by the function not
+being exported.
+
+								*E132*
+The recursiveness of user functions is restricted with the |'maxfuncdepth'|
+option.
+
+It is also possible to use `:eval`.  It does not support a range, but does
+allow for method chaining, e.g.: >
+	eval GetList()->Filter()->append('$')
+
+A function can also be called as part of evaluating an expression or when it
+is used as a method: >
+	let x = GetList()
+	let y = GetList()->Filter()
+
+==============================================================================
+
+3. Cleaning up in a function ~
+							*:defer*
+:defer {func}({args})	Call {func} when the current function is done.
+			{args} are evaluated here.
+
+Quite often a command in a function has a global effect, which must be undone
+when the function finishes.  Handling this in all kinds of situations can be a
+hassle.  Especially when an unexpected error is encountered.  This can be done
+with `try` / `finally` blocks, but this gets complicated when there is more
+than one.
+
+A much simpler solution is using `defer`.  It schedules a function call when
+the function is returning, no matter if there is an error.  Example: >
+	func Filter(text) abort
+	  call writefile(a:text, 'Tempfile')
+	  call system('filter < Tempfile > Outfile')
+	  call Handle('Outfile')
+	  call delete('Tempfile')
+	  call delete('Outfile')
+	endfunc
+
+Here 'Tempfile' and 'Outfile' will not be deleted if something causes the
+function to abort.  `:defer` can be used to avoid that: >
+	func Filter(text) abort
+	  call writefile(a:text, 'Tempfile')
+	  defer delete('Tempfile')
+	  defer delete('Outfile')
+	  call system('filter < Tempfile > Outfile')
+	  call Handle('Outfile')
+	endfunc
+
+Note that deleting "Outfile" is scheduled before calling system(), since it
+can be created even when `system()` fails.
+
+The deferred functions are called in reverse order, the last one added is
+executed first.  A useless example: >
+	func Useless() abort
+	  for s in range(3)
+	    defer execute('echomsg "number ' .. s .. '"')
+	  endfor
+	endfunc
+
+Now `:messages` shows:
+	number 2
+	number 1
+	number 0
+
+Any return value of the deferred function is discarded.  The function cannot
+be followed by anything, such as "->func" or ".member".  Currently `:defer
+GetArg()->TheFunc()` does not work, it may work in a later version.
+
+Errors are reported but do not cause aborting execution of deferred functions.
+
+No range is accepted.
+
+==============================================================================
+
+4. Automatically loading functions ~
+							*autoload-functions*
+When using many or large functions, it's possible to automatically define them
+only when they are used.  There are two methods: with an autocommand and with
+the "autoload" directory in 'runtimepath'.
+
+In |Vim9| script there is also an autoload mechanism for imported scripts, see
+|import-autoload|.
+
+
+Using an autocommand ~
+
+This is introduced in the user manual, section |51.4|.
+
+The autocommand is useful if you have a plugin that is a long Vim script file.
+You can define the autocommand and quickly quit the script with `:finish`.
+That makes Vim startup faster.  The autocommand should then load the same file
+again, setting a variable to skip the `:finish` command.
+
+Use the FuncUndefined autocommand event with a pattern that matches the
+function(s) to be defined.  Example: >
+
+	:au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim
+
+The file "~/vim/bufnetfuncs.vim" should then define functions that start with
+"BufNet".  Also see |FuncUndefined|.
+
+
+Using an autoload script ~
+							*autoload* *E746*
+This is introduced in the user manual, section |52.2|.
+
+Using a script in the "autoload" directory is simpler, but requires using
+exactly the right file name.  A function that can be autoloaded has a name
+like this: >
+
+	:call filename#funcname()
+
+These functions are always global, in Vim9 script "g:" needs to be used: >
+	:call g:filename#funcname()
+
+When such a function is called, and it is not defined yet, Vim will search the
+"autoload" directories in 'runtimepath' for a script file called
+"filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
+then define the function like this: >
+
+	function filename#funcname()
+	   echo "Done!"
+	endfunction
+
+The file name and the name used before the # in the function must match
+exactly, and the defined function must have the name exactly as it will be
+called.  In Vim9 script the "g:" prefix must be used: >
+	function g:filename#funcname()
+
+or for a compiled function: >
+	def g:filename#funcname()
+
+It is possible to use subdirectories.  Every # in the function name works like
+a path separator.  Thus when calling a function: >
+
+	:call foo#bar#func()
+
+Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
+
+This also works when reading a variable that has not been set yet: >
+
+	:let l = foo#bar#lvar
+
+However, when the autoload script was already loaded it won't be loaded again
+for an unknown variable.
+
+When assigning a value to such a variable nothing special happens.  This can
+be used to pass settings to the autoload script before it's loaded: >
+
+	:let foo#bar#toggle = 1
+	:call foo#bar#func()
+
+Note that when you make a mistake and call a function that is supposed to be
+defined in an autoload script, but the script doesn't actually define the
+function, you will get an error message for the missing function.  If you fix
+the autoload script it won't be automatically loaded again.  Either restart
+Vim or manually source the script.
+
+Also note that if you have two script files, and one calls a function in the
+other and vice versa, before the used function is defined, it won't work.
+Avoid using the autoload functionality at the toplevel.
+
+In |Vim9| script you will get error *E1263* if you define a function with
+a "#" character in the name.  You should use a name without "#" and use
+`:export`.
+
+Hint: If you distribute a bunch of scripts you can pack them together with the
+|vimball| utility.  Also read the user manual |distribute-script|.
+
+
+ vim:tw=78:ts=8:noet:ft=help:norl:
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -257,13 +257,13 @@ and 'winminwidth' are relevant.
 :vert[ical] {cmd}
 		Execute {cmd}.  If it contains a command that splits a window,
 		it will be split vertically.  For `vertical wincmd =` windows
-		will be equialized only vertically.
+		will be equalized only vertically.
 		Doesn't work for |:execute| and |:normal|.
 
 						*:hor* *:horizontal*
 :hor[izontal] {cmd}
 		Execute {cmd}.  Currently only makes a difference for
-		`horizontal wincmd =`, which will equal windows only
+		`horizontal wincmd =`, which will equalize windows only
 		horizontally.
 
 :lefta[bove] {cmd}				*:lefta* *:leftabove*
--- a/runtime/ftplugin/gdscript.vim
+++ b/runtime/ftplugin/gdscript.vim
@@ -3,6 +3,7 @@ vim9script
 # Vim filetype plugin file
 # Language: gdscript (Godot game engine scripting language)
 # Maintainer: Maxim Kim <habamax@gmail.com>
+# Website: https://github.com/habamax/vim-gdscript
 
 if exists("b:did_ftplugin") | finish | endif
 
@@ -49,5 +50,5 @@ enddef
 
 nnoremap <silent><buffer>   ]] <scriptcmd>NextSection(false, v:count1)<CR>
 nnoremap <silent><buffer>   [[ <scriptcmd>NextSection(true, v:count1)<CR>
-xmap <silent><buffer><expr> ]] "\<esc>" .. v:count1 .. ']]m>gv'
-xmap <silent><buffer><expr> [[ "\<esc>" .. v:count1 .. '[[m>gv'
+xmap <buffer><expr> ]] $'<C-\><C-N>{v:count1}]]m>gv'
+xmap <buffer><expr> [[ $'<C-\><C-N>{v:count1}[[m>gv'
--- a/runtime/indent/testdir/runtest.vim
+++ b/runtime/indent/testdir/runtest.vim
@@ -11,6 +11,7 @@ syn on
 set nowrapscan
 set report=9999
 set modeline
+set debug=throw
 
 au! SwapExists * call HandleSwapExists()
 func HandleSwapExists()
@@ -84,7 +85,12 @@ for fname in glob('testdir/*.in', 1, 1)
 
 	exe start + 1
 	if pattern == ''
-	  exe 'normal =' . (end - 1) . 'G'
+	  try
+	    exe 'normal =' . (end - 1) . 'G'
+	  catch
+	    call append(indent_at, 'ERROR: ' . v:exception)
+	    let failed = 1
+	  endtry
 	else
 	  let lnum = search(pattern)
 	  if lnum <= 0
@@ -99,7 +105,12 @@ for fname in glob('testdir/*.in', 1, 1)
 	  else
 	    exe lnum - 1
 	  endif
-	  normal ==
+	  try
+	    normal ==
+	  catch
+	    call append(indent_at, 'ERROR: ' . v:exception)
+	    let failed = 1
+	  endtry
 	endif
       endif
     endwhile
--- a/runtime/indent/testdir/vim.in
+++ b/runtime/indent/testdir/vim.in
@@ -36,6 +36,13 @@ let t = [
 \ },
 \  ]
 
+def Func()
+  var d = dd
+	->extend({
+	})
+  eval 0
+enddef
+
 " END_INDENT
 
 " START_INDENT
--- a/runtime/indent/testdir/vim.ok
+++ b/runtime/indent/testdir/vim.ok
@@ -36,6 +36,13 @@ let t = [
 	    \ },
 	    \  ]
 
+def Func()
+    var d = dd
+		->extend({
+    })
+    eval 0
+enddef
+
 " END_INDENT
 
 " START_INDENT
--- a/runtime/indent/vim.vim
+++ b/runtime/indent/vim.vim
@@ -33,7 +33,9 @@ function GetVimIndent()
   endtry
 endfunc
 
-let s:lineContPat = '^\s*\(\\\|"\\ \)'
+" Legacy script line continuation and Vim9 script operators that must mean an
+" expression that continues from the previous line.
+let s:lineContPat = '^\s*\(\\\|"\\ \|->\)'
 
 function GetVimIndentIntern()
   " If the current line has line continuation and the previous one too, use
@@ -133,15 +135,15 @@ function GetVimIndentIntern()
     endif
   endif
 
-  " For a line starting with "}" find the matching "{".  If it is at the start
-  " of the line align with it, probably end of a block.
+  " For a line starting with "}" find the matching "{".  Align with that line,
+  " it is either the matching block start or dictionary start.
   " Use the mapped "%" from matchit to find the match, otherwise we may match
   " a { inside a comment or string.
   if cur_text =~ '^\s*}'
     if maparg('%') != ''
       exe v:lnum
       silent! normal %
-      if line('.') < v:lnum && getline('.') =~ '^\s*{'
+      if line('.') < v:lnum
 	let ind = indent('.')
       endif
     else
@@ -149,19 +151,33 @@ function GetVimIndentIntern()
     endif
   endif
 
-  " Below a line starting with "}" find the matching "{".  If it is at the
-  " end of the line we must be below the end of a dictionary.
-  if prev_text =~ '^\s*}'
-    if maparg('%') != ''
-      exe lnum
-      silent! normal %
-      if line('.') == lnum || getline('.') !~ '^\s*{'
-	let ind = ind - shiftwidth()
+  " Look back for a line to align with
+  while lnum > 1
+    " Below a line starting with "}" find the matching "{".
+    if prev_text =~ '^\s*}'
+      if maparg('%') != ''
+	exe lnum
+	silent! normal %
+	if line('.') < lnum
+	  let lnum = line('.')
+	  let ind = indent(lnum)
+	  let prev_text = getline(lnum)
+	else
+	  break
+	endif
+      else
+	" todo: use searchpair() to find a match
+	break
       endif
+    elseif prev_text =~ s:lineContPat
+      " looks like a continuation like, go back one line
+      let lnum = lnum - 1
+      let ind = indent(lnum)
+      let prev_text = getline(lnum)
     else
-      " todo: use searchpair() to find a match
+      break
     endif
-  endif
+  endwhile
 
   " Below a line starting with "]" we must be below the end of a list.
   " Include a "}" and "},} in case a dictionary ends too.
--- a/runtime/indent/yaml.vim
+++ b/runtime/indent/yaml.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	YAML
 " Maintainer:	Nikolai Pavlov <zyx.vim@gmail.com>
-" Last Update:	Lukas Reineke
+" Last Updates:	Lukas Reineke, "lacygoill"
 " Last Change:	2022 Jun 17
 
 " Only load this indent file when no other was loaded.
@@ -29,8 +29,8 @@ function s:FindPrevLessIndentedLine(lnum
     let prevlnum = prevnonblank(a:lnum-1)
     let curindent = a:0 ? a:1 : indent(a:lnum)
     while           prevlnum
-                \&&  indent(prevlnum) >=  curindent
-                \&& getline(prevlnum) !~# '^\s*#'
+                \ && indent(prevlnum) >=  curindent
+                \ && getline(prevlnum) !~# '^\s*#'
         let prevlnum = prevnonblank(prevlnum-1)
     endwhile
     return prevlnum
@@ -54,7 +54,7 @@ let s:c_ns_anchor_name = s:c_ns_anchor_c
 let s:c_ns_anchor_property =  '\v\&' .. s:c_ns_anchor_name
 
 let s:ns_word_char = '\v[[:alnum:]_\-]'
-let s:ns_tag_char  = '\v%(%\x\x|' .. s:ns_word_char .. '|[#/;?:@&=+$.~*''()])'
+let s:ns_tag_char  = '\v%(\x\x|' .. s:ns_word_char .. '|[#/;?:@&=+$.~*''()])'
 let s:c_named_tag_handle     = '\v\!' .. s:ns_word_char .. '+\!'
 let s:c_secondary_tag_handle = '\v\!\!'
 let s:c_primary_tag_handle   = '\v\!'
@@ -63,7 +63,7 @@ let s:c_tag_handle = '\v%(' .. s:c_named
             \            '|' .. s:c_primary_tag_handle .. ')'
 let s:c_ns_shorthand_tag = '\v' .. s:c_tag_handle .. s:ns_tag_char .. '+'
 let s:c_non_specific_tag = '\v\!'
-let s:ns_uri_char  = '\v%(%\x\x|' .. s:ns_word_char .. '\v|[#/;?:@&=+$,.!~*''()[\]])'
+let s:ns_uri_char  = '\v%(\x\x|' .. s:ns_word_char .. '\v|[#/;?:@&=+$,.!~*''()[\]])'
 let s:c_verbatim_tag = '\v\!\<' .. s:ns_uri_char.. '+\>'
 let s:c_ns_tag_property = '\v' .. s:c_verbatim_tag.
             \               '\v|' .. s:c_ns_shorthand_tag.
--- a/runtime/syntax/gdresource.vim
+++ b/runtime/syntax/gdresource.vim
@@ -2,12 +2,13 @@
 " Language:     gdresource
 " Maintainer:   Maxim Kim <habamax@gmail.com>
 " Filenames:    *.tscn, *.tres
+" Website:      https://github.com/habamax/vim-gdscript
 
 if exists("b:current_syntax")
     finish
 endif
 
-let s:keepcpo= &cpo
+let s:keepcpo = &cpo
 set cpo&vim
 
 syn match gdResourceNumber "\<0x\%(_\=\x\)\+\>"
--- a/runtime/syntax/gdscript.vim
+++ b/runtime/syntax/gdscript.vim
@@ -1,13 +1,14 @@
 " Vim syntax file for Godot gdscript
 " Language:     gdscript
 " Maintainer:   Maxim Kim <habamax@gmail.com>
+" Website:      https://github.com/habamax/vim-gdscript
 " Filenames:    *.gd
 
 if exists("b:current_syntax")
     finish
 endif
 
-let s:keepcpo= &cpo
+let s:keepcpo = &cpo
 set cpo&vim
 
 syntax sync maxlines=100
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		Jun 29, 2022
-" Version:		202
+" Last Change:		Jul 08, 2022
+" Version:		203
 " URL:		http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras
@@ -141,7 +141,7 @@ endif
 syn cluster shArithParenList	contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo
 syn cluster shArithList	contains=@shArithParenList,shParenError
 syn cluster shCaseEsacList	contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange
-syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
+syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDblBrace,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn cluster shCaseList	add=shForPP
 endif
--- 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:	August 17, 2022
-" Version:	9.0-02
+" Last Change:	September 03, 2022
+" Version:	9.0-03
 " URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
 
@@ -19,12 +19,13 @@ syn keyword vimTodo contained	COMBAK	FIX
 syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained	a al[l] arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] h[elp] hi if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
-syn keyword vimCommand contained	ab ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
-syn keyword vimCommand contained	abc[lear] arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
-syn keyword vimCommand contained	abo[veleft] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] en[dif] endinterface ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
-syn keyword vimCommand contained	abstract argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] endclass endt[ry] exi[t] filet fir[st] foldo[pen] gui helpg[rep] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
-syn keyword vimCommand contained	addd argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon enddef endw[hile] exp filetype fix[del] for gvim helpt[ags] iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
+syn keyword vimCommand contained	a ar[gs] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
+syn keyword vimCommand contained	ab arga[dd] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
+syn keyword vimCommand contained	abc[lear] argd[elete] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endinterface ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
+syn keyword vimCommand contained	abo[veleft] argded[upe] au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endclass endt[ry] exi[t] filet fir[st] foldo[pen] gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
+syn keyword vimCommand contained	abstract argdo bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier echow[indow] enddef endw[hile] exp filetype fix[del] for gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
+syn keyword vimCommand contained	addd arge[dit] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
+syn keyword vimCommand contained	al[l] argg[lobal]
 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
 
@@ -73,17 +74,17 @@ syn keyword vimAutoEvent contained	BufCr
 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
 
 " Default highlighting groups {{{2
-syn keyword vimHLGroup contained	ColorColumn CurSearch Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr LineNrAbove LineNrBelow MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm StatusLineTermNC TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
+syn keyword vimHLGroup contained	ColorColumn CurSearch Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr LineNrAbove LineNrBelow MatchParen Menu MessageWindow ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm StatusLineTermNC TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu
 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 gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keys line2byte listener_flush 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 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 gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len lispindent 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 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 getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2blob 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 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 gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr list2str 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 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 gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_add 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 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 gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop
+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 lispindent 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 len list2blob 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 libcall list2str 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 libcallnr listener_add 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 line listener_flush 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 line2byte
 
 "--- syntax here and above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1