297 lines
14 KiB
XML
297 lines
14 KiB
XML
<?xml version="1.0" encoding="utf-8" ?>
|
|
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
|
|
<xsd:annotation>
|
|
<xsd:documentation>
|
|
This schema defines the syntax for mode definitions in SharpDevelop.
|
|
The schema can be simplified quite a bit but it does the job as is.
|
|
|
|
|
|
If you are using this file as a reference it is probably easiest to scroll to
|
|
the botton to find the definition of the root element called SyntaxDefinition and
|
|
then unwind the different type definitions and refernces.
|
|
|
|
Note on coloring:
|
|
Many tags define how some symbol should be colored. If a specific symbol
|
|
can not be matched onto either a Span definition, Keyword, or a Digit/Number it
|
|
will be rendered in the current default color. Which is the default color of the
|
|
current span or the default color of the mode as a whole if no span has been entered.
|
|
</xsd:documentation>
|
|
</xsd:annotation>
|
|
|
|
<!-- Defines the default rendering of the mode -->
|
|
<xsd:complexType name="EnvironmentEntry">
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="CustomEnvironmentEntry">
|
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<!-- The environment tag defines the coloring of various attributes in SharpDevelop -->
|
|
<xsd:complexType name="Environment">
|
|
|
|
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
|
<xsd:element name="Default" type="EnvironmentEntry" minOccurs="0" maxOccurs="1" />
|
|
<xsd:element name="Selection" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="VRuler" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="InvalidLines" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="CaretMarker" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="CaretLine" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
|
|
<xsd:element name="LineNumbers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
|
|
<xsd:element name="FoldLine" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="FoldMarker" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="SelectedFoldLine" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
|
|
<xsd:element name="EOLMarkers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="SpaceMarkers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
<xsd:element name="TabMarkers" type="EnvironmentEntry" minOccurs="0" maxOccurs="1"/>
|
|
|
|
<xsd:element name="Custom" type="CustomEnvironmentEntry" minOccurs="0" maxOccurs="unbounded"/>
|
|
</xsd:choice>
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="Properties">
|
|
<xsd:sequence>
|
|
<xsd:element name="Property" type="Property" minOccurs="0" maxOccurs="unbounded"/>
|
|
</xsd:sequence>
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="Property">
|
|
<!-- The actual KeyWord, typically reserved words or symbols in a programming language -->
|
|
<xsd:attribute name="name" type="xsd:string" />
|
|
<xsd:attribute name="value" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<!-- The Digits tag defines the color for rendering Digits-->
|
|
<xsd:complexType name="Digits">
|
|
<xsd:attribute name="name" type="xsd:string" />
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<!-- Defines the delimiting characters of the syntax, e.g., the characters that, "break up" a line
|
|
into separate symbols, typically key words. It is not necessary, or desirable to include the
|
|
characters that denot the start or end of a span. Space and Tab are implicitly defined as delimeters
|
|
and they don't need to be includeded explicitly (this will probably be changed at some future time).-->
|
|
<xsd:complexType name="Delimiters">
|
|
<xsd:simpleContent>
|
|
<xsd:extension base="xsd:string">
|
|
</xsd:extension>
|
|
</xsd:simpleContent>
|
|
</xsd:complexType>
|
|
|
|
<!-- The beginning symbol of a Span -->
|
|
<xsd:complexType name="Begin">
|
|
<xsd:simpleContent>
|
|
<xsd:extension base="xsd:string">
|
|
<xsd:attribute name="singleword" type="xsd:boolean" />
|
|
<xsd:attribute name="startofline" type="xsd:boolean" />
|
|
<!-- The default rendering style for the Begin symbol. If not specified
|
|
the defaul rendering style for the span will be used. -->
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:extension>
|
|
</xsd:simpleContent>
|
|
</xsd:complexType>
|
|
|
|
<!-- The end symbol of a Span -->
|
|
<xsd:complexType name="End">
|
|
<xsd:simpleContent>
|
|
<xsd:extension base="xsd:string">
|
|
<xsd:attribute name="singleword" type="xsd:boolean" />
|
|
<!-- The default rendering style for the End symbol. If not specified
|
|
the defaul rendering style for the span will be used. -->
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:extension>
|
|
</xsd:simpleContent>
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="Span">
|
|
<xsd:sequence>
|
|
<!-- Defines the symbol that indicates the beginning of the span. -->
|
|
<xsd:element name="Begin" type="Begin" />
|
|
<!-- Defines the symbol that indicates the end of the span. May be omitted for
|
|
one-line spans. -->
|
|
<xsd:element name="End" minOccurs="0" type="End" />
|
|
</xsd:sequence>
|
|
<!-- The name of the span definition -->
|
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
<!-- Defines the rule set that is applicable in the Span. May be omitted. -->
|
|
<xsd:attribute name="rule" type="xsd:string" />
|
|
<!-- Defines wether the Span should terminate automatically at the end of line. Typical examples
|
|
include one-line comments such as // in C++ or REM in Windows .Bat files. -->
|
|
<xsd:attribute name="stopateol" type="xsd:boolean" />
|
|
|
|
<!-- OBSOLUTE: Defines whether C-style escape sequences using \ are applicable or not in the span. -->
|
|
<xsd:attribute name="noescapesequences" type="xsd:boolean" />
|
|
|
|
<!-- defines the escape character -->
|
|
<xsd:attribute name="escapecharacter" type="xsd:string" />
|
|
|
|
<!-- The default rendering style for the span -->
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="MarkPrevious">
|
|
<xsd:simpleContent>
|
|
<xsd:extension base="xsd:string">
|
|
<!-- Svante Lidman, looking in the code it is a bit unclear what the intent is here... -->
|
|
<xsd:attribute name="markmarker" type="xsd:boolean" />
|
|
<!-- The rendering style to be used -->
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:extension>
|
|
</xsd:simpleContent>
|
|
</xsd:complexType>
|
|
|
|
<!-- Allows you to define the coloring of the symbol that follows a specified symbol -->
|
|
<xsd:complexType name="MarkFollowing">
|
|
<xsd:simpleContent>
|
|
<xsd:extension base="xsd:string">
|
|
<!-- Svante Lidman, looking in the code it is a bit unclear what the intent is here... -->
|
|
<xsd:attribute name="markmarker" type="xsd:boolean" />
|
|
<!-- The rendering style to be used -->
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:extension>
|
|
</xsd:simpleContent>
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="Key">
|
|
<!-- The actual KeyWord, typically reserved words or symbols in a programming language -->
|
|
<xsd:attribute name="word" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
|
|
<!-- A grouping of keywords that sholuld be colored the same way -->
|
|
<xsd:complexType name="KeyWords">
|
|
<xsd:sequence>
|
|
<!-- allow groups with 0 keywords: this simplifies the syntax highlighting editor -->
|
|
<!-- A KeyWord -->
|
|
<xsd:element name="Key" type="Key" minOccurs="0" maxOccurs="unbounded">
|
|
</xsd:element>
|
|
</xsd:sequence>
|
|
<!-- The name of the KeyWord group -->
|
|
<xsd:attribute name="name" type="xsd:string" />
|
|
<!-- The rendering style of the KeyWord group -->
|
|
<xsd:attribute name="bold" type="xsd:boolean" />
|
|
<xsd:attribute name="italic" type="xsd:boolean" />
|
|
<xsd:attribute name="color" type="xsd:string" />
|
|
<xsd:attribute name="bgcolor" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<xsd:complexType name="RuleSet">
|
|
<xsd:sequence>
|
|
<!-- Defines the delimiting characters of the syntax, e.g., the characters that, "break up" a line
|
|
into separate symbols, typically key words. It is not necessary, or desirable to include the
|
|
characters that denot the start or end of a span. Space and Tab are implicitly defined as delimeters
|
|
and they don't need to be includeded explicitly (this will probably be changed at some future time).-->
|
|
<xsd:element name="Delimiters" type="Delimiters" minOccurs="0" maxOccurs="1">
|
|
</xsd:element>
|
|
<!-- A Span tag defines a scope, or what can be seen as a separate parsing context where a different set of
|
|
highlighting rules are applicable compared to the text where the span is found.
|
|
Examples of spans include:
|
|
- A string in a language as C
|
|
- A <script> tag in Html
|
|
- The internals of a tag in XML (between < and >).
|
|
A span can have a rule set associated with it that defines the highlighting rules that are applicable
|
|
in the span. -->
|
|
<xsd:element name="Span" type="Span" minOccurs="0" maxOccurs="unbounded">
|
|
</xsd:element>
|
|
<!-- The MarkPrevious tag allows you to define the coloring of the item that preceeds a specific
|
|
symbol. An example of where this comes in handy is when coloring the contents of an XML-tag,
|
|
in particular the attributes and attribute names. The following definition:
|
|
<MarkPrevious bold="false" italic="false" color="Red">=</MarkPrevious>
|
|
will make teh highlighter color words that are followed by an = to be colored in Red.
|
|
You can see this in this file if you view it with the default XML-mode in SharpDevelop. -->
|
|
<xsd:element name="MarkPrevious" type="MarkPrevious" minOccurs="0" maxOccurs="unbounded">
|
|
</xsd:element>
|
|
<!-- The MarkFollowing tag works similarly as the MarkPrevious tag but relates to the coloring
|
|
of the symbol that follows the specified symbol. -->
|
|
<xsd:element name="MarkFollowing" type="MarkFollowing" minOccurs="0" maxOccurs="unbounded">
|
|
</xsd:element>
|
|
<!-- Defines a group of keywords that should be colored the same way -->
|
|
<xsd:element name="KeyWords" type="KeyWords" minOccurs="0" maxOccurs="unbounded">
|
|
</xsd:element>
|
|
</xsd:sequence>
|
|
<!-- The name of the RuleSet. Used when you refer to the RuleSet in the rule attribute of a Span tag.
|
|
Each mode file should have a rule definition without a defined name. This denotes the default rule
|
|
set for the mode. -->
|
|
<xsd:attribute name="name" type="xsd:string" />
|
|
<!-- Allows you to use another mode, defined in another file as a RuleSet. For an example see the
|
|
use of the JavaScript mode from the HTML-mode. -->
|
|
<xsd:attribute name="reference" type="xsd:string" />
|
|
<!-- Defines whether case is significant for matching keywords in the mode. -->
|
|
<xsd:attribute name="ignorecase" type="xsd:boolean" />
|
|
<!-- OBSOLETE: noescapesequences -->
|
|
<xsd:attribute name="noescapesequences" type="xsd:boolean" />
|
|
<!-- defines the escape character -->
|
|
<xsd:attribute name="escapecharacter" type="xsd:string" />
|
|
</xsd:complexType>
|
|
|
|
<!-- The RuleSets tag is just a grouping of the set of RuleSets for a mode. -->
|
|
<xsd:complexType name="RuleSets">
|
|
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
|
|
<!-- Any number of RuleSet tag can be defined in a mode -->
|
|
<xsd:element name="RuleSet" type="RuleSet" minOccurs="1" maxOccurs="unbounded">
|
|
</xsd:element>
|
|
</xsd:sequence>
|
|
</xsd:complexType>
|
|
|
|
<!-- SyntaxDefinition is the root-element in a mode definition file -->
|
|
<xsd:element name="SyntaxDefinition">
|
|
<xsd:complexType>
|
|
<xsd:sequence>
|
|
<!-- The Environment tag defines colors, for various standard elements in the SharpDevelop GUI, if
|
|
not given the default values are used. -->
|
|
<xsd:element name="Environment" type="Environment" minOccurs="0" maxOccurs="1"/>
|
|
|
|
<!-- The Properties section defines properties which are bound to the highlighting -->
|
|
<xsd:element name="Properties" type="Properties" minOccurs="0" maxOccurs="1" />
|
|
|
|
<!-- The Digits tag defines the color for rendering Digits-->
|
|
<xsd:element name="Digits" type="Digits" minOccurs="0" maxOccurs="1"/>
|
|
|
|
<!-- The RuleSets tag defines the rule sets that are used in the mode. Note that all modes are defined in
|
|
a flat structture even if they are used recursively. For an example of a mode that uses
|
|
multiple rule sets see the XML-mode. There is a top level rule-set and and another rule-set
|
|
that handles highligting within a tag, i.e., between < and >. -->
|
|
<xsd:element name="RuleSets" type="RuleSets" />
|
|
</xsd:sequence>
|
|
<!-- The name of the mode. This is used when you, in the defintion of a RuleSet refers to another
|
|
mode. I.e., one that is defined in an external file. For an example of this see the HTML-Mode that
|
|
uses the JavaScript-mode this way. -->
|
|
<xsd:attribute name="name" type="xsd:string" />
|
|
<!-- The file extensions that the mode is applicable for. Extensions must be written with lower case and
|
|
should include the ., as in .txt. If several extensions are applicable they should be separeated with | -->
|
|
<xsd:attribute name="extensions" type="xsd:string" />
|
|
<!-- Name of a syntax mode where rulesets, spans, keywords and other settings are imported from -->
|
|
<xsd:attribute name="extends" type="xsd:string" />
|
|
</xsd:complexType>
|
|
</xsd:element>
|
|
|
|
</xsd:schema>
|