summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/csh.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/csh.vim')
-rw-r--r--runtime/syntax/csh.vim143
1 files changed, 143 insertions, 0 deletions
diff --git a/runtime/syntax/csh.vim b/runtime/syntax/csh.vim
new file mode 100644
index 0000000..6a056c7
--- /dev/null
+++ b/runtime/syntax/csh.vim
@@ -0,0 +1,143 @@
+" Vim syntax file
+" Language: C-shell (csh)
+" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
+" Last Change: Aug 31, 2016
+" Version: 14
+" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH
+
+" quit when a syntax file was already loaded
+if 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="\<set\>\|\<unset\>" 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="\<if\>\|\<while\>" skip="\\$" matchgroup=cshStatement end="\<then\>\|$" 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)
+syn region cshHereDoc matchgroup=cshRedir start="<<-\=\s*\**\z(\h\w*\)\**" matchgroup=cshRedir end="^\z1$"
+
+" Define the default highlighting.
+if !exists("skip_csh_syntax_inits")
+
+ hi def link cshArgv cshVariables
+ hi def link cshBckQuote cshCommand
+ hi def link cshDblQuote cshString
+ hi def link cshExtVar cshVariables
+ hi def link cshHereDoc cshString
+ hi def link cshNoEndlineBQ cshNoEndline
+ hi def link cshNoEndlineDQ cshNoEndline
+ hi def link cshNoEndlineSQ cshNoEndline
+ hi def link cshQtyWord cshVariables
+ hi def link cshRedir cshOperator
+ hi def link cshSelector cshVariables
+ hi def link cshSetStmt cshStatement
+ hi def link cshSetVariables cshVariables
+ hi def link cshSnglQuote cshString
+ hi def link cshSubst cshVariables
+
+ hi def link cshCommand Statement
+ hi def link cshComment Comment
+ hi def link cshConditional Conditional
+ hi def link cshIdentifier Error
+ hi def link cshModifier Special
+ hi def link cshNoEndline Error
+ hi def link cshNumber Number
+ hi def link cshOperator Operator
+ hi def link cshRedir Statement
+ hi def link cshRepeat Repeat
+ hi def link cshShellVariables Special
+ hi def link cshSpecial Special
+ hi def link cshStatement Statement
+ hi def link cshString String
+ hi def link cshSubstError Error
+ hi def link cshTodo Todo
+ hi def link cshVariables Type
+
+endif
+
+let b:current_syntax = "csh"
+
+" vim: ts=18