Benutzerdefinierte gedit-Syntax-Hervorhebung für Dummies?

15

Ich möchte (eigentlich) eine benutzerdefinierte Syntaxhervorhebung für gedit erstellen.

Es würde nur ein paar verschiedene Gegenstände geben:

Eine Zeile, die mit 2 Registerkarten beginnt. ----- Eine Farbe. Eine Zeile, die mit 3 Registerkarten beginnt. ----- Eine andere Farbe. Eine Zeile, die mit 4 Registerkarten beginnt. ----- Eine andere Farbe. und eine Zeile, die mit INT beginnt. oder EXT. ----- Eine andere Farbe.

Dies ist zum Schreiben eines Drehbuchs.

Ich habe mir die Wiki-Seite zur Sprachdefinition für gedit angesehen, aber das geht mir weit über den Kopf.

Gibt es eine einfache Möglichkeit, dies zu tun?

Ja
quelle

Antworten:

16

Das Folgende wurde aus dem GtkSourceView-Referenzhandbuch, Language Definition v2.0 Tutorial and Reference, abgeleitet .

Erstellen Sie die Datei /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (als root) mit folgendem Inhalt:

<?xml version="1.0" encoding="UTF-8"?>
<language id="screenplay" _name="Screenplay" version="2.0" _section="Markup">
  <metadata>
    <property name="mimetypes">text/plain</property>
    <property name="globs">*.script</property>
  </metadata>
  <styles>
    <style id="indent2" _name="2x indented"  map-to="def:comment" />
    <style id="indent3" _name="3x indented"  map-to="def:constant" />
    <style id="indent4" _name="4x indented"  map-to="def:identifier" />
    <style id="intext"  _name="INT. or EXT." map-to="def:statement" />
  </styles>
  <definitions>
    <context id="screenplay">
      <include>
        <context id="indent4" style-ref="indent4">
          <start>^\t\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent3" style-ref="indent3">
          <start>^\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent2" style-ref="indent2">
          <start>^\t\t</start>
          <end>$</end>
        </context>
        <context id="intext" style-ref="intext">
          <start>^(INT|EXT)\.</start>
          <end>$</end>
        </context>
      </include>
    </context>
  </definitions>
</language>

Stellen Sie sicher, dass die Datei weltweit lesbar ist, indem Sie sie ausführen

sudo chmod 0644 /usr/share/gtksourceview-2.0/language-specs/screenplay.lang

Starten Sie gedit neu. Jetzt sollte jede Datei mit dem Namen *.script, die Sie in gedit öffnen, den Typ "Drehbuch" in der Statusleiste unten anzeigen. Zeilen, die mit 2, 3 oder 4 Tabulatoren eingerückt sind, sollten blau, magenta bzw. cyan gefärbt sein und mit INT beginnen. oder EXT. wird rot und fett sein.

Sie können dies auf verschiedene Arten anpassen:

  • Das .scriptDateinamensuffix wird in Zeile 5 in der Eigenschaft "globs" festgelegt. Sie können dies auf offensichtliche Weise ändern und bei Bedarf mehrere Werte einschließen, die durch Semikolons ( ;) getrennt sind.

  • Die Farben, die Sie für die eingerückten und INT erhalten. und EXT. Die Linien hängen vom jeweiligen Farbschema ab, das Sie für gedit ausgewählt haben. Dies sind die Farben der Kommentar-, Konstanten-, Bezeichner- und Anweisungsstile (was map-to="def:comment"usw. tun). Um unterschiedliche Ergebnisse zu erzielen, können Sie das gedit-Farbschema ändern (Bearbeiten> Voreinstellungen> Schriftarten und Farben) oder die map-toWerte in den <style>Tags neu anordnen . Wenn Sie mehr Kontrolle wünschen, können Sie Ihr eigenes Farbschema wie folgt erstellen:

    cd /usr/share/gtksourceview-2.0/styles
    sudo cp classic.xml screenplay.xml
    

    Bearbeiten Sie screenplay.xml (als root). Ersetzen Sie die ersten drei Zeilen ohne Kommentar durch:

    <style-scheme id="screenplay" _name="Screenplay" version="1.0">
      <author>YAS</author>
      <_description>Screenplay color scheme</_description>
    

    Passen Sie dann die Farben (und möglicherweise auch andere Stile, z. B. bold="true") der Stile def: comment, def: constant, def: identifier und def: statement an. Starten Sie gedit erneut und ändern Sie das Farbschema von gedit in "Drehbuch", um Ihre neuen Farben anzuzeigen. Beachten Sie jedoch, dass dies eine globale Änderung ist. Möglicherweise möchten Sie zu Ihrem normalen Farbschema zurückkehren, um andere Dateien zu bearbeiten.

Beachten Sie, dass Sie jedes Mal, wenn Sie die Dateien screenplay.lang oder screenplay.xml ändern, gedit neu starten müssen, um die Ergebnisse anzuzeigen.

Andrew Schulman
quelle
Das hat es geschafft! GENIAL!
YAS
Vielen Dank, ich hatte einen ähnlichen Anwendungsfall, in dem verwandte, aber physikalisch unterschiedliche Linien mit derselben Farbe hervorgehoben wurden, was sehr hilfreich war.
Eloff