Niestandardowe wyróżnianie składni gedit dla manekinów?

15

Chcę zrobić (mieć, właściwie) niestandardowe podświetlanie składni dla gedit.

Będzie tylko kilka różnych przedmiotów:

Linia rozpoczynająca się od 2 zakładek. ----- Jeden kolor. Linia rozpoczynająca się od 3 zakładek. ----- Inny kolor. Linia rozpoczynająca się od 4 zakładek. ----- Inny kolor. oraz linia rozpoczynająca się od INT. lub EXT. ----- Inny kolor.

To jest do napisania scenariusza.

Spojrzałem na stronę wiki definicji języka dla gedit, ale jest ona ponad moją głową.

Czy istnieje prosty sposób, aby to zrobić?

TAK
źródło

Odpowiedzi:

16

Poniższa pochodzi z podręcznika GtkSourceView, język Definicja v2.0 Tutorial i Reference .

Utwórz plik /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (jako root), z następującą zawartością:

<?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>

Upewnij się, że plik można odczytać z całego świata, uruchamiając

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

Uruchom ponownie gedit. Teraz każdy plik o nazwie *.script, który otworzysz w gedit, powinien wyświetlać na pasku stanu u dołu typ „Scenariusz”. Linie wcięte za pomocą 2, 3 lub 4 zakładek powinny mieć odpowiednio kolor niebieski, magenta i cyjan, a linie zaczynające się od INT. lub EXT. będzie czerwony i odważny.

Możesz to zmienić na kilka sposobów:

  • .scriptNazwa pliku przyrostek jest ustawiony na linii 5, w „globs” własności. Możesz to zmienić w oczywisty sposób i, jeśli chcesz, dołączyć wiele wartości, oddzielając je średnikami ( ;).

  • Kolory, które otrzymujesz dla wcięć i INT. i EXT. linie zależą od konkretnego schematu kolorów wybranego dla gedit. Są to kolory stylu komentarza, stałej, identyfikatora i wyrażenia (tak robią map-to="def:comment"itd.). Aby uzyskać różne wyniki, możesz zmienić schemat kolorów gedit (Edycja> Preferencje> Czcionki i kolory) lub zmienić kolejność map-towartości w <style>znacznikach. Jeśli chcesz uzyskać większą kontrolę, możesz utworzyć własny schemat kolorów w następujący sposób:

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

    Edytuj screenplay.xml (jako root). Zastąp pierwsze trzy wiersze bez komentarza:

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

    Następnie dopasuj kolory (a może także inne style, np. bold="true") Stylów def: comment, def: constant, def: identifier i def: statement. Uruchom ponownie gedit i zmień schemat kolorów gedit na Scenariusz, aby zobaczyć nowe kolory. Pamiętaj jednak, że jest to zmiana globalna; możesz wrócić do zwykłego schematu kolorów, aby edytować inne pliki.

Pamiętaj, że za każdym razem, gdy zmienisz pliki screenplay.lang lub screenplay.xml, musisz ponownie uruchomić gedit, aby zobaczyć wyniki.

Andrew Schulman
źródło
To zrobiło! NIESAMOWITE!
YAS
Dzięki, miałem podobny przypadek użycia, podkreślając pokrewne, ale fizycznie odmienne linie tego samego koloru, a to bardzo pomogło.
Eloff,