fix and improvements

This commit is contained in:
csh
2025-06-17 08:50:19 +08:00
parent 64023a4169
commit 55be8c9e61
14 changed files with 709 additions and 351 deletions
+30 -24
View File
@@ -36,7 +36,7 @@ syn keyword tslException except raise try finally exceptobject
syn keyword tslBoolean false true
syn keyword tslNil nil
syn keyword tslType string integer boolean int64 real
syn keyword tslType string integer boolean int64 real array
syn keyword tslBuiltins echo mtic mtoc this
syn keyword tslBuiltins inf nan
syn keyword tslBuiltins external const out var
@@ -54,33 +54,36 @@ syn keyword tslAccess public protected private published
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 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 tslDotInFunc '\.' contained
syn match tslFuncName '\.\@<=\h\w*' contained
syn region tslFuncParams
\ start='('
\ end=')'
\ contained
\ contains=tslParam,tslParamType,tslParamSep
\ contains=tslParam,tslParamType,tslParamSep,tslNumber,tslString,tslPropertyChain
\ nextgroup=tslReturnType skipwhite
syn match tslParam '\h\w*' contained nextgroup=tslParamType skipnl skipwhite
syn match tslParamType ':\s*\h\w*' contained contains=tslColon,tslTypeName
syn match tslReturnType ':\s*\h\w*' contained contains=tslColon,tslTypeName
syn match tslTypeName '\h\w*' contained
syn match tslParamSep '[;,]' contained
syn match tslColon ':' contained
syn match tslParam '\h\w*' contained nextgroup=tslParamType skipnl skipwhite
syn match tslParamType ':\s*[^;,)=]*' contained contains=tslColon
syn match tslReturnType ':\s*[^;]*' contained contains=tslColon
syn match tslParamSep '[;,]' contained
syn match tslColon ':' contained
syn match tslVarDecl '^\s*\h\w*\s*:=\@!\s*[^;?]*;' contains=tslVarName,tslVarType
syn match tslVarName '^\s*\h\w*\ze\s*:=\@!' contained
syn match tslVarType ':=\@!\s*[^;?]*' contained contains=tslColon
# 匹配完整的属性链
syn match tslPropertyChain '\h\w*\%(\.\h\w*\)\+' 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
syn match tslPropertyChain '\h\w*\%(\.\h\w*\)\+' 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
# Function calls
syn match tslFuncCallName '\%(\<\%(function\|procedure\)\s\+\%(\h\w*\.\)\?\)\@<!\h\w*\ze\s*('
syn match tslFuncCallName '\%(\<\%(function\|procedure\)\s\+\%(\h\w*\.\)\?\)\@<!\h\w*\ze\s*('
\ containedin=ALLBUT,tslFuncParams,tslPropertyChain,tslFunction,tslFuncName,tslFuncNamePart
syn region tslFuncCall
@@ -95,21 +98,21 @@ syn region tslCallParams
\ contained
\ contains=tslCallParam,tslCallValue,tslCallSep,tslString,tslNumber,tslIdentifier,tslOperator,tslFuncCall
syn match tslCallParam '\h\w*\ze\s*:' contained
syn match tslCallValue ':\s*\zs[^;)]*' contained
syn match tslCallParam '\h\w*\ze\s*:' contained
syn match tslCallValue ':\s*\zs[^;)]*' contained
syn match tslCallValue
\ ':\s*\zs\\%([^;,)]\+\|.\{-}\%([;,)]\|$\))'
\ contained
\ contains=tslString,tslNumber,tslIdentifier,tslOperator,tslFunctionCall
syn match tslCallSep '[;,]' contained
syn match tslCallSep '[;,]' contained
# Operators and delimiters
syn match tslOperator '[+\-*/<>=!&|^~%]'
syn match tslOperator ':='
syn match tslDelimiter '[()[\]{},;:.@?]'
syn match tslOperator '[+\-*/<>=!&|^~%]'
syn match tslOperator ':='
syn match tslDelimiter '[()[\]{},;:.@?]'
# Comments
syn match tslComment '//.*$' contains=tslTodo,@Spell
syn match tslComment '//.*$' contains=tslTodo,@Spell
syn region tslComment start='(\*' end='\*)' contains=tslTodo,@Spell keepend
syn region tslComment start='{' end='}' contains=tslTodo,@Spell keepend
@@ -138,10 +141,12 @@ hi def link tslTypeNameInFunc Type
hi def link tslParam Identifier
hi def link tslParamType Type
hi def link tslReturnType Type
hi def link tslTypeName Type
hi def link tslParamSep Delimiter
hi def link tslColon Delimiter
hi def link tslVarName Identifier
hi def link tslVarType Type
hi def link tslFuncCallName Function
hi def link tslCallParam Identifier
hi def link tslCallValue Type
@@ -178,6 +183,7 @@ hi def link tslString String
hi def link tslRawString String
hi def link tslQuotes String
hi def link tslNumber Number
hi def link tslType Type
b:current_syntax = "tsl"