Evidenziazione della sintassi gedit personalizzata per i manichini?


15

Voglio fare (avere, in realtà) un'evidenziazione della sintassi personalizzata per gedit.

Ci sarebbero solo alcuni elementi diversi:

Una linea che inizia con 2 schede. ----- Un colore. Una riga che inizia con 3 schede. ----- Un altro colore. Una linea che inizia con 4 schede. ----- Un altro colore. e una riga che inizia con INT. o EXT. ----- Un altro colore.

Questo è per scrivere una sceneggiatura.

Ho guardato la pagina wiki per la definizione della lingua per gedit ma è finita nella mia testa.

C'è un modo semplice per farlo?

Risposte:


16

Quanto segue è stato derivato dal manuale di riferimento GtkSourceView, Tutorial e riferimento di Language Definition v2.0 .

Crea il file /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (come root), con il seguente contenuto:

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

Assicurati che il file sia leggibile in tutto il mondo eseguendo

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

Riavvia gedit. Ora qualsiasi file chiamato *.scriptche apri in gedit dovrebbe mostrare il tipo "Sceneggiatura" nella barra di stato in basso. Le linee indentate con 2, 3 o 4 schede devono essere colorate di blu, magenta e ciano, rispettivamente, e le linee che iniziano con INT. o EXT. sarà rosso e grassetto.

Puoi modificarlo in alcuni modi:

  • Il .scriptsuffisso del nome del file è impostato sulla riga 5, nella proprietà "globs". Puoi cambiarlo nel modo ovvio e includere più valori se lo desideri, separati da punti e virgola ( ;).

  • I colori che ottieni per il rientro e INT. ed EXT. le linee dipendono dalla particolare combinazione di colori che hai selezionato per gedit. Sono i colori degli stili di commento, costante, identificatore e istruzione (ecco cosa map-to="def:comment"fanno ecc.). Per ottenere risultati diversi, puoi modificare la combinazione di colori di gedit (Modifica> Preferenze> Caratteri e colori) o riorganizzare i map-tovalori nei <style>tag. Se desideri un maggiore controllo, puoi creare la tua combinazione di colori come segue:

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

    Modifica screenplay.xml (come root). Sostituisci le prime tre righe senza commento con:

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

    Quindi regola i colori (e forse anche altri stili, ad es. bold="true") Degli stili di istruzione def: comment, def: constant, def: identifier e def:. Riavvia gedit di nuovo e cambia la combinazione di colori di gedit in Sceneggiatura per vedere i tuoi nuovi colori. Si noti che questo è un cambiamento globale però; potresti voler tornare alla tua combinazione di colori normale per modificare altri file.

Nota che ogni volta che cambi i file screenplay.lang o screenplay.xml, dovrai riavviare gedit per vedere i risultati.


Questo è stato fatto! ECCEZIONALE!

Grazie, ho avuto un caso d'uso simile, evidenziando linee correlate ma fisicamente disparate con lo stesso colore e questo mi ha aiutato molto.
Eloff,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.