AvalonEdit XSHD 语法高亮 - 结束跨度
AvalonEdit XSHD Syntax Highlighting - Ending a Span
我正在使用 AvalonEdit 并致力于为文件添加语法突出显示(语法有点像剃刀)。这是我第一次使用XSHD文件,所以如果这真的很简单,请原谅我。
可以通过以下示例代码查看我遇到的问题:
Not C#
@{
public void DoStuff() {
// C# highlighting here
}
public void DoMoreStuff() {
// C# highlighting here
}
}
在 @{
和 }
中,我需要应用 C# 语法突出显示。所以我在 xshd 中这样做:(简化)
<Span ruleSet="RazorCode" multiline="true">
<Begin color="CodeBlockStartEndTags">\@\{</Begin>
<End color="CodeBlockStartEndTags">\}</End>
</Span>
<RuleSet name="RazorCode">
<Import ruleSet="C#/" />
</RuleSet>
这就是我观察到的:
很明显,<End color="CodeBlockStartEndTags">\}</End>
标签一找到下一个右大括号 }
就结束了跨度。实际上它应该跳过这个大括号,因为它前面有一个左大括号。
所以我需要它来计算左大括号并将它们与右大括号配对,以实际结束正确的右大括号上的跨度。
这在 XSHD 中可行吗?
谢谢
XML 语法突出显示跟踪规则集激活的堆栈。您可以通过递归激活 RuleSet 来计算大括号:
<Span ruleSet="RazorCode" multiline="true">
<Begin color="CodeBlockStartEndTags">\@\{</Begin>
<End color="CodeBlockStartEndTags">\}</End>
</Span>
<RuleSet name="RazorCode">
<Import ruleSet="C#/" />
<Span ruleSet="RazorCode" multiline="true">
<Begin>\{</Begin>
<End>\}</End>
</Span>
</RuleSet>
我正在使用 AvalonEdit 并致力于为文件添加语法突出显示(语法有点像剃刀)。这是我第一次使用XSHD文件,所以如果这真的很简单,请原谅我。
可以通过以下示例代码查看我遇到的问题:
Not C#
@{
public void DoStuff() {
// C# highlighting here
}
public void DoMoreStuff() {
// C# highlighting here
}
}
在 @{
和 }
中,我需要应用 C# 语法突出显示。所以我在 xshd 中这样做:(简化)
<Span ruleSet="RazorCode" multiline="true">
<Begin color="CodeBlockStartEndTags">\@\{</Begin>
<End color="CodeBlockStartEndTags">\}</End>
</Span>
<RuleSet name="RazorCode">
<Import ruleSet="C#/" />
</RuleSet>
这就是我观察到的:
很明显,<End color="CodeBlockStartEndTags">\}</End>
标签一找到下一个右大括号 }
就结束了跨度。实际上它应该跳过这个大括号,因为它前面有一个左大括号。
所以我需要它来计算左大括号并将它们与右大括号配对,以实际结束正确的右大括号上的跨度。
这在 XSHD 中可行吗?
谢谢
XML 语法突出显示跟踪规则集激活的堆栈。您可以通过递归激活 RuleSet 来计算大括号:
<Span ruleSet="RazorCode" multiline="true">
<Begin color="CodeBlockStartEndTags">\@\{</Begin>
<End color="CodeBlockStartEndTags">\}</End>
</Span>
<RuleSet name="RazorCode">
<Import ruleSet="C#/" />
<Span ruleSet="RazorCode" multiline="true">
<Begin>\{</Begin>
<End>\}</End>
</Span>
</RuleSet>