【问题标题】:Gedit highlight (gtksourceview): how to highlight a block inside [curly] braces with a colorGedit highlight (gtksourceview):如何用颜色突出显示 [curly] 大括号内的块
【发布时间】:2011-11-01 21:03:17
【问题描述】:

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

<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 代码,而不是在大括号外。我想用一种颜色突出显示它们:)


相关:

【问题讨论】:

    标签: syntax-highlighting gedit gtksourceview


    【解决方案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 说我可以:()

    【讨论】:

    • 规范只说你可以在容器上下文中使用包含的上下文。容器上下文可能包含&lt;start&gt;&lt;end&gt;,但不能包含&lt;match&gt;
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多