对于 gedit,我正在为类似标记的语言创建一个自定义语法荧光笔,我创建该语言是为了完成一些自然语言操作,所以我想我应该从简单的关键字开始,因为我不需要来为他们准备正则表达式。
我在 XML 中定义了以下内容:
<language id="foo" _name="Foo" version="2.0" _section="Source">
<metadata>
<property name="mimetypes">text/x-c;text/x-csrc;image/x-xpixmap</property>
<property name="globs">*.foo</property>
</metadata>
<styles>
<style id="operator" _name="Operator" map-to="def:keyword" />
<style id="member" _name="Member" map-to="def:type" />
</styles>
<definitions>
<context id="members" style-ref="member">
<keyword>ref</keyword>
<keyword>alt</keyword>
<keyword>pos</keyword>
<keyword>num</keyword>
</context>
<context id="operators" style-ref="operator">
<keyword>#</keyword>
<keyword>$</keyword>
<keyword>@</keyword>
<keyword>[</keyword>
<keyword>]</keyword>
<keyword>:</keyword>
<keyword>=</keyword>
<keyword>:?</keyword>
<keyword>&</keyword>
</context>
<!--Main context-->
<context id="opal" class="no-spell-check">
<include>
<context ref="members" />
<context ref="operators" />
</include>
</context>
</definitions>
</language>
语法确实会突出显示,但仅限于某些奇怪的条件。具体来说,上下文中的任何关键字operators
前后都必须有非关键字字符,以免无法突出显示。
我应该使用正则表达式来处理这些问题还是我只是搞砸了 XML?另外,为什么members
关键字突出显示没有问题?