3 votes

Vim match containedin ne fonctionne pas comme prévu

J'ai essayé d'étendre la syntaxe C dans Vim avec l'exemple du manuel.

Je lance d'abord vim sans aucune configuration :

vim -u NONE test.c

Ensuite, je charge la c-syntaxe et je crée mon extension

syntax on
syntax keyword myword HELP containedin=cComment contained
highlight myword guibg=red

code :

1: /* HELP */
2: int main(int argc, char **argv) {
3:     int HELP = 0;
4:     if(HELP);
5: }

HELP est mis en évidence à la ligne 1 comme prévu. Il est également mis en évidence à la ligne 4. Y a-t-il une explication à cela ?

0voto

jopa Points 800

Vous devez découvrir quel groupe syntaxique "occupe" le HELP dans la troisième ligne qui n'est pas couverte par votre règle syntaxique. :syn list affiche tous les groupes actifs, mais c'est plus facile lorsque vous installez le programme SyntaxAttr.vim - Afficher les attributs de la coloration syntaxique du caractère sous le curseur plugin.

SyntaxAttr me dit que le cBlock correspond à cette syntaxe ; elle doit également être incluse dans votre extension :

syntax keyword myword HELP containedin=cComment,cBlock contained

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X