File indexing completed on 2024-05-12 15:49:58
0001 <?xml version="1.0" encoding="UTF-8"?> 0002 <!DOCTYPE language> 0003 <!-- Makefile syntaxfile v0.9 by Per Wigren <wigren@home.se> --> 0004 <!-- Modified by Joseph Wenninger <jowenn@kde.org> --> 0005 <!-- Modified by Rui Santana <santana.rui@gmail.com> --> 0006 <!-- v2.0 by Andreas Nordal <andreas.nordal@gmail.com> --> 0007 <!-- small priority to allow for example Makefile.cpp to be detected as cpp file --> 0008 <!-- v2.1 by Alex Turbov <i.zaufi@gmail.com> 0009 improve comments handling --> 0010 <!-- v4 by Alex Richardson <arichardson.kde@gmail.com> 0011 added bmake support --> 0012 <!-- v10 by Peter J. Mello <admin@petermello.net> 0013 Add recognition of POSIX 2013 '::=' operator for variable assignment --> 0014 <language name="Makefile" section="Other" 0015 version="14" kateversion="5.0" 0016 extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk" 0017 mimetype="text/x-makefile" priority="11" 0018 author="Per Wigren (wigren@home.se)" license=""> 0019 0020 <!-- https://www.gnu.org/software/make/manual/make.pdf --> 0021 0022 <highlighting> 0023 <list name="keywords" > 0024 <item>include</item> 0025 <item>-include</item> 0026 <item>override</item> 0027 <item>define</item> 0028 <item>endef</item> 0029 </list> 0030 <!-- https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html --> 0031 <list name="gmake_if_keywords"> 0032 <item>if</item> 0033 <item>ifeq</item> 0034 <item>ifneq</item> 0035 <item>ifdef</item> 0036 <item>ifndef</item> 0037 </list> 0038 <list name="gmake_else_keywords"><item>else</item></list> 0039 <list name="gmake_endif_keywords"><item>endif</item></list> 0040 <!-- bmake statements: https://www.freebsd.org/cgi/man.cgi?make(1)#INCLUDE_STATEMENTS,_CONDITIONALS_AND_FOR_LOOPS --> 0041 <list name="bmake_if_keywords"> 0042 <item>.if</item> 0043 <item>.ifdef</item> 0044 <item>.ifndef</item> 0045 <item>.ifmake</item> 0046 <item>.ifnmake</item> 0047 </list> 0048 <list name="bmake_else_keywords"> 0049 <item>.elif</item> 0050 <item>.elifdef</item> 0051 <item>.elifndef</item> 0052 <item>.elifmake</item> 0053 <item>.elifnmake</item> 0054 <item>.else</item> <!-- TODO: anything following .else should be highlighted as an error --> 0055 </list> 0056 <list name="bmake_endif_keywords"><item>.endif</item></list> 0057 0058 <list name="bmake_expressions"> 0059 <item>defined</item> 0060 <item>empty</item> 0061 <item>exists</item> 0062 <item>target</item> 0063 <item>commands</item> 0064 </list> 0065 0066 <list name="bmake_include_stmt"> 0067 <item>.include</item> 0068 <item>.-include</item> 0069 <item>.sinclude</item> 0070 <!-- For compat bmake also handles include but this is already highlighted. <item>include</item> --> 0071 </list> 0072 <list name="bmake_message_stmt"> 0073 <item>.info</item> 0074 <item>.warning</item> 0075 <item>.error</item> 0076 </list> 0077 <!-- Use single element list here so that .for/.endfor also shows up in code completion --> 0078 <list name="bmake_for_stmt"><item>.for</item></list> 0079 <list name="bmake_endfor_stmt"><item>.endfor</item></list> 0080 0081 <!-- https://www.freebsd.org/cgi/man.cgi?make(1)#SPECIAL_TARGETS --> 0082 <list name="bmake_special_targets"> 0083 <item>.BEGIN</item> 0084 <item>.DEFAULT</item> 0085 <item>.END</item> 0086 <item>.ERROR</item> 0087 <item>.IGNORE</item> 0088 <item>.INTERRUPT</item> 0089 <item>.MAIN</item> 0090 <item>.MAKEFLAGS</item> 0091 <item>.NOPATH</item> 0092 <item>.NOTPARALLEL</item> 0093 <item>.NO_PARALLEL</item> 0094 <item>.OBJDIR</item> 0095 <item>.ORDER</item> 0096 <item>.PATH</item> 0097 <item>.PHONY</item> 0098 <item>.PRECIOUS</item> 0099 <item>.SHELL</item> 0100 <item>.SILENT</item> 0101 <item>.STALE</item> 0102 <item>.SUFFIXES</item> 0103 </list> 0104 <!-- https://www.freebsd.org/cgi/man.cgi?make(1)#SPECIAL_SOURCES_(ATTRIBUTES) --> 0105 <list name="bmake_special_sources"> 0106 <item>.EXEC</item> 0107 <item>.IGNORE</item> 0108 <item>.MADE</item> 0109 <item>.MAKE</item> 0110 <item>.META</item> 0111 <item>.NOMETA</item> 0112 <item>.NOMETA_CMP</item> 0113 <item>.NOPATH</item> 0114 <item>.NOTMAIN</item> 0115 <item>.OPTIONAL</item> 0116 <item>.PHONY</item> 0117 <item>.PRECIOUS</item> 0118 <item>.RECURSIVE</item> 0119 <item>.SILENT</item> 0120 <item>.USE</item> 0121 <item>.USEBEFORE</item> 0122 <item>.WAIT</item> 0123 </list> 0124 0125 <list name="bmake_other_stmts"> 0126 <item>.unexport-env</item> 0127 <item>.unexport</item> 0128 <item>.undef</item> 0129 <item>.export-env</item> 0130 <item>.export</item> 0131 </list> 0132 0133 <list name = "functions"> 0134 <item>call</item> 0135 <item>subst</item> 0136 <item>patsubst</item> 0137 <item>strip</item> 0138 <item>findstring</item> 0139 <item>filter</item> 0140 <item>filter-out</item> 0141 <item>sort</item> 0142 <item>word</item> 0143 <item>wordlist</item> 0144 <item>words</item> 0145 <item>firstword</item> 0146 <item>lastword</item> 0147 <item>dir</item> 0148 <item>notdir</item> 0149 <item>suffix</item> 0150 <item>basename</item> 0151 <item>addsuffix</item> 0152 <item>addprefix</item> 0153 <item>join</item> 0154 <item>wildcard</item> 0155 <item>realpath</item> 0156 <item>abspath</item> 0157 <item>if</item> 0158 <item>or</item> 0159 <item>and</item> 0160 <item>foreach</item> 0161 <item>value</item> 0162 <item>eval</item> 0163 <item>origin</item> 0164 <item>flavor</item> 0165 <item>shell</item> 0166 <item>error</item> 0167 <item>warning</item> 0168 <item>info</item> 0169 </list> 0170 <contexts> 0171 <context name="normal" attribute="Normal" lineEndContext="#stay"> 0172 <DetectSpaces/> 0173 <DetectChar attribute="Comment" context="Comment" char="#"/> 0174 <keyword attribute="ControlFlow" String="bmake_if_keywords" context="bmake_conditional" beginRegion="bmake_if" firstNonSpace="true"/> 0175 <!--TODO: trailing non-space after .else should be highlighted as an error --> 0176 <keyword attribute="ControlFlow" String="bmake_else_keywords" context="bmake_conditional" endRegion="bmake_if" beginRegion="bmake_if" firstNonSpace="true"/> 0177 <keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if"/> 0178 0179 <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay" beginRegion="gmake_if" firstNonSpace="true"/> 0180 <!--TODO: trailing non-space after .else should be highlighted as an error --> 0181 <keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true"/> 0182 <keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if"/> 0183 0184 <RegExpr attribute="Variable" context="assign" String="(([+!?](?!=))?[^:#=\s+!?]*)++(?=\s*([+!?]|::?:?)?=)"/> 0185 <keyword attribute="Keyword" context="#stay" String="keywords"/> 0186 <keyword attribute="Keyword" context="bmake_other_stmts" String="bmake_other_stmts" firstNonSpace="true"/> 0187 <keyword attribute="SpecialTarget" context="bmake_special_target" String="bmake_special_targets" firstNonSpace="true"/> 0188 <RegExpr attribute="SpecialTarget" context="prereq" String="\.PATH\.[^:]*:" firstNonSpace="true"/> 0189 <keyword attribute="Keyword" context="bmake_include" String="bmake_include_stmt" firstNonSpace="true"/> 0190 <keyword attribute="Keyword" context="bmake_message" String="bmake_message_stmt" firstNonSpace="true"/> 0191 <keyword attribute="Keyword" context="bmake_for_loop" String="bmake_for_stmt" firstNonSpace="true" beginRegion="for"/> 0192 <keyword attribute="Keyword" context="#stay" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/> 0193 0194 <RegExpr attribute="Section" context="prereq" String="^\.[^.][^:]*:" column="0"/> 0195 <RegExpr attribute="Target" context="prereq" String="^[^:]*:" column="0"/> 0196 <DetectIdentifier/> 0197 <DetectChar attribute="String" context="string"" char="""/> 0198 <DetectChar attribute="String" context="string'" char="'"/> 0199 <DetectChar attribute="Operator" context="dollar" char="$"/> 0200 <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> 0201 <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> 0202 <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/> 0203 </context> 0204 0205 <context name="strings_and_vars" attribute="Normal" lineEndContext="#pop"> 0206 <DetectChar attribute="Operator" context="dollar" char="$"/> 0207 <DetectChar attribute="String" context="string"" char="""/> 0208 <DetectChar attribute="String" context="string'" char="'"/> 0209 <DetectChar attribute="Comment" context="Comment" char="#"/> 0210 </context> 0211 0212 <context name="gmake_else" attribute="Normal" lineEndContext="#pop"> 0213 <DetectSpaces attribute="Normal"/> 0214 <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay"/> 0215 <IncludeRules context="strings_and_vars"/> 0216 <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> 0217 <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> 0218 <!-- NOTE: Allow highlighting any variable name (see bug #417379), for example: 0219 else ifdef foo 0220 else ifeq (bar, foo) 0221 --> 0222 </context> 0223 0224 <context name="bmake_include" attribute="Normal" lineEndContext="#pop"> 0225 <DetectSpaces /> 0226 <RangeDetect char="<" char1=">" context="#stay" attribute="Include" /> 0227 <RangeDetect char=""" char1=""" context="#stay" attribute="Include" /> 0228 </context> 0229 0230 0231 <context name="bmake_conditional" attribute="Normal" lineEndContext="#pop"> 0232 <DetectSpaces/> 0233 <IncludeRules context="strings_and_vars"/> 0234 <keyword attribute="Builtin" context="bmake_expression" String="bmake_expressions"/> 0235 <Detect2Chars attribute="RealOperator" context="#stay" char="&" char1="&"/> 0236 <Detect2Chars attribute="RealOperator" context="#stay" char="|" char1="|"/> 0237 <Detect2Chars attribute="RealOperator" context="#stay" char="!" char1="="/> 0238 <Detect2Chars attribute="RealOperator" context="#stay" char="=" char1="="/> 0239 <DetectChar attribute="RealOperator" context="#stay" char="!"/> 0240 <HlCHex attribute="Number" context="#stay"/> 0241 <Int attribute="Number" context="#stay"/> 0242 <DetectIdentifier attribute="Variable" context="#stay"/> 0243 <LineContinue attribute="Operator" context="#stay"/> 0244 </context> 0245 0246 <context name="bmake_for_loop" attribute="Variable" lineEndContext="#pop"> 0247 <DetectSpaces/> 0248 <IncludeRules context="strings_and_vars"/> 0249 <WordDetect attribute="RealOperator" context="#stay" String="in" /> 0250 </context> 0251 0252 <context name="bmake_other_stmts" attribute="Variable" lineEndContext="#pop"> 0253 <DetectSpaces/> 0254 <IncludeRules context="strings_and_vars"/> 0255 </context> 0256 0257 <context name="bmake_expression" attribute="Variable" lineEndContext="#pop"> 0258 <DetectSpaces/> 0259 <IncludeRules context="strings_and_vars"/> 0260 <DetectChar attribute="Normal" context="#stay" char="("/> 0261 <DetectChar attribute="Normal" context="#pop" char=")"/> 0262 <DetectIdentifier attribute="Variable"/> 0263 </context> 0264 0265 <context name="bmake_special_target" attribute="Error" lineEndContext="rule"> 0266 <!-- anything but spaces before the : should be an error --> 0267 <DetectSpaces attribute="Normal" /> 0268 <DetectChar attribute="SpecialTarget" context="#pop!prereq" char=":"/> 0269 </context> 0270 0271 <context name="bmake_message" attribute="String" lineEndContext="#pop"> 0272 <DetectChar attribute="Operator" context="dollar" char="$"/> 0273 </context> 0274 0275 <context name="prereq" attribute="Prereq" lineEndContext="rule"> 0276 <DetectSpaces/> 0277 <keyword attribute="SpecialPrereq" context="#stay" String="bmake_special_sources"/> 0278 <DetectIdentifier/> 0279 <LineContinue attribute="Operator" context="#stay"/> 0280 <DetectChar attribute="Operator" context="dollar" char="$"/> 0281 <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> 0282 <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> 0283 <DetectChar attribute="Comment" context="Comment" char="#"/> 0284 <DetectChar attribute="Operator" context="inline-rule" char=";"/> 0285 </context> 0286 0287 <context name="inline-rule" attribute="Normal" lineEndContext="#pop!rule" fallthroughContext="#pop!inline-rule-cmd" fallthrough="1"> 0288 <DetectSpaces/> 0289 <LineContinue attribute="Operator" context="#stay"/> 0290 <AnyChar attribute="Operator" context="silent" String="@-"/> 0291 </context> 0292 <context name="inline-rule-cmd" attribute="Normal" lineEndContext="#pop!rule"> 0293 <DetectSpaces/> 0294 <DetectIdentifier/> 0295 <DetectChar attribute="String" context="string"" char="""/> 0296 <DetectChar attribute="String" context="string'" char="'"/> 0297 <DetectChar attribute="Operator" context="dollar" char="$"/> 0298 <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> 0299 <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> 0300 <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/> 0301 <DetectChar attribute="Comment" context="Comment" char="#"/> 0302 <LineContinue attribute="Operator" context="#stay"/> 0303 </context> 0304 0305 <context name="rule" attribute="Normal" lineEndContext="#stay"> 0306 <LineContinue attribute="Operator" context="#stay"/> 0307 <!-- pop if there is a leading non-tab, 0308 and in particular, mark leading spaces as errors --> 0309 <RegExpr attribute="Error" context="#pop#pop#pop" String="^ +" firstNonSpace="1"/> 0310 <RegExpr context="#pop#pop#pop" String="^[^\t]" lookAhead="1" firstNonSpace="1"/> 0311 <DetectSpaces/> 0312 <DetectIdentifier/> 0313 <DetectChar attribute="String" context="string"" char="""/> 0314 <DetectChar attribute="String" context="string'" char="'"/> 0315 <DetectChar attribute="Operator" context="dollar" char="$"/> 0316 <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> 0317 <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> 0318 <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/> 0319 <DetectChar attribute="Comment" context="Comment" char="#"/> 0320 </context> 0321 0322 <context name="silent" attribute="Silent" lineEndContext="#pop"> 0323 <LineContinue attribute="Operator" context="#stay"/> 0324 <DetectSpaces/> 0325 <DetectIdentifier/> 0326 <DetectChar attribute="String" context="string"" char="""/> 0327 <DetectChar attribute="String" context="string'" char="'"/> 0328 <DetectChar attribute="Operator" context="dollar" char="$"/> 0329 <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/> 0330 <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/> 0331 <DetectChar attribute="Comment" context="Comment" char="#"/> 0332 </context> 0333 0334 <context name="string"" attribute="String" lineEndContext="#pop"> 0335 <LineContinue attribute="Operator" context="#stay"/> 0336 <DetectChar attribute="String" context="#pop" char="""/> 0337 <DetectChar attribute="Operator" context="dollar" char="$"/> 0338 </context> 0339 0340 <context name="string'" attribute="String" lineEndContext="#pop"> 0341 <LineContinue attribute="String" context="#stay"/> 0342 <DetectChar attribute="String" context="#pop" char="'"/> 0343 <DetectChar attribute="Operator" context="dollar" char="$"/> 0344 </context> 0345 0346 <context name="assign" attribute="Operator" lineEndContext="#pop"> 0347 <DetectSpaces attribute="Normal"/> 0348 <DetectChar attribute="Operator" context="value" char="="/> 0349 </context> 0350 0351 <context name="value" attribute="String" lineEndContext="#pop#pop"> 0352 <LineContinue attribute="Operator"/> 0353 <DetectChar attribute="Operator" context="dollar" char="$"/> 0354 <RegExpr attribute="Special" context="#pop#pop" String="@[-_\d\w]*@"/> 0355 <Detect2Chars attribute="String" char="\" char1="#"/> 0356 <DetectChar attribute="Comment" context="#pop#pop!Comment" char="#"/> 0357 </context> 0358 0359 <context name="dollar" attribute="Operator" lineEndContext="#pop"> 0360 <DetectChar attribute="Operator" context="call(" char="("/> 0361 <DetectChar attribute="Operator" context="call{" char="{"/> 0362 <RegExpr attribute="Operator" context="#pop" String="."/> 0363 </context> 0364 0365 <context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(" fallthrough="1"> 0366 <keyword attribute="Keyword" context="callFunc(" String="functions"/> 0367 </context> 0368 0369 <context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{" fallthrough="1"> 0370 <keyword attribute="Keyword" context="callFunc{" String="functions"/> 0371 </context> 0372 0373 <context name="callVar(" attribute="Variable" lineEndContext="#stay"> 0374 <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/> 0375 <DetectChar attribute="Operator" context="dollar" char="$"/> 0376 <DetectSpaces attribute="Error" context="#stay"/> 0377 <DetectChar attribute="RealOperator" context="SubstitutionRefs" char=":"/> 0378 <AnyChar attribute="Error" context="#stay" String="=#"/> 0379 </context> 0380 0381 <context name="callVar{" attribute="Variable" lineEndContext="#stay"> 0382 <DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/> 0383 <DetectChar attribute="Operator" context="dollar" char="$"/> 0384 <DetectSpaces attribute="Error" context="#stay"/> 0385 <!-- Handle bmake Variable modifiers: ${variable[:modifier[:...]]} --> 0386 <Detect2Chars context="#stay" char="\" char1=":"/> 0387 <!-- other modifiers --> 0388 <DetectChar attribute="RealOperator" context="bmake_var_modifier" char=":"/> 0389 <AnyChar attribute="Error" context="#stay" String="=#"/> 0390 </context> 0391 0392 <context name="bmake_var_modifier_arg" attribute="VarModifier" lineEndContext="#pop"> 0393 <DetectChar attribute="Operator" context="dollar" char="$"/> 0394 <Detect2Chars context="#stay" char="\" char1="}"/> 0395 <DetectChar attribute="Operator" char="}" context="#pop#pop#pop#pop"/> 0396 <Detect2Chars context="#stay" char="\" char1=":"/> 0397 <DetectChar attribute="RealOperator" context="#pop!bmake_var_modifier" char=":"/> 0398 </context> 0399 0400 <!-- TODO: once all modifiers are properly handled change fallthroughContext to "expect}" --> 0401 <context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg" fallthrough="true"> 0402 <DetectChar attribute="Operator" context="dollar" char="$"/> 0403 0404 <!-- 0405 TODO :?true_string:false_string 0406 TODO :old_string=new_string This is the AT&T System V UNIX style variable substitution. 0407 TODO :@temp@string@ This is the loop expansion mechanism from the OSF Development Environment (ODE) make. 0408 TODO :!cmd! The output of running cmd is the value. 0409 TODO :[range] 0410 --> 0411 <!-- Modifiers without arguments:--> 0412 <!-- :Ox Randomize words in variable. --> 0413 <Detect2Chars attribute="Builtin" context="#pop!expect}" char="O" char1="x"/> 0414 <!-- 0415 :E Replaces each word in the variable with its suffix. 0416 :H Replaces each word in the variable with everything but the last component. 0417 :O Order every word in variable alphabetically. 0418 :Q Quotes every shell meta-character in the variable 0419 :R Replaces each word in the variable with everything but its suffix. 0420 :T Replaces each word in the variable with its last component. 0421 :u Remove adjacent duplicate words (like uniq(1)). 0422 :L The name of the variable is the value. 0423 :P The path of the node which has the same name as the variable is the value. 0424 --> 0425 <AnyChar attribute="Builtin" context="#pop!expect}" String="EHOQRTuLP"/> 0426 <!-- :sh If the variable is non-empty it is run as a command and the output becomes the new value. --> 0427 <Detect2Chars attribute="Builtin" context="#pop!expect}" char="s" char1="h"/> 0428 <!-- :tA Attempt to convert variable to an absolute path using realpath(3),--> 0429 <Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="A"/> 0430 <!-- :tl Converts variable to lower-case letters.--> 0431 <Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="L"/> 0432 <!-- :gmtime The value is a format string for strftime(3), using the current gmtime(3). --> 0433 <StringDetect attribute="Builtin" String="gmtime" context="#pop!expect}" /> 0434 <!-- :hash Compute a 32bit hash of the value and encode it as hex digits. --> 0435 <StringDetect attribute="Builtin" String="hash" context="#pop!expect}" /> 0436 <!-- :localtime The value is a format string for strftime(3), using the current localtime(3). --> 0437 <StringDetect attribute="Builtin" String="localtime" context="#pop!expect}" /> 0438 <!--Now the modifiers with arguments:--> 0439 <!-- 0440 :Mpattern Select only those words that match pattern. 0441 :Npattern This is identical to `:M', but selects all words which do not match pattern. 0442 :Dnewval If the variable is defined newval is the value. 0443 :Unewval If the variable is undefined newval is the value. 0444 --> 0445 <!-- TODO: add new context to highligh old_string and new_string differently 0446 :S/old_string/new_string/[1gW] 0447 :C/pattern/replacement/[1gW] 0448 --> 0449 <AnyChar attribute="Builtin" context="#pop!bmake_var_modifier_arg" String="MNDUSC"/> 0450 <!-- ::=str The variable is assigned the value str after substitution. --> 0451 <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char=":" char1="="/> 0452 <!-- ::?=str As for ::= but only if the variable does not already have a value. --> 0453 <StringDetect attribute="Builtin" String=":?=" context="#pop!bmake_var_modifier_arg" /> 0454 <!-- ::+=str Append str to the variable. --> 0455 <StringDetect attribute="Builtin" String=":+=" context="#pop!bmake_var_modifier_arg" /> 0456 <!-- ::!=cmd Assign the output of cmd to the variable. --> 0457 <StringDetect attribute="Builtin" String=":!=" context="#pop!bmake_var_modifier_arg" /> 0458 <!-- :tu Converts variable to upper-case letters. --> 0459 <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="u"/> 0460 <!-- :tW Causes the value to be treated as a single word. See also `:[*]'. --> 0461 <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="W"/> 0462 <!-- :tw Causes the value to be treated as a sequence of words delimited by white space. See also `:[@]'.--> 0463 <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="w"/> 0464 <!-- :tsc Words in the variable are normally separated by a space on 0465 expansion. This modifier sets the separator to the character c. If 0466 c is omitted, then no separator is used. The common escapes 0467 (including octal numeric codes), work as expected. --> 0468 <Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="s"/> 0469 0470 <IncludeRules context="bmake_var_modifier_arg"/> 0471 </context> 0472 0473 <context name="expect}" attribute="Error" lineEndContext="#pop#pop#pop#pop"> 0474 <Detect2Chars context="#stay" char="\" char1="}"/> 0475 <DetectChar attribute="Operator" char="}" context="#pop#pop#pop#pop"/> 0476 </context> 0477 0478 <context name="callFunc(" attribute="FuncParam" lineEndContext="#stay"> 0479 <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/> 0480 <DetectChar attribute="Operator" context="dollar" char="$"/> 0481 <DetectChar attribute="Keyword" context="#stay" char=","/> 0482 <DetectChar attribute="String" context="string"" char="""/> 0483 <DetectChar attribute="String" context="string'" char="'"/> 0484 </context> 0485 0486 <context name="callFunc{" attribute="FuncParam" lineEndContext="#stay"> 0487 <DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/> 0488 <DetectChar attribute="Operator" context="dollar" char="$"/> 0489 <DetectChar attribute="Keyword" context="#stay" char=","/> 0490 <DetectChar attribute="String" context="string"" char="""/> 0491 <DetectChar attribute="String" context="string'" char="'"/> 0492 </context> 0493 0494 <!-- $(var:pattern=replacement) --> 0495 <context name="SubstitutionRefs" attribute="VarModifier" lineEndContext="#stay"> 0496 <DetectChar attribute="RealOperator" context="#pop!SubstitutionRefsReplacement" char="="/> 0497 <IncludeRules context="SubstitutionRefsReplacement"/> 0498 </context> 0499 <context name="SubstitutionRefsReplacement" attribute="VarModifier" lineEndContext="#stay"> 0500 <DetectChar attribute="Operator" char=")" context="#pop#pop#pop#pop"/> 0501 <DetectChar attribute="Operator" context="dollar" char="$"/> 0502 </context> 0503 0504 <context attribute="Comment" lineEndContext="#pop" name="Comment"> 0505 <LineContinue attribute="Comment" context="#stay" /> 0506 <IncludeRules context="##Comments" /> 0507 </context> 0508 0509 </contexts> 0510 <itemDatas> 0511 <itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/> 0512 <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/> 0513 <itemData name="Comment" defStyleNum="dsComment"/> 0514 <itemData name="String" defStyleNum="dsString" spellChecking="0"/> 0515 <itemData name="Variable" defStyleNum="dsDataType" spellChecking="0"/> 0516 <itemData name="Target" defStyleNum="dsDecVal" spellChecking="0"/> 0517 <itemData name="Section" defStyleNum="dsOthers" spellChecking="0"/> 0518 <itemData name="Prereq" defStyleNum="dsDataType" spellChecking="0"/> 0519 <itemData name="FuncParam" defStyleNum="dsString" spellChecking="0"/> 0520 <itemData name="Operator" defStyleNum="dsChar" spellChecking="0"/> 0521 <itemData name="Silent" defStyleNum="dsFunction" spellChecking="0"/> 0522 <itemData name="Special" defStyleNum="dsFloat" spellChecking="0"/> 0523 <itemData name="Error" defStyleNum="dsError" spellChecking="0"/> 0524 <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="0"/> 0525 <itemData name="Number" defStyleNum="dsDecVal" spellChecking="0"/> 0526 <itemData name="Include" defStyleNum="dsImport" spellChecking="0"/> 0527 <itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="0"/> 0528 <itemData name="VarModifier" defStyleNum="dsSpecialString" spellChecking="0"/> 0529 <itemData name="RealOperator" defStyleNum="dsKeyword" spellChecking="0"/> 0530 <itemData name="SpecialTarget" defStyleNum="dsOthers" spellChecking="0" bold="1"/> 0531 <itemData name="SpecialPrereq" defStyleNum="dsDataType" spellChecking="0" bold="1"/> 0532 </itemDatas> 0533 </highlighting> 0534 <general> 0535 <comments> 0536 <comment name = "singleLine" start = "#"/> 0537 </comments> 0538 <!-- '-' is not a deliminator in function filter-out --> 0539 <keywords casesensitive="1" weakDeliminator = ".-"/> 0540 </general> 0541 </language> 0542 <!-- kate: syntax XML; space-indent on; indent-width 2; replace-tabs on; -->