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>
This commit is contained in:
Doug Kearns
2025-05-01 17:43:17 +02:00
committed by Christian Brabandt
parent 83cb8174c8
commit 1c58019a82
21 changed files with 471 additions and 49 deletions

View File

@ -0,0 +1 @@
hi link vimVar Identifier

View File

@ -0,0 +1 @@
hi link vimVar Identifier

View File

@ -0,0 +1,111 @@
vim9script
# Vim :enum command
# VIM_TEST_SETUP hi link vim9EnumValue Todo
interface Interface1
def Def1()
endinterface
interface Interface2
endinterface
# enum-implements clause with interspersed comments
enum Enum1 implements Interface1, Interface2
Value1
def Def1()
enddef
endenum
enum Enum2
\ implements Interface1, Interface2
Value1
def Def1()
enddef
endenum
enum Enum3 # comment
\ implements Interface1, Interface2
Value1
endenum
enum Enum4
# comment
\ implements Interface1, Interface2
Value1
endenum
enum Enum5
\ implements Interface1, Interface2 # comment
Value1
def Def1()
enddef
endenum
enum Enum6
#\ comment
\ implements Interface1, Interface2
Value1
def Def1()
enddef
endenum
# [enum Enum7.Value1 {name: 'Value1', ordinal: 0, val1: 0, val2: 0}, enum Enum7.Value2 {name: 'Value2', ordinal: 1, val1: 1, val2: 0}, enum Enum7.Value3 {name: 'Value3', ordinal: 2, val1: 2, val2: 0}]
# comment
enum Enum7
\
#\ comment
\
#\ comment
\ implements Interface1, Interface2 # comment
# comment
# comment
Value1, # comment
# comment
# comment
Value2(1 + 0), # comment
# comment
# comment
Value3( # comment
# comment
1 # comment
# comment
+ # comment
# comment
1 # comment
) # comment
# comment
var val1: number # comment
# comment
def Def1()
enddef
# comment
static def Def2() # comment
# comment
enddef # comment
# comment
public var val2: number # comment
endenum
# [enum Enum8.implements {name: 'implements', ordinal: 0}]
enum Enum8 implements Interface1, Interface2
implements
def Def1()
enddef
endenum
# [enum Enum9.Value1 {name: 'Value1', ordinal: 0, implements: 0}]
enum Enum9 implements Interface1, Interface2
Value1
var implements: number
def Def1()
enddef
endenum
# [enum Enum10.implements {name: 'implements', ordinal: 0}]
enum Enum10 implements Interface1, Interface2
implements
def Def1()
enddef
endenum

View File

@ -0,0 +1,32 @@
vim9script
# Vim :enum command
# VIM_TEST_SETUP hi link vim9EnumValue Todo
# See: https://github.com/vim/vim/pull/16365#issuecomment-2571420551
enum Letter
#
#########################################
A("(\" # not a comment NOR_ANOTHER_VALUE,
\ "), B(")\""), C($"'')
\('"), D($'""(),"'), E,
F(
")" .. # FA,
"(" # FB,
), G
#enum NotSupported
#endenum
def new(this.value = v:none)
return
enddef
const value: string
endenum
for letter in Letter.values
echo letter
endfor
echo Letter.D

View File

@ -2,6 +2,8 @@ vim9script
# Vim :enum command
# VIM_TEST_SETUP let g:vimsyn_folding = 'ef'
# VIM_TEST_SETUP setl fdc=2 fdl=99 fdm=syntax
# VIM_TEST_SETUP hi link vim9EnumValue Todo
interface Interface1
endinterface
@ -29,11 +31,20 @@ enum Enum4
endenum
enum Enum5 implements Interface1, Interface2
Value1,
Value2,
Value3
def Method1()
def Nested()
enddef
Value1,
Value2,
Value3
def Method1()
def Nested()
enddef
enddef
endenum
enum Enum6
#\ comment
\ implements Interface1, Interface2
Value1,
Value2,
Value3
endenum

0
runtime/syntax/testdir/input/vim9_shebang.vim Executable file → Normal file
View File

0
runtime/syntax/testdir/input/vim_shebang.vim Executable file → Normal file
View File