-
Notifications
You must be signed in to change notification settings - Fork 1
/
qml.vim
174 lines (149 loc) · 7.11 KB
/
qml.vim
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
" Mostly from https://github.com/peterhoeg/vim-qml
" But I removed some stuff I don't think was a good idea
" Vim syntax file
" Language: QML
" Maintainer: Peter Hoeg <[email protected]>
" Updaters: Refer to CONTRIBUTORS.md
" URL: https://github.com/peterhoeg/vim-qml
" Changes: `git log` is your friend
" Last Change: 2017-11-11
"
" This file is bassed on the original work done by Warwick Allison
" <[email protected]> whose did about 99% of the work here.
" Based on javascript syntax (as is QML)
if !exists("main_syntax")
if version < 600
syn clear
elseif exists("b:current_syntax")
finish
endif
let main_syntax = 'qml'
endif
" Drop fold if it set but vim doesn't support it.
if version < 600 && exists("qml_fold")
unlet qml_fold
endif
"syn case ignore
syn cluster qmlExpr contains=qmlStringD,qmlStringS,qmlStringT,SqmlCharacter,qmlNumber,qmlObjectLiteralType,qmlBoolean,qmlType,qmlJsType,qmlNull,qmlGlobal,qmlFunction,qmlArrowFunction
syn keyword qmlCommentTodo TODO FIXME XXX TBD contained
syn match qmlLineComment "\/\/.*" contains=@Spell,qmlCommentTodo
syn match qmlCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
syn region qmlComment start="/\*" end="\*/" contains=@Spell,qmlCommentTodo
syn match qmlSpecial "\\\d\d\d\|\\."
syn region qmlStringD start=+"+ skip=+\\\\\|\\"\|\\$+ end=+"+ keepend contains=qmlSpecial,@htmlPreproc,@Spell
syn region qmlStringS start=+'+ skip=+\\\\\|\\'\|\\$+ end=+'+ keepend contains=qmlSpecial,@htmlPreproc,@Spell
syn region qmlStringT start=+`+ skip=+\\\\\|\\`\|\\$+ end=+`+ keepend contains=qmlTemplateExpr,qmlSpecial,@htmlPreproc,@Spell
syn region qmlTemplateExpr contained matchgroup=qmlBraces start=+${+ end=+}+ keepend contains=@qmlExpr
syn match qmlCharacter "'\\.'"
syn match qmlNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
syn region qmlRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
syn match qmlObjectLiteralType "[A-Za-z][_A-Za-z0-9]*\s*\({\)\@="
syn region qmlTernaryColon start="?" end=":" contains=@qmlExpr,qmlBraces,qmlParens
syn match qmlBindingProperty "\<[A-Za-z][_A-Za-z.0-9]*\s*:" nextgroup=qmlExpr
syn match qmlUnboundProperty "^\<[A-Za-z][_A-Za-z.0-9]*\s*$"
syn match qmlObjectId "\<[a-z][a-zA-Z]*" contained
syn match qmlIdProperty "\<id\s*:\s*" nextgroup=qmlObjectId
syn match qmlPropertyNameUnbound "\<[A-Za-z]\+\s*$" contained
syn match qmlPropertyNameBound "\<[A-Za-z]\+\s*:\s*" contained nextgroup=qmlExpr
syn match qmlPropertyType "\<[A-Za-z]\+\s\+" contains=@qmlType nextgroup=qmlPropertyNameBound,qmlPropertyNameUnbound contained
syn match qmlPropertyDecl "\<property\s\+" nextgroup=qmlPropertyType
syn match qmlModuleVersion "\d[0-9.]*" contained
syn match qmlModule "[A-Za-z.]\+\s\+" nextgroup=qmlModuleVersion contained
syn match qmlImport "^import\s\+" nextgroup=qmlModule
syn match qmlEnum "\s\+[A-Z][A-Za-z]\+\.[A-Z][A-Za-z]\+"
syn keyword qmlConditional if else switch
syn keyword qmlRepeat while for do in
syn keyword qmlBranch break continue
syn keyword qmlOperator new delete instanceof typeof
syn keyword qmlJsType Array Boolean Date Function Number Object String RegExp
syn keyword qmlType action alias bool color date double enumeration font int list point real rect size string time url variant vector3d
syn keyword qmlStatement return with
syn keyword qmlBoolean true false
syn keyword qmlNull null undefined
syn keyword qmlIdentifier arguments this var let
syn keyword qmlLabel case default
syn keyword qmlException try catch finally throw
syn keyword qmlMessage alert( confirm( prompt( status(
syn keyword qmlGlobal self
syn keyword qmlReserved abstract boolean byte char class const debugger double enum export extends final float goto implements int interface long native package pragma private protected public short static super synchronized throws transient volatile
syn keyword qmlDeclaration signal readonly
if exists("qml_fold")
syn match qmlFunction "\<function\>"
syn region qmlFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
syn sync match qmlSync grouphere qmlFunctionFold "\<function\>"
syn sync match qmlSync grouphere NONE "^}"
setlocal foldmethod=syntax
setlocal foldtext=getline(v:foldstart)
else
syn keyword qmlFunction function
syn match qmlArrowFunction "=>"
syn match qmlBraces "[{}\[\]]"
syn match qmlParens "[()]"
endif
syn sync fromstart
syn sync maxlines=100
if main_syntax == "qml"
syn sync ccomment qmlComment
endif
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_qml_syn_inits")
if version < 508
let did_qml_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink qmlComment Comment
HiLink qmlLineComment Comment
HiLink qmlCommentTodo Todo
HiLink qmlSpecial Special
HiLink qmlStringS String
HiLink qmlStringD String
HiLink qmlStringT String
HiLink qmlCharacter Character
HiLink qmlNumber Number
HiLink qmlConditional Conditional
HiLink qmlRepeat Repeat
HiLink qmlBranch Conditional
HiLink qmlOperator Operator
HiLink qmlJsType Type
HiLink qmlType Type
HiLink qmlObjectLiteralType Type
HiLink qmlStatement Statement
HiLink qmlFunction Function
HiLink qmlArrowFunction Function
HiLink qmlBraces Function
HiLink qmlError Error
HiLink qmlNull Keyword
HiLink qmlBoolean Boolean
HiLink qmlRegexpString String
HiLink qmlIdentifier Identifier
HiLink qmlLabel Label
HiLink qmlException Exception
HiLink qmlMessage Keyword
HiLink qmlGlobal Keyword
HiLink qmlReserved Keyword
HiLink qmlDebug Debug
HiLink qmlConstant Label
HiLink qmlDeclaration Function
HiLink qmlIdProperty Identifier
HiLink qmlObjectId Constant
HiLink qmlBindingProperty Identifier
HiLink qmlUnboundProperty Identifier
HiLink qmlPropertyDecl Statement
HiLink qmlPropertyType Type
HiLink qmlPropertyNameBound Identifier
HiLink qmlPropertyNameUnbound Identifier
HiLink qmlPropertyTarget Tag
HiLink qmlImport Include
HiLink qmlModule String
HiLink qmlModuleVersion Number
HiLink qmlEnum Structure
delcommand HiLink
endif
let b:current_syntax = "qml"
if main_syntax == 'qml'
unlet main_syntax
endif