Я использую плагин TagHighlight в Vim, чтобы получить подсветку моих пользовательских классов и членов C++.Vim не выделяет некоторые слова
Этот трюк, который я нашел there, позволил мне лучше понять, как Vim рассмотрел определенные слова. В некотором смысле я могу задать вопрос сейчас: «Хорошо, почему вы положили это слово в зеленый цвет?»
Самое странное в том, что он работает хорошо, для (многих) случайных кроме случаев, см:
Моих библиотеки имен sf
была выделена, и Вьет говорит hi<CTagsNamespace> trans<CTagsNamespace> lo<Constant>
, когда я спрашиваю его, почему, Великий.
Но std
не имеет, и ответ hi<> trans<cParen> lo<>
.
angle
Моя переменная была замечена как hi<CTagsMember> trans<CTagsMember> lo<Member>
, но его мало братан»speed
не имеет (почему нет?): Это hi<> trans<cBlock> lo<>
.
Итак .. почему? Есть ли способ, которым Vim может действительно прочитать и понять весь мой проект, а затем подчеркнуть его надлежащим образом?
О, я никогда не хотел обвинить Vim (я ф + кг люблю его!). Если я хорошо понимаю, мне просто нужно найти поддержку пространства имен 'std' (я думаю, что« TagHighlight »фактически предоставляет его), и принять некоторые случайные неверные интерпретации. Хорошо! :) .. Просто чтобы убедиться, что тогда (и я не хочу винить в этом ничего): это означает, что Vim на самом деле не понимает * Я использую 'angle' как обычную локальную переменную. И, кажется, нет никакого способа «научить» это еще:/ –
@ Iago-lito Я не читаю код плагина, но я считаю, что он использует список идентификаторов для применения бликов; список получается из ctags, поэтому, если ctags не выполняется по std-коду (или, по крайней мере, заголовкам), он не будет присутствовать в списке для выделения. Из этого списка, вероятно, выделяются все слова на экране, которые соответствуют этому списку, - он не проверяет контекст, поэтому он не может понять, что локальная переменная имеет то же имя, что и поле участника. – mMontu