96 lines
5.6 KiB
VimL
96 lines
5.6 KiB
VimL
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
" Setup
|
|
setlocal isident=@,48-57,-,.,_,192-255
|
|
|
|
" Top level elements
|
|
syntax region tsComment keepend start="^\s*\/\*" end="^\s*\*\/.*$"
|
|
syntax region tsComment keepend start="^\s*#" end="$"
|
|
syntax region tsComment keepend start="\v^\s*\/\/" end="$"
|
|
syntax region tsInclude keepend start="\v^\s*\<" end="\v\>\s*$"
|
|
syntax region tsCondition keepend start="\v^\s*\[" end="\]\s*$"
|
|
syntax match tsSingleline "\v^\s*\i+\s*[=<>{].*$"
|
|
syntax region tsMultiline keepend start="\v^\s*\i+\s*\(\s*$" end="\v^\s*\)\s*$"
|
|
syntax match tsDelimiter "\v^\s*\}\s*$"
|
|
|
|
" Resolving tsSingleline and Multiline
|
|
syntax region tsValue keepend matchgroup=tsLineOperator start="\v\=" end="\v$" contained containedin=tsSingleline
|
|
syntax region tsValue keepend matchgroup=tsDelimiter start="\v\(" end="\v^\s*\)\s*$" contained containedin=tsMultiline
|
|
syntax match tsIdentifier "\v^\s*\i+" contained containedin=tsSingleline,tsMultiline
|
|
syntax match tsLineOperator "\v[=<]" contained containedin=tsSymlink
|
|
syntax match tsSymlink "\v(\<|\=\s*\<)\s*\i+\s*$" contained containedin=tsSingleline
|
|
syntax match tsDelimiter "\v\{\s*$" contained containedin=tsSingleline
|
|
syntax match tsLineOperator "\v\>\s*$" contained containedin=tsSingleline
|
|
syntax match tsIdentifier "\v\i+\s*$" contained containedin=tsSymlink
|
|
|
|
" Sub level elements
|
|
syntax match tsDelimiter "\v[\[\]]" contained containedin=tsCondition
|
|
" This is one sign each hit, to give it a minimum priority.
|
|
syntax match tsValueString "\v\S" contained containedin=tsValue
|
|
syntax match tsValuePipe "\v\|" contained containedin=tsValue
|
|
" Detect numbers, but not those that are part of words.
|
|
syntax match tsNumber "\v(\a\d*)@<!\d(\d*\a)@!" contained containedin=tsValue
|
|
syntax region tsEval oneline keepend matchgroup=tsDelimiter start="\v\{" end="\v\}" contained containedin=tsValue,tsCondition,tsTagAttrValue
|
|
syntax match tsIdentifier "\v\$\i+" contained containedin=tsEval
|
|
|
|
syntax match tsTagMatch "\v\<\/?\a+[^>]+\/?\>" contained containedin=tsValue
|
|
syntax region tsTag keepend matchgroup=tsDelimiter start="\v\<\/?" end="\v\/?\>" contained containedin=tsTagMatch
|
|
syntax match tsTagOperator "\v\=" contained containedin=tsTag
|
|
syntax region tsTagAttrValue matchgroup=tsDelimiter start="\v\"" end="\v\"" contained containedin=tsTag
|
|
|
|
" Keywords
|
|
syntax case ignore | syntax keyword tsTodo contained containedin=tsComment TODO
|
|
syntax case ignore | syntax keyword tsTodo contained containedin=tsComment xxx
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue CASE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue COA
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue COA_INT
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue CONTENT
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue EDITPANEL
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue FILE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue FILES
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue FLUIDTEMPLATE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue FORM
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue HMENU
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue HTML
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue IMAGE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue IMG_RESOURCE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue LOAD_REGISTER
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue PAGE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue RECORDS
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue RESTORE_REGISTER
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue SVG
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue TEMPLATE
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue TEXT
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue USER
|
|
syntax case match | syntax keyword tsObjectType contained containedin=tsValue USER_INT
|
|
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue addToList
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue prependString
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue removeFromList
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue removeString
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue replaceString
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue reverseList
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue sortList
|
|
syntax case match | syntax keyword modificationFunction contained containedin=tsValue uniqueList
|
|
|
|
" Link groups
|
|
highlight link tsComment Comment
|
|
highlight link tsCondition Conditional
|
|
highlight link tsDelimiter Delimiter
|
|
highlight link tsIdentifier Identifier
|
|
highlight link tsInclude Include
|
|
highlight link tsNumber NONE
|
|
highlight link tsLineOperator Operator
|
|
highlight link tsTodo Todo
|
|
highlight link tsValuePipe Delimiter
|
|
highlight link tsValueString String
|
|
highlight link tsTag Identifier
|
|
highlight link tsTagOperator Operator
|
|
highlight link tsTagAttrValue String
|
|
highlight link tsObjectType Type
|
|
highlight link modificationFunction Type
|
|
|
|
let b:current_syntax = "typoscript"
|
|
|