You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
8.2 KiB
135 lines
8.2 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE language SYSTEM "language.dtd" [
|
|
<!ENTITY a_valid_char_in_macro_names "A-Za-z0-9_">
|
|
]>
|
|
<language name="RPM Spec" version="1.4" kateversion="2.4" section="Other" extensions="*.spec" mimetype="" license="public domain">
|
|
|
|
<highlighting>
|
|
|
|
<contexts>
|
|
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
|
|
<!-- Handle tags: -->
|
|
<RegExpr attribute="Tag" context="tag_line" String="((Name|Summary|Summary\(.*\)|Version|Epoch|Serial|Release|Group|Copyright|License|Icon|Vendor|Distribution|Packager|Url|URL|Prefix|Conflicts|Obsoletes|Provides|AutoReqProv|PreReq|Requires|Requires\(.*\)|Enhances|Suggests|Recommends|BuildArch|BuildArchitectures|BuildConflicts|BuildRequires|BuildRoot|ExclusiveArch|ExclusiveOs|ExcludeArch|ExcludeOs|Source\d*|Nosource|Patch\d*|Nopatch)[ \t]*:)" column="0" />
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
<!-- Handle comments. "# norootforbuild" is displayed like a tag. -->
|
|
<DetectChar context="Comment" char="#" column="0" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Normal Text" lineEndContext="#stay" name="command section">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
<!-- Handle comments. "# norootforbuild" is displayed like a tag. -->
|
|
<DetectChar context="Comment" char="#" column="0" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Normal Text" lineEndContext="#stay" name="changelog section">
|
|
<Detect2Chars attribute="Value" context="tag_line" char="-" char1=" " column="0" />
|
|
<Detect2Chars attribute="Tag" context="changelog_header" char="*" char1=" " column="0" />
|
|
<!-- Handle comments. "# norootforbuild" is displayed like a tag. -->
|
|
<DetectChar context="Comment" char="#" column="0" lookAhead="true" />
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Normal" lineEndContext="description section" name="description section start line">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Value" lineEndContext="#stay" name="description section">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
<!-- Handle comments. "# norootforbuild" is displayed like a tag. -->
|
|
<DetectChar context="Comment" char="#" column="0" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Comment" lineEndContext="#pop" name="Comment">
|
|
<StringDetect attribute="Tag" context="every_non_whitespace_is_error" String="# norootforbuild" column="0" />
|
|
<!-- Error on single percent ("%"), but not on double percent ("%%"): -->
|
|
<Detect2Chars attribute="Comment" char="%" char1="%"/>
|
|
<DetectChar attribute="Error" char="%"/>
|
|
<!-- Alert on "TODO" -->
|
|
<StringDetect attribute="Alert" String="TODO" insensitive="true" />
|
|
<StringDetect attribute="Alert" String="FIXME" insensitive="true" />
|
|
</context>
|
|
|
|
<context attribute="Normal Text" lineEndContext="#pop" name="every_non_whitespace_is_error">
|
|
<RegExpr attribute="Error" context="#stay" String="[^\s]" />
|
|
</context>
|
|
|
|
<context attribute="Value" lineEndContext="#pop" name="tag_line">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Tag" lineEndContext="#pop" name="changelog_header">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
</context>
|
|
|
|
<context attribute="Normal Text" lineEndContext="#pop" name="parameters after keyword">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
</context>
|
|
|
|
<!-- Expects a string starting with % or $ (otherwise, this context will fail!). -->
|
|
<context lineEndContext="#pop" name="handle_percent">
|
|
<Detect2Chars attribute="Escaped character" context="#pop" char="%" char1="%"/>
|
|
<!-- Keywords: -->
|
|
<RegExpr attribute="Keyword" context="parameters after keyword" String="%(if|ifarch|ifnarch|ifos|ifnos)(?=($| |\t))" column="0" beginRegion="if_block" />
|
|
<RegExpr attribute="Keyword" context="every_non_whitespace_is_error" String="%else(?=($| |\t))" column="0" />
|
|
<RegExpr attribute="Keyword" context="every_non_whitespace_is_error" String="%endif(?=($| |\t))" column="0" endRegion="if_block" />
|
|
<RegExpr attribute="Keyword" context="parameters after keyword" String="%(define|global|undefine)(?=($| |\t))" column="0" />
|
|
<!-- If a command section starts (=section macro at begin of the line), we switch
|
|
to the corresponding context. There will never be a return to THIS context...: -->
|
|
<RegExpr attribute="Section" context="Normal" String="%package(?=($| |\t))" column="0" />
|
|
<RegExpr attribute="Section" context="description section start line" String="%description(?=($| |\t))" column="0" />
|
|
<RegExpr attribute="Section" context="command section" String="%(prep|build|pre|preun|install|post|postun|clean|files|trigger|triggerin|triggerun|triggerpostun|verifyscript)(?=($| |\t))" column="0" />
|
|
<RegExpr attribute="Section" context="changelog section" String="%changelog(?=($| |\t))" column="0" />
|
|
<!-- Handle normal macros -->
|
|
<RegExpr attribute="Error" context="#pop" String="%([\{\(][ \t]{0,}){0,1}(if|ifarch|ifnarch|ifos|ifnos|else|endif|define|global|undefine|package|description|prep|build|pre|preun|install|post|postun|clean|files|trigger|triggerin|triggerun|triggerpostun|verifyscript|changelog)(?=($|[^&a_valid_char_in_macro_names;]))" />
|
|
<RegExpr attribute="Macro call" context="macro content in parenthesis" String="%[&a_valid_char_in_macro_names;]*\(" />
|
|
<RegExpr attribute="Macro call" context="macro content in braces" String="(%|\$)\{" />
|
|
<RegExpr attribute="Macro call" context="#pop" String="(%|\$)([&a_valid_char_in_macro_names;]{1,}|\*|\#)(?=($|[^&a_valid_char_in_macro_names;]))" /> <!-- ')' and '}' are only allowed as macro terminator in the lookahead because when you do something like %__make %{?jobs:-j %jobs}, then the "%jobs" is a valid macro. However, the disadvantage is that a line like "%abc} isn't marked as error. But it is to complicate to distinguish this properly. -->
|
|
<RegExpr attribute="Error" context="#pop" String="(%|\$)([&a_valid_char_in_macro_names;]{1,}|\*|\#)" />
|
|
<AnyChar attribute="Error" context="#pop" String="%$" /> <!-- a single % or $ is also an error -->
|
|
</context>
|
|
|
|
<context attribute="Macro call" lineEndContext="#pop#pop" name="macro content in parenthesis">
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
<DetectChar attribute="Macro call" context="#pop#pop" char=")" />
|
|
<AnyChar attribute="Error" context="#stay" String="({}" />
|
|
</context>
|
|
|
|
<context attribute="Macro call" lineEndContext="#pop#pop" name="macro content in braces">
|
|
<DetectChar attribute="Macro call" context="#pop#pop" char="}" />
|
|
<AnyChar attribute="Error" context="#stay" String="({)" />
|
|
<!-- Handle % -->
|
|
<AnyChar context="handle_percent" String="%$" lookAhead="true" />
|
|
</context>
|
|
|
|
</contexts>
|
|
|
|
<itemDatas>
|
|
<itemData name="Normal Text" defStyleNum="dsNormal"/>
|
|
<itemData name="Keyword" defStyleNum="dsKeyword"/>
|
|
<itemData name="Comment" defStyleNum="dsComment"/>
|
|
<itemData name="Tag" defStyleNum="dsDataType"/>
|
|
<itemData name="Value" defStyleNum="dsDecVal"/>
|
|
<itemData name="Error" defStyleNum="dsError"/>
|
|
<itemData name="Macro call" defStyleNum="dsFunction"/>
|
|
<itemData name="Section" defStyleNum="dsRegionMarker"/>
|
|
<itemData name="Alert" defStyleNum="dsAlert"/>
|
|
<itemData name="Escaped character" defStyleNum="dsChar"/>
|
|
</itemDatas>
|
|
|
|
</highlighting>
|
|
|
|
<general>
|
|
<keywords casesensitive="1" />
|
|
</general>
|
|
|
|
</language>
|