Langage "extension" d'un autre

Ymox
2011-11-24
2012-11-13
  • Ymox
    Ymox
    2011-11-24

    Bonjour,

    Je me suis plongé il y a peu dans l'outil qui permet de définir un langage personnalisé pour Notepad++. J'ai réussi à le définir en partie, mais je me heurte à un problème que je ne saurais s'il est actuellement possible de résoudre.
    Mon langage est une "extension" du HTML, où un équivalent à PHP (il s'agit du langage pour les templates Twig http://twig.sensiolabs.org/). Seulement, ben je n'ai pas la coloration syntaxique pour le HTML qui se trouve dans mes fichiers, ou à l'inverse, j'ai la coloration syntaxique pour le HTML, mais pas les éléments Twig.

    Y a-t-il actuellement moyen de créer un langage avec de telles relations avec un autre ?

    Merci

     
  • cchris
    cchris
    2011-11-26

    Si l'autre langage était lui aussi un UDL, oui: il suffirait alors d'utilisr "Enregistrer" qui en réalité crée un doublon du langage de base sous un autre nom.
    Mais ceci ne fonctionne pas pour étendre un langage fourni popar Scintilla, tel que HTML ou PHP.
    La seule solution est d'écrire un colorateur (lexer) à partir du langage de base, et :
    soit  de recompiler Scintilla en l'y adjoignant
    soit d'en fauire un plugin de langage externe.

    La modification des listes de mots clé de HTML ou PHP ne convient pas?

    CChris

     
  • Ymox
    Ymox
    2011-11-28

    Je n'ai pas tenté l'ajout de mots-clés, je regarderai à l'occasion.

    Le but était d'avoir un background différent entre le HTML et Twig, et là, je ne sais pas si c'est faisable en augmentant simplement les listes, même si j'extrapole volontiers vers le fait que ce n'est justement pas possible.
    De plus, je ne saurais pas comment traiter les commentaires…

    Un plugin de langage externe, dis-tu ? Ce serait intéressant, en effet… D'ici que j'aie le temps, on verra si quelqu'un d'autre se lance ^^

    Merci cchris

     
  • cchris
    cchris
    2011-12-01

    L'arrière plan général est un atribut du thème et non du langage. La seule solution alors serait de créer un thème (à partir d'un qui exist, ce sera plus simple), et de basculer dessus en temps voulu.
    Si tu voulais avoir un fond différent sur des plages différentes du document, là je ne suis même pas sûr que ce soit possible. Et pas évident à faire si ça l'est.

    CChris

     
  • Ymox
    Ymox
    2011-12-23

    Oups, je ne suis pas revenu ici depuis un moment…

    Quand je parle d'arrière-plan différent, c'est simplement que, pour PHP, j'ai une couleur de fond par défaut qui n'est pas totalement du noir, et pour le HTML, c'est du noir "à 100%", ce qui fait que j'ai bien deux tons dans mes fichiers HTML+PHP – de même avec HTML+CSS, HTML+JavaScript, etc.. Pour le petit morceau de Twig que j'avais réalisé, c'était pareil, la coloration syntaxique du HTML en moins. C'est donc faisable, je me suis juste très mal exprimé sur ce que je souhaitais faire.

    J'avais aussi cherché une coloration syntaxique pour Django, du fait que Twig s'en inspire grandement, mais je n'ai pas réussi à trouver – ç'aurait été une bonne base. Je vais continuer à chercher, j'ai des vacances qui arrivent…

     
  • cchris
    cchris
    2012-01-26

    Les versions récentes de Scintilla incluent un nouveau lexer HTML qui reconnaît Django. Mais j'ignore s'il reconnaîtra Twig, et de toutes façons il n'est pas encore dans N++.
    C'st faisable, mais uniquement en changeant le lexer fourni par Scintilla et en recompilant SciLexer.dll.

    CChris