runtime(vim): Update base-syntax, improve enum highlighting

Match enum values and missing class keywords.

fixes: #15970

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 2bf0f7d..5b8a5ba 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
 " Language:	   Vim script
 " Maintainer:	   Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "	   Doug Kearns <dougkearns@gmail.com>
-" Last Change:	   2025 Apr 27
+" Last Change:	   2025 May 01
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -499,8 +499,6 @@
  syn region	vimDefFold	start="\<def\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\)\+("	                 end="\<enddef\>"	       contains=vimDef      fold keepend extend transparent
 endif
 
-syn match	vimFuncBlank contained	"\s\+"
-
 " Types: {{{2
 " =====
 
@@ -530,6 +528,7 @@
 " =============================
 
 if s:vim9script
+
   " Methods {{{3
   syn match	vim9MethodDef		contained	"\<def\>"	skipwhite nextgroup=vim9MethodDefName,vim9ConstructorDefName
   syn match	vim9MethodDefName		contained	"\<\h\w*\>"	nextgroup=vim9MethodDefParams contains=@vim9MethodName
@@ -609,10 +608,48 @@
   VimFoldc syn region	vim9ClassBody	start="\<class\>" matchgroup=vimCommand end="\<endclass\>" contains=@vim9ClassBodyList transparent
 
   " Enums {{{3
-  syn cluster	vim9EnumBodyList		contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Enum,vim9Implements,@vim9MethodDef,vim9Const,vim9Final,vim9Var
+  syn cluster	vim9EnumBodyList		contains=vim9Comment,vim9LineComment,@vim9Continue,vim9Enum,@vimExprList,@vim9MethodDef,vim9Public,vim9Static,vim9Const,vim9Final,vim9This,vim9Var
 
-  syn match	vim9Enum		contained	"\<enum\>"	skipwhite nextgroup=vim9EnumName
-  syn match	vim9EnumName		contained	"\<\u\w*\>"	skipwhite skipnl nextgroup=vim9Implements
+  syn match	vim9Enum		contained	"\<enum\>"	skipwhite           nextgroup=vim9EnumName
+
+  syn match	vim9EnumName		contained	"\<\u\w*\>"	skipwhite skipempty nextgroup=vim9EnumNameTrailing,vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue,vim9EnumImplements
+  syn match	vim9EnumNameTrailing	contained	"\S.*"
+  syn region	vim9EnumNameComment	contained
+        \ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
+        \ skipwhite skipempty nextgroup=vim9EnumNameComment,vim9EnumValue
+        \ contains=@vimCommentGroup,vimCommentString
+  " vim9EnumName's "skipempty" should only apply to comments and enum values and not implements clauses
+  syn match	vim9EnumNameEmpty		contained	"^"	skipwhite skipempty nextgroup=vim9EnumNameComment,vim9EnumValue
+  " allow line continuation between enum name and "implements"
+  syn match	vim9EnumNameContinue	contained
+        \ "^\s*\\"
+        \ skipwhite skipnl nextgroup=vim9EnumNameTrailing,vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue,vim9EnumImplements
+        \ contains=vimWhitespace
+  syn match	vim9EnumNameContinueComment	contained
+        \ "^\s*#\\ .*"
+        \ skipwhite skipnl nextgroup=vim9EnumNameEmpty,vim9EnumNameComment,@vim9EnumNameContinue
+        \ contains=vimWhitespace
+  syn cluster	vim9EnumNameContinue	contains=vim9EnumNameContinue,vim9EnumNameContinueComment
+
+  " enforce enum value list location
+  syn match	vim9EnumValue		contained	"\<\a\w*\>"		  nextgroup=vim9EnumValueArgList,vim9EnumValueListComma,vim9Comment
+  syn match	vim9EnumValueListComma	contained	","	skipwhite skipempty nextgroup=vim9EnumValue,vim9EnumValueListCommaComment
+  syn region	vim9EnumValueListCommaComment	contained
+        \ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
+        \ skipwhite skipempty nextgroup=vim9EnumValueListCommaComment,vim9EnumValue
+        \ contains=@vimCommentGroup,vimCommentString
+  syn region	vim9EnumValueArgList	contained
+        \ matchgroup=vimParenSep start="(" end=")"
+        \ nextgroup=vim9EnumValueListComma
+        \ contains=@vimExprList,vimContinueString,vim9Comment
+
+  syn keyword	vim9EnumImplements	contained	implements	skipwhite        nextgroup=vim9EnumImplementedInterface
+  syn match	vim9EnumImplementedInterface	contained	"\<\u\w*\>"	skipwhite skipnl nextgroup=vim9EnumInterfaceListComma,vim9EnumImplementedInterfaceComment,vim9EnumValue
+  syn match	vim9EnumInterfaceListComma	contained	","	skipwhite        nextgroup=vim9EnumImplementedInterface
+  syn region	vim9EnumImplementedInterfaceComment	contained
+        \ start="#" skip="\n\s*\%(\\\|#\\ \)" end="$"
+        \ skipwhite skipempty nextgroup=vim9EnumImplementedInterfaceComment,vim9EnumValue
+        \ contains=@vimCommentGroup,vimCommentString
 
   VimFolde syn region	vim9EnumBody	start="\<enum\>" matchgroup=vimCommand end="\<endenum\>" contains=@vim9EnumBodyList transparent
 
@@ -2086,6 +2123,12 @@
  hi def link vim9Const	vimCommand
  hi def link vim9ContinueComment	vimContinueComment
  hi def link vim9Enum	vimCommand
+ hi def link vim9EnumImplementedInterfaceComment	vim9Comment
+ hi def link vim9EnumImplements	vim9Implements
+ hi def link vim9EnumNameComment	vim9Comment
+ hi def link vim9EnumNameContinue	vimContinue
+ hi def link vim9EnumNameContinueComment	vim9Comment
+ hi def link vim9EnumValueListCommaComment	vim9Comment
  hi def link vim9Export	vimCommand
  hi def link vim9Extends	Keyword
  hi def link vim9Final	vimCommand