Gedit高亮(gtksourceview):如何使用颜色突出显示[curly]大括号内的块

时间:2011-08-23 11:20:22

标签: syntax-highlighting gedit gtksourceview

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

<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代码,而不是外部。我想用一种颜色来突出它们:)


相关:

1 个答案:

答案 0 :(得分:1)

这种方式(from)突出显示确定(当光标在大括号中时gedit有点慢),当在单行上使用这种语法时,但不能用于多行:

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

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