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を再起動してください!

おすすめ記事