Mise en évidence de la syntaxe gedit personnalisée pour les nuls?

15

Je veux créer (avoir, en fait) une coloration syntaxique personnalisée pour gedit.

Il y aurait juste quelques éléments différents:

Une ligne qui commence par 2 onglets. ----- Une couleur. Une ligne qui commence par 3 onglets. ----- Une autre couleur. Une ligne qui commence par 4 onglets. ----- Une autre couleur. et une ligne qui commence par INT. ou EXT. ----- Une autre couleur.

C'est pour écrire un scénario.

J'ai regardé la page wiki de définition de langage pour gedit mais c'est bien au-dessus de ma tête.

Existe-t-il un moyen simple de le faire?

OUI
la source

Réponses:

16

Ce qui suit est dérivé du manuel de référence GtkSourceView, Language Definition v2.0 Tutorial and Reference .

Créez le fichier /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (en tant que root), avec le contenu suivant:

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

Assurez-vous que le fichier est lisible dans le monde en exécutant

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

Redémarrez gedit. Maintenant, tout fichier nommé *.scriptque vous ouvrez dans gedit doit afficher le type "Screenplay" dans la barre d'état en bas. Les lignes en retrait avec 2, 3 ou 4 tabulations doivent être de couleur bleue, magenta et cyan, respectivement, et les lignes commençant par INT. ou EXT. sera rouge et gras.

Vous pouvez régler cela de plusieurs manières:

  • Le .scriptsuffixe du nom de fichier est défini sur la ligne 5, dans la propriété "globs". Vous pouvez changer cela de manière évidente et inclure plusieurs valeurs si vous le souhaitez, séparées par des points-virgules ( ;).

  • Les couleurs que vous obtenez pour le retrait et l'INT. et EXT. les lignes dépendent du jeu de couleurs particulier que vous avez sélectionné pour gedit. Ce sont les couleurs des styles de commentaire, de constante, d'identificateur et d'instruction (c'est ce que map-to="def:comment"font etc.). Pour obtenir des résultats différents, vous pouvez modifier le jeu de couleurs gedit (Édition> Préférences> Polices et couleurs) ou réorganiser les map-tovaleurs dans les <style>balises. Si vous souhaitez plus de contrôle, vous pouvez créer votre propre jeu de couleurs comme suit:

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

    Modifiez screenplay.xml (en tant que root). Remplacez les trois premières lignes sans commentaire par:

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

    Ajustez ensuite les couleurs (et peut-être d'autres styles aussi, par exemple bold="true") des styles def: comment, def: constant, def: identifier et def: statement. Redémarrez à nouveau gedit et changez la palette de couleurs de gedit en Screenplay pour voir vos nouvelles couleurs. Notez que c'est un changement global cependant; vous souhaiterez peut-être revenir à votre jeu de couleurs habituel pour modifier d'autres fichiers.

Notez que chaque fois que vous modifiez les fichiers screenplay.lang ou screenplay.xml, vous devrez redémarrer gedit pour voir les résultats.

Andrew Schulman
la source
Ça y est! IMPRESSIONNANT!
YAS
Merci, j'ai eu un cas d'utilisation similaire, mettant en évidence des lignes liées mais physiquement disparates avec la même couleur et cela a beaucoup aidé.
Eloff