在其他关键字中嵌入关键字:gtksourceview 中的上下文
Embedding keywords in other keywords: context in gtksourceview
我正在为 PARI/GP 在 gtksourceview 中编写一个语法高亮文件。有一个方面让我陷入困境:我只想在另一个关键字内突出显示某些关键字。特别是,我想要
中 "log" 的一种突出显示
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 根本没有语法高亮)。我做错了什么? (是的,我已经在上面定义了字符串、小数、浮点数和注释多行上下文。)
有两个问题:内部上下文需要在 <include>
块内,<start>
和 <end>
中的括号需要转义。
我正在为 PARI/GP 在 gtksourceview 中编写一个语法高亮文件。有一个方面让我陷入困境:我只想在另一个关键字内突出显示某些关键字。特别是,我想要
中 "log" 的一种突出显示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 根本没有语法高亮)。我做错了什么? (是的,我已经在上面定义了字符串、小数、浮点数和注释多行上下文。)
有两个问题:内部上下文需要在 <include>
块内,<start>
和 <end>
中的括号需要转义。