" Vim syntax file for .shout files " Language: shout (shell integration tests) if exists("b:current_syntax") finish endif " Directives — must appear before first command syn match shoutDirectiveKey /^@env\s/ contained syn match shoutDirectiveKey /^@setup\s/ contained syn match shoutDirectiveKey /^@teardown\s/ contained syn match shoutEnvDirective /^@env\s\+\S\+=.*$/ contains=shoutDirectiveKey,shoutEnvName syn match shoutEnvName /\S\+\ze=/ contained nextgroup=shoutEnvEquals syn match shoutEnvEquals /=/ contained nextgroup=shoutEnvValue syn match shoutEnvValue /.*$/ contained syn match shoutSetupDirective /^@setup\s\+.*$/ contains=shoutDirectiveKey syn match shoutTeardownDirective /^@teardown\s\+.*$/ contains=shoutDirectiveKey " Comment commands: $# ... or $ # ... syn match shoutCommentCommand /^\$#.*$/ syn match shoutCommentCommand /^\$\s\+#.*$/ " Command lines: $ command syn match shoutPrompt /^\$\s/ contained syn match shoutCommand /^\$\s.\+/ contains=shoutPrompt,shoutInlineComment syn match shoutInlineComment /\s\+#[^"']*$/ contained " Escaped dollar in expected output syn match shoutEscapedDollar /^\\\$/ contained syn match shoutEscapedLine /^\\\$.*$/ contains=shoutEscapedDollar " Wildcards syn match shoutWildcardLine /^\.\.\.$/ syn match shoutWildcardInline /\.\.\./ contained " Exit code assertions syn match shoutExitCode /^\[\d\+\]$/ syn match shoutExitCodeWild /^\[\*\]$/ " Expected output (anything not matched above) syn match shoutExpectedOutput /^[^$@\[\\].*$/ contains=shoutWildcardInline " Highlighting hi def link shoutDirectiveKey Keyword hi def link shoutEnvDirective PreProc hi def link shoutEnvName Identifier hi def link shoutEnvEquals Operator hi def link shoutEnvValue String hi def link shoutSetupDirective PreProc hi def link shoutTeardownDirective PreProc hi def link shoutCommentCommand Comment hi def link shoutPrompt Special hi def link shoutCommand Statement hi def link shoutInlineComment Comment hi def link shoutEscapedDollar SpecialChar hi def link shoutEscapedLine String hi def link shoutWildcardLine WarningMsg hi def link shoutWildcardInline WarningMsg hi def link shoutExitCode Constant hi def link shoutExitCodeWild Constant hi def link shoutExpectedOutput String let b:current_syntax = "shout"