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

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

我的大部分編碼都是在 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>(?&lt;![\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!

相關內容