From f109316580787542d8b93ad55cb2657b8c453b43 Mon Sep 17 00:00:00 2001 From: csh Date: Thu, 10 Jul 2025 18:04:17 +0800 Subject: [PATCH] update tsl.vim --- vim/tsl.vim | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/vim/tsl.vim b/vim/tsl.vim index 26ec6a7..5c69542 100644 --- a/vim/tsl.vim +++ b/vim/tsl.vim @@ -20,7 +20,7 @@ syn keyword tslPrimitiveType string integer boolean int64 real array # 类型系统和面向对象 syn keyword tslClassType type class fakeclass new -syn keyword tslClassModifier override overload virtual property self inherited +syn keyword tslClassModifier override overload virtual property inherited self syn keyword tslAccessModifier public protected private published syn keyword tslConstructor create destroy operator syn keyword tslReferenceModifier weakref autoref @@ -66,15 +66,17 @@ syn keyword tslBoolean false true syn keyword tslNull nil syn keyword tslMathConstant inf nan +# todo syn keyword tslTodo FIXME NOTE NOTES TODO XXX contained # Function definitions -syn match tslFuncName '\%(\h\w*\.\)\?\h\w*' contained nextgroup=tslFuncParams skipwhite contains=tslTypeNameInFunc,tslDotInFunc,tslFuncNamePart -syn match tslTypeNameInFunc '\h\w*\ze\.\h\w*' contained -syn match tslDotInFunc '\.' contained -syn match tslFuncName '\.\@<=\h\w*' contained +syn match tslFuncName '\%(\h\w*\.\)\?\h\w*' contained nextgroup=tslFuncParams skipwhite contains=tslTypeNameInFunc,tslDotInFunc +syn match tslTypeNameInFunc '\h\w*\ze\.\h\w*' contained +syn match tslDotInFunc '\.' contained +syn match tslFuncName '\.\@<=\h\w*' contained syn region tslFuncParams + \ matchgroup=Delimiter \ start='(' \ end=')' \ contained @@ -87,12 +89,8 @@ syn match tslReturnType ':\s*[^;]*' contained contains=tslColon syn match tslParamSep '[;,]' contained syn match tslColon ':' contained -syn match tslVarDecl '\(?\s\)\@' contains=tslObjectName,tslPropertyDot,tslPropertyName syn match tslObjectName '\h\w*\ze\.\h\w*' contained syn match tslPropertyDot '\.' contained syn match tslPropertyName '\.\@<=\h\w*\%(\ze\.\|\ze\s*[^(]\|\ze\s*$\)' contained @@ -107,7 +105,7 @@ syn region tslFuncCall \ contains=tslFuncCallName,tslFuncCall,tslNamedParam,tslPositionalParam,tslString,tslRawString,tslNumber,tslIdentifier,tslOperator,tslParamSep \ transparent -syn match tslNamedParam '\h\w*\s*:\s*[^;,)]*' contained +syn match tslNamedParam '\%((\|;\s*\)\zs\h\w*\s*:\s*[^;,)]*' contained \ contains=tslParamName,tslParamColon,tslParamValue syn match tslParamName '\h\w*\ze\s*:' contained @@ -118,8 +116,21 @@ syn match tslParamValue ':\s*\zs[^;,)]*' contained syn match tslPositionalParam '[^;,():]*' contained \ contains=tslString,tslNumber,tslIdentifier,tslOperator,tslFuncCall,tslFuncCallName -syn match tslParamSep '[;,]' contained +# Variable declaration +syn match tslVarDeclWithTag '\]\@<=\s*\h\w*\ze\s*:\%(=\)\@!' + \ nextgroup=tslVarTypeDecl skipwhite + \ contains=tslVarName +syn match tslVarDeclStart '\%(^\s*\|;\s*\)\zs\h\w*\ze\s*:\%(=\)\@!' + \ nextgroup=tslVarTypeDecl skipwhite + \ contains=tslVarName + +syn match tslVarName '\h\w*' contained +syn region tslVarTypeDecl + \ matchgroup=tslVarDelimiter start=':\%(=\)\@!' end=';' + \ contained keepend oneline + \ contains=tslVarType +syn match tslVarType '[^;]*' contained # Operators and delimiters syn match tslOperator '[+\-*/<>=!&|^~%]' @@ -144,6 +155,7 @@ syn match tslNumber '\<\d\+[eE][+-]\=\d\+[jJ]\=\>' syn match tslNumber '\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=' syn match tslNumber '\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>' + # Highlight links hi def link tslProgramStructure Statement hi def link tslModuleStructure Statement @@ -179,8 +191,8 @@ hi def link tslNull Constant hi def link tslMathConstant Number # 其他元素的高亮链接保持不变 -hi def link tslClassName Type -hi def link tslDot Operator +hi def link tslObjectName Type +hi def link tslPropertyDot Operator hi def link tslPropertyName Special hi def link tslFuncName Function