plugin language for syntax-highlighting notepad++ twig

syntax highlighting - language - Extendiendo las definiciones de idiomas(para resaltar el código) en notepad++



notepad++ user defined language (3)

He estado haciendo desarrollo en TWIG últimamente. Es un lenguaje de plantillas html que es muy simple y robusto.

He configurado notepad ++ para tratar automáticamente los archivos .twig como html. Esto está bien, pero no obtengo ningún resaltado de sintaxis en mis funciones de ramita.

La sintaxis de la ramita es increíblemente simple (por diseño) y sería fácil de agregar a notepad ++. El problema es que todo lo que encuentro sobre este tema se refiere a la creación de una nueva definición de idioma (y no quiero reinventar la definición html), o modificar el color de los bits de sintaxis existentes en un idioma.

¿Hay alguna forma de copiar una definición de idioma y luego modificarla en notepad ++? Si no es así, ¿hay alguna forma en notepad ++ para agregar bits de sintaxis adicionales a una definición de idioma existente?

editar

TWIG es un lenguaje / motor de plantillas html. su sintaxis es la misma que html, con la adición de algunas etiquetas de abrir / cerrar (específicamente {%%}, {{}} y {# #}) para las declaraciones de control. Puedes leer más sobre esto en el sitio web de Twig

editar # 2

Basándome en la respuesta de Brian Deragon, he estado investigando 3 archivos. Aquí está lo que he descubierto / hecho hasta ahora:

  • / plugins / APIs / html.xml - Parece definir palabras clave, para autocompletar. Hice una copia del archivo llamado twig.xml
  • langs.model.xml - De nuevo, una lista de palabras clave, con todos los idiomas en 1 archivo XML. Copié el objeto HTML y reemplacé el nombre y los parámetros ext con twig.
  • stylers.model.xml: tiene una lista de elementos diferentes e información de estilo (color, color, fuente, etc.) para cada uno. Copié la sección HTML y cambié los parámetros de nombre y desc a ramita.

Con los cambios realizados, abrí un archivo twig en notepad ++, esperando verlo en la lista de opciones de idioma. Lamentablemente, no ha aparecido, lo que me lleva a creer que parte de esto está codificado (y por lo tanto, lo que quiero puede que no sea posible).

El stylers.model.xml es interesante, sin embargo. Cada entrada tiene un montón de elementos, definidos de esta manera:

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

Esos parecen estar donde se definen los estilos para los diferentes elementos. Sin embargo, no puedo encontrar ningún lugar donde se definan esos elementos. langs.model.xml tiene una definición para inicio / final de comentarios, pero no para ningún otro delimitador. lo que realmente necesito es un lugar para decirle a notepad ++ que trate a {} como un delimitador, como lo hace para <> ahora.

editar # 3

También estoy viendo esta lista de idiomas definidos por el usuario para notepad ++ http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Language_Files Los idiomas definidos por el usuario usan un motor diferente, pero es posible que pueda encuentre uno que sea similar a html lo suficiente como para poder adaptarlo.


Debería poder copiar y editar el archivo de definición XML (html.xml); siempre que no necesite cosas más allá de lo básico, como plegado de código, coloreado avanzado basado en bloques de manejo de casos o condicionales múltiples, formato separado para caracteres principales, coloreado de etiquetas, comentarios basados ​​en XML, mezcla de idiomas (coloreado de scripts incrustados), soporte para colorear tipos de pato, etc. Si necesita algo "avanzado", debe escribir su propio lexer, en cuyo caso se aplica la mayoría de los siguientes.

Aún así, las plantillas que enumeré a continuación deberían darle una ventaja inicial en su propio archivo de definición de idioma.

Por lo que sé, Notepad ++ utiliza Scintilla Lexers para determinar sus reglas de código.

Tendrá que crear su propio lexer, pero ... el HTML Scintilla Lexer ya está incluido en el código fuente de Scintilla.

Luego insertaría su lexer personalizado utilizando un plug-in , como el Complemento de Resaltador Lua de Gary .

Recursos para construir un lexer personalizado:

Dicho esto, Geany es muy similar a Notepad ++ (basado en el mismo motor, Scintilla), por lo que es posible que desee ver si ya se hizo para Geany, o si hay un proyecto de código abierto para él en las obras. Esto al menos te daría una ventaja.

Si eso no ayuda, hay IDE y editores con soporte Twig integrado, como:

GEdit ha publicado aquí su definición XML del lenguaje, lo que puede ayudar como referencia al crear su propio archivo de definición o lexer; También hay otra plantilla publicada por los chicos de Twig here que podría ser de alguna ayuda.

Estos son los mejores tutoriales específicos de Notepad ++ para crear lenguajes personalizados de lexer / definidos por el usuario que puedo encontrar:

Si desea ser valiente y construir su propia dll de Scintilla, haga referencia a estos subprocesos, para ver a un tipo que lo hizo funcionar y para aparecer en la lista de idiomas (use el mensaje del subproceso anterior / siguiente para ver las respuestas, o el índice del subproceso ; es una lista de correo, por lo que su interfaz de usuario no es la mejor)

Espero que te ayude o te ayude, al menos, a tener una ventaja.



Posible duplicado de esta publicación: https://superuser.com/questions/40876/assigning-custom-extensions-to-a-languages-syntax-highlighting-in-notepad

Todo lo que necesita hacer es agregar su extensión personalizada en Configuración-> Configurador de estilos

Haga clic en HTML y agregue su extensión en el cuadro de User Ext.

EDITAR: Si desea agregar más reglas a su idioma, es posible que tenga que agregar otro XML en notepad ++ -> plugins-> APIs. Si cree que es como HTML, simplemente copie sobre html.xml y guárdelo como twig.xml. Agregue más reglas a este archivo XML