Pair Scope

Pair scopes are most common and most standard. To define pair scope you need to provide open and close tag. For example Class and End Class, to start your scope from word Class and end it by after End Class.

<Scope open="Case" middle="When" close="End Case" has_name="true" separator="true"/>

open

Open tag.

Value: any string.

middle

Middle tag. Can be more than one, but than extended syntax shall be used.

Value: any string.

close

Close Tag.

Value: any string.

has_name

Indicates that name of the scope follows open tag. This flag was used before labels were added to extract name of scope from text. If has_name set to true, HE takes next word after the open tag as name of the scope (for example function foo(), if function is open scope tag, foo would be selected as name)

Value: true|false|0|1
Default: false

separator

Draw separator after close tag (if enabled in editor settings). If this flag is set, and you have Scope Separators enabled for document/syntax, then after the scope with this flag in source code would be drawn scope separator line.

Value: true|false|0|1
Default: false

strict

Flag tells HippoEDIT to not take seriously missing close text for this scope. So you would not get a error displayed for open tag. The attribute also used for better solving of outlining constructions (strict scopes have higher priority than non-strict ).

Value: true|false|0|1
Default: true

decoration

Flag tells engine to treat this scope not as language construction but as decoration only (for example preprocessor or user defined region). Treated similar as strict == false, but help in resolving of the situations when decoration and language scopes intersects and it is not easy to solve conflicts.

Value: true|false|0|1
Default: false

collapsed

Define scope that should be initially closed. Useful for creating user defined regions, that should be initially hidden.

Value: true|false|0|1
Default: false

sent_start

Marks that tag can appear only in beginning of the “sentence”: so, characters before are white spaces or LineEnd character.

Value: true|false|0|1
Default: false

Indicates that scope will start not directly after end of the open tag, but after “header” ends. The header ends with next line end character.

Value: true|false|0|1
Default: false

open_lead

Reverse regular expression, which shall lead text given in open tag.

open_trail

Regular expression, which shall trail text given in open tag.

close_lead

Reverse regular expression, which shall lead text given in close tag.

close_trail

Regular expression, which shall trail text given in close tag.

Extended syntax can be used, if you want to define more than one close or middle tag → in this case you can additional Middle or Close nodes inside of Scope node. You can use in-line and extended modes in same definition.

<Scope open="if" middle="else" close="endif" header="true" sent_start="true">
    <Middle text="elseif" sent_start="true"/>
</Scope>

Middle and Close tags defined in body of “Scope” node may redefine/have following attributes:

  • text → actual value of tag
  • strict → same as strict attribute above
  • sent_start → same as sent_start attribute above
  • lead → same as close_lead attribute above
  • lead → same as close_trail attribute above