" Vim syntax file " Language: C-shell (csh) " Maintainer: Dr. Charles E. Campbell, Jr. " Version: 10 " Last Change: Sep 11, 2006 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " clusters: syn cluster cshQuoteList contains=cshDblQuote,cshSnglQuote,cshBckQuote syn cluster cshVarList contains=cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst " Variables which affect the csh itself syn match cshSetVariables contained "argv\|histchars\|ignoreeof\|noglob\|prompt\|status" syn match cshSetVariables contained "cdpath\|history\|mail\|nonomatch\|savehist\|time" syn match cshSetVariables contained "cwd\|home\|noclobber\|path\|shell\|verbose" syn match cshSetVariables contained "echo" syn case ignore syn keyword cshTodo contained todo syn case match " Variable Name Expansion Modifiers syn match cshModifier contained ":\(h\|t\|r\|q\|x\|gh\|gt\|gr\)" " Strings and Comments syn match cshNoEndlineDQ contained "[^\"]\(\\\\\)*$" syn match cshNoEndlineSQ contained "[^\']\(\\\\\)*$" syn match cshNoEndlineBQ contained "[^\`]\(\\\\\)*$" syn region cshDblQuote start=+[^\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial,cshShellVariables,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,cshBckQuote,@Spell syn region cshSnglQuote start=+[^\\]'+lc=1 skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell syn region cshBckQuote start=+[^\\]`+lc=1 skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell syn region cshDblQuote start=+^"+ skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,@Spell syn region cshSnglQuote start=+^'+ skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell syn region cshBckQuote start=+^`+ skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell syn cluster cshCommentGroup contains=cshTodo,@Spell syn match cshComment "#.*$" contains=@cshCommentGroup " A bunch of useful csh keywords syn keyword cshStatement alias end history onintr setenv unalias syn keyword cshStatement cd eval kill popd shift unhash syn keyword cshStatement chdir exec login pushd source syn keyword cshStatement continue exit logout rehash time unsetenv syn keyword cshStatement dirs glob nice repeat umask wait syn keyword cshStatement echo goto nohup syn keyword cshConditional break case else endsw switch syn keyword cshConditional breaksw default endif syn keyword cshRepeat foreach " Special environment variables syn keyword cshShellVariables HOME LOGNAME PATH TERM USER " Modifiable Variables without {} syn match cshExtVar "\$[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier syn match cshSelector "\$[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier syn match cshQtyWord "\$#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier syn match cshArgv "\$\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier syn match cshArgv "\$\*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier " Modifiable Variables with {} syn match cshExtVar "\${[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier syn match cshSelector "\${[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier syn match cshQtyWord "\${#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier syn match cshArgv "\${\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier " UnModifiable Substitutions syn match cshSubstError "\$?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)" syn match cshSubstError "\${?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)}" syn match cshSubstError "\$?[0$<]:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)" syn match cshSubst "\$?[a-zA-Z_][a-zA-Z0-9_]*" syn match cshSubst "\${?[a-zA-Z_][a-zA-Z0-9_]*}" syn match cshSubst "\$?[0$<]" " I/O redirection syn match cshRedir ">>&!\|>&!\|>>&\|>>!\|>&\|>!\|>>\|<<\|>\|<" " Handle set expressions syn region cshSetExpr matchgroup=cshSetStmt start="\\|\" end="$\|;" contains=cshComment,cshSetStmt,cshSetVariables,@cshQuoteList " Operators and Expression-Using constructs "syn match cshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|\|%\|&\|+\|-\|/\|<\|>\||" syn match cshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||" syn match cshOperator contained "[(){}]" syn region cshTest matchgroup=cshStatement start="\\|\" skip="\\$" matchgroup=cshStatement end="\\|$" contains=cshComment,cshOperator,@cshQuoteList,@cshVarLIst " Highlight special characters (those which have a backslash) differently syn match cshSpecial contained "\\\d\d\d\|\\[abcfnrtv\\]" syn match cshNumber "-\=\<\d\+\>" " All other identifiers "syn match cshIdentifier "\<[a-zA-Z._][a-zA-Z0-9._]*\>" " Shell Input Redirection (Here Documents) if version < 600 syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**END[a-zA-Z_0-9]*\**" matchgroup=cshRedir end="^END[a-zA-Z_0-9]*$" syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**EOF\**" matchgroup=cshRedir end="^EOF$" else syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**\z(\h\w*\)\**" matchgroup=cshRedir end="^\z1$" endif " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_csh_syntax_inits") if version < 508 let did_csh_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink cshArgv cshVariables HiLink cshBckQuote cshCommand HiLink cshDblQuote cshString HiLink cshExtVar cshVariables HiLink cshHereDoc cshString HiLink cshNoEndlineBQ cshNoEndline HiLink cshNoEndlineDQ cshNoEndline HiLink cshNoEndlineSQ cshNoEndline HiLink cshQtyWord cshVariables HiLink cshRedir cshOperator HiLink cshSelector cshVariables HiLink cshSetStmt cshStatement HiLink cshSetVariables cshVariables HiLink cshSnglQuote cshString HiLink cshSubst cshVariables HiLink cshCommand Statement HiLink cshComment Comment HiLink cshConditional Conditional HiLink cshIdentifier Error HiLink cshModifier Special HiLink cshNoEndline Error HiLink cshNumber Number HiLink cshOperator Operator HiLink cshRedir Statement HiLink cshRepeat Repeat HiLink cshShellVariables Special HiLink cshSpecial Special HiLink cshStatement Statement HiLink cshString String HiLink cshSubstError Error HiLink cshTodo Todo HiLink cshVariables Type delcommand HiLink endif let b:current_syntax = "csh" " vim: ts=18