Avalon 在高亮中编辑高亮

Avalon Edit Highlighting within Highlighting

使用 Avalon Edit,我正在寻找一种在已经格式化的内容中提供突出显示格式的方法。

也就是说,我想突出显示引号内的内容,但在这些引号内我有另一种可以添加的语法,它以 ${ 开头并以 } 结束。

默认情况下,似乎语法高亮显示一旦进入 'begin' 就会停止,并且在到达结尾之前不会寻找任何其他内容。

<Span color="ParamName">
  <Begin>"</Begin>
  <End>(?=:)</End>
</Span>
<Span color="Variable" multiline="false">
  <Begin>${</Begin>
  <End>}</End>
</Span>

所以这里的 ${ 语法只有在不在 ParamName (") 内时才会被着色。有没有办法让我的变量突出显示即使在 ParamName 中也能工作(是的 ParamName 来自 JSON 格式,我希望我的突出显示无论在哪里都能工作显示在 JSON 语法中)?

完整荧光笔代码:

<Keywords color="Digits" >
  <Word>true</Word>
  <Word>false</Word>
</Keywords>

<Span color="Value" multiline="true">
  <Begin>
    (?&lt;=:)0?"[^"]*
  </Begin>
  <End>"</End>
</Span>
<Span color="ParamName">
  <Begin>"</Begin>
  <End>(?=:)</End>
</Span>
<Span color="Variable" multiline="false">
  <Begin>${</Begin>
  <End>}</End>
</Span>
<Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>

A <Span> 切换到跨度内处于活动状态的另一个 <RuleSet>。默认情况下,这是一个空规则集,因此没有其他活动。

如果您希望在某个范围内应用规则,请将其移至嵌套规则集:

<Span color="ParamName">
  <Begin>"</Begin>
  <End>(?=:)</End>

  <RuleSet>
    <Span color="Variable" multiline="false">
     <Begin>${</Begin>
     <End>}</End>
    </Span>
  </RuleSet>
</Span>