blob: 0cd6ccce1df47a1c11a94418d1c29c6093c31685 [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
6" For version 5.x: Clear all syntax items.
7" For version 6.x and later: Quit when a syntax file was already loaded.
8if v:version < 600
9 syntax clear
10elseif exists('b:current_syntax')
11 finish
12endif
13
14let s:cpo_save = &cpo
15set cpo-=C
16
17
18syn include @vroomVim syntax/vim.vim
19syn include @vroomShell syntax/sh.vim
20
21syntax region vroomAction
22 \ matchgroup=vroomOutput
23 \ start='\m^ ' end='\m$' keepend
24 \ contains=vroomControlBlock
25
26syntax region vroomAction
27 \ matchgroup=vroomOutput
28 \ start='\m^ & ' end='\m$' keepend
29 \ contains=vroomControlBlock
30
31syntax match vroomOutput '\m^ &$'
32
33syntax region vroomMessageBody
34 \ matchgroup=vroomMessage
35 \ start='\m^ \~ ' end='\m$' keepend
36 \ contains=vroomControlBlock
37
38syntax region vroomColoredAction
39 \ matchgroup=vroomInput
40 \ start='\m^ > ' end='\m$' keepend
41 \ contains=vimNotation,vroomControlBlock
42syntax region vroomAction
43 \ matchgroup=vroomInput
44 \ start='\m^ % ' end='\m$' keepend
45 \ contains=vimNotation,vroomControlBlock
46
47syntax region vroomAction
48 \ matchgroup=vroomContinuation
49 \ start='\m^ |' end='\m$' keepend
50
51syntax region vroomAction
52 \ start='\m^ \ze:' end='\m$' keepend
53 \ contains=@vroomVim,vroomControlBlock
54
55syntax region vroomAction
56 \ matchgroup=vroomDirective
57 \ start='\m^ @\i\+' end='\m$' keepend
58 \ contains=vroomControlBlock
59
60syntax region vroomSystemAction
61 \ matchgroup=vroomSystem
62 \ start='\m^ ! ' end='\m$' keepend
63 \ contains=@vroomShell,vroomControlBlock
64
65syntax region vroomHijackAction
66 \ matchgroup=vroomHijack
67 \ start='\m^ \$ ' end='\m$' keepend
68 \ contains=vroomControlBlock
69
70syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls
71 \ '\v \([^&()][^()]*\)$'
72
73syntax match vroomControlEscape '\m&' contained
74
75syntax cluster vroomControls
76 \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange
77 \,vroomChannel,vroomBind,vroomStrictness
78syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained
79syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained
80syntax match vroomBuffer '\v\d+,@!' contained
81syntax match vroomDelay '\v\d+(\.\d+)?s' contained
82syntax match vroomMode '\v<%(regex|glob|verbatim)' contained
83syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained
84syntax match vroomBind '\v<bind>' contained
85syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained
86
87highlight default link vroomInput Identifier
88highlight default link vroomDirective vroomInput
89highlight default link vroomControlBlock vroomInput
90highlight default link vroomSystem vroomInput
91highlight default link vroomOutput Statement
92highlight default link vroomContinuation Constant
93highlight default link vroomHijack Special
94highlight default link vroomColoredAction Statement
95highlight default link vroomSystemAction vroomSystem
96highlight default link vroomHijackAction vroomHijack
97highlight default link vroomMessage vroomOutput
98highlight default link vroomMessageBody Constant
99
100highlight default link vroomControlEscape Special
101highlight default link vroomBuffer vroomInput
102highlight default link vroomRange Include
103highlight default link vroomMode Constant
104highlight default link vroomDelay Type
105highlight default link vroomStrictness vroomMode
106highlight default link vroomChannel vroomMode
107highlight default link vroomBind vroomMode
108
109let b:current_syntax = 'vroom'
110
111
112let &cpo = s:cpo_save
113unlet s:cpo_save