<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd" [ <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)"> <!-- things that end a TagWord --> ]> <!-- This file is part of KDE's kate project. Copyright 2004 Dominik Haumann (dhdev@gmx.de) Copyright 2007 Matthew Woehlke (mw_triad@users.sourceforge.net) Copyright 2009 Alex Turbov (I.zaufi@gmail.com) ********************************************************************** * 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. * ********************************************************************** --> <!-- NOTE: Tags @code and @endcode do not present in keywords due separate handle rules... --> <language name="Doxygen" version="1.32" kateversion="2.4" section="Markup" extensions="*.dox;*.doxygen" mimetype="text/x-doxygen" author="Dominik Haumann (dhdev@gmx.de)" license="LGPL" priority="9"> <highlighting> <!-- note: all tags may begin with a \ or @ char so if you add/change tags you have to do it twice --> <list name="TagOnly"> <item> \arg </item> <item> \attention </item> <item> \author </item> <item> \callgraph </item> <item> \callergraph </item> <!-- <item> \code </item> --> <item> \details </item> <item> \dot </item> <item> \else </item> <!-- <item> \endcode </item> --> <item> \endcond </item> <item> \enddot </item> <item> \endhtmlonly </item> <item> \endif </item> <item> \endlatexonly </item> <item> \endlink </item> <item> \endmanonly </item> <item> \endmsc </item> <item> \endverbatim </item> <item> \endxmlonly </item> <item> \f[ </item> <item> \f] </item> <item> \f$ </item> <item> \hideinitializer </item> <item> \htmlonly </item> <item> \interface </item> <item> \internal </item> <item> \invariant </item> <item> \~ </item> <item> \@ </item> <item> \$ </item> <item> \\ </item> <item> \# </item> <item> \latexonly </item> <item> \li </item> <item> \manonly </item> <item> \msc </item> <item> \n </item> <item> \nosubgrouping </item> <item> \note </item> <item> \only </item> <item> \post </item> <item> \pre </item> <item> \private </item> <item> \privatesection </item> <item> \protected </item> <item> \protectedsection </item> <item> \public </item> <item> \publicsection </item> <item> \remarks </item> <item> \return </item> <item> \returns </item> <!-- <item> \sa </item> --> <!-- <item> \see </item> --> <item> \showinitializer </item> <item> \since </item> <item> \test </item> <item> \todo </item> <item> \verbatim </item> <item> \warning </item> <item> \xmlonly </item> <item> @arg </item> <item> @attention </item> <item> @author </item> <item> @callgraph </item> <item> @callergraph </item> <!-- <item> @code </item> --> <item> @details </item> <item> @dot </item> <item> @else </item> <!-- <item> @endcode </item> --> <item> @endcond </item> <item> @enddot </item> <item> @endhtmlonly </item> <item> @endif </item> <item> @endlatexonly </item> <item> @endlink </item> <item> @endmanonly </item> <item> @endmsc </item> <item> @endverbatim </item> <item> @endxmlonly </item> <item> @f[ </item> <item> @f] </item> <item> @f$ </item> <item> @hideinitializer </item> <item> @htmlonly </item> <item> @interface </item> <item> @internal </item> <item> @invariant </item> <item> @~ </item> <item> @@ </item> <item> @$ </item> <item> @\ </item> <item> @# </item> <item> @latexonly </item> <item> @li </item> <item> @manonly </item> <item> @msc </item> <item> @n </item> <item> @nosubgrouping </item> <item> @note </item> <item> @only </item> <item> @post </item> <item> @pre </item> <item> @pivate </item> <item> @pivatesection </item> <item> @protected </item> <item> @protectedsection </item> <item> @public </item> <item> @publicsection </item> <item> @remarks </item> <item> @return </item> <item> @returns </item> <!-- <item> @sa </item> --> <!-- <item> @see </item> --> <item> @showinitializer </item> <item> @since </item> <item> @test </item> <item> @todo </item> <item> @verbatim </item> <item> @warning </item> <item> @xmlonly </item> </list> <list name="TagWord"> <item> \addtogroup </item> <item> \a </item> <item> \anchor </item> <item> \b </item> <item> \c </item> <item> \class </item> <item> \cond </item> <item> \copybrief </item> <item> \copydetails </item> <item> \copydoc </item> <item> \def </item> <item> \dir </item> <item> \dontinclude </item> <item> \dotfile </item> <item> \e </item> <item> \elseif </item> <item> \em </item> <item> \enum </item> <item> \example </item> <item> \exception </item> <item> \exceptions </item> <item> \extends </item> <item> \file </item> <item> \htmlinclude </item> <item> \if </item> <item> \ifnot </item> <item> \implements </item> <item> \include </item> <item> \includelineno </item> <item> \link </item> <item> \memberof </item> <item> \namespace </item> <item> \p </item> <item> \package </item> <item> \property </item> <item> \protocol </item> <item> \ref </item> <item> \relatesalso </item> <item> \relates </item> <item> \retval </item> <item> \throw </item> <item> \throws </item> <item> \verbinclude </item> <item> \version </item> <item> \xrefitem </item> <item> @addtogroup </item> <item> @a </item> <item> @anchor </item> <item> @b </item> <item> @c </item> <item> @class </item> <item> @cond </item> <item> @copybrief </item> <item> @copydetails </item> <item> @copydoc </item> <item> @def </item> <item> @dir </item> <item> @dontinclude </item> <item> @dotfile </item> <item> @e </item> <item> @elseif </item> <item> @em </item> <item> @enum </item> <item> @example </item> <item> @exception </item> <item> @exceptions </item> <item> @extends </item> <item> @file </item> <item> @htmlinclude </item> <item> @if </item> <item> @ifnot </item> <item> @implements </item> <item> @include </item> <item> @includelineno </item> <item> @link </item> <item> @memberof </item> <item> @namespace </item> <item> @p </item> <item> @package </item> <item> @property </item> <item> @prtocol </item> <item> @ref </item> <item> @relatesalso </item> <item> @relates </item> <item> @retval </item> <item> @throw </item> <item> @throws </item> <item> @verbinclude </item> <item> @version </item> <item> @xrefitem </item> </list> <list name="TagParam"> <item> \param </item> <item> \tparam </item> <item> @param </item> <item> @tparam </item> </list> <list name="TagWordWord"> <item> \image </item> <item> @image </item> </list> <list name="TagWordString"> <item> \category </item> <item> \defgroup </item> <item> \headerfile </item> <item> \page </item> <item> \paragraph </item> <item> \section </item> <item> \struct </item> <item> \subpage </item> <item> \subsection </item> <item> \subsubsection </item> <item> \union </item> <item> \weakgroup </item> <item> @category </item> <item> @defgroup </item> <item> @headerfile </item> <item> @page </item> <item> @paragraph </item> <item> @section </item> <item> @struct </item> <item> @subpage </item> <item> @subsection </item> <item> @subsubsection </item> <item> @union </item> <item> @weakgroup </item> </list> <list name="TagString"> <item> \addindex </item> <item> \brief </item> <item> \bug </item> <item> \date </item> <item> \deprecated </item> <item> \fn </item> <item> \ingroup </item> <item> \line </item> <item> \mainpage </item> <item> \name </item> <item> \overload </item> <item> \par </item> <item> \sa </item> <item> \see </item> <item> \short </item> <item> \skip </item> <item> \skipline </item> <item> \typedef </item> <item> \until </item> <item> \var </item> <item> @addindex </item> <item> @brief </item> <item> @bug </item> <item> @date </item> <item> @deprecated </item> <item> @fn </item> <item> @ingroup </item> <item> @line </item> <item> @mainpage </item> <item> @name </item> <item> @overload </item> <item> @par </item> <item> @sa </item> <item> @see </item> <item> @short </item> <item> @skip </item> <item> @skipline </item> <item> @typedef </item> <item> @until </item> <item> @var </item> </list> <contexts> <!-- different formats: @tag : TagOnly @tag rest_of_line : TagString @tag <word> : TagWord @tag <word> <word> : TagWordWord @tag <word> rest_of_line : TagWordString --> <context attribute="Normal Text" lineEndContext="#stay" name="Normal"> <RegExpr attribute="Comment" context="LineComment" String="//(!|(/(?=[^/]|$)))<?" /> <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]<|\*$)" beginRegion="BlockComment" /> <RegExpr attribute="Region" context="#stay" String="//\s*@\{\s*$" beginRegion="MemberGroup" /> <RegExpr attribute="Region" context="#stay" String="//\s*@\}\s*$" endRegion="MemberGroup" /> <RegExpr attribute="Region" context="#stay" String="/\*\s*@\{\s*\*/" beginRegion="MemberGroup" /> <RegExpr attribute="Region" context="#stay" String="/\*\s*@\}\s*\*/" endRegion="MemberGroup" /> </context> <context attribute="Comment" lineEndContext="#pop" name="LineComment"> <LineContinue attribute="Comment" context="#stay" /> <DetectSpaces /> <IncludeRules context="##Alerts" /> <IncludeRules context="SL_DetectEnv" /> <keyword attribute="Tags" context="#stay" String="TagOnly" /> <keyword attribute="Tags" context="SL_TagWord" String="TagWord" /> <keyword attribute="Tags" context="SL_TagParam" String="TagParam" /> <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" /> <keyword attribute="Tags" context="SL_TagString" String="TagString" /> <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" /> <DetectIdentifier /> <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="<!--" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" /> </context> <context attribute="Comment" lineEndContext="#stay" name="BlockComment"> <DetectSpaces /> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" /> <IncludeRules context="##Alerts" /> <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" /> <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" /> <IncludeRules context="SL_DetectEnv" /> <keyword attribute="Tags" context="#stay" String="TagOnly" /> <keyword attribute="Tags" context="ML_TagWord" String="TagWord" /> <keyword attribute="Tags" context="ML_TagParam" String="TagParam" /> <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" /> <keyword attribute="Tags" context="ML_TagString" String="TagString" /> <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" /> <DetectIdentifier /> <RegExpr attribute="Tags" context="#stay" String="\\(<|>)" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" /> <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="<!--" /> </context> <!-- NOTE: all contexts beginning with ML_ are for multiline comments The following contexts contain a Detect2Chars that looks for a */ sequence to end multiline comments. Singleline comments do not have this limitation - that's why all contexts are copy&pasted and the line <Detect2Chars ... */> is removed. <IncludeRules context="acontext"> could be used instead but it would make context switching much more complex and very hard to understand! (But use IncludeRules where the rules don't refer to another SL_*/ML_* context, to help maintainability.) --> <!-- tag contexts --> <context attribute="Comment" lineEndContext="#pop" name="ML_TagWord"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <IncludeRules context="SL_TagWord" /> </context> <context attribute="Comment" lineEndContext="#pop" name="ML_TagParam"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <DetectSpaces /> <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" /> <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" /> <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" /> <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <DetectSpaces /> <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" --> <context attribute="Comment" lineEndContext="#pop#pop" name="ML_Tag2ndWord"> <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" lookAhead="true" /> <IncludeRules context="SL_Tag2ndWord" /> </context> <context attribute="Comment" lineEndContext="#pop" name="ML_TagString"> <DetectSpaces /> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="<!--" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="ML_htmltag" String="<\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" /> <RegExpr attribute="Description" context="#stay" String="." /> </context> <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <IncludeRules context="SL_TagWordString" /> </context> <!-- html contexts --> <context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1=">" /> <DetectChar attribute="HTML Tag" context="#pop" char=">" /> <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*" /> </context> <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <IncludeRules context="##Alerts" /> <StringDetect attribute="HTML Comment" context="#pop" String="-->" /> </context> <context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" /> <DetectChar attribute="Types" context="ML_types1" char="'" /> <DetectChar attribute="Types" context="ML_types2" char=""" /> </context> <context name="ML_types1" attribute="Types" lineEndContext="#stay"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <DetectChar attribute="Types" context="#pop#pop" char="'" /> </context> <context name="ML_types2" attribute="Types" lineEndContext="#stay"> <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" /> <DetectChar attribute="Types" context="#pop#pop" char=""" /> </context> <!-- NOTE: all contexts beginning with SL_ are for singleline comments --> <!-- tag contexts --> <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord"> <DetectSpaces /> <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true" /> <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam"> <DetectSpaces /> <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" /> <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" /> <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" /> <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord"> <DetectSpaces /> <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" --> <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord"> <DetectSpaces /> <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <context attribute="Comment" lineEndContext="#pop" name="SL_TagString"> <DetectSpaces /> <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="<!--" /> <Detect2Chars attribute="Comment" context="#stay" char="<" char1="<" /> <RegExpr attribute="HTML Tag" context="SL_htmltag" String="<\/?[a-zA-Z_:][a-zA-Z0-9._:-]*" /> <RegExpr attribute="Description" context="#stay" String="." /> </context> <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString"> <DetectSpaces /> <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" /> <RegExpr attribute="Word" context="#stay" String="\S" /> </context> <!-- html contexts --> <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop"> <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1=">" /> <DetectChar attribute="HTML Tag" context="#pop" char=">" /> <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*" /> </context> <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop"> <IncludeRules context="##Alerts" /> <StringDetect attribute="HTML Comment" context="#pop" String="-->" /> </context> <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop"> <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" /> <DetectChar attribute="Types" context="SL_types1" char="'" /> <DetectChar attribute="Types" context="SL_types2" char=""" /> </context> <context name="SL_types1" attribute="Types" lineEndContext="#pop"> <DetectChar attribute="Types" context="#pop#pop" char="'" /> </context> <context name="SL_types2" attribute="Types" lineEndContext="#pop"> <DetectChar attribute="Types" context="#pop#pop" char=""" /> </context> <context name="SL_DetectEnv" lineEndContext="#pop"> <RegExpr attribute="Tags" context="Code" String="[@\\]code" beginRegion="Code" /> <RegExpr attribute="Tags" context="Verbatim" String="[@\\]verbatim" beginRegion="Verbatim" /> <RegExpr attribute="Tags" context="Formula" String="[@\\]f\[" beginRegion="Formula" /> <RegExpr attribute="Tags" context="Msc" String="[@\\]msc" beginRegion="Msc" /> <RegExpr attribute="Tags" context="Dot" String="[@\\]dot" beginRegion="Dot" /> </context> <context name="SL_DetectComment" lineEndContext="#pop"> <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" /> </context> <context attribute="Code" lineEndContext="#stay" name="Code"> <IncludeRules context="SL_DetectComment" /> <RegExpr attribute="Tags" context="#pop" String="[@\\]endcode" endRegion="Code" /> </context> <context attribute="Verbatim" lineEndContext="#stay" name="Verbatim"> <IncludeRules context="SL_DetectComment" /> <RegExpr attribute="Tags" context="#pop" String="[@\\]endverbatim" endRegion="Verbatim" /> </context> <context attribute="Formulas" lineEndContext="#stay" name="Formula"> <IncludeRules context="SL_DetectComment" /> <RegExpr attribute="Tags" context="#pop" String="[@\\]f\]" endRegion="Formula" /> <!-- TODO: How to force LaTeX math context here?? --> <!-- <IncludeRules context="##LaTeX" /> --> </context> <context attribute="Message Sequence Chart" lineEndContext="#stay" name="Msc"> <IncludeRules context="SL_DetectComment" /> <RegExpr attribute="Tags" context="#pop" String="[@\\]endmsc" endRegion="Msc" /> </context> <context attribute="Dot Graph" lineEndContext="#stay" name="Dot"> <IncludeRules context="SL_DetectComment" /> <RegExpr attribute="Tags" context="#pop" String="[@\\]enddot" endRegion="Dot" /> </context> </contexts> <itemDatas> <itemData name="Normal Text" defStyleNum="dsNormal" /> <itemData name="Tags" defStyleNum="dsKeyword" color="#ca60ca" selColor="#ffffff" bold="1" italic="0" /> <itemData name="Word" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" bold="1" italic="0" /> <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#000000" selColor="#ffffff" bold="1" italic="0" /> <itemData name="Description" defStyleNum="dsString" color="#ff0000" /> <itemData name="Comment" defStyleNum="dsComment" color="#0000ff" selColor="#ffffff" italic="1" /> <itemData name="Region" defStyleNum="dsRegionMarker" /> <itemData name="Identifier" defStyleNum="dsOthers" /> <itemData name="HTML Comment" defStyleNum="dsComment" /> <itemData name="Types" defStyleNum="dsDataType" /> <itemData name="Code" defStyleNum="dsComment" /> <itemData name="Dot Graph" defStyleNum="dsComment" color="#00A000" selColor="#ffffff" italic="1" /> <itemData name="Formulas" defStyleNum="dsComment" color="#00A000" selColor="#ffffff" italic="1" /> <itemData name="Message Sequence Chart" defStyleNum="dsComment" color="#00A000" selColor="#ffffff" italic="1" /> <itemData name="Verbatim" defStyleNum="dsComment" /> </itemDatas> </highlighting> <general> <keywords casesensitive="0" weakDeliminator="\$~" /> </general> </language>