Vim регион с ключевыми словами в шаблонах синтаксиса

764
user14416

Мне нужно создать пользовательский регион vim с определением классов и структур. Код, например,

syn region myCxxClass start="\(class\|struct\)\_[ \t]\+" end="}[^;]*;" transparent 

Шаблоны для начала и конца, вероятно, будут изменены, но проблема в том, что этот тип региона не работает, потому что classи structявляются ключевыми словами.

Как обойти эту проблему?

1

1 ответ на вопрос

2
Ingo Karkat

Вы правы в отношении соответствия ключевого слова предотвращению совпадения вашего нового региона. Чтобы обойти это, вам нужно переопределить ключевые слова, которые будут содержаться в вашем регионе:

syn clear cStructure syn clear cppStructure syn keyword cStructure struct contained syn keyword cppStructure class contained syn region myCxxClass start="\(class\|struct\)\_[ \t]\+" end="}[^;]*;" contains=cStructure,cppStructure