<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Literate Curry" version="5" kateversion="5.0"
          section="Sources" extensions="*.lcurry" mimetype="text/x-curry"
          author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
          indenter="haskell">
  <highlighting>
  <contexts>

    <context attribute="Text" lineEndContext="#stay" name="Text">
      <!-- Bird Tracks -->
      <DetectChar attribute="BirdTrack" context="Code" char="&gt;" column="0"/>
      <DetectChar attribute="BirdTrack" context="Code" char="&lt;" column="0"/>
      <!-- \begin{code} and \begin{spec} -->
      <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;code&#125;"/>
      <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;spec&#125;"/>
    </context>

    <context attribute="Text" lineEndContext="#pop" name="Code">
      <RegExpr attribute="Comment" context="multiline" String="\{-[^#]" beginRegion="Comment" />
      <IncludeRules context="##Curry" />
    </context>

    <context attribute="Text" lineEndContext="#stay" name="normals">
      <StringDetect attribute="Text" context="#pop" String="&#92;end&#123;code&#125;"/>
      <StringDetect attribute="Text" context="#pop" String="&#92;end&#123;spec&#125;"/>
      <IncludeRules context="##Curry" />
    </context>

    <!-- Handle comments in presence of bird tracks -->
    <context attribute="Comment" lineEndContext="lineend" name="multiline" >
      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />
      <DetectSpaces />
      <IncludeRules context="##Comments" />
    </context>

    <context attribute="Text" lineEndContext="#stay" name="lineend">
      <DetectChar attribute="BirdTrack" context="restart" char="&gt;" column="0"/>
      <DetectChar attribute="BirdTrack" context="restart" char="&lt;" column="0"/>
    </context>

    <context attribute="Comment" lineEndContext="#pop" name="restart">
      <Detect2Chars attribute="Comment" context="#pop#pop#pop" char="-" char1="}" />
    </context>
  </contexts>
  <itemDatas>
    <itemData name="Text"      defStyleNum="dsNormal"  spellChecking="true"  />
    <itemData name="BirdTrack" defStyleNum="dsOthers"  spellChecking="false" />
    <itemData name="Comment"   defStyleNum="dsComment" />
  </itemDatas>
  </highlighting>
  <general>
    <comments>
      <comment name="multiLine" start="{-" end="-}" region="Comment"/>
    </comments>
  </general>
</language>
