Avalon编辑高亮中的高亮

问题描述 投票:0回答:1

使用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;=:)\040?"[^"]*
  </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>

wpf syntax-highlighting avalonedit
1个回答
1
投票

A <Span> 转到另一个 <RuleSet> 在该跨度内处于活动状态。默认情况下,这是一个空的规则集,所以没有其他的规则被激活。

如果你想让一个规则在跨度内应用,可以把它移到嵌套的规则集中。

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

  <RuleSet>
    <Span color="Variable" multiline="false">
     <Begin>\${</Begin>
     <End>}</End>
    </Span>
  </RuleSet>
</Span>
© www.soinside.com 2019 - 2024. All rights reserved.