[英]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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.