AvalonEdit XSHD-Ruleset (для текста) - PullRequest
       6

AvalonEdit XSHD-Ruleset (для текста)

2 голосов
/ 09 ноября 2010

Я использую элемент управления AvalonEdit, и у меня есть небольшая проблема с набором правил xshd (для tex):

В оригинальном файле есть раздел «Определение синтаксиса для документа TeX 2001 Майка Крюгера (gedaned from Jedit)» о специальных ключевых словах, и мне интересно, как их правильно использовать.

  <!-- some commands must be handled specially -->
  <KeyWords name = "Keyword1" bold = "false" italic = "false" color = "Blue">
    <Key word = "\$" />
    <Key word = "\\" />
    <Key word = "\%" />
  </KeyWords>

Я думаю, что ключевые слова будут окрашены в синий цвет и обрабатываются только этим, но другие правила также обрабатывают части этих ключевых слов. например,

  <Span name = "LineComment" color = "SlateGray" stopateol = "true">
    <Begin>%</Begin>
  </Span>

Так что если в вашем тексте есть "\%", все, кроме "\" будет окрашено в серый цвет ...

Было бы очень хорошо, если бы эти ключевые слова запрещали правила, например. для '$' и '%', если перед ними стоит '\'.

Что мне делать? Или я не понял наборы правил ...

EDIT

"\\" обрабатывается записью ключевого слова1.

Я нашел

  escapecharacter="\"

но это не работает.

EDIT2

С новым определением подсветки синтаксиса, я думаю, проблема та же. Я сравнил свою текстовую подсветку с подсветкой c #. В c # имеем:

<Span color="String">
    <Begin>"</Begin>
    <End>"</End>
    <RuleSet>
         <!-- span for escape sequences -->
         <Span begin="\\" end="."/>
    </RuleSet>
</Span>

Я не использую sharpdevelop, но я думаю, что он работает, что подсветка не дает сбой, если я экранирую символы вроде ". Так что в моем файле это похоже на то, как

<Span foreground="#FF708090" fontWeight="normal" fontStyle="italic">
    <Begin>%</Begin>
    <RuleSet>
        <Span begin="\\" end="." />
    </RuleSet>
</Span>

но это не работает ... Может быть, есть проблема, потому что escape-символ является ?

1 Ответ

1 голос
/ 14 ноября 2010

Попробуйте перенести файл в новый формат, подробнее см. http://community.sharpdevelop.net/forums/p/10468/28886.aspx#28886.

В новом формате вы можете использовать регулярные выражения в правилах, которые должны работать намного лучше, чем пытаться подделывать конструкции TeX с использованием Keywords / MarkFollowing.

На вашем EDIT2: Если вы хотите, чтобы \ была escape-последовательностью внутри кода TeX (перед комментарием, а не как escape-символ внутри строки / комментария), тогда используйте escape-диапазон внутри основного набора правил:

<Span begin="\\" end="."/>
<Span foreground="#FF708090" fontWeight="normal" fontStyle="italic">
    <Begin>%</Begin>
</Span>
...