%PDF- %PDF-
Direktori : /usr/share/gtksourceview-5/language-specs/ |
Current File : //usr/share/gtksourceview-5/language-specs/asciidoc.lang |
<?xml version="1.0" encoding="UTF-8"?> <!-- This file is part of GtkSourceView Author (original): David Avsajanishvili <avsd05@gmail.com> Collaborator: Eduardo Santana <eduardo.ufpb@gmail.com> GtkSourceView 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.1 of the License, or (at your option) any later version. GtkSourceView 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, see <http://www.gnu.org/licenses/>. --> <language id="asciidoc" name="AsciiDoc" version="2.0" _section="Markup"> <metadata> <property name="mimetypes">text/asciidoc</property> <property name="globs">*.asciidoc;*.adoc</property> <property name="line-comment-start">//</property> </metadata> <styles> <style id="passthrough" name="Passthrough Text" map-to="def:special-char"/> <style id="attribute" name="Attribute" map-to="def:preprocessor"/> <style id="markup-monospace" name="Monospaced Text" map-to="def:inline-code"/> <style id="markup-emphasis" name="Emphasized Text" map-to="def:emphasis"/> <style id="markup-strong" name="Strong Text" map-to="def:strong-emphasis"/> <style id="markup-pass" name="Inline Passthrough" map-to="asciidoc:passthrough"/> <style id="markup-replace" name="Replacement" map-to="def:special-char"/> <style id="markup-linebreak" name="Line Break" map-to="def:special-char"/> <style id="markup-admonition" name="Admonition" map-to="def:note"/> <style id="markup-anchor" name="Anchor" map-to="asciidoc:attribute"/> <style id="markup-crosslink" name="Link" map-to="def:link-text"/> <style id="markup-url" name="URL" map-to="def:link-destination"/> <style id="markup-link-text" name="Link Text" map-to="def:link-text"/> <style id="markup-att-entry" name="Attribute Entry Invocation" map-to="asciidoc:attribute"/> <style id="struct-title" name="Title" map-to="def:heading"/> <style id="struct-blocktitle" name="Block Title" map-to="def:heading"/> <style id="struct-style" name="Style" map-to="asciidoc:attribute"/> <style id="struct-ruler-line" name="Ruler Line" map-to="def:thematic-break"/> <style id="struct-page-break" name="Page Break" map-to="def:operator"/> <style id="par-literal" name="Literal" map-to="def:preformatted-section"/> <style id="block-listing" name="Listing" map-to="def:preformatted-section"/> <style id="block-pass" name="Block Passthrough" map-to="asciidoc:passthrough"/> <style id="block-comment" name="Comment" map-to="def:comment"/> <style id="block-boundary" name="Block Boundary" map-to="def:identifier"/> <style id="macro" name="Macro" map-to="def:keyword"/> <style id="macro-arg" name="Macro Argument" map-to="def:string"/> <style id="macro-att-list" name="Macro Attribute List" map-to="asciidoc:attribute"/> <style id="preprocessor" name="Preprocessor" map-to="def:preprocessor"/> <style id="preprocessor-arg" name="Preprocessor Argument" map-to="def:string"/> <style id="preprocessor-att-list" name="Preprocessor Attribute List" map-to="asciidoc:attribute"/> <style id="list-identifier" name="List Identifier" map-to="def:list-marker"/> </styles> <definitions> <context id="text_linebreak" style-ref="markup-linebreak" extend-parent="false"> <match>\+\s*$</match> </context> <define-regex id="admonition-names">(?:NOTE|TIP|CAUTION|IMPORTANT|WARNING)</define-regex> <define-regex id="macro-names">(?:image|include|sys|sys2|eval)</define-regex> <define-regex id="inline-macro-names">(?:pass|latexmath|asciimath|indexterm|indexterm2|footnote|footnoteref)</define-regex> <define-regex id="preproc-names">(?:ifdef|ifndef|ifeval|endif|unfloat|template)</define-regex> <!-- TITLES --> <context id="title"> <include> <context id="onelineTitle"><include> <context id="title0" style-ref="struct-title"><match>^=\s+\S.*$</match></context> <context id="title1" style-ref="struct-title"><match>^==\s+\S.*$</match></context> <context id="title2" style-ref="struct-title"><match>^===\s+\S.*$</match></context> <context id="title3" style-ref="struct-title"><match>^====\s+\S.*$</match></context> <context id="title4" style-ref="struct-title"><match>^=====\s+\S.*$</match></context> </include></context> </include> </context> <!-- TABLES --> <context id="theTable" extend-parent="false"> <start>^(\|====+)\s*$</start> <end>^(\%{1@start})\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="block-boundary" /> <context sub-pattern="1" where="end" style-ref="block-boundary" /> <context id="tableValue" extend-parent="false"> <start>(?<!\\)\|</start> <end>(?=\|)</end> <include> <context sub-pattern="0" where="start" style-ref="block-boundary" /> <context ref="def:escape" ignore-style="true" /> <context ref="markup" /> </include> </context> </include> </context> <!-- BLOCKS --> <context id="theBlocks"> <include> <context id="commentBlock" style-ref="block-comment" extend-parent="false"> <start>^(\/\/\/\/+)\s*$</start> <end>^(\%{1@start})\s*$</end> </context> <context id="theComment" style-ref="block-comment" extend-parent="false"> <match>^\/\/.*$</match> </context> <context id="passthroughBlock" style-ref="block-pass" extend-parent="false"> <start>^(\+\+\+\++)\s*$</start> <end>^(\%{1@start})\s*$</end> </context> <context id="listingBlock" style-ref="block-listing" extend-parent="false"> <start>^(----+)\s*$</start> <end>^(\%{1@start})\s*$</end> </context> <context id="literalBlock" style-ref="par-literal" extend-parent="false"> <start>^(\.\.\.\.+)\s*$</start> <end>^(\%{1@start})\s*$</end> </context> <context id="sidebarBlock" extend-parent="false"> <start>^(\*\*\*\*+)\s*$</start> <end>^(\%{1@start})\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="block-boundary" /> <context sub-pattern="1" where="end" style-ref="block-boundary" /> <context ref="def:escape" ignore-style="true" /> <context ref="blockMacro" /> <context ref="theLists" /> <context ref="parIndented" /> <context ref="paragraph" /> </include> </context> <context id="quoteBlock" extend-parent="false"> <start>^(____+)\s*$</start> <end>^(\%{1@start})\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="block-boundary" /> <context sub-pattern="1" where="end" style-ref="block-boundary" /> <context ref="def:escape" ignore-style="true" /> <context ref="blockMacro" /> <context ref="theLists" /> <context ref="parIndented" /> <context ref="paragraph" /> </include> </context> <context id="exampleBlock" extend-parent="false"> <start>^(====+)\s*$</start> <end>^(\%{1@start})\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="block-boundary" /> <context sub-pattern="1" where="end" style-ref="block-boundary" /> <context ref="def:escape" ignore-style="true" /> <context ref="blockMacro" /> <context ref="theLists" /> <context ref="parIndented" /> <context ref="paragraph" /> </include> </context> </include> </context> <context id="markup"> <include> <!-- QUOTES --> <context id="SingleQuote" extend-parent="false"> <match>\B`[^\s`'].*?[^\s`']'\B</match> </context> <context id="DoubleQuote" extend-parent="false"> <match>\B``[^\s`'].*?[^\s`']''\B</match> </context> <!-- CROSSLINKS and URLS --> <context id="crosslink" style-ref="markup-crosslink" extend-parent="false"> <!-- This was previously implemented as a <match/> but I suspect something was going awry with the combination of </> character entities + regexes. --> <start><<</start> <end>>></end> </context> <context id="crosslinkMacro" style-ref="markup-crosslink" extend-parent="false" style-inside="true"> <start>\b(xref:)([^\s\[\]]*)(\[)</start> <end>\]</end> <include> <context sub-pattern="1" where="start" style-ref="macro" /> <context sub-pattern="2" where="start" style-ref="markup-crosslink" /> <context sub-pattern="3" where="start" style-ref="markup-crosslink" /> <context sub-pattern="0" where="end" style-ref="markup-crosslink" /> </include> </context> <context id="linkMacro" style-ref="markup-link-text" extend-parent="false" style-inside="true"> <start>\b(link:)([^\s\[\]]*)(\[)</start> <end>\]</end> <include> <context sub-pattern="1" where="start" style-ref="macro" /> <context sub-pattern="2" where="start" style-ref="macro-arg" /> <context sub-pattern="3" where="start" style-ref="markup-link-text" /> <context sub-pattern="0" where="end" style-ref="markup-link-text" /> </include> </context> <!-- url with [] --> <context id="url1" style-ref="markup-link-text" style-inside="true" extend-parent="false"> <start>((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[)</start> <end>\]</end> <include> <context sub-pattern="1" where="start" style-ref="markup-url" /> <context sub-pattern="2" where="start" style-ref="markup-link-text" /> <context sub-pattern="0" where="end" style-ref="markup-link-text" /> </include> </context> <!-- url without [] --> <context id="url2" style-ref="markup-url" extend-parent="false"> <match>(https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+</match> </context> <context id="email" style-ref="markup-url" extend-parent="false"> <match>\b[\w\.\/-]+@[\w\.\/-]+\b</match> </context> <!-- PASSTHROUGH --> <context id="Pass" style-ref="markup-pass" extend-parent="false"> <match>\$\$.+?\$\$</match> </context> <context id="PassUnconstrained" style-ref="markup-pass" extend-parent="false"> <match>\+\+\+.+?\+\+\+</match> </context> <context id="Replacement" style-ref="markup-replace" extend-parent="false"> <match>\(C\)|\(TM\)|\(R\)|(?<!-)--(?!-)|\.{3}|->|<-|=>|<=</match> </context> <context id="Admonition" style-ref="markup-admonition" extend-parent="false"> <match>^\%{admonition-names}:(?=\s)</match> </context> <!-- MONOSPACED --> <context id="MonospacePlus" style-ref="markup-monospace" extend-parent="false"> <start>(?<=^|[ \t\(\[.,\-])\+(?![\)])</start> <end>(\+(?=[ \t\(\)\],.?!;:\-]|$)|$(?=^$))</end> </context> <context id="MonospaceBtk" style-ref="markup-monospace" extend-parent="false"> <start>(?<=^|[ \t\(\[.,\-])`(?![\)])</start> <end>(`(?=[ \t\(\)\],.?!;:\-]|$)|$(?=^$))</end> </context> <context id="MonospaceUnconstrained" style-ref="markup-monospace" extend-parent="false"> <start>\+\+\S</start> <end>(\+\+|^$)</end> </context> <!-- EMPHASIZED --> <context id="EmphasisQuote" style-ref="markup-emphasis" extend-parent="false"> <start>(?<=^|[ \t\(\[.,\-])'(?![\)])</start> <end>('(?=[ \t\(\)\],.?!;:\-]|$)|$(?=^$))</end> </context> <context id="EmphasisUnderline" style-ref="markup-emphasis" extend-parent="false"> <start>(?<=^|[ \t\(\[.,\-])_(?![\)])</start> <end>(_(?=[ \t\(\)\],.?!;:\-]|$)|$(?=^$))</end> </context> <context id="EmphasisUnconstrained" style-ref="markup-emphasis" extend-parent="false"> <start>__\S</start> <end>(__|^$)</end> </context> <!-- STRONG (BOLD) --> <context id="Strong" style-ref="markup-strong" extend-parent="false"> <start>(?<=^|[ \t\(\[.,\-])\*(?![\)])</start> <end>(\*(?=[ \t\(\)\],.?!;:\-]|$)|$(?=^$))</end> </context> <context id="StrongUnconstrained" style-ref="markup-strong" extend-parent="false"> <start>\*\*\S</start> <end>(\*\*|^$)</end> </context> <!-- INLINE MACROS --> <context id="inlineMacro" style-ref="macro-att-list" style-inside="true" extend-parent="false"> <start>\b((?:\%{macro-names}|\%{inline-macro-names}):)([^\s\[\]]*)(\[)</start> <end>\]</end> <include> <context sub-pattern="1" where="start" style-ref="macro" /> <context sub-pattern="2" where="start" style-ref="macro-arg" /> <context sub-pattern="3" where="start" style-ref="macro-att-list" /> <context sub-pattern="0" where="end" style-ref="macro-att-list" /> </include> </context> <!-- CALLOUTS --> <context id="theCallout" style-ref="list-identifier" extend-parent="false"> <match>^<\d+>\s+</match> </context> <!-- Anchor --> <context id="theAnchor" style-ref="markup-anchor" extend-parent="false"> <match>\[\[[^\]]+\]\]</match> </context> <context id="anchorMacro" style-ref="markup-anchor" extend-parent="false" style-inside="true"> <start>\b(anchor:)([^\s\[\]]*)(\[)</start> <end>\]</end> <include> <context sub-pattern="1" where="start" style-ref="macro" /> <context sub-pattern="2" where="start" style-ref="markup-anchor" /> <context sub-pattern="3" where="start" style-ref="markup-anchor" /> <context sub-pattern="0" where="end" style-ref="markup-anchor" /> </include> </context> <!-- FIXME: Not exactly sure what the proper character set for an attribute entry is. --> <context id="markup-att-entry" style-ref="markup-att-entry" extend-parent="false"> <match>\{[^\s{}:]+\}</match> </context> </include> </context> <!-- BLOCK MACROS / PREPROCESSOR --> <context id="blockMacro" end-at-line-end="true" style-ref="macro-att-list" style-inside="true"> <start>^(\%{macro-names}::)([^\s\[\]]*)(\[)</start> <end>\]$</end> <include> <context sub-pattern="1" where="start" style-ref="macro" /> <context sub-pattern="2" where="start" style-ref="macro-arg" /> <context sub-pattern="3" where="start" style-ref="macro-att-list" /> <context sub-pattern="0" where="end" style-ref="macro-att-list" /> </include> </context> <context id="blockPreproc" end-at-line-end="true" style-ref="preprocessor-att-list" style-inside="true"> <start>^(\%{preproc-names}::)([^\s\[\]]*)(\[)</start> <end>\]$</end> <include> <context sub-pattern="1" where="start" style-ref="preprocessor" /> <context sub-pattern="2" where="start" style-ref="preprocessor-arg" /> <context sub-pattern="3" where="start" style-ref="preprocessor-att-list" /> <context sub-pattern="0" where="end" style-ref="preprocessor-att-list" /> </include> </context> <context id="setAttr" end-at-line-end="true" style-ref="preprocessor"> <start>^:[\w\s.-]+!?</start> <end>:</end> </context> <!-- TITLES/STYLES/ANCHORS --> <context id="blockTitle" style-ref="struct-blocktitle" end-at-line-end="true"> <start>^\.[^. \t].*[^\-~_]</start> <end>$</end> </context> <context id="theStyle" style-ref="struct-style"> <start>^\[(?=[^\[\]]+\]$)</start> <end>\]</end> <include> <context style-ref="markup-admonition"> <match>\b\%{admonition-names}\b</match> </context> </include> </context> <!-- Anchor --> <context id="oneLineAnchor" style-ref="markup-anchor" extend-parent="false"> <match>^\[\[[^\]]+\]\]$</match> </context> <!-- RULER LINES --> <context id="rulerLine" style-ref="struct-ruler-line" extend-parent="false"> <match>^'''+\s*$</match> </context> <!-- PAGE BREAKS --> <context id="pageBreak" style-ref="struct-page-break" extend-parent="false"> <match>^<<<+\s*$</match> </context> <!-- PARAGRAPHS --> <context id="parIndented" extend-parent="false" style-ref="par-literal"> <start>^\s+(?!(\*+|\-+|\.+)\s)\S+.*$</start> <end>^\s*$</end> </context> <context id="paragraph" extend-parent="false"> <start>^(?=\S)</start> <end>^\s*$</end> <include> <context ref="def:escape" ignore-style="true" /> <!-- Underlines inside paragraphs FIXME! --> <context id="titleline0" style-ref="struct-title" end-parent="true"> <match>^===+$</match> </context> <context id="titleline1" style-ref="struct-title" end-parent="true"> <match>^---+$</match> </context> <context id="titleline2" style-ref="struct-title" end-parent="true"> <match>^~~~+$</match> </context> <context id="titleline3" style-ref="struct-title" end-parent="true"> <match>^\^\^\^+$</match> </context> <context id="titleline4" style-ref="struct-title" end-parent="true"> <match>^\+\+\++$</match> </context> <context ref="text_linebreak" /> <context ref="markup" /> <context ref="blockPreproc" /> <context ref="setAttr" /> </include> </context> <!-- LISTS --> <context id="theLists"> <include> <context id="bulletedList" extend-parent="false"> <start>^\s*(-|\*{1,5})\s+(?=\S)</start> <end>^\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="list-identifier" /> <context ref="def:escape" ignore-style="true" /> <context ref="text_linebreak" /> <context ref="theLists" /> <context ref="markup" /> <context ref="blockPreproc" /> <context ref="setAttr" /> </include> </context> <context id="numberedListExplicit" extend-parent="false"> <start>^\s*([a-zA-Z1-9]+\.|[ixvIXV]+\))\s+(?=\S)</start> <end>^\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="list-identifier" /> <context ref="def:escape" ignore-style="true" /> <context ref="text_linebreak" /> <context ref="theLists" /> <context ref="markup" /> <context ref="blockPreproc" /> <context ref="setAttr" /> </include> </context> <context id="numberedListImplicit" extend-parent="false"> <start>^\s*(\.{1,5})\s+(?=\S)</start> <end>^\s*$</end> <include> <context sub-pattern="1" where="start" style-ref="list-identifier" /> <context ref="def:escape" ignore-style="true" /> <context ref="text_linebreak" /> <context ref="theLists" /> <context ref="markup" /> <context ref="blockPreproc" /> <context ref="setAttr" /> </include> </context> <context id="labeledList" extend-parent="false" style-inside="false"> <start>^\s*(?!-\s|\*\s|\.{1,5}\s|[a-zA-Z1-9]+\.\s|[ixvIXV]+\)\s).*((?<!:):{2,4}|(?<!;);;)(\s|$)</start> <end>^\s*$</end> <include> <context sub-pattern="0" where="start" style-ref="list-identifier" /> <context ref="def:escape" ignore-style="true" /> <context ref="theLists" /> <context ref="markup" /> <context ref="blockPreproc" /> <context ref="setAttr" /> </include> </context> <context id="listContinuator" end-parent="true" style-ref="list-identifier"> <match>^\+\s*$</match> </context> <context id="listBoundary" extend-parent="false"> <start>^--\s*$</start> <end>^--\s*$</end> <include> <context sub-pattern="0" where="start" style-ref="list-identifier" /> <context sub-pattern="0" where="end" style-ref="list-identifier" /> <context ref="def:escape" ignore-style="true" /> <context ref="bulletedList" /> <context ref="numberedListExplicit" /> <context ref="numberedListImplicit" /> <context ref="labeledList" /> </include> </context> </include> </context> <!-- ******************************* * FINAL CONTEXT ******************************* --> <context id="asciidoc"> <include> <context ref="def:escape" ignore-style="true" /> <context ref="blockMacro" /> <context ref="blockPreproc" /> <context ref="setAttr" /> <context ref="blockTitle" /> <context ref="theStyle" /> <context ref="oneLineAnchor" /> <context ref="theLists" /> <context ref="theBlocks" /> <context ref="title" /> <context ref="parIndented" /> <context ref="theTable" /> <context ref="rulerLine" /> <context ref="pageBreak" /> <context ref="paragraph" /> </include> </context> </definitions> </language>