1

我需要突出显示大括号内的每一段代码,所以我创建了一个规则:

<context id="action-body" style-ref="action-body" extend-parent="true">
   <start>{</start>
   <end>}</end>
   <include>
      <context ref="builtin-vars" />
      <context ref="keywords" />
   </include>
</context>

它正确地突出显示代码、关键字和变量,但如果里面有另一个右大括号,它当然会停止。我知道正则表达式检查递归级别并非易事,但可能gtkSourceView语法对于此类情况有一些特殊之处?

这是一件严肃的事情,因为我正在突出显示的一种语言(实际上是 PegJS)只能在大括号内包含 JavaScript 代码,而不是在大括号外。我想用一种颜色突出显示它们:)


有关的:

4

1 回答 1

1

当这样的语法用于单行时,这种方式(from)可以突出显示(当光标在大括号中时 gedit 会有点慢),但不适用于多行:

<context id="action-body" style-ref="action-body">
   <match>(\{(?:[^{}]*|(?0))*\})</match>
   <!-- <include>
      <context ref="builtin-vars"/>
      <context ref="keywords"/>
   </include> -->
</context>

(它不允许我使用包含的上下文,但规范说我可以:()

于 2011-08-23T11:33:10.607 回答