Я пишу файл подсветки синтаксиса в gtksourceview для PARI/GP. Есть один аспект, который заставил меня застрять: я хочу выделить определенные ключевые слова только внутри другого ключевого слова. В частности, я хочу один вид подсветки для «входа» вВложение ключевых слов в другие ключевые слова: контекст в gtksourceview
log(x)
(где log
означает логарифм), а другой в
default(log, 1)
(где log
относится к лог-файлы). Это похоже на то, что только <context>
был разработан, поэтому я написал
<context id="default" style-ref="keyword">
<start>default\s*(</start>
<end>)</end>
<include>
<context id="in-default" style-ref="defaults">
<keyword>log</keyword>
...
<keyword>timer</keyword>
</context>
</include>
<context ref="string"/>
<context ref="decimal"/>
<context ref="float"/>
<context ref="comment-multiline"/>
<context id="meta-comment" style-ref="comment">
<match>\s*\(([^()]+)\)</match>
</context>
</context>
, но это не удалось молча (Gedit не подсветку синтаксиса на всех). Что я сделал не так? (Да, я определил строку, десятичную, поплавок, и комментировать-многострочный контексты выше.)
Примечание. Я проверил XML с помощью xmlstarlet, xmllint и http://www.xmlvalidation.com/, поэтому это не простой случай отсутствия закрывающего тега или тому подобного. Если я удаляю внешний файл '' и' ', он будет работать (но не может обработать упомянутое различие). –
Charles