Ruby

如何語法高亮 gtksourceview3.0 中的 Ruby 範圍邊界?

  • December 12, 2015

我的大部分編碼都是在 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!

引用自:https://unix.stackexchange.com/questions/159958