1" Vim syntax file 2" Language: C-shell (csh) 3" Maintainer: Dr. Charles E. Campbell, Jr. <[email protected]> 4" Version: 10 5" Last Change: Sep 11, 2006 6" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax 7 8" For version 5.x: Clear all syntax items 9" For version 6.x: Quit when a syntax file was already loaded 10if version < 600 11 syntax clear 12elseif exists("b:current_syntax") 13 finish 14endif 15 16" clusters: 17syn cluster cshQuoteList contains=cshDblQuote,cshSnglQuote,cshBckQuote 18syn cluster cshVarList contains=cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst 19 20" Variables which affect the csh itself 21syn match cshSetVariables contained "argv\|histchars\|ignoreeof\|noglob\|prompt\|status" 22syn match cshSetVariables contained "cdpath\|history\|mail\|nonomatch\|savehist\|time" 23syn match cshSetVariables contained "cwd\|home\|noclobber\|path\|shell\|verbose" 24syn match cshSetVariables contained "echo" 25 26syn case ignore 27syn keyword cshTodo contained todo 28syn case match 29 30" Variable Name Expansion Modifiers 31syn match cshModifier contained ":\(h\|t\|r\|q\|x\|gh\|gt\|gr\)" 32 33" Strings and Comments 34syn match cshNoEndlineDQ contained "[^\"]\(\\\\\)*$" 35syn match cshNoEndlineSQ contained "[^\']\(\\\\\)*$" 36syn match cshNoEndlineBQ contained "[^\`]\(\\\\\)*$" 37 38syn region cshDblQuote start=+[^\\]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial,cshShellVariables,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,cshBckQuote,@Spell 39syn region cshSnglQuote start=+[^\\]'+lc=1 skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell 40syn region cshBckQuote start=+[^\\]`+lc=1 skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell 41syn region cshDblQuote start=+^"+ skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial,cshExtVar,cshSelector,cshQtyWord,cshArgv,cshSubst,cshNoEndlineDQ,@Spell 42syn region cshSnglQuote start=+^'+ skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell 43syn region cshBckQuote start=+^`+ skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell 44syn cluster cshCommentGroup contains=cshTodo,@Spell 45syn match cshComment "#.*$" contains=@cshCommentGroup 46 47" A bunch of useful csh keywords 48syn keyword cshStatement alias end history onintr setenv unalias 49syn keyword cshStatement cd eval kill popd shift unhash 50syn keyword cshStatement chdir exec login pushd source 51syn keyword cshStatement continue exit logout rehash time unsetenv 52syn keyword cshStatement dirs glob nice repeat umask wait 53syn keyword cshStatement echo goto nohup 54 55syn keyword cshConditional break case else endsw switch 56syn keyword cshConditional breaksw default endif 57syn keyword cshRepeat foreach 58 59" Special environment variables 60syn keyword cshShellVariables HOME LOGNAME PATH TERM USER 61 62" Modifiable Variables without {} 63syn match cshExtVar "\$[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier 64syn match cshSelector "\$[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier 65syn match cshQtyWord "\$#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier 66syn match cshArgv "\$\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier 67syn match cshArgv "\$\*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=" contains=cshModifier 68 69" Modifiable Variables with {} 70syn match cshExtVar "\${[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier 71syn match cshSelector "\${[a-zA-Z_][a-zA-Z0-9_]*\[[a-zA-Z_]\+\]\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier 72syn match cshQtyWord "\${#[a-zA-Z_][a-zA-Z0-9_]*\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier 73syn match cshArgv "\${\d\+\(:h\|:t\|:r\|:q\|:x\|:gh\|:gt\|:gr\)\=}" contains=cshModifier 74 75" UnModifiable Substitutions 76syn match cshSubstError "\$?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)" 77syn match cshSubstError "\${?[a-zA-Z_][a-zA-Z0-9_]*:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)}" 78syn match cshSubstError "\$?[0$<]:\(h\|t\|r\|q\|x\|gh\|gt\|gr\)" 79syn match cshSubst "\$?[a-zA-Z_][a-zA-Z0-9_]*" 80syn match cshSubst "\${?[a-zA-Z_][a-zA-Z0-9_]*}" 81syn match cshSubst "\$?[0$<]" 82 83" I/O redirection 84syn match cshRedir ">>&!\|>&!\|>>&\|>>!\|>&\|>!\|>>\|<<\|>\|<" 85 86" Handle set expressions 87syn region cshSetExpr matchgroup=cshSetStmt start="\<set\>\|\<unset\>" end="$\|;" contains=cshComment,cshSetStmt,cshSetVariables,@cshQuoteList 88 89" Operators and Expression-Using constructs 90"syn match cshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|\|%\|&\|+\|-\|/\|<\|>\||" 91syn match cshOperator contained "&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||" 92syn match cshOperator contained "[(){}]" 93syn region cshTest matchgroup=cshStatement start="\<if\>\|\<while\>" skip="\\$" matchgroup=cshStatement end="\<then\>\|$" contains=cshComment,cshOperator,@cshQuoteList,@cshVarLIst 94 95" Highlight special characters (those which have a backslash) differently 96syn match cshSpecial contained "\\\d\d\d\|\\[abcfnrtv\\]" 97syn match cshNumber "-\=\<\d\+\>" 98 99" All other identifiers 100"syn match cshIdentifier "\<[a-zA-Z._][a-zA-Z0-9._]*\>" 101 102" Shell Input Redirection (Here Documents) 103if version < 600 104 syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**END[a-zA-Z_0-9]*\**" matchgroup=cshRedir end="^END[a-zA-Z_0-9]*$" 105 syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**EOF\**" matchgroup=cshRedir end="^EOF$" 106else 107 syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**\z(\h\w*\)\**" matchgroup=cshRedir end="^\z1$" 108endif 109 110" Define the default highlighting. 111" For version 5.7 and earlier: only when not done already 112" For version 5.8 and later: only when an item doesn't have highlighting yet 113if version >= 508 || !exists("did_csh_syntax_inits") 114 if version < 508 115 let did_csh_syntax_inits = 1 116 command -nargs=+ HiLink hi link <args> 117 else 118 command -nargs=+ HiLink hi def link <args> 119 endif 120 121 HiLink cshArgv cshVariables 122 HiLink cshBckQuote cshCommand 123 HiLink cshDblQuote cshString 124 HiLink cshExtVar cshVariables 125 HiLink cshHereDoc cshString 126 HiLink cshNoEndlineBQ cshNoEndline 127 HiLink cshNoEndlineDQ cshNoEndline 128 HiLink cshNoEndlineSQ cshNoEndline 129 HiLink cshQtyWord cshVariables 130 HiLink cshRedir cshOperator 131 HiLink cshSelector cshVariables 132 HiLink cshSetStmt cshStatement 133 HiLink cshSetVariables cshVariables 134 HiLink cshSnglQuote cshString 135 HiLink cshSubst cshVariables 136 137 HiLink cshCommand Statement 138 HiLink cshComment Comment 139 HiLink cshConditional Conditional 140 HiLink cshIdentifier Error 141 HiLink cshModifier Special 142 HiLink cshNoEndline Error 143 HiLink cshNumber Number 144 HiLink cshOperator Operator 145 HiLink cshRedir Statement 146 HiLink cshRepeat Repeat 147 HiLink cshShellVariables Special 148 HiLink cshSpecial Special 149 HiLink cshStatement Statement 150 HiLink cshString String 151 HiLink cshSubstError Error 152 HiLink cshTodo Todo 153 HiLink cshVariables Type 154 155 delcommand HiLink 156endif 157 158let b:current_syntax = "csh" 159 160" vim: ts=18 161