在 gtksourceview 中匹配整个字符串
Matching entire string in 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/lookbehind (?<=")
/ (?=")
但前者不起作用,后者完全破坏了语法荧光笔。
似乎无法在子上下文中匹配父上下文的开头(或结尾)。但是,如果您将 special-string 定义为 top-level 上下文并将其包含在主语言上下文中的 string 之前,它将工作:
<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>
使用这个简短的 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/lookbehind (?<=")
/ (?=")
但前者不起作用,后者完全破坏了语法荧光笔。
似乎无法在子上下文中匹配父上下文的开头(或结尾)。但是,如果您将 special-string 定义为 top-level 上下文并将其包含在主语言上下文中的 string 之前,它将工作:
<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>