2011-08-23 52 views
1

我需要強調的代碼,大括號內的每個整個塊撐杆,所以我創建的規則: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代碼,而不是外部。我想用一種顏色exluding :)


相關突顯他們:

回答

1

這樣(from)強調OK(gedit中去一點點當光標位於大括號中時,速度較慢),當在單行中使用此類語法時,但不適用於多行:

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

(和它不要允許我使用包括上下文,但spec說我可以:()

+1

該規範只是說,你可以在一個容器環境中使用包括上下文。容器上下文可以包含''和'',但不包含''。 – ptomato

+0

@ptomato是的,你說得對,對不起。 –