簡體   English   中英

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>

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM