<?xml version="1.0" encoding="UTF-8"?>
<!--
    Kate syntax highlight filter for Markdown/MultiMarkdown documents.

    Copyright 2008 Darrin Yeager. http://www.dyeager.org/
    Dual-Licensed under both GPL and BSD licenses.

    Extended 2009 Claes Holmerson. http://github.com/claes/kate-markdown/
-->
<!--
    The [^\s]{1} is in the regex to avoid interfering with bullet list which
    starts "* item". Thus emphasis/strong MUST be formed like *words here*
    with the asterisks next to the beginning of the first word.

    Match space or newline, followed by "*", followed by one non-space,
    followed by anything non-asterisk, followed by "*", followed by
    space, end-of-sentence punctuation, or the end of the line.
-->
<!DOCTYPE language SYSTEM "language.dtd"
[
<!ENTITY strongemphasisregex "(\s|^)[\*_]{3}[^\*_]+[\*_]{3}(\s|\.|,|;|:|\-|\?|$)">
<!ENTITY strongregex "(\s|^)[\*_]{2}[^\s]{1}[^\*_]+[\*_]{2}(\s|\.|,|;|:|\-|\?|$)">
<!ENTITY emphasisregex "(\s|^)[\*_]{1}[^\s]{1}[^\*_]+[\*_]{1}(\s|\.|,|;|:|\-|\?|$)">
<!ENTITY reflinkregex '\[[^\]\^]+\]\s*\[[^\]]*\]\s*(\s+\"[^\"]*\"){0,1}'>
<!ENTITY reflinktargetregex '\[[^\]\^]+\]\:\s+[^\s]+(\s+\"[^\"]*\"){0,1}'>
<!ENTITY footnoteregex "\[\^[^\]]+\]">
<!ENTITY inlinelinkregex "\[[^\]\^]+\]\s*\([^\(]*\)">
<!ENTITY inlineimageregex "\!\[[^\]\^]+\]\([^\(]*\)">
<!ENTITY refimageregex "\!\[[^\]\^]+\]\[[^\[]*\]">
<!ENTITY autolinkregex '&lt;(https?|ftp):[^\"&gt;\s]+&gt;'>
<!ENTITY mailtolinkregex "&lt;(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)&gt;">
<!ENTITY rulerregex "\s*([\*\-_]\s?){3,}\s*">
<!-- two spaces at end of line generates linebreak -->
<!ENTITY linebreakregex "  $">
<!ENTITY strikeoutregex "[~]{2}[^~].*[^~][~]{2}">
<!-- pandoc style -->
]>
<language name="Markdown" version="2" kateversion="3.8" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
  <highlighting>
    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
        <DetectChar context="blockquote" char="&gt;" column="0"/>
        <RegExpr attribute="h1" String="^#\s.*[#]?$"/>
        <RegExpr attribute="h2" String="^##\s.*[#]?$"/>
        <RegExpr attribute="h3" String="^###\s.*[#]?$"/>
        <RegExpr attribute="h4" String="^####\s.*[#]?$"/>
        <RegExpr attribute="h5" String="^#####\s.*[#]?$"/>
        <RegExpr attribute="h6" String="^######\s.*[#]?$"/>
        <RegExpr attribute="ruler" String="&rulerregex;"/>
        <RegExpr attribute="strong" String="&strongregex;"/>
        <RegExpr attribute="emphasis" String="&emphasisregex;"/>
        <RegExpr attribute="strongemphasis" String="&strongemphasisregex;"/>
        <RegExpr attribute="code" String="^([\s]{4,}|\t+).*$"/>
        <RegExpr context="bullet" String="^[\*\+\-]\s"/>
        <RegExpr context="numlist" String="^[\d]+\.\s"/>
        <RegExpr attribute="meta" String="^(Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt):(.*)+$"/>
        <IncludeRules context="inc"/>
      </context>
      <context attribute="blockquote" lineEndContext="#stay" lineEmptyContext="#pop" name="blockquote">
        <RegExpr attribute="bq-strong" String="&strongregex;"/>
        <RegExpr attribute="bq-emphasis" String="&emphasisregex;"/>
        <IncludeRules context="inc"/>
      </context>
      <context attribute="bullet" lineEndContext="#stay" lineEmptyContext="#pop" name="bullet">
        <RegExpr attribute="bl-strong" String="&strongregex;"/>
        <RegExpr attribute="bl-emphasis" String="&emphasisregex;"/>
        <IncludeRules context="inc"/>
      </context>
      <context attribute="numlist" lineEndContext="#stay" lineEmptyContext="#pop" name="numlist">
        <RegExpr attribute="nl-strong" String="&strongregex;"/>
        <RegExpr attribute="nl-emphasis" String="&emphasisregex;"/>
        <IncludeRules context="inc"/>
      </context>
      <context attribute="comment" lineEndContext="#stay" name="comment">
        <RegExpr String="--&gt;" attribute="comment" context="#pop" endRegion="comment"/>
      </context>
      <context attribute="common" name="inc" lineEndContext="#stay">
        <RegExpr attribute="code" String="`[^`]+`"/>
        <RegExpr context="comment" String="&lt;!--" beginRegion="comment"/>
        <RegExpr attribute="reflink" String="&reflinkregex;"/>
        <RegExpr attribute="footnote" String="&footnoteregex;"/>
        <RegExpr attribute="inlinelink" String="&inlinelinkregex;"/>
        <RegExpr attribute="reflinktarget" String="&reflinktargetregex;"/>
        <RegExpr attribute="inlineimage" String="&inlineimageregex;"/>
        <RegExpr attribute="refimage" String="&refimageregex;"/>
        <RegExpr attribute="autolink" String="&autolinkregex;"/>
        <RegExpr attribute="mailtolink" String="&mailtolinkregex;"/>
        <RegExpr attribute="strikeout" minimal="true" String="&strikeoutregex;"/>
        <RegExpr attribute="linebreak" minimal="true" String="&linebreakregex;"/>
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal"/>
      <itemData name="common" defStyleNum="dsNormal"/>
      <itemData name="strongemphasis" defStyleNum="dsNormal" italic="true" bold="true"/>
      <itemData name="emphasis" defStyleNum="dsNormal" italic="true"/>
      <itemData name="strong" defStyleNum="dsNormal" bold="true"/>
      <itemData name="ruler" defStyleNum="dsNormal" bold="true"/>
      <itemData name="strikeout" defStyleNum="dsNormal" strikeOut="true"/>
      <itemData name="linebreak" defStyleNum="dsNormal" underline="true" color="#999999"/>
      <itemData name="h1" defStyleNum="dsFunction" bold="true"/>
      <itemData name="h2" defStyleNum="dsFunction" bold="true"/>
      <itemData name="h3" defStyleNum="dsFunction" bold="true"/>
      <itemData name="h4" defStyleNum="dsFunction" bold="true"/>
      <itemData name="h5" defStyleNum="dsFunction" bold="true"/>
      <itemData name="h6" defStyleNum="dsFunction" bold="true"/>
      <itemData name="blockquote" defStyleNum="dsDataType"/>
      <itemData name="bq-emphasis" defStyleNum="dsDataType" italic="true"/>
      <itemData name="bq-strong" defStyleNum="dsDataType" bold="true"/>
      <itemData name="bullet" defStyleNum="dsFloat"/>
      <itemData name="bl-emphasis" defStyleNum="dsFloat" italic="true"/>
      <itemData name="bl-strong" defStyleNum="dsFloat" bold="true"/>
      <itemData name="numlist" defStyleNum="dsFloat"/>
      <itemData name="nl-emphasis" defStyleNum="dsFloat" italic="true"/>
      <itemData name="nl-strong" defStyleNum="dsFloat" bold="true"/>
      <itemData name="comment" defStyleNum="dsComment"/>
      <itemData name="code" defStyleNum="dsBaseN"/>
      <itemData name="reflink" defStyleNum="dsOthers" underline="true"/>
      <itemData name="inlinelink" defStyleNum="dsOthers" underline="true"/>
      <itemData name="autolink" defStyleNum="dsOthers" underline="true"/>
      <itemData name="mailtolink" defStyleNum="dsOthers" underline="true"/>
      <itemData name="footnote" defStyleNum="dsOthers" italic="true"/>
      <itemData name="meta" defStyleNum="dsComment"/>
      <itemData name="reflinktarget" defStyleNum="dsOthers" italic="false" bold="false"/>
      <itemData name="inlineimage" defStyleNum="dsAlert" italic="false" bold="false"/>
      <itemData name="refimage" defStyleNum="dsAlert" italic="false" bold="false"/>
    </itemDatas>
  </highlighting>
  <general>
    <comments>
      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment"/>
    </comments>
  </general>
</language>
