【问题标题】:Avalon Edit Highlighting within HighlightingAvalon 在 Highlighting 中编辑 Highlighting
【发布时间】:2020-04-24 08:25:38
【问题描述】:

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

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

默认情况下,语法高亮似乎在输入“开始”后停止,并且在到达结尾之前不会寻找任何其他内容。

<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>

【问题讨论】:

  • 您可能想解释一下您显示的 Xml sn-ps 是 Avalon Edit 的语法高亮定义语言 - 对吧?

标签: wpf syntax-highlighting avalonedit


【解决方案1】:

一个&lt;Span&gt; 切换到另一个在范围内活动的&lt;RuleSet&gt;。默认情况下,这是一个空规则集,因此没有其他活动。

如果您希望在跨度内应用规则,请将其移至嵌套规则集:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多