Wie kann ich Ruby-Bereichsgrenzen in gtksourceview3.0 syntaktisch hervorheben?

Wie kann ich Ruby-Bereichsgrenzen in gtksourceview3.0 syntaktisch hervorheben?

Den Großteil meiner Codierung erstelle ich in gedit, das Ganzzahlen und andere Syntax hervorhebt. Wenn ich in Ruby einen Ganzzahlbereich verwende, der beispielsweise wie folgt dargestellt wird 0..3, werden die Ganzzahlen nicht richtig hervorgehoben und haben stattdessen die normale Textfarbe. Ich habe nachgeschaut /usr/share/gtksourceview3.0/language-specs/ruby.lang, aber leider scheint die Lösung viel komplizierter zu sein, als ich erwartet hatte. Wie kann ich dieses Problem beheben?

Antwort1

Nun, im Moment kann ich nur eine „Brute-Force“-Lösung vorschlagen. Bei dieser Aufgabe geht es nur darum, reguläre Ausdrücke zu kennen.

Hier ist es.

Zunächst habe ich beschlossen, einen neuen regulären Ausdruck zu definieren, der auf den gesamten Bereich zutrifft, anstatt ihn neu zu definieren decimal, aber dieselben Stile verwendet. Dies geschieht in drei Schritten.

Übrigens,Dies ist ein Leitfadenzur Sprachspezifikation für gedit.

Stil

Definieren wir zunächst Stile.

Im Abschnitt <styles>davor einfügen decimal:

<style id="range" _name="Range" map-to="def:decimal"/>

Dazu passend

Fügen Sie dann im Abschnitt <definitions>davor Folgendes ein 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>

Dieser reguläre Ausdruckstimmt nur mit Dezimalbereichen überein(es gibt immer Raum für Verbesserungen) wie

3..7
3...7
3 .. 7
3 ... 7

Alle verwendeten regulären Ausdrücke sind PCRE (Perl-kompatibel). Der beste Weg wäre meiner Meinung nach, durchzublätternPerl-reguläre Ausdrücke Doc. Sie können also Ihr eigenes erfinden und es nach Belieben kombinieren.

Abgleich aufrufen

Um die Syntaxhervorhebung zu erzwingen, verwenden Sie diesen Ausdruck. Wir müssen ihn setzenVorDezimalzahl im Abschnitt <include>:

<context id="ruby" class="no-spell-check">
  <include>
    ...
    <context ref="range"/>
    <context ref="decimal"/>
    ...
  </include>
</context>

Und starten Sie Gedit neu!

verwandte Informationen