Как сделать прыжки с тегов vim такими же умными, как OmniCppComplete?
Я генерирую свои теги (Exuberant Ctags 5.9~svn20110310) следующим образом:
ctags --c++-kinds=+p --fields=+iaS --extra=+q -L ctags.files
У меня примерно такая структура классов:
class RenderObject
{
InterpolatedVector offset;
};
class Quad : public RenderObject
{
};
class KeyframeWidget : public Quad
{
void shiftRight()
{
if (!offset.isInterpolating())
offset.interpolateTo(Vector(offset.x+80, 0), 0.1, 0, 0, 0);
}
};
(Код взят из открытого исходного кода Aquaria.)
Если я помечу прыгать offset
(Ctrl - ]), тогда я получаю список каждый offset
в моей кодовой базе. После того, как я наберу offset.
до конца shiftRight()
OmniCppComplete начинает предлагать дополнения только для InterpolatedVector
,
Как сделать так, чтобы мои переходы тегов были такими же умными, как OmniCppComplete?
Просто переходы тегов не используют никакого контекста, поэтому они знают только имена символов? (Это точно так же, как :tag <C-r><C-w><CR>
?) Есть ли альтернатива vim, которая делает их контекстно-зависимыми?
1 ответ
Недавно я начал использовать плагин SmartTag для Vim и считаю его очень хорошим при использовании контекстной информации из окружающего кода C++ для поиска правильного тега.
Вы можете скачать это здесь:
https://github.com/MarcWeber/SmartTag
Чтобы использовать его с Ctrl-], вам нужно использовать релиз Vim с примененным патчем tagfunc. Это здесь: