package tm-grammars

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file tm_grammar_viml.ml

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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
let lang_id = "viml"
let json = {json|{
  "displayName": "Vim Script",
  "name": "viml",
  "patterns": [
    {
      "include": "#comment"
    },
    {
      "include": "#constant"
    },
    {
      "include": "#entity"
    },
    {
      "include": "#keyword"
    },
    {
      "include": "#punctuation"
    },
    {
      "include": "#storage"
    },
    {
      "include": "#strings"
    },
    {
      "include": "#support"
    },
    {
      "include": "#variable"
    },
    {
      "include": "#syntax"
    },
    {
      "include": "#commands"
    },
    {
      "include": "#option"
    },
    {
      "include": "#map"
    }
  ],
  "repository": {
    "commands": {
      "patterns": [
        {
          "match": "\\bcom([!\\s])",
          "name": "storage.other.command.viml"
        },
        {
          "match": "\\bau([!\\s])",
          "name": "storage.other.command.viml"
        },
        {
          "match": "-bang",
          "name": "storage.other.command.bang.viml"
        },
        {
          "match": "-nargs=[*+0-9]+",
          "name": "storage.other.command.args.viml"
        },
        {
          "match": "-complete=\\S+",
          "name": "storage.other.command.completion.viml"
        },
        {
          "begin": "(aug(roup)?)",
          "end": "(augroup\\sEND|$)",
          "name": "support.function.augroup.viml"
        }
      ]
    },
    "comment": {
      "patterns": [
        {
          "begin": "((\\s+)?\"\"\")",
          "end": "^(?!\")",
          "name": "comment.block.documentation.viml"
        },
        {
          "match": "^\"\\svim:.*",
          "name": "comment.block.modeline.viml"
        },
        {
          "begin": "(\\s+\"\\s+)(?!\")",
          "end": "$",
          "name": "comment.line.viml",
          "patterns": [
            {
              "match": "\\{\\{\\{\\d?$",
              "name": "comment.line.foldmarker.viml"
            },
            {
              "match": "}}}\\d?",
              "name": "comment.line.foldmarker.viml"
            }
          ]
        },
        {
          "begin": "^(\\s+)?\"",
          "end": "$",
          "name": "comment.line.viml",
          "patterns": [
            {
              "match": "\\{\\{\\{\\d?$",
              "name": "comment.line.foldmarker.viml"
            },
            {
              "match": "}}}\\d?",
              "name": "comment.line.foldmarker.viml"
            }
          ]
        }
      ]
    },
    "constant": {
      "patterns": [
        {
          "match": "\\b(true|false)\\b",
          "name": "constant.language.boolean.viml"
        },
        {
          "match": "\\b([0-9]+)\\b",
          "name": "constant.numeric.viml"
        }
      ]
    },
    "entity": {
      "patterns": [
        {
          "match": "(([abgs]:)?[#.0-9A-Z_a-z]{2,})\\b(?=\\()",
          "name": "entity.name.function.viml"
        }
      ]
    },
    "keyword": {
      "patterns": [
        {
          "match": "\\b(if|while|for|return|au(g(?:|roup))|else(if|)?|do|in)\\b",
          "name": "keyword.control.viml"
        },
        {
          "match": "\\b(end(?:|if|for|while))\\s|$",
          "name": "keyword.control.viml"
        },
        {
          "match": "\\b(break|continue|try|catch|endtry|finally|finish|throw|range)\\b",
          "name": "keyword.control.viml"
        },
        {
          "match": "\\b(func??|function|endfunction|endfunc)\\b",
          "name": "keyword.function.viml"
        },
        {
          "match": "\\b(normal|silent)\\b",
          "name": "keyword.other.viml"
        },
        {
          "include": "#operators"
        }
      ]
    },
    "map": {
      "patterns": [
        {
          "begin": "(<)",
          "beginCaptures": {
            "1": {
              "name": "punctuation.definition.map.viml"
            }
          },
          "end": "([>\\s])",
          "endCaptures": {
            "1": {
              "name": "punctuation.definition.map.viml"
            }
          },
          "patterns": [
            {
              "match": "(?<=:\\s)(.+)",
              "name": "constant.character.map.rhs.viml"
            },
            {
              "match": "(?i:(bang|buffer|expr|nop|plug|sid|silent))",
              "name": "constant.character.map.special.viml"
            },
            {
              "match": "(?i:([acdms]-\\w))",
              "name": "constant.character.map.key.viml"
            },
            {
              "match": "(?i:(F[0-9]+))",
              "name": "constant.character.map.key.fn.viml"
            },
            {
              "match": "(?i:(bs|bar|cr|del|down|esc|left|right|space|tab|up|leader))",
              "name": "constant.character.map.viml"
            }
          ]
        },
        {
          "match": "\\b(([cinostvx]?(nore)?map))\\b",
          "name": "storage.type.map.viml"
        }
      ]
    },
    "operators": {
      "patterns": [
        {
          "match": "([!#+=?\\\\~])",
          "name": "keyword.operator.viml"
        },
        {
          "match": " ([-.:]|[\\&|]{2})( |$)",
          "name": "keyword.operator.viml"
        },
        {
          "match": "(\\.{3})",
          "name": "keyword.operator.viml"
        },
        {
          "match": "( [<>] )",
          "name": "keyword.operator.viml"
        },
        {
          "match": "(>=)",
          "name": "keyword.operator.viml"
        }
      ]
    },
    "option": {
      "patterns": [
        {
          "match": "&?\\b(al|aleph|anti|antialias|arab|arabic|arshape|arabicshape|ari|allowrevins|akm|altkeymap|ambw|ambiwidth|acd|autochdir|ai|autoindent|ar|autoread|aw|autowrite|awa|autowriteall|bg|background|bs|backspace|bk|backup|bkc|backupcopy|bdir|backupdir|bex|backupext|bsk|backupskip|bdlay|balloondelay|beval|ballooneval|bevalterm|balloonevalterm|bexpr|balloonexpr|bo|belloff|bin|binary|bomb|brk|breakat|bri|breakindent|briopt|breakindentopt|bsdir|browsedir|bh|bufhidden|bl|buflisted|bt|buftype|cmp|casemap|cd|cdpath|cedit|ccv|charconvert|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|cb|clipboard|ch|cmdheight|cwh|cmdwinheight|cc|colorcolumn|co|columns|com|comments|cms|commentstring|cp|compatible|cpt|complete|cocu|concealcursor|cole|conceallevel|cfu|completefunc|cot|completeopt|cf|confirm|ci|copyindent|cpo|cpoptions|cm|cryptmethod|cspc|cscopepathcomp|csprg|cscopeprg|csqf|cscopequickfix|csre|cscoperelative|cst|cscopetag|csto|cscopetagorder|csverb|cscopeverbose|crb|cursorbind|cuc|cursorcolumn|cul|cursorline|debug|def|define|deco|delcombine|dict|dictionary|diff|dex|diffexpr|dip|diffopt|dg|digraph|dir|directory|dy|display|ead|eadirection|ed|edcompatible|emo|emoji|enc|encoding|eol|endofline|ea|equalalways|ep|equalprg|eb|errorbells|ef|errorfile|efm|errorformat|ek|esckeys|ei|eventignore|et|expandtab|ex|exrc|fenc|fileencoding|fencs|fileencodings|ff|fileformat|ffs|fileformats|fic|fileignorecase|ft|filetype|fcs|fillchars|fixeol|fixendofline|fk|fkmap|fcl|foldclose|fdc|foldcolumn|fen|foldenable|fde|foldexpr|fdi|foldignore|fdl|foldlevel|fdls|foldlevelstart|fmr|foldmarker|fdm|foldmethod|fml|foldminlines|fdn|foldnestmax|fdo|foldopen|fdt|foldtext|fex|formatexpr|fo|formatoptions|flp|formatlistpat|fp|formatprg|fs|fsync|gd|gdefault|gfm|grepformat|gp|grepprg|gcr|guicursor|gfn|guifont|gfs|guifontset|gfw|guifontwide|ghr|guiheadroom|go|guioptions|guipty|gtl|guitablabel|gtt|guitabtooltip|hf|helpfile|hh|helpheight|hlg|helplang|hid|hidden|hl|highlight|hi|history|hk|hkmap|hkp|hkmapp|hls|hlsearch|icon|iconstring|ic|ignorecase|imaf|imactivatefunc|imak|imactivatekey|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|imsf|imstatusfunc|imst|imstyle|inc|include|inex|includeexpr|is|incsearch|inde|indentexpr|indk|indentkeys|inf|infercase|im|insertmode|isf|isfname|isi|isident|isk|iskeyword|isp|isprint|js|joinspaces|key|kmp|keymap|km|keymodel|kp|keywordprg|lmap|langmap|lm|langmenu|lnr|langnoremap|lrm|langremap|ls|laststatus|lz|lazyredraw|lbr|linebreak|lines|lsp|linespace|lisp|lw|lispwords|list|lcs|listchars|lpl|loadplugins|luadll|macatsui|magic|mef|makeef|menc|makeencoding|mp|makeprg|mps|matchpairs|mat|matchtime|mco|maxcombine|mfd|maxfuncdepth|mmd|maxmapdepth|mm|maxmem|mmp|maxmempattern|mmt|maxmemtot|mis|menuitems|msm|mkspellmem|ml|modeline|mls|modelines|ma|modifiable|mod|modified|more|mousef??|mousefocus|mh|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mzschemedll|mzschemegcdll|mzq|mzquantum|nf|nrformats|nu|number|nuw|numberwidth|ofu|omnifunc|odev|opendevice|opfunc|operatorfunc|pp|packpath|para|paragraphs|paste|pt|pastetoggle|pex|patchexpr|pm|patchmode|pa|path|perldll|pi|preserveindent|pvh|previewheight|pvw|previewwindow|pdev|printdevice|penc|printencoding|pexpr|printexpr|pfn|printfont|pheader|printheader|pmbcs|printmbcharset|pmbfn|printmbfont|popt|printoptions|prompt|ph|pumheight|pythonthreedll|pythondll|pyx|pyxversion|qe|quoteescape|ro|readonly|rdt|redrawtime|re|regexpengine|rnu|relativenumber|remap|rop|renderoptions|report|rs|restorescreen|ri|revins|rl|rightleft|rlc|rightleftcmd|rubydll|ru|ruler|ruf|rulerformat|rtp|runtimepath|scr|scroll|scb|scrollbind|sj|scrolljump|so|scrolloff|sbo|scrollopt|sect|sections|secure|sel|selection|slm|selectmode|ssop|sessionoptions|sh|shell|shcf|shellcmdflag|sp|shellpipe|shq|shellquote|srr|shellredir|ssl|shellslash|stmp|shelltemp|st|shelltype|sxq|shellxquote|sxe|shellxescape|sr|shiftround|sw|shiftwidth|shm|shortmess|sn|shortname|sbr|showbreak|sc|showcmd|sft|showfulltag|sm|showmatch|smd|showmode|stal|showtabline|ss|sidescroll|siso|sidescrolloff|scl|signcolumn|scs|smartcase|si|smartindent|sta|smarttab|sts|softtabstop|spell|spc|spellcapcheck|spf|spellfile|spl|spelllang|sps|spellsuggest|sb|splitbelow|spr|splitright|sol|startofline|stl|statusline|su|suffixes|sua|suffixesadd|swf|swapfile|sws|swapsync|swb|switchbuf|smc|synmaxcol|syn|syntax|tal|tabline|tpm|tabpagemax|ts|tabstop|tbs|tagbsearch|tc|tagcase|tl|taglength|tr|tagrelative|tags??|tgst|tagstack|tcldll|term|tbidi|termbidi|tenc|termencoding|tgc|termguicolors|tk|termkey|tms|termsize|terse|ta|textauto|tx|textmode|tw|textwidth|tsr|thesaurus|top|tildeop|to|timeout|tm|timeoutlen|title|titlelen|titleold|titlestring|tb|toolbar|tbis|toolbariconsize|ttimeout|ttm|ttimeoutlen|tbi|ttybuiltin|tf|ttyfast|ttym|ttymouse|tsl|ttyscroll|tty|ttytype|udir|undodir|udf|undofile|ul|undolevels|ur|undoreload|uc|updatecount|ut|updatetime|vbs|verbose|vfile|verbosefile|vdir|viewdir|vop|viewoptions|vi|viminfo|vif|viminfofile|ve|virtualedit|vb|visualbell|warn|wiv|weirdinvert|ww|whichwrap|wc|wildchar|wcm|wildcharm|wig|wildignore|wic|wildignorecase|wmnu|wildmenu|wim|wildmode|wop|wildoptions|wak|winaltkeys|wi|window|wh|winheight|wfh|winfixheight|wfw|winfixwidth|wmh|winminheight|wmw|winminwidth|winptydll|wiw|winwidth|wrap|wm|wrapmargin|ws|wrapscan|write|wa|writeany|wb|writebackup|wd|writedelay)\\b",
          "name": "support.type.option.viml"
        },
        {
          "match": "&?\\b(aleph|allowrevins|altkeymap|ambiwidth|autochdir|arabic|arabicshape|autoindent|autoread|autowrite|autowriteall|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|belloff|binary|bomb|breakat|breakindent|breakindentopt|browsedir|bufhidden|buflisted|buftype|casemap|cdpath|cedit|charconvert|cindent|cinkeys|cinoptions|cinwords|clipboard|cmdheight|cmdwinheight|colorcolumn|columns|comments|commentstring|complete|completefunc|completeopt|concealcursor|conceallevel|confirm|copyindent|cpoptions|cscopepathcomp|cscopeprg|cscopequickfix|cscoperelative|cscopetag|cscopetagorder|cscopeverbose|cursorbind|cursorcolumn|cursorline|debug|define|delcombine|dictionary|diff|diffexpr|diffopt|digraph|directory|display|eadirection|encoding|endofline|equalalways|equalprg|errorbells|errorfile|errorformat|eventignore|expandtab|exrc|fileencodings??|fileformats??|fileignorecase|filetype|fillchars|fixendofline|fkmap|foldclose|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldopen|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fsync|gdefault|grepformat|grepprg|guicursor|guifont|guifontset|guifontwide|guioptions|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hidden|hlsearch|history|hkmapp??|icon|iconstring|ignorecase|imcmdline|imdisable|iminsert|imsearch|include|includeexpr|incsearch|indentexpr|indentkeys|infercase|insertmode|isfname|isident|iskeyword|isprint|joinspaces|keymap|keymodel|keywordprg|langmap|langmenu|langremap|laststatus|lazyredraw|linebreak|lines|linespace|lisp|lispwords|list|listchars|loadplugins|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|menuitems|mkspellmem|modelines??|modifiable|modified|more|mouse|mousefocus|mousehide|mousemodel|mouseshape|mousetime|nrformats|number|numberwidth|omnifunc|opendevice|operatorfunc|packpath|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|perldll|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pumheight|pythondll|pythonthreedll|quoteescape|readonly|redrawtime|regexpengine|relativenumber|remap|report|revins|rightleft|rightleftcmd|rubydll|ruler|rulerformat|runtimepath|scroll|scrollbind|scrolljump|scrolloff|scrollopt|sections|secure|selection|selectmode|sessionoptions|shada|shell|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shellxescape|shellxquote|shiftround|shiftwidth|shortmess|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|sidescroll|sidescrolloff|signcolumn|smartcase|smartindent|smarttab|softtabstop|spell|spellcapcheck|spellfile|spelllang|spellsuggest|splitbelow|splitright|startofline|statusline|suffixes|suffixesadd|swapfile|switchbuf|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|tagcase|taglength|tagrelative|tags|tagstack|term|termbidi|terse|textwidth|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|ttimeout|ttimeoutlen|ttytype|undodir|undofile|undolevels|undoreload|updatecount|updatetime|verbose|verbosefile|viewdir|viewoptions|virtualedit|visualbell|warn|whichwrap|wildcharm??|wildignore|wildignorecase|wildmenu|wildmode|wildoptions|winaltkeys|window|winheight|winfixheight|winfixwidth|winminheight|winminwidth|winwidth|wrap|wrapmargin|wrapscan|write|writeany|writebackup|writedelay)\\b",
          "name": "support.type.option.viml"
        },
        {
          "match": "&?\\b(al|ari|akm|ambw|acd|arab|arshape|ai|ar|awa??|bg|bs|bkc??|bdir|bex|bsk|bdlay|beval|bexpr|bo|bin|bomb|brk|bri|briopt|bsdir|bh|bl|bt|cmp|cd|cedit|ccv|cink??|cino|cinw|cb|ch|cwh|cc|com??|cms|cpt|cfu|cot|cocu|cole|cf|ci|cpo|cspc|csprg|csqf|csre|csto??|cpo|crb|cuc|cul|debug|def|deco|dict|diff|dex|dip|dg|dir|dy|ead|enc|eol|ea|ep|eb|efm??|ei|et|ex|fencs??|ffs??|fic|ft|fcs|fixeol|fk|fcl|fdc|fen|fde|fdi|fdls??|fmr|fdm|fml|fdn|fdo|fdt|fex|flp|fo|fp|fs|gd|gfm|gp|gcr|gfn|gfs|gfw|go|gtl|gtt|hf|hh|hlg|hid|hls|hi|hkp??|icon|iconstring|ic|imc|imd|imi|ims|inc|inex|is|inde|indk|inf|im|isf|isi|isk|isp|js|kmp?|kp|lmap|lm|lrm|ls|lz|lbr|lines|lsp|lisp|lw|list|lcs|lpl|magic|mef|mps??|mat|mco|mfd|mmd?|mmp|mmt|mis|msm|mls??|ma|mod|more|mousef??|mh|mousem|mouses|mouset|nf|nuw??|ofu|odev|opfunc|pp|para|paste|pt|pex|pm|pa|perldll|pi|pvh|pvw|pdev|penc|pexpr|pfn|pheader|pmbcs|pmbfn|popt|prompt|ph|pythondll|pythonthreedlll|qe|ro|rdt|re|rnu|remap|report|ri|rlc??|rubydll|ruf??|rtp|scr|scb|sj|so|sbo|sect|secure|sel|slm|ssop|sd|sh|shcf|sp|shq|srr|ssl|stmp|sxe|sxq|sr|sw|shm|sbr|sc|sft|smd??|stal|ss|siso|scl|scs|si|sta|sts|spell|spc|spf|spl|sps|sb|spr|sol|stl|sua??|swf|swb|smc|syn|tal|tpm|ts|tbs|tc|tl|tr|tag|tgst|term|tbidi|terse|tw|tsr|top?|tm|title|titlelen|titleold|titlestring|ttimeout|ttm|tty|udir|udf|ul|ur|uc|ut|vbs|vfile|vdir|vop|ve|vb|warn|ww|wcm??|wig|wic|wmnu|wim|wop|wak|wi|wh|wfh|wfw|wmh|wmw|wiw|wrap|wm|ws|write|wa|wb|wd)\\b",
          "name": "support.type.option.shortname.viml"
        },
        {
          "match": "\\b(no(?:anti|antialias|arab|arabic|arshape|arabicshape|ari|allowrevins|akm|altkeymap|acd|autochdir|ai|autoindent|ar|autoread|aw|autowrite|awa|autowriteall|bk|backup|beval|ballooneval|bevalterm|balloonevalterm|bin|binary|bomb|bri|breakindent|bl|buflisted|cin|cindent|cp|compatible|cf|confirm|ci|copyindent|csre|cscoperelative|cst|cscopetag|csverb|cscopeverbose|crb|cursorbind|cuc|cursorcolumn|cul|cursorline|deco|delcombine|diff|dg|digraph|ed|edcompatible|emo|emoji|eol|endofline|ea|equalalways|eb|errorbells|ek|esckeys|et|expandtab|ex|exrc|fic|fileignorecase|fixeol|fixendofline|fk|fkmap|fen|foldenable|fs|fsync|gd|gdefault|guipty|hid|hidden|hk|hkmap|hkp|hkmapp|hls|hlsearch|icon|ic|ignorecase|imc|imcmdline|imd|imdisable|is|incsearch|inf|infercase|im|insertmode|js|joinspaces|lnr|langnoremap|lrm|langremap|lz|lazyredraw|lbr|linebreak|lisp|list|lpl|loadplugins|macatsui|magic|ml|modeline|ma|modifiable|mod|modified|more|mousef|mousefocus|mh|mousehide|nu|number|odev|opendevice|paste|pi|preserveindent|pvw|previewwindow|prompt|ro|readonly|rnu|relativenumber|rs|restorescreen|ri|revins|rl|rightleft|ru|ruler|scb|scrollbind|secure|ssl|shellslash|stmp|shelltemp|sr|shiftround|sn|shortname|sc|showcmd|sft|showfulltag|sm|showmatch|smd|showmode|scs|smartcase|si|smartindent|sta|smarttab|spell|sb|splitbelow|spr|splitright|sol|startofline|swf|swapfile|tbs|tagbsearch|tr|tagrelative|tgst|tagstack|tbidi|termbidi|tgc|termguicolors|terse|ta|textauto|tx|textmode|top|tildeop|to|timeout|title|ttimeout|tbi|ttybuiltin|tf|ttyfast|udf|undofile|vb|visualbell|warn|wiv|weirdinvert|wic|wildignorecase|wmnu|wildmenu|wfh|winfixheight|wfw|winfixwidth|wrapscan|wrap|ws|write|wa|writeany|wb|writebackup))\\b",
          "name": "support.type.option.off.viml"
        }
      ]
    },
    "punctuation": {
      "patterns": [
        {
          "match": "([()])",
          "name": "punctuation.parens.viml"
        },
        {
          "match": "(,)",
          "name": "punctuation.comma.viml"
        }
      ]
    },
    "storage": {
      "patterns": [
        {
          "match": "\\b(call|let|unlet)\\b",
          "name": "storage.viml"
        },
        {
          "match": "\\b(a(?:bort|utocmd))\\b",
          "name": "storage.viml"
        },
        {
          "match": "\\b(set(l(?:|ocal))?)\\b",
          "name": "storage.viml"
        },
        {
          "match": "\\b(com(mand)?)\\b",
          "name": "storage.viml"
        },
        {
          "match": "\\b(color(scheme)?)\\b",
          "name": "storage.viml"
        },
        {
          "match": "\\b(Plug(?:|in))\\b",
          "name": "storage.plugin.viml"
        }
      ]
    },
    "strings": {
      "patterns": [
        {
          "begin": "\"",
          "end": "(\"|$)",
          "name": "string.quoted.double.viml",
          "patterns": [
          ]
        },
        {
          "begin": "'",
          "end": "('|$)",
          "name": "string.quoted.single.viml",
          "patterns": [
          ]
        },
        {
          "match": "/(\\\\\\\\|\\\\/|[^\\n/])*/",
          "name": "string.regexp.viml"
        }
      ]
    },
    "support": {
      "patterns": [
        {
          "match": "(add|call|delete|empty|extend|get|has|isdirectory|join|printf)(?=\\()",
          "name": "support.function.viml"
        },
        {
          "match": "\\b(echo(m|hl)?|exe(cute)?|redir|redraw|sleep|so(urce)?|wincmd|setf)\\b",
          "name": "support.function.viml"
        },
        {
          "match": "(v:(beval_col|beval_bufnr|beval_lnum|beval_text|beval_winnr|char|charconvert_from|charconvert_to|cmdarg|cmdbang|count1??|ctype|dying|errmsg|exception|fcs_reason|fcs_choice|fname_in|fname_out|fname_new|fname_diff|folddashes|foldlevel|foldend|foldstart|insertmode|key|lang|lc_time|lnum|mouse_win|mouse_lnum|mouse_col|oldfiles|operator|prevcount|profiling|progname|register|scrollstart|servername|searchforward|shell_error|statusmsg|swapname|swapchoice|swapcommand|termresponse|this_session|throwpoint|val|version|warningmsg|windowid))",
          "name": "support.type.builtin.vim-variable.viml"
        },
        {
          "match": "(&(cpo|isk|omnifunc|paste|previewwindow|rtp|tags|term|wrap))",
          "name": "support.type.builtin.viml"
        },
        {
          "match": "(&(shell(cmdflag|redir)?))",
          "name": "support.type.builtin.viml"
        },
        {
          "match": "<args>",
          "name": "support.variable.args.viml"
        },
        {
          "match": "\\b(None|ErrorMsg|WarningMsg)\\b",
          "name": "support.type.syntax.viml"
        },
        {
          "match": "\\b(BufNewFile|BufReadPre|BufRead|BufReadPost|BufReadCmd|FileReadPre|FileReadPost|FileReadCmd|FilterReadPre|FilterReadPost|StdinReadPre|StdinReadPost|BufWrite|BufWritePre|BufWritePost|BufWriteCmd|FileWritePre|FileWritePost|FileWriteCmd|FileAppendPre|FileAppendPost|FileAppendCmd|FilterWritePre|FilterWritePost|BufAdd|BufCreate|BufDelete|BufWipeout|BufFilePre|BufFilePost|BufEnter|BufLeave|BufWinEnter|BufWinLeave|BufUnload|BufHidden|BufNew|SwapExists|TermOpen|TermClose|FileType|Syntax|OptionSet|VimEnter|GUIEnter|GUIFailed|TermResponse|QuitPre|VimLeavePre|VimLeave|DirChanged|FileChangedShell|FileChangedShellPost|FileChangedRO|ShellCmdPost|ShellFilterPost|CmdUndefined|FuncUndefined|SpellFileMissing|SourcePre|SourceCmd|VimResized|FocusGained|FocusLost|CursorHoldI??|CursorMovedI??|WinNew|WinEnter|WinLeave|TabEnter|TabLeave|TabNew|TabNewEntered|TabClosed|CmdlineEnter|CmdlineLeave|CmdwinEnter|CmdwinLeave|InsertEnter|InsertChange|InsertLeave|InsertCharPre|TextYankPost|TextChangedI??|ColorScheme|RemoteReply|QuickFixCmdPre|QuickFixCmdPost|SessionLoadPost|MenuPopup|CompleteDone|User)\\b",
          "name": "support.type.event.viml"
        },
        {
          "match": "\\b(Comment|Constant|String|Character|Number|Boolean|Float|Identifier|Function|Statement|Conditional|Repeat|Label|Operator|Keyword|Exception|PreProc|Include|Define|Macro|PreCondit|Type|StorageClass|Structure|Typedef|Special|SpecialChar|Tag|Delimiter|SpecialComment|Debug|Underlined|Ignore|Error|Todo)\\b",
          "name": "support.type.syntax-group.viml"
        }
      ]
    },
    "syntax": {
      "patterns": [
        {
          "match": "syn(tax)? case (ignore|match)",
          "name": "keyword.control.syntax.viml"
        },
        {
          "match": "syn(tax)? (clear|enable|include|off|on|manual|sync)",
          "name": "keyword.control.syntax.viml"
        },
        {
          "match": "\\b(contained|display|excludenl|fold|keepend|oneline|skipnl|skipwhite|transparent)\\b",
          "name": "keyword.other.syntax.viml"
        },
        {
          "match": "\\b(add|containedin|contains|matchgroup|nextgroup)=",
          "name": "keyword.other.syntax.viml"
        },
        {
          "captures": {
            "1": {
              "name": "keyword.other.syntax-range.viml"
            },
            "3": {
              "name": "string.regexp.viml"
            }
          },
          "match": "((start|skip|end)=)(\\+\\S+\\+\\s)?"
        },
        {
          "captures": {
            "0": {
              "name": "support.type.syntax.viml"
            },
            "1": {
              "name": "storage.syntax.viml"
            },
            "3": {
              "name": "variable.other.syntax-scope.viml"
            },
            "4": {
              "name": "storage.modifier.syntax.viml"
            }
          },
          "match": "(syn(?:|tax))\\s+(cluster|keyword|match|region)(\\s+\\w+\\s+)(contained)?",
          "patterns": [
          ]
        },
        {
          "captures": {
            "1": {
              "name": "storage.highlight.viml"
            },
            "2": {
              "name": "storage.modifier.syntax.viml"
            },
            "3": {
              "name": "support.function.highlight.viml"
            },
            "4": {
              "name": "variable.other.viml"
            },
            "5": {
              "name": "variable.other.viml"
            }
          },
          "match": "(hi(?:|ghlight))\\s+(def(?:|ault))\\s+(link)\\s+(\\w+)\\s+(\\w+)",
          "patterns": [
          ]
        }
      ]
    },
    "variable": {
      "patterns": [
        {
          "match": "https?://\\S+",
          "name": "variable.other.link.viml"
        },
        {
          "match": "(?<=\\()([A-Za-z]+)(?=\\))",
          "name": "variable.parameter.viml"
        },
        {
          "match": "\\b([abgls]:[#.0-9A-Z_a-z]+)\\b(?!\\()",
          "name": "variable.other.viml"
        }
      ]
    }
  },
  "scopeName": "source.viml"
}|json}