blob: 0509e30b17bd68f8059f1f70f0518ba98f178f43 [file] [log] [blame]
Bram Moolenaardbc28022014-07-26 13:40:44 +02001" Vim syntax file
2" Language: Vroom (vim testing and executable documentation)
Bram Moolenaarfb539272014-08-22 19:21:47 +02003" Maintainer: David Barnett (https://github.com/google/vim-ft-vroom)
Bram Moolenaardbc28022014-07-26 13:40:44 +02004" Last Change: 2014 Jul 23
5
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists('b:current_syntax')
Bram Moolenaardbc28022014-07-26 13:40:44 +02008 finish
9endif
10
11let s:cpo_save = &cpo
12set cpo-=C
13
14
15syn include @vroomVim syntax/vim.vim
16syn include @vroomShell syntax/sh.vim
17
18syntax region vroomAction
19 \ matchgroup=vroomOutput
20 \ start='\m^ ' end='\m$' keepend
21 \ contains=vroomControlBlock
22
23syntax region vroomAction
24 \ matchgroup=vroomOutput
25 \ start='\m^ & ' end='\m$' keepend
26 \ contains=vroomControlBlock
27
28syntax match vroomOutput '\m^ &$'
29
30syntax region vroomMessageBody
31 \ matchgroup=vroomMessage
32 \ start='\m^ \~ ' end='\m$' keepend
33 \ contains=vroomControlBlock
34
35syntax region vroomColoredAction
36 \ matchgroup=vroomInput
37 \ start='\m^ > ' end='\m$' keepend
38 \ contains=vimNotation,vroomControlBlock
39syntax region vroomAction
40 \ matchgroup=vroomInput
41 \ start='\m^ % ' end='\m$' keepend
42 \ contains=vimNotation,vroomControlBlock
43
44syntax region vroomAction
45 \ matchgroup=vroomContinuation
46 \ start='\m^ |' end='\m$' keepend
47
48syntax region vroomAction
49 \ start='\m^ \ze:' end='\m$' keepend
50 \ contains=@vroomVim,vroomControlBlock
51
52syntax region vroomAction
53 \ matchgroup=vroomDirective
54 \ start='\m^ @\i\+' end='\m$' keepend
55 \ contains=vroomControlBlock
56
57syntax region vroomSystemAction
58 \ matchgroup=vroomSystem
59 \ start='\m^ ! ' end='\m$' keepend
60 \ contains=@vroomShell,vroomControlBlock
61
62syntax region vroomHijackAction
63 \ matchgroup=vroomHijack
64 \ start='\m^ \$ ' end='\m$' keepend
65 \ contains=vroomControlBlock
66
67syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls
68 \ '\v \([^&()][^()]*\)$'
69
70syntax match vroomControlEscape '\m&' contained
71
72syntax cluster vroomControls
73 \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange
74 \,vroomChannel,vroomBind,vroomStrictness
75syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained
76syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained
77syntax match vroomBuffer '\v\d+,@!' contained
78syntax match vroomDelay '\v\d+(\.\d+)?s' contained
79syntax match vroomMode '\v<%(regex|glob|verbatim)' contained
80syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained
81syntax match vroomBind '\v<bind>' contained
82syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained
83
84highlight default link vroomInput Identifier
85highlight default link vroomDirective vroomInput
86highlight default link vroomControlBlock vroomInput
87highlight default link vroomSystem vroomInput
88highlight default link vroomOutput Statement
89highlight default link vroomContinuation Constant
90highlight default link vroomHijack Special
91highlight default link vroomColoredAction Statement
92highlight default link vroomSystemAction vroomSystem
93highlight default link vroomHijackAction vroomHijack
94highlight default link vroomMessage vroomOutput
95highlight default link vroomMessageBody Constant
96
97highlight default link vroomControlEscape Special
98highlight default link vroomBuffer vroomInput
99highlight default link vroomRange Include
100highlight default link vroomMode Constant
101highlight default link vroomDelay Type
102highlight default link vroomStrictness vroomMode
103highlight default link vroomChannel vroomMode
104highlight default link vroomBind vroomMode
105
106let b:current_syntax = 'vroom'
107
108
109let &cpo = s:cpo_save
110unlet s:cpo_save