" Vim syntax file " Language: OS Inferno sh " Maintainer: Alex Efros " URL: http://powerman.name/download/vim/syntax/infsh.vim " Version: 1.0 " Last Change: 2012-12-09 if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syn match infshError +"+ " substitution command syn region infshSubst matchgroup=infshSubstDelimiter keepend extend start="\$["#]\?{\w\@=" end="}" contains=TOP contains=@NoSpell syn match infshSubstName contained "\(\$["#]\?{\)\@<=\w\+" containedin=infshSubst " get command output syn region infshCmdOut matchgroup=infshCmdOutDelimiter keepend extend start="[`"]{" end="}" contains=TOP contains=@NoSpell " command block syn region infshBlock matchgroup=infshDelimiter keepend extend start="{" end="}" contains=TOP contains=@NoSpell " top-level delimiters syn match infshDelimiter "[;&()]" syn match infshRedir "[|<>]\(\[\d\+\(=\d\+\)\?\]\)\?" syn match infshConditional "&&\|||" syn match infshOperator "\(:=\|=\|\^\)" syn region infshPatternClass matchgroup=infshPattern keepend extend oneline start="\[^\?" end="\]" contains=infshPatternInClass syn match infshPatternInClass contained "\(\[^\?\)\@^|}]\@=" syn match infshError "\$["#]\?\((\s*)\)\@=" syn match infshError "\$["#]\?\(''[^']\@=\)\@=" syn match infshError "\$["#]\?\([`]{\@!\)\@=" syn match infshError "\$["#]\(["]{\@!\)\@=" syn match infshError "\$["#][#]\@=" " quoted string syn region infshStr matchgroup=infshStrQ keepend extend start="'" skip="''" end="'" contains=infshStrQQ syn match infshStrQQ contained "''" syn match infshComment "#.*" contains=infshTodo,@Spell syn keyword infshTodo contained TODO TBD FIXME XXX NOTE BUG WARNING DEBUG OPTIMIZATION WORKAROUND syn match infshShebang "^#!/dis/sh\(\.dis\)\?\(\s\+-[nlvx]\+\)*\s*$" contains=infshOpts syn match infshOpts contained "-[nlvx]\+" syn keyword infshStatement fn subfn syn keyword infshConditional and or if syn keyword infshRepeat apply getlines for in while syn keyword infshOperator run builtin exit load unload syn keyword infshOperator no pctl status syn match infshOperator "[@!~]" syn keyword infshKeyword flag loaded whatis syn keyword infshException raise rescue syn keyword infshPctlType newfd forkfd newns forkns newpgrp nodevs if version >= 508 || !exists("did_infsh_syn_inits") if version < 508 let did_infsh_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink infshSubstDelimiter Identifier HiLink infshSubstName Operator HiLink infshCmdOutDelimiter Include HiLink infshDelimiter Delimiter HiLink infshRedir Type HiLink infshConditional Conditional HiLink infshOperator Operator HiLink infshPattern SpecialChar HiLink infshPatternInClass SpecialChar HiLink infshVar Identifier HiLink infshSpecVar Special HiLink infshError Error HiLink infshStr String HiLink infshStrQ String HiLink infshStrQQ SpecialChar HiLink infshComment Comment HiLink infshTodo Todo HiLink infshShebang Comment HiLink infshOpts PreProc HiLink infshStatement Statement HiLink infshConditional Conditional HiLink infshRepeat Repeat HiLink infshOperator Operator HiLink infshKeyword Keyword HiLink infshException Exception HiLink infshPctlType Type delcommand HiLink endif let b:current_syntax = "infsh"