2013-05-28 3 views
0

Я пытаюсь создать свою собственную схему выделения Objective-C для vim. Проблема в том, что когда я определяю какое-то правило с contained, оно все еще применяется, даже если нет правил, содержащих этот. У меня есть это в моей objc.vim для целей тестирования:vim синтаксис подсветка сверху c.vim, "содержать" не совсем работает

syntax clear 
runtime! syntax/c.vim 
syn match firstComponent "[_A-Za-z0-9()]*:" contained 
hi link firstComponent Function 

Я подозреваю, что это потому, что c.vim имеет много правил с contained=ALLBUT поэтому они включают мое правило, а также. Есть ли способы обойти это?

Спасибо.

PS Я строю свою собственную схему, чтобы выделить методы, потому что one, который я использовал раньше, медленный, в частности, соответствие меток медленное, я сделал сокращение, которое показывает это. Я подозреваю, что это может быть из-за проблемы выше. Сложные внутренние правила встречаются повсюду.

ответ

1

Ваша догадка правильная, это связано с contained=ALLBUT. Ограничения на повторное использование существующего синтаксиса. Хотя вы можете попытаться переопределить некоторые элементы, наступает момент, когда это становится чрезмерно утомительным.

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

Смежные вопросы