匹配gtksourceview中的整个字符串



用这个简短的XML片段在gtksourceview:中定义字符串

<context id="string" style-ref="string" end-at-line-end="true">
    <start>"</start>
    <end>"</end>
    <include>
        <context id="special-string" style-ref="special">
            <match>(foo|bar)</match>
        </context>
        <context ref="def:line-continue"/>
    </include>
</context>

这会突出显示字符串中"foo"或"bar"的任何实例。假设我想在它们是整个字符串时高亮显示这两个字符,这样"foo"会高亮显示中间的三个字符,但"foobar"根本不会高亮显示。这在gtksourceview中可能吗?

我尝试使用锚^...$和lookahead/lookbacking (?<=")/(?="),但前者不起作用,后者完全破坏了语法高亮。

似乎没有办法匹配子上下文中父上下文的开头(或结尾)。但是,如果您将特殊字符串定义为顶级上下文,并将其包含在主语言上下文中字符串

<context id="special-string" style-ref="string">
    <match>"(foo|bar)"</match>
    <include>
        <context sub-pattern="1" style-ref="special"/>
    </include>
</context>
<context id="string" style-ref="string" end-at-line-end="true">
    <start>"</start>
    <end>"</end>
</context>

相关内容

  • 没有找到相关文章

最新更新