summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/vroom.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/vroom.vim')
-rw-r--r--runtime/syntax/vroom.vim110
1 files changed, 110 insertions, 0 deletions
diff --git a/runtime/syntax/vroom.vim b/runtime/syntax/vroom.vim
new file mode 100644
index 0000000..0509e30
--- /dev/null
+++ b/runtime/syntax/vroom.vim
@@ -0,0 +1,110 @@
+" Vim syntax file
+" Language: Vroom (vim testing and executable documentation)
+" Maintainer: David Barnett (https://github.com/google/vim-ft-vroom)
+" Last Change: 2014 Jul 23
+
+" quit when a syntax file was already loaded
+if exists('b:current_syntax')
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+
+syn include @vroomVim syntax/vim.vim
+syn include @vroomShell syntax/sh.vim
+
+syntax region vroomAction
+ \ matchgroup=vroomOutput
+ \ start='\m^ ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax region vroomAction
+ \ matchgroup=vroomOutput
+ \ start='\m^ & ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax match vroomOutput '\m^ &$'
+
+syntax region vroomMessageBody
+ \ matchgroup=vroomMessage
+ \ start='\m^ \~ ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax region vroomColoredAction
+ \ matchgroup=vroomInput
+ \ start='\m^ > ' end='\m$' keepend
+ \ contains=vimNotation,vroomControlBlock
+syntax region vroomAction
+ \ matchgroup=vroomInput
+ \ start='\m^ % ' end='\m$' keepend
+ \ contains=vimNotation,vroomControlBlock
+
+syntax region vroomAction
+ \ matchgroup=vroomContinuation
+ \ start='\m^ |' end='\m$' keepend
+
+syntax region vroomAction
+ \ start='\m^ \ze:' end='\m$' keepend
+ \ contains=@vroomVim,vroomControlBlock
+
+syntax region vroomAction
+ \ matchgroup=vroomDirective
+ \ start='\m^ @\i\+' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax region vroomSystemAction
+ \ matchgroup=vroomSystem
+ \ start='\m^ ! ' end='\m$' keepend
+ \ contains=@vroomShell,vroomControlBlock
+
+syntax region vroomHijackAction
+ \ matchgroup=vroomHijack
+ \ start='\m^ \$ ' end='\m$' keepend
+ \ contains=vroomControlBlock
+
+syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls
+ \ '\v \([^&()][^()]*\)$'
+
+syntax match vroomControlEscape '\m&' contained
+
+syntax cluster vroomControls
+ \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange
+ \,vroomChannel,vroomBind,vroomStrictness
+syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained
+syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained
+syntax match vroomBuffer '\v\d+,@!' contained
+syntax match vroomDelay '\v\d+(\.\d+)?s' contained
+syntax match vroomMode '\v<%(regex|glob|verbatim)' contained
+syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained
+syntax match vroomBind '\v<bind>' contained
+syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained
+
+highlight default link vroomInput Identifier
+highlight default link vroomDirective vroomInput
+highlight default link vroomControlBlock vroomInput
+highlight default link vroomSystem vroomInput
+highlight default link vroomOutput Statement
+highlight default link vroomContinuation Constant
+highlight default link vroomHijack Special
+highlight default link vroomColoredAction Statement
+highlight default link vroomSystemAction vroomSystem
+highlight default link vroomHijackAction vroomHijack
+highlight default link vroomMessage vroomOutput
+highlight default link vroomMessageBody Constant
+
+highlight default link vroomControlEscape Special
+highlight default link vroomBuffer vroomInput
+highlight default link vroomRange Include
+highlight default link vroomMode Constant
+highlight default link vroomDelay Type
+highlight default link vroomStrictness vroomMode
+highlight default link vroomChannel vroomMode
+highlight default link vroomBind vroomMode
+
+let b:current_syntax = 'vroom'
+
+
+let &cpo = s:cpo_save
+unlet s:cpo_save