L'éditeur gedit gère un système de coloration syntaxique dont nous allons décrire le paramètrage.
installez les paquets gedit et gedit-plugins :
apt install gedit gedit-plugins
Activez les greffons souhaités dans Gedit->Application->Préférence->Greffon
Activez la coloration syntaxique souhaitée dans Gedit->Application->Affichage->Mode de coloration-><langage de programmation>
Dans le dossier /usr/share/gtksourceview-4.0 il existe deux dossiers importants :
1- Le répertoire language-specs contient les fichiers <nom-langage>.lang pour définir chaque langage.
2- Le répertoire styles contient les fichiers <nom-style>.xml pour définir chaque style de coloration.
Le fichier def.lang est commun à la définition de tous les langages. Il comprend la définition de styles génériques
Le fichier classic.xml défini le style classique pour tous les langages.
Le fichier def.lang comprend la définition des styles suivants :
Groupe Style Description Style par défaut Groupe des commentaires commentTout commentaire shebangUn shebang: #!/bin/sh def:comment doc-commentUn commentaire spécial contenant de la documentation comme dans javadoc ou gtk-doc def:comment doc-comment-elementUn élément dans un commentaire de documentation: @author
Ce style ne correspond à rien car il doit être utilisé comme style supplémentaire pour le texte qui est déjà stylé comme un "doc-comment" Groupe des
constantes constantToute constante characterUne constante de caractère: 'c' def:constant stringUne constante de chaîne: "ceci est une chaîne" def:constant special-charCaractère spécial dans une constante de chaîne: "%s", "\t" Ce style ne correspond à rien car il doit être utilisé comme style supplémentaire pour le texte qui est déjà stylisé comme une "string" numberUne constante numérique générique def:constant floating-pointUne constante à virgule flottante: 2.3e10 def:number decimalUn nombre décimal: 1234 def:number base-n-integerUn nombre de base N: 0xFFFF def:number complexUn nombre complexe def:number special-constantUne constante spéciale comme NULL en C ou null en Java def:constant booleanUne constante booléenne: TRUE, false def:special-constant Groupes des
identificateurs identifierTout nom de variable functionUn nom de fonction (aussi: méthodes pour les classes) def:identifier builtinUn nom intégré: comme __import__, abs en Python def:identifier Groupe des
instructions statementToute déclaration operatorLes operateurs: "+", "*", etc. def:statement keywordmots-clés: "if", "for", "while", etc. def:statement Groupe des types typeUn type de données primitif: int, long, char, etc. Groupe
des balisages emphasisEmphase, généralement rendue en italique strong-emphasisEmphase forte, généralement rendue en gras inline-codeCode en ligne, généralement rendu avec une police monospace insertionInsertion, généralement rendue avec un soulignement deletionSuppression, généralement rendue avec un barré link-textTexte du lien, généralement rendu avec un soulignement link-symbolSymbole de lien, une partie de la syntaxe de balisage pour les liens link-destinationDestination du lien, généralement invisible headingEn-tête, généralement rendu dans une police plus grande (à l'aide des balises h1, h2, etc. thematic-breakRupture thématique, généralement rendue sous forme de règle horizontale (ligne) preformatted-sectionSection préformatée, généralement rendue avec une police monospace list-markerMarqueur de liste, généralement rendu sous forme de puce ou de numéro Autres preprocessorCelui-ci est pour '#include <foo.h>' et "#pragma blah", ou 'use foobar', etc. errorToute construction erronée warningpour marquer éventuellement des erreurs ou une syntaxe non recommandée reservedMots clés réservés: comme "const" et "goto" en Java def:error noteTout ce qui nécessite une attention particulière; principalement les mots-clés TODO, FIXME et XXX net-addressAdresse Internet: URL, adresses e-mail, etc. underlinedObsolète: sera supprimé dans une future version def:net-address
Ce fichier décrit la coloration syntaxique du langage povray 3.7, un langage de description de scène 3D.
( Pour colorer les extraits de code xml ci-dessous, nous avons utilisé la commande highlight)
Prologue |
|
Une entête comprise dans un commentaire XML, c'est à dire comprise entre le symbole <!-- et le symbole -->, indique de quel ensemble fait parti ce fichier, l'auteur, le copyleft, l'année... |
|
La balise d'ouverture de définition d'un langage : |
|
Le prologue :
<?xml version="1.0" encoding="UTF-8"?>
La balise d'ouverture de définition d'un langage :
<language id="povray" name="POV-Ray" version="2.0" _section="Other">
Le mimetype, l'extension de fichier, les symboles de commentaire par ligne et par bloc :
<metadata>
<property name="mimetypes">text/x-povray</property>
<property name="globs">*.pov</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
</metadata>
Les styles utilisés et leur aiguillage par défaut :
<styles>
<style id="comment" name="Comment" map-to="def:comment"/>
<style id="escaped-character" name="Escaped Character" map-to="def:special-char"/>
<style id="string" name="String" map-to="def:string"/>
<style id="function" name="Function" map-to="def:preprocessor"/>
<style id="preprocessor" name="Preprocessor" map-to="def:preprocessor"/>
<style id="keyword" name="Keyword" map-to="def:keyword"/>
<style id="number" name="Number" map-to="def:decimal"/>
<style id="others" name="Others 3"/>
</styles>
Définition des string avec caractère d'échapement. Reprise des mêmes dispositions existant dans java.lang :
<definitions>
<define-regex id="escaped-character" extended="true">
\\( # leading backslash
[\\\"\'nrbtf] | # escaped character
[0-9]{1,3} | # latin encoded char
u[0-9]{1,4} # unicode char
)
</define-regex><context id="string" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
<start>"</start>
<end>"</end>
<include>
<context id="escaped-character" style-ref="escaped-character">
<match>\%{escaped-character}</match>
</context>
</include>
</context>
Définition des ponctuations :
<context id="punctuator" style-ref="others">
<match extended="true"> [{}().,;] </match>
</context>
Définition des opérateurs :
<context id="operator" style-ref="function">
<match extended="true"> [-+!*/<>=&|?:] </match>
</context>
Définition des opérateurs-tableaux :
<context id="array-operator" style-ref="function">
<match extended="true"> (\[|\]) </match>
</context>
Définition des nombres :
<context id="numeric" style-ref="number">
<match extended="true"> [\+-]?[0-9]+(\.[0-9])?([Ee][\+-]?[0-9]+)?</match>
</context>
Définition des constantes prédéfinies :
<context id="built-in-constant" style-ref="string">
<keyword>false</keyword>
<keyword>no</keyword>
<keyword>off</keyword>
<keyword>on</keyword>
<keyword>pi</keyword>
<keyword>true</keyword>
<keyword>yes</keyword>
</context>
Définition des paramètres prédéfinies :
<context id="built-in-variable" style-ref="keyword">
<keyword>clock</keyword>
<keyword>clock_delta</keyword>
<keyword>clock_on</keyword>
<keyword>final_clock</keyword>
<keyword>final_frame</keyword>
<keyword>frame_number</keyword>
<keyword>initial_clock</keyword>
<keyword>initial_frame</keyword>
<keyword>image_height</keyword>
<keyword>image_width</keyword>
<keyword>input_file_name</keyword>
<keyword>version</keyword>
</context>
Définition des vecteurs prédéfinies :
<context id="built-in-vector" style-ref="keyword">
<keyword>t</keyword>
<keyword>u</keyword>
<keyword>v</keyword>
<keyword>x</keyword>
<keyword>y</keyword>
<keyword>z</keyword>
</context>
Définition des identifiants de couleur :
<context id="color-identifier" style-ref="keyword">
<keyword>blue</keyword>
<keyword>filter</keyword>
<keyword>gray</keyword>
<keyword>green</keyword>
<keyword>red</keyword>
<keyword>rgb</keyword>
<keyword>rgbf</keyword>
<keyword>rgbft</keyword>
<keyword>rgbt</keyword>
<keyword>srgb</keyword>
<keyword>sRGB</keyword>
<keyword>SRGB</keyword>
<keyword>srgbf</keyword>
<keyword>srgbft</keyword>
<keyword>srgbt</keyword>
<keyword>transmit</keyword>
</context>
Définition des fonctions s'appliquant à des nombres :
<context id="float-function" style-ref="function">
<keyword>abs</keyword>
<keyword>acos</keyword>
<keyword>acosh</keyword>
<keyword>asc</keyword>
<keyword>asin</keyword>
<keyword>asinh</keyword>
<keyword>atan</keyword>
<keyword>atan2</keyword>
<keyword>atand</keyword>
<keyword>atanh</keyword>
<keyword>bitwise_and</keyword>
<keyword>bitwise_or</keyword>
<keyword>bitwise_xor</keyword>
<keyword>ceil</keyword>
<keyword>cos</keyword>
<keyword>cosh</keyword>
<keyword>defined</keyword>
<keyword>degrees</keyword>
<keyword>dimension_size</keyword>
<keyword>dimensions</keyword>
<keyword>div</keyword>
<keyword>exp</keyword>
<keyword>file_exists</keyword>
<keyword>floor</keyword>
<keyword>inside</keyword>
<keyword>int</keyword>
<keyword>ln</keyword>
<keyword>log</keyword>
<keyword>max</keyword>
<keyword>min</keyword>
<keyword>mod</keyword>
<keyword>pow</keyword>
<keyword>radians</keyword>
<keyword>rand</keyword>
<keyword>seed</keyword>
<keyword>select</keyword>
<keyword>sin</keyword>
<keyword>sinh</keyword>
<keyword>sqr</keyword>
<keyword>sqrt</keyword>
<keyword>strcmp</keyword>
<keyword>strlen</keyword>
<keyword>tan</keyword>
<keyword>tanh</keyword>
<keyword>val</keyword>
<keyword>vdot</keyword>
<keyword>vlength</keyword>
</context>