# HG changeset patch # User Bram Moolenaar # Date 1662310805 -7200 # Node ID ebed259f919f95c745bdd0396d246cd27a3c9319 # Parent f4a27718e608b54a3824e37ad2193b676b92f0b2 Update runtime files Commit: https://github.com/vim/vim/commit/0daafaa7d99ef500f76b1b12f5fe8153e2fcaea0 Author: Bram Moolenaar Date: Sun Sep 4 17:45:43 2022 +0100 Update runtime files diff --git a/runtime/colors/blue.vim b/runtime/colors/blue.vim --- a/runtime/colors/blue.vim +++ b/runtime/colors/blue.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Steven Vertigan " 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 diff --git a/runtime/colors/darkblue.vim b/runtime/colors/darkblue.vim --- a/runtime/colors/darkblue.vim +++ b/runtime/colors/darkblue.vim @@ -4,7 +4,7 @@ " Maintainer: Original author Bohdan Vlasyuk " 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 diff --git a/runtime/colors/delek.vim b/runtime/colors/delek.vim --- a/runtime/colors/delek.vim +++ b/runtime/colors/delek.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer David Schweikert " 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 diff --git a/runtime/colors/desert.vim b/runtime/colors/desert.vim --- a/runtime/colors/desert.vim +++ b/runtime/colors/desert.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Hans Fugal " 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 diff --git a/runtime/colors/elflord.vim b/runtime/colors/elflord.vim --- a/runtime/colors/elflord.vim +++ b/runtime/colors/elflord.vim @@ -3,7 +3,7 @@ " Maintainer: original maintainer Ron Aaron " 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'] diff --git a/runtime/colors/evening.vim b/runtime/colors/evening.vim --- a/runtime/colors/evening.vim +++ b/runtime/colors/evening.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Steven Vertigan " 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 diff --git a/runtime/colors/habamax.vim b/runtime/colors/habamax.vim --- a/runtime/colors/habamax.vim +++ b/runtime/colors/habamax.vim @@ -4,7 +4,7 @@ " Maintainer: Maxim Kim " 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 diff --git a/runtime/colors/industry.vim b/runtime/colors/industry.vim --- 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 diff --git a/runtime/colors/koehler.vim b/runtime/colors/koehler.vim --- a/runtime/colors/koehler.vim +++ b/runtime/colors/koehler.vim @@ -3,7 +3,7 @@ " Maintainer: original maintainer Ron Aaron " 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'] diff --git a/runtime/colors/lunaperche.vim b/runtime/colors/lunaperche.vim --- a/runtime/colors/lunaperche.vim +++ b/runtime/colors/lunaperche.vim @@ -4,7 +4,7 @@ " Maintainer: Maxim Kim " 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 diff --git a/runtime/colors/morning.vim b/runtime/colors/morning.vim --- a/runtime/colors/morning.vim +++ b/runtime/colors/morning.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Bram Moolenaar " 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 diff --git a/runtime/colors/murphy.vim b/runtime/colors/murphy.vim --- a/runtime/colors/murphy.vim +++ b/runtime/colors/murphy.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Ron Aaron . " 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 diff --git a/runtime/colors/pablo.vim b/runtime/colors/pablo.vim --- a/runtime/colors/pablo.vim +++ b/runtime/colors/pablo.vim @@ -3,7 +3,7 @@ " Maintainer: Original maintainerRon Aaron " 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 diff --git a/runtime/colors/peachpuff.vim b/runtime/colors/peachpuff.vim --- a/runtime/colors/peachpuff.vim +++ b/runtime/colors/peachpuff.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer David Ne\v{c}as (Yeti) " 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 diff --git a/runtime/colors/quiet.vim b/runtime/colors/quiet.vim --- a/runtime/colors/quiet.vim +++ b/runtime/colors/quiet.vim @@ -4,7 +4,7 @@ " Maintainer: neutaaaaan " 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 diff --git a/runtime/colors/ron.vim b/runtime/colors/ron.vim --- a/runtime/colors/ron.vim +++ b/runtime/colors/ron.vim @@ -3,7 +3,7 @@ " Maintainer: original maintainer Ron Aaron " 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'] diff --git a/runtime/colors/shine.vim b/runtime/colors/shine.vim --- a/runtime/colors/shine.vim +++ b/runtime/colors/shine.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer is Yasuhiro Matsumoto " 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 diff --git a/runtime/colors/slate.vim b/runtime/colors/slate.vim --- a/runtime/colors/slate.vim +++ b/runtime/colors/slate.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Ralph Amissah " 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 diff --git a/runtime/colors/torte.vim b/runtime/colors/torte.vim --- a/runtime/colors/torte.vim +++ b/runtime/colors/torte.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Thorsten Maerz " 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 diff --git a/runtime/colors/zellner.vim b/runtime/colors/zellner.vim --- a/runtime/colors/zellner.vim +++ b/runtime/colors/zellner.vim @@ -4,7 +4,7 @@ " Maintainer: Original maintainer Ron Aaron " 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 diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile --- 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 \ diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt --- 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. can be used for the name of the actual file where this option was diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt --- 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 or 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) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- 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 || 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* diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt --- 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 diff --git a/runtime/doc/tags b/runtime/doc/tags --- 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- usr_51.txt /*using-* using-menus gui.txt /*using-menus* using-scripts repeat.txt /*using-scripts* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt --- 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? diff --git a/runtime/doc/userfunc.txt b/runtime/doc/userfunc.txt 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 || 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: diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt --- 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* diff --git a/runtime/ftplugin/gdscript.vim b/runtime/ftplugin/gdscript.vim --- 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 +# Website: https://github.com/habamax/vim-gdscript if exists("b:did_ftplugin") | finish | endif @@ -49,5 +50,5 @@ enddef nnoremap ]] NextSection(false, v:count1) nnoremap [[ NextSection(true, v:count1) -xmap ]] "\" .. v:count1 .. ']]m>gv' -xmap [[ "\" .. v:count1 .. '[[m>gv' +xmap ]] $'{v:count1}]]m>gv' +xmap [[ $'{v:count1}[[m>gv' diff --git a/runtime/indent/testdir/runtest.vim b/runtime/indent/testdir/runtest.vim --- 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 diff --git a/runtime/indent/testdir/vim.in b/runtime/indent/testdir/vim.in --- 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 diff --git a/runtime/indent/testdir/vim.ok b/runtime/indent/testdir/vim.ok --- 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 diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim --- 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. diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim --- a/runtime/indent/yaml.vim +++ b/runtime/indent/yaml.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: YAML " Maintainer: Nikolai Pavlov -" 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. diff --git a/runtime/syntax/gdresource.vim b/runtime/syntax/gdresource.vim --- a/runtime/syntax/gdresource.vim +++ b/runtime/syntax/gdresource.vim @@ -2,12 +2,13 @@ " Language: gdresource " Maintainer: Maxim Kim " 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\)\+\>" diff --git a/runtime/syntax/gdscript.vim b/runtime/syntax/gdscript.vim --- 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 +" 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 diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim --- 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 " Previous Maintainer: Lennart Schultz -" 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 diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim --- 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 -" 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 "\" 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