Warning, /frameworks/syntax-highlighting/data/syntax/tcsh.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language
0003 [
0004         <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
0005         <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
0006         <!ENTITY word     "[|&amp;;()&lt;&gt;\s]+">     <!-- see man csh -->
0007         <!ENTITY eos      "(?=($|\s))">                 <!-- eol or space following -->
0008         <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->
0009         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
0010         <!ENTITY tab      "&#9;">
0011 ]>
0012 <language name="Tcsh" version="10" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
0013 
0014 <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)
0015     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)
0016     Released under the LGPL -->
0017 
0018   <highlighting>
0019     <list name="keywords">
0020       <item>function</item>
0021       <item>in</item>
0022       <item>.</item>
0023     </list>
0024 
0025     <list name="builtins">
0026       <item>:</item>
0027       <item>alias</item>
0028       <item>alloc</item>
0029       <item>bg</item>
0030       <item>bindkey</item>
0031       <item>break</item>
0032       <item>builtins</item>
0033       <item>bye</item>
0034       <item>cd</item>
0035       <item>chdir</item>
0036       <item>complete</item>
0037       <item>continue</item>
0038       <item>dirs</item>
0039       <item>echo</item>
0040       <item>echotc</item>
0041       <item>eval</item>
0042       <item>exec</item>
0043       <item>exit</item>
0044       <item>fg</item>
0045       <item>filetest</item>
0046       <item>glob</item>
0047       <item>hashstat</item>
0048       <item>history</item>
0049       <item>hup</item>
0050       <item>inlib</item>
0051       <item>jobs</item>
0052       <item>kill</item>
0053       <item>limit</item>
0054       <item>log</item>
0055       <item>login</item>
0056       <item>logout</item>
0057       <item>ls-F</item>
0058       <item>migrate</item>
0059       <item>newgrp</item>
0060       <item>nice</item>
0061       <item>nohup</item>
0062       <item>notify</item>
0063       <item>onintr</item>
0064       <item>popd</item>
0065       <item>printenv</item>
0066       <item>pushd</item>
0067       <item>rehash</item>
0068       <item>repeat</item>
0069       <item>sched</item>
0070       <item>settc</item>
0071       <item>setty</item>
0072       <item>shift</item>
0073       <item>source</item>
0074       <item>stop</item>
0075       <item>suspend</item>
0076       <item>telltc</item>
0077       <item>time</item>
0078       <item>umask</item>
0079       <item>unalias</item>
0080       <item>uncomplete</item>
0081       <item>unhash</item>
0082       <item>unlimit</item>
0083       <item>ver</item>
0084       <item>wait</item>
0085       <item>watchlog</item>
0086       <item>where</item>
0087       <item>which</item>
0088     </list>
0089 
0090     <list name="builtins_var">
0091       <item>unset</item>
0092       <item>unsetenv</item>
0093     </list>
0094 
0095     <list name="unixcommands">
0096       <include>unixcommands##Bash</include>
0097       <item>command</item>
0098       <item>pwd</item>
0099       <item>printf</item>
0100       <item>test</item>
0101     </list>
0102 
0103 
0104     <contexts>
0105       <context attribute="Normal Text" lineEndContext="#stay" name="Start">
0106         <IncludeRules context="FindAll" />
0107       </context>
0108 
0109 <!-- ====== The following rulessets are meant to be included ======== -->
0110       <!-- FindAll tries to interpret everything -->
0111       <context attribute="Normal Text" lineEndContext="#stay" name="FindAll">
0112         <IncludeRules context="FindComments" />
0113         <IncludeRules context="FindCommands" />
0114         <IncludeRules context="FindStrings" />
0115         <IncludeRules context="FindSubstitutions" />
0116         <IncludeRules context="FindOthers" />
0117       </context>
0118 
0119       <!-- FindMost tries to interpret anything except commands -->
0120       <context attribute="Normal Text" lineEndContext="#stay" name="FindMost">
0121         <IncludeRules context="FindComments" />
0122         <IncludeRules context="FindStrings" />
0123         <IncludeRules context="FindSubstitutions" />
0124         <IncludeRules context="FindOthers" />
0125       </context>
0126 
0127 
0128       <!-- FindComments consumes shell comments till EOL -->
0129       <context attribute="Normal Text" lineEndContext="#pop" name="FindComments">
0130         <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>
0131         <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />
0132       </context>
0133       <context attribute="Comment" lineEndContext="#pop" name="Comment">
0134         <DetectSpaces />
0135         <IncludeRules context="##Comments" />
0136       </context>
0137 
0138       <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
0139 <!--      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen">
0140         <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/>
0141         <RegExpr attribute="Normal Text" context="CommentParen" String="[\s;](?=#)" />
0142       </context>
0143       <context attribute="Comment" lineEndContext="#pop" name="CommentParen">
0144         <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />
0145         <IncludeRules context="##Comments" />
0146       </context> -->
0147 
0148       <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->
0149       <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq">
0150         <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/>
0151         <RegExpr attribute="Normal Text" context="CommentBackq" String="[\s;](?=#)" />
0152       </context>
0153       <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
0154         <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />
0155         <IncludeRules context="##Comments" />
0156       </context>
0157 
0158 
0159       <!-- breaksw case default if else end endif endsw foreach goto
0160            set setenv switch while -->
0161 
0162       <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. -->
0163       <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands">
0164         <!-- start expression in double parentheses -->
0165 <!--!--><Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" />
0166         <!-- start expression in single brackets -->
0167 <!--!--><RegExpr attribute="Builtin" context="ExprBracket" String="(^\[|\s\[)&eos;" beginRegion="expression" column="0"/>
0168         <!-- start a group command with { -->
0169 <!--!--><RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" />
0170         <!-- start a subshell -->
0171 <!--!--><DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" />
0172         <!-- match do and if blocks -->
0173 <!--!--><RegExpr attribute="Control Flow" context="If" String="\bif&noword;" />
0174 <!--!--><RegExpr attribute="Control Flow" context="ElseIf" String="\belse\s+if&noword;" />
0175 <!--!--><RegExpr attribute="Control Flow" context="#stay" String="\belse&noword;" />
0176 <!--!--><RegExpr attribute="Control Flow" context="#stay" String="\bendif&noword;" endRegion="if" />
0177         <!-- handle switch as a special case -->
0178 <!--!--><RegExpr attribute="Control Flow" context="Switch" String="\bswitch&noword;" beginRegion="switch" />
0179 <!--!--><RegExpr attribute="Control Flow" context="#stay" String="\b(foreach|while)&noword;" beginRegion="loop" />
0180 <!--!--><RegExpr attribute="Control Flow" context="#stay" String="\bend&noword;" endRegion="loop" />
0181         <!-- handle command line options -->
0182         <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9][A-Za-z0-9_]*|--[a-z][A-Za-z0-9_-]*" />
0183         <!-- handle variable assignments -->
0184 <!--R--><RegExpr attribute="Keyword" context="#stay" String="\b@\s" />
0185 <!--R--><WordDetect attribute="Keyword" context="#stay" String="set" />
0186         <WordDetect attribute="Keyword" context="CmdSetEnv" String="setenv" />
0187         <!-- handle functions with function keyword before keywords -->
0188 <!--!--><StringDetect attribute="Function" context="#stay" String=":()" />
0189 <!--!--><WordDetect attribute="Keyword" context="FunctionDef" String="function" />
0190         <!-- handle keywords -->
0191         <keyword attribute="Keyword" context="#stay" String="keywords" />
0192         <keyword attribute="Builtin" context="#stay" String="builtins" />
0193         <keyword attribute="Command" context="#stay" String="unixcommands" />
0194         <!-- handle commands that have variable names as argument -->
0195         <keyword attribute="Builtin" context="VarName" String="builtins_var" />
0196         <!-- handle redirection -->
0197         <RegExpr attribute="Redirection" context="#stay" String="(&lt;&lt;?|&gt;&gt;?&amp;?!?)" />
0198         <!-- handle &, &&, | and || -->
0199         <RegExpr attribute="Control" context="#stay" String="([|&amp;])\1?" />
0200         <!-- mark function definitions without function keyword -->
0201         <RegExpr attribute="Function" context="#stay" String="&funcname;\s*\(\)" />
0202       </context>
0203 
0204       <!-- FindOthers contains various rules to mark different shell input -->
0205       <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers">
0206         <RegExpr attribute="Escape" context="#stay" String="\\[;&quot;\\'$`{}()|&amp;&lt;&gt;* ]" />
0207 <!--?   <RegExpr attribute="Escape" context="#stay" String="\{(?!(\s|$))\S*\}" />-->
0208         <RegExpr attribute="Path" context="#stay" String="&pathpart;*(?=/)|~\w*|/&pathpart;*(?=([\s/):;$`'&quot;]|$))" />
0209         <!-- TODO: shell globs -->
0210       </context>
0211 
0212       <!-- FindStrings looks for single and double quoted strings, also with $-prefix -->
0213       <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
0214         <DetectChar attribute="String SingleQ" context="StringSQ" char="'" />
0215         <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;" />
0216         <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" />
0217         <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" />
0218       </context>
0219 
0220       <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes -->
0221       <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions">
0222         <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" />
0223         <RegExpr attribute="Variable" context="#stay" String="\$(&varname;)|\$[*@#?$!_0-9-]|\$\{[*@#?$!_0-9-]\}|\$\{#&varname;\}|\$\{!&varname;\*?\}" />
0224         <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;|\$\{[*@#?$!_0-9-](?=[:#%/])" />
0225         <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" />
0226 <!--?   <StringDetect attribute="Redirection" context="SubstFile" String="$(&lt;" />-->
0227 <!--?   <StringDetect attribute="Variable" context="SubstCommand" String="$(" />-->
0228         <DetectChar attribute="Backquote" context="SubstBackq" char="`" />
0229         <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" />
0230       </context>
0231 
0232       <!-- FindTests finds operators valid in tests -->
0233       <context attribute="Normal Text" lineEndContext="#stay" name="FindTests">
0234         <RegExpr attribute="Expression" context="#stay" String="-[rwxXeozsfdlbcpSugktRLDIFNZ](?=\s)|-[AMCUG]:?(?=\s)|-P[0-7]{,3}:?(?=\s)|[=!][~=]|[*>&lt;!~]"/>
0235       </context>
0236 
0237 
0238 <!-- ====== These are the contexts that can be branched to ======= -->
0239 
0240       <!-- ExprDblParen consumes an expression started in command mode till )) -->
0241       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
0242         <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" />
0243         <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
0244         <IncludeRules context="FindMost" />
0245       </context>
0246 
0247       <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
0248       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
0249         <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" />
0250         <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
0251         <IncludeRules context="FindMost" />
0252       </context>
0253 
0254       <!-- ExprSubParen consumes an expression till ) -->
0255       <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen">
0256         <DetectChar attribute="Normal Text" context="#pop" char=")" />
0257         <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
0258         <IncludeRules context="FindMost" />
0259       </context>
0260 
0261       <!-- ExprBracket consumes an expression till ] -->
0262       <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket">
0263         <RegExpr attribute="Builtin" context="#pop" String="(\s\]|^\])(?=($|[\s;|&amp;]))" endRegion="expression" />
0264         <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
0265         <IncludeRules context="FindTests" />
0266         <IncludeRules context="FindMost" />
0267       </context>
0268 
0269       <!-- Group consumes shell input till } -->
0270       <context attribute="Normal Text" lineEndContext="#stay" name="Group">
0271         <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" />
0272         <IncludeRules context="FindAll" />
0273       </context>
0274 
0275       <!-- SubShell consumes shell input till ) -->
0276       <context attribute="Normal Text" lineEndContext="#stay" name="SubShell">
0277         <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" />
0278         <IncludeRules context="FindAll" />
0279       </context>
0280 
0281       <!-- Assign consumes an expression till EOL or whitespace -->
0282       <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop">
0283         <DetectChar attribute="Variable" context="AssignArray" char="(" />
0284         <IncludeRules context="FindStrings" />
0285         <IncludeRules context="FindSubstitutions" />
0286         <IncludeRules context="FindOthers" />
0287         <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]+" />
0288       </context>
0289 
0290       <!-- AssignArray consumes everything till ), marking assignments -->
0291       <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray">
0292         <DetectChar attribute="Variable" context="#pop" char=")" />
0293         <DetectChar attribute="Variable" context="Subscript" char="[" />
0294         <DetectChar attribute="Variable" context="Assign" char="=" />
0295         <IncludeRules context="FindMost" />
0296       </context>
0297 
0298       <!-- Subscript consumes anything till ], marks as Variable -->
0299       <context attribute="Variable" lineEndContext="#stay" name="Subscript">
0300         <DetectChar attribute="Variable" context="#pop" char="]" />
0301         <IncludeRules context="FindStrings" />
0302         <IncludeRules context="FindSubstitutions" />
0303         <IncludeRules context="FindOthers" />
0304       </context>
0305 
0306       <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
0307       <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop">
0308         <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" />
0309       </context>
0310 
0311       <!-- CmdSetEnv handles the name part of setenv -->
0312       <context attribute="Normal Text" lineEndContext="#pop" name="CmdSetEnv" fallthrough="true" fallthroughContext="#pop">
0313         <!-- handle command line options -->
0314         <RegExpr attribute="Variable" context="#pop" String="\b&varname;" />
0315         <AnyChar attribute="Variable" context="Assign" String="&tab; " />
0316         <IncludeRules context="FindMost" />
0317       </context>
0318 
0319       <!-- VarName consumes spare variable names and assignments -->
0320       <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop">
0321         <!-- handle command line options -->
0322         <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+|--[a-z][A-Za-z0-9_-]*" />
0323         <RegExpr attribute="Variable" context="#stay" String="\b&varname;" />
0324         <DetectChar attribute="Variable" context="Subscript" char="[" />
0325         <DetectChar attribute="Variable" context="Assign" char="=" />
0326         <IncludeRules context="FindMost" />
0327         <!-- stay here in spaces and other safe characters -->
0328         <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&amp;&gt;&lt;]" />
0329       </context>
0330 
0331       <!-- StringSQ consumes anything till ' -->
0332       <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
0333         <DetectChar attribute="String SingleQ" context="#pop" char="'" />
0334       </context>
0335 
0336       <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
0337       <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
0338         <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;" />
0339         <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\n]" />
0340         <IncludeRules context="FindSubstitutions" />
0341       </context>
0342 
0343       <!-- StringEsc eats till ', but escaping many characters -->
0344       <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
0345         <DetectChar attribute="String SingleQ" context="#pop" char="'" />
0346         <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']|\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" />
0347       </context>
0348 
0349       <!-- VarBrace is called as soon as ${xxx is encoutered -->
0350       <context attribute="Variable" lineEndContext="#stay" name="VarBrace">
0351         <DetectChar attribute="Variable" context="#pop" char="}" />
0352         <DetectChar attribute="Variable" context="Subscript" char="[" />
0353         <IncludeRules context="FindStrings" />
0354         <IncludeRules context="FindSubstitutions" />
0355         <!-- TODO: highlight various special parameter expansions } -->
0356       </context>
0357 
0358       <!-- SubstFile is called after a <( or >( is encoutered -->
0359 <!--      <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile">
0360         <DetectChar attribute="Redirection" context="#pop" char=")" />
0361         <IncludeRules context="FindCommentsParen" />
0362         <IncludeRules context="FindStrings" />
0363         <IncludeRules context="FindSubstitutions" />
0364         <IncludeRules context="FindOthers" />
0365       </context>
0366 -->
0367       <!-- SubstCommand is called after a $( is encountered -->
0368 <!--      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand">
0369         <DetectChar attribute="Variable" context="#pop" char=")" />
0370         <IncludeRules context="FindCommentsParen" />
0371         <IncludeRules context="FindCommands" />
0372         <IncludeRules context="FindStrings" />
0373         <IncludeRules context="FindSubstitutions" />
0374         <IncludeRules context="FindOthers" />
0375       </context>
0376 -->
0377 
0378       <!-- SubstBackq is called when a backquote is encountered -->
0379       <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq">
0380         <DetectChar attribute="Backquote" context="#pop" char="`" />
0381         <IncludeRules context="FindCommentsBackq" />
0382         <IncludeRules context="FindCommands" />
0383         <IncludeRules context="FindStrings" />
0384         <IncludeRules context="FindSubstitutions" />
0385         <IncludeRules context="FindOthers" />
0386       </context>
0387 
0388       <!-- Switch is called after the switch keyword is encoutered. This is
0389            left over from the bash highlighter where the lonely parentheses
0390            would otherwise cause trouble. We keep it because it lets us do a
0391            bit of extra syntax validation. -->
0392       <context attribute="Normal Text" lineEndContext="#stay" name="Switch">
0393         <RegExpr attribute="Keyword" context="SwitchCase" String="\scase\b" />
0394         <RegExpr attribute="Keyword" context="SwitchDefault" String="\sdefault\b" />
0395         <RegExpr attribute="Keyword" context="#pop" String="\bendsw(?=$|[\s;)])" endRegion="switch" />
0396         <IncludeRules context="FindMost" />
0397       </context>
0398 
0399       <context attribute="Normal Text" lineEndContext="#pop" name="If" fallthrough="true" fallthroughContext="#pop">
0400         <DetectSpaces/>
0401         <DetectChar attribute="Keyword" context="ArithmeticCondition" char="(" beginRegion="cond" />
0402         <DetectChar attribute="Variable" context="Subscript" char="[" />
0403         <StringDetect attribute="Control Flow" context="#pop" String="then" beginRegion="if" />
0404       </context>
0405 
0406       <context attribute="Normal Text" lineEndContext="#pop" name="ElseIf" fallthrough="true" fallthroughContext="#pop">
0407         <DetectSpaces/>
0408         <DetectChar attribute="Keyword" context="ArithmeticCondition" char="(" beginRegion="cond" />
0409         <DetectChar attribute="Variable" context="Subscript" char="[" />
0410         <StringDetect attribute="Control Flow" context="#pop" String="then" />
0411       </context>
0412 
0413       <context attribute="Normal Text" lineEndContext="#stay" name="ArithmeticCondition">
0414         <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="cond" />
0415         <DetectChar attribute="Keyword" context="ArithmeticCondition" char="(" beginRegion="cond" />
0416         <RegExpr attribute="Expression" context="#stay" String="[=!]~|[=!>&lt;]="/>
0417         <AnyChar attribute="Expression" context="#stay" String="|^&amp;>&lt;+-*/%!~"/>
0418         <IncludeRules context="FindComments" />
0419         <IncludeRules context="FindStrings" />
0420         <IncludeRules context="FindSubstitutions" />
0421         <IncludeRules context="FindOthers" />
0422       </context>
0423 
0424       <!-- SwitchCase is called when the construct 'switch ... case' has been found. -->
0425       <context attribute="Normal Text" lineEndContext="#stay" name="SwitchCase">
0426         <DetectChar attribute="Keyword" context="SwitchExpr" char=":" beginRegion="switchexpr" />
0427         <IncludeRules context="FindMost" />
0428       </context>
0429 
0430       <!-- SwitchDefault is called when the construct 'switch ... default' has been found. -->
0431       <context attribute="Normal Text" lineEndContext="#stay" name="SwitchDefault">
0432         <DetectChar attribute="Keyword" context="SwitchExpr" char=":" beginRegion="switchexpr" />
0433       </context>
0434 
0435       <!-- SwitchExpr eats shell input till breaksw -->
0436       <context attribute="Normal Text" lineEndContext="#stay" name="SwitchExpr">
0437         <RegExpr attribute="Keyword" context="#pop#pop" String="\sbreaksw\b" endRegion="switchexpr" />
0438         <RegExpr attribute="Keyword" context="#pop#pop" String="\scase\b" endRegion="switchexpr" lookAhead="true" />
0439         <IncludeRules context="FindAll" />
0440       </context>
0441 
0442     </contexts>
0443 
0444     <itemDatas>
0445       <itemData name="Normal Text"      defStyleNum="dsNormal" />
0446       <itemData name="Comment"          defStyleNum="dsComment" />
0447       <itemData name="Control Flow"     defStyleNum="dsControlFlow" spellChecking="false" />
0448       <itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
0449       <itemData name="Control"          defStyleNum="dsKeyword" spellChecking="false" />
0450       <itemData name="Builtin"          defStyleNum="dsKeyword" spellChecking="false" />
0451       <itemData name="Command"          defStyleNum="dsKeyword" spellChecking="false" />
0452       <itemData name="Redirection"      defStyleNum="dsKeyword" spellChecking="false" />
0453       <itemData name="Escape"           defStyleNum="dsDataType" spellChecking="false" />
0454       <itemData name="String SingleQ"   defStyleNum="dsString" />
0455       <itemData name="String DoubleQ"   defStyleNum="dsString" />
0456       <itemData name="Backquote"        defStyleNum="dsKeyword" spellChecking="false" />
0457       <itemData name="String Transl."   defStyleNum="dsString" spellChecking="false" />
0458       <itemData name="String Escape"    defStyleNum="dsDataType" spellChecking="false" />
0459       <itemData name="Variable"         defStyleNum="dsOthers" spellChecking="false" />
0460       <itemData name="Expression"       defStyleNum="dsOthers" spellChecking="false" />
0461       <itemData name="Function"         defStyleNum="dsFunction" spellChecking="false" />
0462       <itemData name="Path"             defStyleNum="dsNormal" spellChecking="false" />
0463       <itemData name="Option"           defStyleNum="dsNormal" spellChecking="false" />
0464     </itemDatas>
0465   </highlighting>
0466   <general>
0467     <comments>
0468       <comment name="singleLine" start="#"/>
0469     </comments>
0470     <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`"/>
0471   </general>
0472 </language>
0473 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->