<!--
  CAUTION: Do not modify this file directly on it's code unless you know what you are doing.
           Unexpected results may occur if the code is changed deliberately.
-->
<!ELEMENT source-code-highlight (completion-trigger?, enclosing-chars*, group*)>

<!-- 
The character that is used to trigger the code completion widget. The default trigger is the dot (.)
any single character can be specified to override the default one. Once the highlighter finds it'll request
the displaying of the completion widget.

value: a single character that must be used as completion trigger.
-->
<!ELEMENT completion-trigger EMPTY>
<!ATTLIST completion-trigger value CDATA #IMPLIED>

<!-- 
The characters in the current syntax that delimits values or other attributes somehow.
More the one instance of this tag can appear in the configuration file.

An example of that chars are:

1) Parentenshis in SQL to delimit subqueries: select * from (select ... FROM ...)
2) Chevron characters in XML to delimit tag name: <tag>
3) Curly braces in SCH to delimit attributes: {attribute}

open-char: the character that indicates the open delimitation
close-char: the character that indicates the close delimitation
background-color: the color of the background of enclosing chars
foreground-color: the color of the foreground of enclosing chars
-->
<!ELEMENT enclosing-chars EMPTY>
<!ATTLIST enclosing-chars open-char CDATA #REQUIRED>
<!ATTLIST enclosing-chars close-char CDATA #REQUIRED>
<!ATTLIST enclosing-chars background-color CDATA #REQUIRED>
<!ATTLIST enclosing-chars foreground-color CDATA #REQUIRED>

<!--
The configuration of a highlight group. The group itself contains a set of formatting attributes and elements which 
store the expressions that are matched against the captured words.

name: the name of the group
background-color: the color of the background of words matching the group (omitting this attribute causes transparent background to be applied).
foreground-color: the color of the foreground of words matching the group (omitting this attribute causes the default foreground color to be applied)
case-sensitive: indicates if the expressions matching must be case sensitive or not.
bold: words matching the group will have a bold style.
italic: words matching the group will have a italic style.
underline: words matching the group will have a underline style.
strikeout: words matching the group will have a strikeout style.
allow-completion: enable/disable the code completion via completion trigger char for this group.
persistent: indicates that once found this group in a block, the highlight will stop further highilightings in the block.
-->
<!ELEMENT group (element*)>
<!ATTLIST group name CDATA #REQUIRED>
<!ATTLIST group background-color CDATA #IMPLIED>
<!ATTLIST group foreground-color CDATA #IMPLIED>
<!ATTLIST group case-sensitive (false|true) "false">
<!ATTLIST group bold (false|true) "false">
<!ATTLIST group italic (false|true) "false">
<!ATTLIST group underline (false|true) "false">
<!ATTLIST group strikeout (false|true) "false">
<!ATTLIST group allow-completion (false|true) "true">
<!ATTLIST group persistent (false|true) "false">

<!--
The element of a group. The element stores an expression that is matched against a captured word.
In case of positive matching the word will receive the formatting associated to the group in which the element
is part of. Elements can hold simple, wildcard or regular expressions.

value: the expression of the element.
type: the type of the element expression. 
      * "regexp" type tells the highlighter to use the expression of the element as a regular expression (QRegularExpression syntax).        
      * "wildcard" type indicates that the expression of the element must be treated as a wildcard expression.
      * "word" type indicates to the highlighter to match whole words delimited by word boundaries 
        (\b[word]\b regex syntax), specially useful when matching language keywords.
      * "exact" type indicates that the expression is to be used in exact match operation.
initial: indicates that the expression is a opening one for a multiline group
final: indicates that the expression is a closing one for a multiline group
-->
<!ELEMENT element EMPTY>
<!ATTLIST element value CDATA #REQUIRED>
<!ATTLIST element type (regexp | wildcard | word | exact) "exact">
<!ATTLIST element initial (false|true) "false">
<!ATTLIST element final (false|true) "false">
