70 lines
2.2 KiB
VimL
70 lines
2.2 KiB
VimL
" 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,shoutEnvValue
|
|
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"
|