ctag игнорирует классы в c ++ - PullRequest
2 голосов
/ 22 октября 2010

как сделать учетную запись ctags для класса в с ++?при переходе к тегу функции я получаю то же имя функции, но в неправильном классе.

B b;b.init ();

и есть

A :: init () {} B :: init () {}

я наведу курсор на initb.init () и переход к A :: init () {} вместо B :: init () {}.

Обратите внимание, я не использовал a и b в своем коде.так что это может не сработать, если вы запустите ctags.если это не распространенная проблема, я могу опубликовать фактический код.

Ответы [ 3 ]

3 голосов
/ 22 октября 2010

Это не решит вашу исходную проблему, но может помочь следующее сопоставление:

nnoremap CTRL+] :exe 'tj' expand('<cword>')<CR>

По крайней мере, CTRL+] покажет вам меню выбора, когда есть несколько определенийinit().

1 голос
/ 22 октября 2010

Я не знаю ни одного метода, чтобы сделать это, так как это потребовало бы, чтобы vim выполнял синтаксический анализ c ++. В этой ситуации я использую :tselect, чтобы показать весь список и выбрать один.

0 голосов
/ 22 октября 2010

Я написал lh-tags , чтобы решить эту проблему [Для этого потребуется lh-vim-lib .]

Он не распознает, является ли b буквой A или B, но предлагает небольшой графический интерфейс для выбора тега, к которому мы хотим перейти.

Смотри как интерактив :tselect. Поместите курсор на идентификатор и введите <c-w><m-down> в обычном режиме (который настраивается). Также предлагаются способы построения и обновления базы ctags на <c-x>ta и :w, учитывая, что для текущего проекта было установлено g: / b:ctags_dirname.

...