<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!-- Based on haskell.xml and idris.vim (https://github.com/idris-hackers/idris-vim/blob/6bdb44b85406b75e3b3a4fa265deab1dbe8c6ff1/syntax/idris.vim) -->
<language name="Idris" version="1.0" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
<highlighting>
<list name="keywords">
<item> abstract </item>
<item> auto </item>
<item> case </item>
<item> class </item>
<item> codata </item>
<item> covering </item>
<item> data </item>
<item> default </item>
<item> do </item>
<item> dsl </item>
<item> else </item>
<item> if </item>
<item> implicit </item>
<item> import </item>
<item> impossible </item>
<item> in </item>
<item> index_first </item>
<item> index_next </item>
<item> infix </item>
<item> infixl </item>
<item> infixr </item>
<item> instance </item>
<item> lambda </item>
<item> let </item>
<item> module </item>
<item> mututal </item>
<item> namespace </item>
<item> of </item>
<item> parameters </item>
<item> partial </item>
<item> pattern </item>
<item> postulate </item>
<item> prefix </item>
<item> private </item>
<item> proof </item>
<item> public </item>
<item> record </item>
<item> rewrite </item>
<item> static </item>
<item> syntax </item>
<item> tactics </item>
<item> term </item>
<item> then </item>
<item> total </item>
<item> using </item>
<item> variable </item>
<item> where </item>
<item> with </item>
</list>
<list name="directives">
<item> access </item>
<item> assert_total </item>
<item> default </item>
<item> dynamic </item>
<item> elim </item>
<item> error_handlers </item>
<item> error_reverse </item>
<item> flag </item>
<item> hide </item>
<item> include </item>
<item> language </item>
<item> lib </item>
<item> link </item>
<item> name </item>
<item> provide </item>
<item> reflection </item>
</list>
<list name="tactics">
<item> applyTactic </item>
<item> attack </item>
<item> compute </item>
<item> exact </item>
<item> fill </item>
<item> focus </item>
<item> induction </item>
<item> intro </item>
<item> intros </item>
<item> let </item>
<item> refine </item>
<item> reflect </item>
<item> rewrite </item>
<item> solve </item>
<item> trivial </item>
<item> try </item>
</list>
<contexts>
<context attribute="Normal" lineEndContext="#stay" name="code">
<RegExpr attribute="Comment" context="line comment"
String="---*[^!#\$%&\*\+/<=>\?\@\^\|~\.:]?" />
<RegExpr attribute="Comment" context="line comment"
String="\|\|\|[^\-!#\$%&\*\+/<=>\?\@\^\|~\.:]?" />
<Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />
<RegExpr attribute="Normal" context="declaration" lookAhead="true"
String="^\s*([a-z]+\s+)*([A-Za-z][A-Za-z0-9_]*'*|\([\-!#\$%&\*\+\./<=>\?@\\^\|~:]+\))\s*:" />
<keyword attribute="Keyword" context="#stay" String="keywords" />
<DetectChar attribute="Keyword" context="directive" char="%" />
<keyword attribute="Tactic" context="#stay" String="tactics" />
<DetectChar attribute="Char" context="char" char="'" />
<DetectChar attribute="String" context="string" char=""" />
<Int attribute="Decimal" context="#stay" />
<RegExpr attribute="Hex" context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
<RegExpr attribute="Octal" context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
<RegExpr attribute="Float" context="#stay" String="\d+\.\d+([eE][-+]?\d+)?" />
<RegExpr attribute="Type" context="#stay" String="([A-Z][a-zA-Z0-9_]*'*|_\|_)" />
<RegExpr attribute="Normal" context="#stay" String="[a-z][a-zA-Z0-9_]*'*" />
<RegExpr attribute="MetaVar" context="#stay" String="\?[a-z][A-Za-z0-9_]+'*" />
<RegExpr attribute="Special" context="#stay" String="(:|=>|\->|<\-)" />
<RegExpr attribute="Operator" context="#stay"
String="([\-!#\$%&\*\+\./<=>\?@\\^\|~:]+|\b_\b)" />
<RegExpr attribute="Operator" context="#stay" String="`[A-Za-z][A-Za-z0-9_]*'*`" />
</context>
<context attribute="Normal" lineEndContext="#pop" name="declaration">
<keyword attribute="Keyword" context="#stay" String="keywords" />
<RegExpr attribute="Type" context="#stay" String="([A-Z][a-zA-Z0-9_]*'*|_\|_)" />
<RegExpr attribute="Declaration" context="#stay" String="[a-z][A-Za-z0-9_]*'*"/>
<RegExpr attribute="Operator" context="#stay"
String="\([\-!#\$%&\*\+\./<=>\?@\\^\|~:]+\)" />
<DetectChar attribute="Special" context="#pop" char=":" />
</context>
<context attribute="Normal" lineEndContext="#pop" name="directive">
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Keyword" context="#stay" String="directives" />
</context>
<context attribute="Char" lineEndContext="#pop" name="char">
<RegExpr attribute="Char" context="#stay" String="\\." />
<DetectChar attribute="Char" context="#pop" char="'" />
</context>
<context attribute="String" lineEndContext="#stay" name="string">
<RegExpr attribute="String" context="#stay" String="\\." />
<RegExpr attribute="String" context="#pop" String=""" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="line comment" />
<context attribute="Comment" lineEndContext="#stay" name="block comment">
<Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
<Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Tactic" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Char" defStyleNum="dsChar" spellChecking="false" />
<itemData name="String" defStyleNum="dsString" spellChecking="true" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
<itemData name="Type" defStyleNum="dsDataType" spellChecking="false" />
<itemData name="MetaVar" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Operator" defStyleNum="dsFunction" spellChecking="false" />
<itemData name="Special" defStyleNum="dsOthers" spellChecking="false" />
<itemData name="Declaration" defStyleNum="dsFunction" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1"/>
<comments>
<comment name="singleLine" start="--" />
<comment name="multiLine" start="{-" end="-}" />
</comments>
<keywords casesensitive="1" />
</general>
</language>