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.
178 lines
9.6 KiB
178 lines
9.6 KiB
15 years ago
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<!DOCTYPE language SYSTEM "language.dtd">
|
||
|
<!--
|
||
|
This file is part of KDE's kate project.
|
||
|
|
||
|
Copyright 2007-2008 Kate project.
|
||
|
|
||
|
Author: Diggory Hardy <diggory.hardy@gmail.com>
|
||
|
|
||
|
This contains highlighting for Ddoc, the D language embedded documentation comments. Implemented
|
||
|
for d.xml version 1.46.
|
||
|
|
||
|
Macros are highlighted but the macro name and macro contents/parameters are not highlighted
|
||
|
differently. Currently the only way I can think of doing this is by matching the macro using a
|
||
|
RegExpr matching $(XX where XX are the first symbols before any spaces. If anyone has a better
|
||
|
idea please let me know.
|
||
|
|
||
|
Section names are matched, but too often since it can't really check that they're the first non-
|
||
|
whitespace item excluding a leading * or +. They could easily be made to match too little instead
|
||
|
of too much by adding firstNonSpace="true".
|
||
|
|
||
|
Code sections are matched, and formatted by using the standard d highlighting rules. This looks
|
||
|
good as far as I've tested it, but could lead to some confusion. Note that it does make
|
||
|
unhighlighted non-identifiers (i.e. things not matching [a-zA-Z_][a-zA-Z0-9_]*) italic.
|
||
|
|
||
|
Updates:
|
||
|
2008.02.22 ddoc 1.14 Fixes/improvements for macros. Highlights first symbol and non-symbols before as errors; matches embedded brackets () properly.
|
||
|
2007.11.15 ddoc 1.13 Fixed a couple of bugs found by checkdtd and changed the version number format.
|
||
|
2007.11.5 ddoc 1.12 Fixed: correct matching of things like /***/ .
|
||
|
2007.10.11 ddoc 1.11 Safety catch: check for unterminated code sections (i.e. check for end of ddoc comment even in code sections).
|
||
|
Used DetectIdentifier to (presumably) improve performance.
|
||
|
2007.10.9 ddoc 1.10 Enabled embedded ddoc code highlighting
|
||
|
2007.10.9 ddoc 1.00 Initial version
|
||
|
|
||
|
**********************************************************************
|
||
|
* This library is free software; you can redistribute it and/or *
|
||
|
* modify it under the terms of the GNU Lesser General Public *
|
||
|
* License as published by the Free Software Foundation; either *
|
||
|
* version 2 of the License, or (at your option) any later version. *
|
||
|
* *
|
||
|
* This library is distributed in the hope that it will be useful, *
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||
|
* Lesser General Public License for more details. *
|
||
|
* *
|
||
|
* You should have received a copy of the GNU Lesser General Public *
|
||
|
* License along with this library; if not, write to the *
|
||
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
|
||
|
* Boston, MA 02110-1301, USA. *
|
||
|
**********************************************************************
|
||
|
-->
|
||
|
<language name="Ddoc" version="1.14" kateversion="2.5" section="Markup" author="Diggory Hardy (diggory.hardy@gmail.com)" license="LGPL" extensions="">
|
||
|
<highlighting>
|
||
|
<contexts>
|
||
|
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
|
||
|
<RegExpr attribute="Comment" context="DdocLine" String="/{3,}"/>
|
||
|
<RegExpr attribute="Comment" context="DdocBlock" String="/\*{2,}(?!/)" beginRegion="DdocBlock"/>
|
||
|
<RegExpr attribute="Comment" context="DdocNested" String="/\+{2,}(?!/)" beginRegion="DdocNested"/>
|
||
|
</context>
|
||
|
|
||
|
<context name="DdocLine" attribute="Ddoc" lineEndContext="#pop">
|
||
|
<DetectSpaces />
|
||
|
<DetectIdentifier attribute="Ddoc"/>
|
||
|
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
|
||
|
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:($|\s)" />
|
||
|
<IncludeRules context="##Alerts" />
|
||
|
</context>
|
||
|
|
||
|
<context name="DdocBlock" attribute="Ddoc" lineEndContext="#stay">
|
||
|
<DetectSpaces />
|
||
|
<DetectIdentifier attribute="Ddoc"/>
|
||
|
<RegExpr attribute="Comment" context="#pop" String="\*+/" endRegion="DdocBlock"/>
|
||
|
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
|
||
|
|
||
|
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
|
||
|
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:($|\s)" />
|
||
|
<IncludeRules context="##Alerts" />
|
||
|
|
||
|
<!-- Avoid matching this; do it this way since (^|\s)-* always matches .- and \s-* never
|
||
|
matches .- (spaces have already been matched); however -*($|\s) matches just fine.
|
||
|
Also can't use \b since - is not a word character. -->
|
||
|
<RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
|
||
|
<RegExpr attribute="Comment" context="DdocBlockCode" String="-{3,}($|\s)" />
|
||
|
</context>
|
||
|
|
||
|
<context name="DdocNested" attribute="Ddoc" lineEndContext="#stay">
|
||
|
<DetectSpaces />
|
||
|
<DetectIdentifier attribute="Ddoc"/>
|
||
|
<!-- Ddoc recognises nested comments/ddoc, but ignores them as far as formatting is concerned. -->
|
||
|
<Detect2Chars attribute="Ddoc" context="DdocNested2" char="/" char1="+"/>
|
||
|
<RegExpr attribute="Comment" context="#pop" String="\++/" endRegion="DdocNested"/>
|
||
|
<DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
|
||
|
|
||
|
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
|
||
|
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:($|\s)" />
|
||
|
<IncludeRules context="##Alerts" />
|
||
|
|
||
|
<!-- As above. -->
|
||
|
<RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
|
||
|
<RegExpr attribute="Comment" context="DdocNestedCode" String="-{3,}($|\s)" />
|
||
|
</context>
|
||
|
|
||
|
<context name="DdocNested2" attribute="Ddoc" lineEndContext="#stay">
|
||
|
<DetectSpaces />
|
||
|
<DetectIdentifier attribute="Ddoc"/>
|
||
|
<!-- Identical to DdocNested except that nested comments don't recieve any formatting -->
|
||
|
<RegExpr attribute="Ddoc" context="#pop" String="\++/"/>
|
||
|
<!-- The above rules should match before the unwanted rule in DdocNested -->
|
||
|
<IncludeRules context="DdocNested" />
|
||
|
</context>
|
||
|
|
||
|
<!-- When entering a macro: provides highlighting for first symbol (macro name) -->
|
||
|
<context name="DdocMacro" attribute="Error" lineEndContext="#stay">
|
||
|
<DetectSpaces attribute="Macro Text" /> <!-- avoid showing space as an error -->
|
||
|
|
||
|
<DetectChar attribute="Macros" context="#pop" char=")" /> <!-- early end of macro -->
|
||
|
<IncludeRules context="MacroRules" />
|
||
|
|
||
|
<!-- first symbol of macro -->
|
||
|
<DetectIdentifier attribute="Macros" context="DdocMacro2" />
|
||
|
</context>
|
||
|
<!-- For rest of macro -->
|
||
|
<context name="DdocMacro2" attribute="Macro Text" lineEndContext="#stay">
|
||
|
<DetectChar attribute="Macros" context="#pop#pop" char=")" /> <!-- end of macro -->
|
||
|
<IncludeRules context="MacroRules" />
|
||
|
</context>
|
||
|
<!-- For embedded brackets (yeah, extra work to ignore them) -->
|
||
|
<context name="DdocMacro3" attribute="Macro Text" lineEndContext="#stay">
|
||
|
<DetectChar attribute="Macro Text" context="#pop" char=")" /> <!-- end of embedded brackets -->
|
||
|
<IncludeRules context="MacroRules" />
|
||
|
</context>
|
||
|
<!-- Rules common to all macros -->
|
||
|
<context name="MacroRules" attribute="Macro Text" lineEndContext="#stay">
|
||
|
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" /> <!-- embedded -->
|
||
|
<DetectChar attribute="Macro Text" context="DdocMacro3" char="(" /> <!-- extra brackets -->
|
||
|
|
||
|
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
|
||
|
</context>
|
||
|
|
||
|
<context name="DdocBlockCode" attribute="DdocCode" lineEndContext="#stay">
|
||
|
<DetectSpaces />
|
||
|
<!-- See update 1.11 -->
|
||
|
<RegExpr attribute="Comment" context="#pop#pop" String="\*+/" endRegion="DdocBlock"/>
|
||
|
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
|
||
|
<!-- As above. -->
|
||
|
<RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
|
||
|
<RegExpr attribute="Comment" context="#pop" String="-{3,}($|\s)" />
|
||
|
<IncludeRules context="##D" />
|
||
|
</context>
|
||
|
<context name="DdocNestedCode" attribute="DdocCode" lineEndContext="#stay">
|
||
|
<DetectSpaces />
|
||
|
<!-- See update 1.11 -->
|
||
|
<RegExpr attribute="Comment" context="#pop#pop" String="\++/" endRegion="DdocNested"/>
|
||
|
<DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
|
||
|
<!-- As above. -->
|
||
|
<RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
|
||
|
<RegExpr attribute="Comment" context="#pop" String="-{3,}($|\s)" />
|
||
|
<IncludeRules context="##D" />
|
||
|
</context>
|
||
|
</contexts>
|
||
|
|
||
|
<itemDatas>
|
||
|
<itemData name="Normal Text" defStyleNum="dsNormal" />
|
||
|
<itemData name="Macros" defStyleNum="dsOthers" color="#bf5fbf" selColor="#ffffff" bold="1" italic="0" />
|
||
|
<itemData name="Macro Text" defStyleNum="dsNormal" color="#bf7fff" selColor="#ffffff" bold="0" italic="0" />
|
||
|
<itemData name="Comment" defStyleNum="dsComment"/>
|
||
|
<itemData name="Ddoc" defStyleNum="dsComment" color="#7f7fff" />
|
||
|
<itemData name="DdocSection" defStyleNum="dsKeyword" color="#7f7fff" bold="1" />
|
||
|
<itemData name="DdocCode" defStyleNum="dsNormal" italic="1" />
|
||
|
|
||
|
<itemData name="Error" defStyleNum="dsError"/>
|
||
|
</itemDatas>
|
||
|
</highlighting>
|
||
|
<general>
|
||
|
<keywords casesensitive="0" />
|
||
|
</general>
|
||
|
</language>
|