J'ai essayé de créer un nouveau fichier .lang
pour que Gedit reconnaisse le langage de programmation Julia . J'ai lu le tutoriel , le document de référence et la page wiki Gedit/NewLanguage , et je crois que le fichier est correct. Cependant, lors du redémarrage de gedit après avoir copié le nouveau fichier Julia.lang
dans /usr/share/gtksourceview-3.0/language-specs/
, , un fichier .jl est effectivement reconnu et le menu de coloration syntaxique est défini sur Julia, mais non. la surbrillance réelle se produit.
Pensant que j'aurais peut-être mal agi, j'ai plutôt essayé d'utiliser un fichier de langue existant, pour une langue similaire ( Matlab ), et je n'ai modifié que les métadonnées d'en-tête:
<language id="Julia" _name="Julia" version="2.0" _section="Scientific">
<metadata>
<property name="mimetypes">text/x-Julia;application/x-Julia</property>
<property name="globs">*.jl</property>
<property name="line-comment-start">#</property>
</metadata>
Tout le reste a été conservé tel quel, et j'ai enregistré le fichier sous le nom Julia.lang
. Néanmoins, lors de la réouverture de gedit, le même problème se produit. De plus, si je sélectionne l'entrée Matlab dans le menu de coloration syntaxique, le formatage est effectué correctement (selon les règles de Matlab), même si matlab.lang
et Julia.lang
ont exactement les mêmes définitions de syntaxe!
Que pourrais-je faire de mal? Ce gars semblait avoir le même problème, mais il n'a jamais été révélé dans ce fil comment il l'a résolu (s'il l'avait jamais fait). Des idées?
Mise à jour : mon erreur était de ne pas changer l'identificateur de contexte, comme l'a souligné @carandraug dans sa réponse. Cependant, j’ai eu d’autres problèmes que je mentionnerai ici au cas où ils aideraient quelqu'un:
def.lang
pour les commentaires monolignes de Julia, mais cela me rapportait beaucoup d'erreurs. Il s'avère que lorsqu'un contexte de référence est utilisé, l'attribut id
ne peut pas être défini. En passant de <context id="comment" ref="def:Shell-like-comment" />
à <context ref="def:Shell-like-comment" />
, les erreurs ont disparu. Je pense que le document de référence (ainsi que le didacticiel) devrait mentionner cette mise en garde. J'ai édité le page wiki pour le signaler.<style id="string">
a bien été défini dans def.lang
). Toutes les clarifications à ce sujet sont les bienvenues dans les commentaires :-)Une dernière suggestion à tous ceux qui développent de nouvelles langues surlignent les définitions de gedit: n'oubliez pas de lancer gedit depuis la ligne de commande et de regarder la sortie de la console!
Je ne sais pas pourquoi votre fichier Julia.lang
original ne fonctionne pas car vous ne montrez pas le code source, mais celui sur lequel vous vous êtes fondé matlab.lang
ne fonctionnera pas car il n'y a pas de contexte à l'intérieur de <definitions>
avec le même id
que vous avez mentionné pour <language>
.
Fondamentalement, vous dites que la id
de ce langage est Julia
, mais il n'y a pas de contexte dans lequel cette id
est définie. Recherchez donc <context id="matlab"
( ligne 149 du HEAD actuel ) et remplacez-le par Julia
.
Un fichier lang est généralement organisé en un ensemble de contextes individuels pour les fonctionnalités de langage mises en surbrillance, qui sont ensuite regroupés dans un bloc principal avec le même id
que le langage et des références aux autres contextes.