我的大部分編碼都是在 gedit 中完成的,它突出顯示了整數和其他語法。當我在 Ruby 中使用整數範圍(例如表示)時0..3
,整數沒有正確突出顯示,而是正常的文字顏色。我查了一下/usr/share/gtksourceview3.0/language-specs/ruby.lang
,但是,唉,解決方案似乎比我預期的要複雜得多。我該如何解決這個問題?
答案1
好吧,現在我可能只建議“暴力”解決方案。這項任務就是要了解正規表示式。
這裡是。
首先,我決定定義一個新的正規表示式來符合整個範圍,而不是重新定義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 正規表示式文檔。所以你可以發明你自己的東西並匹配你想要的任何東西。
呼叫匹配
要強制語法突出顯示使用此表達式,我們必須將其放在前小數部分<include>
:
<context id="ruby" class="no-spell-check">
<include>
...
<context ref="range"/>
<context ref="decimal"/>
...
</include>
</context>
並重新啟動 Gedit!