2010-04-26 5 views
1

La mise en évidence de la syntaxe de Vim pour XML/XSL est excellente, sauf qu'elle désactive toute mise en évidence de la syntaxe dans les régions CDATA. Existe-t-il un moyen d'activer la coloration syntaxique dans les régions CDATA? Au travail, nous avons beaucoup de code XSL intégré dans d'autres documents XML. Ce serait génial si je pouvais obtenir tout le bien de l'édition XML pour le code XSL incorporé sans avoir à retirer temporairement les balises CDATA, ou copier le contenu CDATA dans un fichier temporaire.Comment mettre en évidence la syntaxe XML dans les éléments CDATA dans Vim?

Exemple:

<root> 
    <with type="xsl"><![CDATA[ 
     <xsl:template match="/"> 
      <!-- XSL content here --> 
     </xsl:template> 
    ]]> 
    </with> 
</root> 

Le XSL est toujours contenu dans, donc il y a quelque chose à faire correspondre.

Nous incluons parfois aussi Javascript dans les régions CDATA. Ce serait bien d'activer la mise en évidence de la syntaxe Javascript pour ces régions.

Répondre

0

Ce n'est pas possible.

J'ai laissé cette question ouverte pendant 9 mois sans progrès, et ma propre recherche n'a rien trouvé d'utile. Ainsi, je n'ai pas d'autre choix que de conclure que ce n'est tout simplement pas possible.

0

Vous devez modifier le script de mise en évidence de la syntaxe fourni avec vim (il se trouve dans /usr/share/vim/vim72/syntax/xml.vim sur mon système). Cependant, je suis à peu près sûr que c'est une mauvaise idée - vous serez sous l'illusion que le contenu de la section CDATA est en fait du XML et ce n'est définitivement pas le cas - puisque c'est dans une section CDATA.

Afin de gérer le javascript embarqué (ce qui me semble moins risqué), vous devrez également créer un surligneur de syntaxe modifié. Un bon endroit pour commencer à chercher des informations sur la façon de le faire serait le XHTML syntaxe surligneur pour vim - qui prend en charge les langues intégrées

+0

On dirait que vous pouvez augmenter un fichier de syntaxe en plaçant vos modifications dans un '~/.vim/après le fichier/filetype.vim'. Je pourrais donc modifier les règles de mise en évidence de la syntaxe pour xml en créant '~/.vim/after/xml.vim'. Je ne sais pas trop quoi mettre dans le fichier ... –

+0

Ah, j'avais oublié ce fichier (je suis passé de la plupart du temps à la plupart des éditeurs de GUI ces jours-ci). C'est probablement une question que vous devriez poser sur les listes de diffusion de vim que je suspecte –

2

La directive syntax include est spécifiquement destinée à accomplir ce genre de chose, et xml.vim (dans les versions récentes, le vôtre peut varier) a un groupe « crochet » appelé xmlCdataHook que vous pouvez remplacer par vos propres fichiers de syntaxe.

Ouvrez votre fichier de syntaxe xml.vim et ajoutez cette ligne:

syn include @xmlCdataHook <sfile> 

Cela vous donne une syntaxe XML mettant en lumière l'intérieur des sections CDATA. Pointez vers un autre fichier comme <sfile>:p:h/javascript.vim afin d'obtenir la mise en évidence de javascript.

Vous pouvez éviter d'éditer le fichier xml.vim et il suffit d'ajouter votre propre crochet de syntaxe pour les sections CDATA:

syntax include @JS $VIMRUNTIME/syntax/javascript.vim 
syntax region start=/\V<![CDATA[/ end=/\V]]>/ [email protected] 
+0

J'ai essayé ceci et cela ne fonctionne pas. Le code XML dans la section CDATA continue d'être traité en texte brut. Dois-je remplacer par quelque chose? –

+0

Non, fait référence à "ce fichier". – Apocalisp

+0

D'accord, aucune idée de pourquoi je ne peux pas faire fonctionner ça? J'utilise Vim 7.3 sur Ubuntu 11.10. –

Questions connexes