web-dev-qa-db-fra.com

Extension des définitions de langage (pour la mise en évidence du code) dans le bloc-notes ++

J'ai fait du développement en TWIG dernièrement. C'est un langage de template html qui est très simple et robuste.

J'ai mis notepad ++ pour traiter automatiquement les fichiers .twig en html. C'est correct, mais je ne reçois aucune coloration syntaxique sur mes fonctions twig.

La syntaxe twig est incroyablement simple (de par sa conception) et serait facile à ajouter au bloc-notes ++. Le problème est que tout ce que je trouve à ce sujet concerne la création d'une nouvelle définition de langage (et je le fais) ne pas vouloir réinventer la définition html) ou modifier la couleur des bits de syntaxe existants dans une langue.

Existe-t-il un moyen de copier une définition de langage puis de la modifier dans notepad ++? Sinon, existe-t-il un moyen dans notepad ++ d'ajouter des bits de syntaxe supplémentaires à une définition de langage existante?

modifier

TWIG est un langage/moteur de modèle html. leur syntaxe est identique à html, avec l'ajout de quelques balises d'ouverture/fermeture (en particulier {%%}, {{}} et {# #}) pour les instructions de contrôle. vous pouvez en savoir plus à ce sujet sur le site twig

modifier # 2

Sur la base de la réponse de Brian Deragon, j'ai enquêté sur 3 dossiers. Voici ce que j'ai compris/fait jusqu'à présent:

  • \ plugins\APIs\html.xml - Semble définir des mots clés, pour la saisie semi-automatique. J'ai fait une copie du fichier nommé twig.xml
  • langs.model.xml - Encore une fois, une liste de mots clés, avec toutes les langues dans 1 fichier XML. J'ai copié l'objet HTML et remplacé le nom et les paramètres ext par twig.
  • stylers.model.xml - possède une liste de différents éléments et des informations de style (couleur, couleur bg, police, etc.) pour chacun. J'ai copié la section HTML et changé le nom et les paramètres desc en twig.

Ces changements effectués, j'ai ouvert un fichier twig dans notepad ++, en espérant le voir répertorié dans les options de langue. Malheureusement, il n'est pas apparu, ce qui me fait croire que certains d'entre eux sont codés en dur (et donc ce que je veux pourrait ne pas être possible).

Le stylers.model.xml est cependant intéressant. Chaque entrée a un tas d'éléments, définis comme ceci:

<LexerType name="twig" desc="TWIG" ext="">
    <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" />
    <WordsStyle name="COMMENT" styleID="9" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAG" styleID="1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAGEND" styleID="11" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    ...
</LexerType>

Celles-ci semblent être là où les styles sont définis pour les différents éléments. Je ne trouve cependant nulle part où ces éléments sont définis. langs.model.xml a une définition pour le début/fin des commentaires, mais pas pour les autres délimiteurs. ce dont j'ai vraiment besoin, c'est d'un endroit pour dire à notepad ++ de traiter {} comme un délimiteur, un peu comme pour <> maintenant.

modifier # 3

Je regarde également cette liste de langues définies par l'utilisateur pour notepad ++ http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Language_Files Les langues définies par l'utilisateur utilisent un moteur différent , mais je pourrais peut-être en trouver un là-dedans qui est assez similaire au html pour que je puisse l'adapter.

26
MrGlass
10
Banane9

Vous devriez pouvoir simplement copier et éditer le fichier de définition XML (html.xml); tant que vous n'avez pas besoin de choses au-delà des bases, comme le pliage de code, la coloration avancée basée sur des blocs de traitement de cas ou plusieurs conditions, un formatage séparé pour les caractères principaux, la coloration des étiquettes, des commentaires basés sur xml, le mélange des langues (coloration de scripts intégrés), prise en charge de la coloration des types de canards, etc. Si vous avez besoin de quelque chose de "avancé", vous devez écrire votre propre lexer, auquel cas la plupart des éléments ci-dessous s'appliquent.

Même encore, les modèles que j'ai énumérés ci-dessous devraient vous donner une longueur d'avance sur votre propre fichier de définition de langue.


Pour autant que je sache, Notepad ++ utilise Scintilla Lexers pour déterminer ses règles de code.

Vous devrez créer votre propre lexer, mais ... le HTML Scintilla Lexer est déjà inclus dans le Scintilla code source .

Ensuite, vous insérez votre lexer personnalisé à l'aide d'un plug-in , comme Plugin de surligneur Lua de Gary .

Ressources pour créer un lexer personnalisé:

Cela étant dit, Geany est très similaire à Notepad ++ (basé sur le même moteur, Scintilla), donc vous voudrez peut-être voir si cela a déjà été fait pour Geany, ou s'il existe un projet open-source pour dans les travaux. Cela vous donnerait au moins une longueur d'avance.

Si cela n'aide pas, il existe des IDE et des éditeurs avec Twig supporte le support intégré, comme:

GEdit a publié sa définition XML du langage ici , ce qui pourrait être utile comme référence lors de la création de votre propre fichier de définition ou lexer; il y a aussi un autre modèle publié par les gars de Twig ici qui pourrait être utile).

Voici les meilleurs tutoriels Notepad ++ - spécifiques pour créer des lexers/langages définis par l'utilisateur personnalisés que je peux trouver:

Si vous voulez être courageux et créer votre propre DLL Scintilla, référencez ces discussions, pour voir un gars qui l'a fait fonctionner et pour apparaître dans la liste des langues (utilisez le message de discussion précédent/suivant pour voir les réponses, ou l'index des discussions ; c'est une liste de diffusion, donc son interface utilisateur n'est pas la meilleure)

J'espère que cela vous aide ou vous donne au moins plus d'une longueur d'avance!

15
Brian Deragon