Я использую 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>
И вот что я наблюдаю:
![enter image description here](https://i.stack.imgur.com/yyppT.png)
Clearly what's happening is the \}
тег завершение диапазона, как только будет найдена следующая закрывающая скобка }
. Когда на самом деле следует пропустить эту скобку, потому что перед ней стоит открытая скобка.
Так что мне нужно, чтобы он подсчитал открытые фигурные скобки и соединил их с закрывающими фигурными скобками, чтобы фактически закончить промежуток на правильной закрывающей скобке.
Возможно ли это в XSHD?
Спасибо