diff options
Diffstat (limited to 'kate/data/roff.xml')
-rw-r--r-- | kate/data/roff.xml | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/kate/data/roff.xml b/kate/data/roff.xml new file mode 100644 index 000000000..8806cf55c --- /dev/null +++ b/kate/data/roff.xml @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY roffidc "[^]\s]"> + <!ENTITY roffid "(&roffidc;|\(&roffidc;{2}|\[&roffidc;+\])"> + <!ENTITY roffnum "([0-9]+)"> + <!ENTITY argsep1 "([^\\]|\\[% |^{}'`-_!?@)/,&:~0acdeEprtu])"> + <!ENTITY argsep2 "([^\\0-9]|\\[%:{}'`-_!@/cep])"> +]> +<language name="Roff" section="Markup" version="0.11" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL"> + + <highlighting> + + <list name="layout"> + <item>br</item> + <item>sp</item> + </list> + + <list name="formatting"> + </list> + + <list name="gnuext"> + </list> + + <contexts> + + <!-- root context --> + <context name="Normal" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="DetectComments"/> + <DetectChar attribute="Other Macros" context="DetectDirective" char="." column="0"/> + <IncludeRules context="DetectOthers"/> + </context> + + <context name="DetectComments" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Comment" context="Comment" String="\.\s*\\"" column="0"/> + <Detect2Chars attribute="Comment" context="Comment" char="\\" char1="""/> + <Detect2Chars attribute="Comment" context="Comment" char="\\" char1="#"/> + </context> + + <!-- catch glyphc, registers, strings, etc --> + <context name="DetectOthers" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="DetectComments"/> + <DetectChar attribute="Escape" context="DetectEscape" char="\\" lookAhead="true"/> + <DetectChar attribute="String" context="String" char="""/> + </context> + + <!-- detect escapes --> + <context name="DetectEscape" attribute="Error" lineEndContext="#pop"> + <RegExpr attribute="Register" context="#pop" String="\\(\*|n[+-]?)&roffid;"/> + <RegExpr attribute="Font" context="#pop" String="\\[fF]&roffid;"/> + <RegExpr attribute="Font" context="#pop" String="\\f([0-9]|\([0-9][0-9]|\[[0-9]+\])"/> + <RegExpr attribute="Font" context="#pop" String="\\s(\[([1-3][0-9]|[04-9])\]|[04-9]|[+-][0-9]|([+-]?\(|\([+-])[0-9][0-9])"/> + <Detect2Chars attribute="Escape" context="#pop" char="\\" char1="\\"/> + <RegExpr attribute="Escape" context="#pop" String="\\(\$[0-9*@]|[.:% |^{}_!?@)/,&:~0acdeEprtu])"/> + <RegExpr attribute="Escape" context="Argument" String="\\[AbBDowXZ]&argsep1;"/> + <RegExpr attribute="Escape" context="#pop" String="\\[gkmMVYz]&roffid;"/> + <RegExpr attribute="Escape" context="#pop" String="\\O([0-4]|\[5[lrci][^]]\])"/> + <RegExpr attribute="Escape" context="Measurement" String="\\[hHSvx]&argsep1;"/> + <RegExpr attribute="Escape" context="Measurement" String="\\[lL]&argsep1;\|?"/> <!-- TODO - optional trailing &glyph; --> + <RegExpr attribute="Escape" context="Argument" String="\\R&argsep1;"/> <!-- TODO - &roffid; (register), measurement --> + <RegExpr attribute="Glyph" context="GlyphArgument" String="\\C&argsep1;"/> + <RegExpr attribute="Glyph" context="#pop" String="\\N&argsep2;[0-9]+\1"/> + <RegExpr attribute="Glyph" context="#pop" String="\\&roffid;"/> + <RegExpr attribute="Escape" context="#pop" String="\\$"/> + <DetectChar attribute="Error" context="#pop" char="\\"/> + </context> + + <!-- directive start --> + <context name="DetectDirective" attribute="Other Macros" lineEndContext="#pop"> + <keyword attribute="Layout Macros" context="Directive" String="layout"/> + <keyword attribute="Format Macros" context="Directive" String="formatting"/> + <keyword attribute="GNU Macros" context="Directive" String="gnuext"/> + <RegExpr attribute="Other Macros" context="dsDirective" String="\s*ds\b" column="1"/> + <RegExpr attribute="Other Macros" context="deDirective" String="\s*de\b" column="1" beginRegion="de"/> + <RegExpr attribute="Other Macros" context="daDirective" String="\s*da(?=\s+[A-Za-z]+)" column="1" beginRegion="di"/> + <RegExpr attribute="Other Macros" context="diDirective" String="\s*di(?=\s+[A-Za-z]+)" column="1" beginRegion="di"/> + <RegExpr attribute="Other Macros" context="Directive" String="\s*[A-Za-z]+\b" column="1"/> + </context> + + <!-- comment --> + <context name="Comment" attribute="Comment" lineEndContext="#pop"> + <IncludeRules context="##Alerts"/> + </context> + + <!-- error --> + <context name="Error" attribute="Error" lineEndContext="#stay"/> + + <!-- generic directive --> + <context name="Directive" attribute="Identifier" lineEndContext="#pop"> + <Float attribute="Number" context="#stay"/> + <Int attribute="Number" context="#stay"/> + <Detect2Chars attribute="Comment" context="Comment" char="\\" char1="""/> + <IncludeRules context="DetectOthers"/> + </context> + + <!-- quoted string --> + <context name="String" attribute="String" lineEndContext="#pop"> + <Detect2Chars attribute="Escape" context="#stay" char="\\" char1="""/> + <DetectChar attribute="String" context="#pop" char="""/> + <IncludeRules context="DetectOthers"/> + </context> + + <!-- \!, \? escapes --> + <context name="LiteralSL" attribute="Normal Text" lineEndContext="#pop"/> + <context name="LiteralIL" attribute="Normal Text" lineEndContext="Error"> + <Detect2Chars attribute="Escape" context="#stay" char="\\" char1="\\"/> + <Detect2Chars attribute="Escape" context="#pop" char="\\" char1="?"/> + </context> + + <!-- escape argument --> + <context name="Argument" attribute="String" lineEndContext="Error" dynamic="true"> + <RegExpr attribute="Escape" context="#pop#pop" String="%1" dynamic="true"/> + <IncludeRules context="DetectOthers"/> + </context> + + <!-- glyph escape argument --> + <context name="GlyphArgument" attribute="Glyph" lineEndContext="Error" dynamic="true"> + <RegExpr attribute="Glyph" context="#pop#pop" String="%1" dynamic="true"/> + </context> + + <!-- measurement (or expression) escape argument --> + <context name="Measurement" attribute="Error" lineEndContext="Error" dynamic="true"> + <RegExpr attribute="Escape" context="#pop#pop" String="%1" dynamic="true"/> + <!-- TODO --> + </context> + + <!-- .de directive --> + <context name="deDirective" attribute="Identifier" lineEndContext="deBody"/> + <context name="deBody" attribute="Normal Text" lineEndContext="#stay"> + <Detect2Chars attribute="Other Macros" context="#pop#pop" char="." char1="." column="0" endRegion="de"/> + <IncludeRules context="Normal"/> + </context> + + <!-- .di directives --> + <context name="diDirective" attribute="Identifier" lineEndContext="diBody"/> + <context name="diBody" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Other Macros" context="#pop#pop" String="\.\s*di\b" column="0" endRegion="di"/> + <Detect2Chars attribute="Escape" context="LiteralSL" char="\\" char1="!"/> + <Detect2Chars attribute="Escape" context="LiteralIL" char="\\" char1="?"/> + <IncludeRules context="Normal"/> + </context> + + <!-- .da directives --> + <context name="daDirective" attribute="Identifier" lineEndContext="daBody"/> + <context name="daBody" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Other Macros" context="#pop#pop" String="\.\s*da\b" column="0" endRegion="di"/> + <Detect2Chars attribute="Escape" context="LiteralSL" char="\\" char1="!"/> + <Detect2Chars attribute="Escape" context="LiteralIL" char="\\" char1="?"/> + <IncludeRules context="Normal"/> + </context> + + <!-- .ds directive --> + <context name="dsDirective" attribute="Identifier" lineEndContext="#pop"> + <Int attribute="Number" context="#stay"/> + <Float attribute="Number" context="#stay"/> + <Detect2Chars attribute="Comment" context="Comment" char="\\" char1="""/> + <DetectChar attribute="String" context="dsString" char="""/> + <IncludeRules context="DetectOthers"/> + </context> + + <!-- .ds quoted value --> + <context name="dsString" attribute="String" lineEndContext="#pop"> + <IncludeRules context="DetectOthers"/> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal"/> + <itemData name="Comment" defStyleNum="dsComment"/> + <itemData name="Layout Macros" defStyleNum="dsKeyword"/> + <itemData name="Format Macros" defStyleNum="dsKeyword"/> + <itemData name="GNU Macros" defStyleNum="dsDataType"/> + <itemData name="Other Macros" defStyleNum="dsFunction"/> + <itemData name="Identifier" defStyleNum="dsString"/> + <itemData name="Number" defStyleNum="dsDecVal"/> + <itemData name="Register" defStyleNum="dsOthers"/> + <itemData name="Font" defStyleNum="dsOthers"/> + <itemData name="Glyph" defStyleNum="dsOthers"/> + <itemData name="Escape" defStyleNum="dsChar"/> + <itemData name="String" defStyleNum="dsString"/> + <itemData name="Error" defStyleNum="dsError"/> + </itemDatas> + + </highlighting> + + <general> + + <comments> + <comment name="singleLine" start=".\"" /> + </comments> + + <keywords casesensitive="1"/> + + </general> + +</language> |