Ruby
如何語法高亮 gtksourceview3.0 中的 Ruby 範圍邊界?
我的大部分編碼都是在 gedit 中完成的,它突出顯示了整數和其他語法。當我在 Ruby 中使用整數範圍時,
0..3
例如表示,整數沒有正確突出顯示,而是正常的文本顏色。我檢查了/usr/share/gtksourceview3.0/language-specs/ruby.lang
,但是,唉,解決方案似乎比我預期的要復雜得多。我該如何解決這個問題?
好吧,現在我可能只建議“蠻力”解決方案。這個任務就是要了解正則表達式。
這裡是。
首先,我決定定義一個新的正則表達式來匹配整個範圍,而不是重新定義
decimal
,但使用相同的樣式。有3個步驟。順便說一下,這是一個關於 gedit 語言規範的指南。
風格
讓我們先定義樣式。
在部分
<styles>
插入之前decimal
:<style id="range" _name="Range" map-to="def:decimal"/>
匹配
然後在部分
<definitions>
插入之前decimal
:<context id="range" style-ref="decimal"> <match>(?<![\w\.])(([1-9](_?[0-9])*|0)\s*\.\.\.?\s*([1-9](_?[0-9])*|0))(?![\w\.])</match> </context>
此正則表達式僅匹配十進制範圍(總是有改進的餘地),例如
3..7 3...7 3 .. 7 3 ... 7
所有使用的正則表達式都是 PCRE(Perl 兼容)。在我看來,最好的方法是瀏覽Perl Regular Exressions Doc。所以你可以發明你自己的並匹配你想要的任何東西。
呼叫匹配
要強制語法高亮使用這個表達式,我們必須把它放在小數點之前
<include>
:<context id="ruby" class="no-spell-check"> <include> ... <context ref="range"/> <context ref="decimal"/> ... </include> </context>
並重新啟動 Gedit!