50 lines
1.7 KiB
XML
50 lines
1.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<language id="changelog" _name="ChangeLog" version="2.0" _section="Others">
|
|
|
|
<metadata>
|
|
<property name="mimetypes">text/x-changelog</property>
|
|
<property name="globs">ChangeLog*</property>
|
|
</metadata>
|
|
|
|
<styles>
|
|
<style id="date" name="Date" map-to="def:data-type"/>
|
|
<style id="name" name="Name" map-to="def:keyword"/>
|
|
<style id="email" name="Email"/>
|
|
<style id="file" name="File" map-to="def:function"/>
|
|
<style id="function" name="Function" map-to="def:function"/>
|
|
<style id="release" name="Release" map-to="def:function"/>
|
|
</styles>
|
|
|
|
<definitions>
|
|
<define-regex id="identifier">[A-Za-z_][A-Za-z0-9_]*</define-regex>
|
|
|
|
<context id="changelog">
|
|
<include>
|
|
<context id="date-and-stuff">
|
|
<!-- FIXME: how to match date here? The date and name line is
|
|
something like (DATE) (NAME) <EMAIL>, where DATE and NAME may
|
|
be quite arbitrary. -->
|
|
<match>^(\S+)\s+(.*)\s+(\<[^\<]+\>)\s*$</match>
|
|
<include>
|
|
<context sub-pattern="1" style-ref="date"/>
|
|
<context sub-pattern="2" style-ref="name"/>
|
|
<context sub-pattern="3" style-ref="email"/>
|
|
</include>
|
|
</context>
|
|
<context id="release" style-ref="release">
|
|
<match>^\s*\=.*\=\s*$</match>
|
|
</context>
|
|
<context id="file" style-ref="file">
|
|
<start>^\s+\*</start>
|
|
<!-- end at blank lines if there's no colon -->
|
|
<end>\:|^$</end>
|
|
</context>
|
|
<context id="function" style-ref="function">
|
|
<match>\(\s*\%{identifier}\s*\)</match>
|
|
</context>
|
|
</include>
|
|
</context>
|
|
</definitions>
|
|
|
|
</language>
|