summaryrefslogtreecommitdiffstats
path: root/syntax/basic/identifiers.vim
blob: 36b6d29cc35fdef4ed6f8152f700a13443e78ce9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
if has_key(g:polyglot_is_disabled, 'typescript')
  finish
endif

syntax cluster afterIdentifier contains=
  \ typescriptDotNotation,
  \ typescriptFuncCallArg,
  \ typescriptTemplate,
  \ typescriptIndexExpr,
  \ @typescriptSymbols,
  \ typescriptTypeArguments

syntax match   typescriptIdentifierName        /\<\K\k*/
  \ nextgroup=@afterIdentifier
  \ transparent
  \ contains=@_semantic
  \ skipnl skipwhite

syntax match   typescriptProp contained /\K\k*!\?/
  \ transparent
  \ contains=@props
  \ nextgroup=@afterIdentifier
  \ skipwhite skipempty

syntax region  typescriptIndexExpr      contained matchgroup=typescriptProperty start=/\[/rs=s+1 end=/]/he=e-1 contains=@typescriptValue,typescriptCastKeyword nextgroup=@typescriptSymbols,typescriptDotNotation,typescriptFuncCallArg skipwhite skipempty

syntax match   typescriptDotNotation           /\.\|?\.\|!\./ nextgroup=typescriptProp skipnl
syntax match   typescriptDotStyleNotation      /\.style\./ nextgroup=typescriptDOMStyle transparent
" syntax match   typescriptFuncCall              contained /[a-zA-Z]\k*\ze(/ nextgroup=typescriptFuncCallArg
syntax region  typescriptParenExp              matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptComments,@typescriptValue,typescriptCastKeyword nextgroup=@typescriptSymbols skipwhite skipempty
syntax region  typescriptFuncCallArg           contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptValue,@typescriptComments,typescriptCastKeyword nextgroup=@typescriptSymbols,typescriptDotNotation skipwhite skipempty skipnl
syntax region  typescriptEventFuncCallArg      contained matchgroup=typescriptParens start=/(/ end=/)/ contains=@typescriptEventExpression
syntax region  typescriptEventString           contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ contains=typescriptASCII,@events

syntax region  typescriptDestructureString
  \ start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/
  \ contains=typescriptASCII
  \ nextgroup=typescriptDestructureAs
  \ contained skipwhite skipempty

syntax cluster typescriptVariableDeclarations
  \ contains=typescriptVariableDeclaration,@typescriptDestructures

syntax match typescriptVariableDeclaration /[A-Za-z_$]\k*/
  \ nextgroup=typescriptTypeAnnotation,typescriptAssign
  \ contained skipwhite skipempty

syntax cluster typescriptDestructureVariables contains=
  \ typescriptRestOrSpread,
  \ typescriptDestructureComma,
  \ typescriptDestructureLabel,
  \ typescriptDestructureVariable,
  \ @typescriptDestructures

syntax match typescriptDestructureVariable    /[A-Za-z_$]\k*/ contained
  \ nextgroup=typescriptDefaultParam
  \ contained skipwhite skipempty

syntax match typescriptDestructureLabel       /[A-Za-z_$]\k*\ze\_s*:/
  \ nextgroup=typescriptDestructureAs
  \ contained skipwhite skipempty

syntax match typescriptDestructureAs /:/
  \ nextgroup=typescriptDestructureVariable,@typescriptDestructures
  \ contained skipwhite skipempty

syntax match typescriptDestructureComma /,/ contained

syntax cluster typescriptDestructures contains=
  \ typescriptArrayDestructure,
  \ typescriptObjectDestructure

syntax region typescriptArrayDestructure matchgroup=typescriptBraces
  \ start=/\[/ end=/]/
  \ contains=@typescriptDestructureVariables,@typescriptComments
  \ nextgroup=typescriptTypeAnnotation,typescriptAssign
  \ transparent contained skipwhite skipempty fold

syntax region typescriptObjectDestructure matchgroup=typescriptBraces
  \ start=/{/ end=/}/
  \ contains=typescriptDestructureString,@typescriptDestructureVariables,@typescriptComments
  \ nextgroup=typescriptTypeAnnotation,typescriptAssign
  \ transparent contained skipwhite skipempty fold