1" Vim syntax file 2" Language: Vroom (vim testing and executable documentation) 3" Maintainer: David Barnett (https://github.com/google/vim-ft-vroom) 4" Last Change: 2014 Jul 23 5 6" quit when a syntax file was already loaded 7if exists('b:current_syntax') 8 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 111