From 882d5fa5584f8223a9d405ecd0367c53188162fa Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 2 Feb 2024 06:41:10 +0800 Subject: [PATCH] vim-patch:69866449ddb2 runtime(vim): Improve keymap file highlighting (vim/vim#13550) - Match :loadkeymap to EOF as a region and contain only allowed items. - Add highlighting for --- runtime/syntax/vim.vim | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 298215b880..094f9f98aa 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -234,7 +234,20 @@ syn match vimFuncBlank contained "\s\+" syn keyword vimPattern contained start skip end " vimTypes : new for vim9 - syn match vimType ":\s*\zs\<\(bool\|number\|float\|string\|blob\|list<\|dict<\|job\|channel\|func\)\>" +syn match vimType ":\s*\zs\<\(bool\|number\|float\|string\|blob\|list<\|dict<\|job\|channel\|func\)\>" + +" Keymaps: (Vim Project Addition) {{{2 +" ======= + +" TODO: autogenerated vimCommand keyword list does not handle all abbreviations +" : handle Vim9 script comments when something like #13104 is merged +syn match vimKeymapStart "^" contained skipwhite nextgroup=vimKeymapLhs,vimKeymapLineComment +syn match vimKeymapLhs "\S\+" contained skipwhite nextgroup=vimKeymapRhs contains=vimNotation +syn match vimKeymapRhs "\S\+" contained skipwhite nextgroup=vimKeymapTailComment contains=vimNotation +syn match vimKeymapTailComment "\S.*" contained +syn match vimKeymapLineComment +".*+ contained contains=@vimCommentGroup,vimCommentString,vimCommentTitle + +syn region vimKeymap matchgroup=vimCommand start="\" end="\%$" contains=vimKeymapStart " Special Filenames, Modifiers, Extension Removal: {{{2 " =============================================== @@ -451,6 +464,7 @@ syn match vimNotation "\%#=1\(\\\|\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\ syn match vimNotation '\(\\\|\)\=[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket syn match vimNotation '\%#=1\(\\\|\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket +syn match vimNotation "\%#=1\(\\\|\)\=<\%([scamd]-\)\{0,4}char-\%(\d\+\|0\o\+\|0x\x\+\)>" contains=vimBracket syn match vimBracket contained "[\\<>]" syn case match @@ -946,6 +960,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimInsert vimString hi def link vimIskSep Delimiter hi def link vimKeyCode vimSpecFile + hi def link vimKeymapLineComment vimComment + hi def link vimKeymapTailComment vimComment hi def link vimKeyword Statement hi def link vimLet vimCommand hi def link vimLetHereDoc vimString