обильные ctags с C, не дающими перенаправления на определение функции должным образом

Я использовал ctags с C в старом проекте, в основном кодируя в Vim. ctags работал нормально [перенаправление отлично]

Теперь кодовая база сильно изменилась, я запустил команду: ctags -R, теперь, когда я делаю Ctrl + ], я не перехожу к определению функции/макроса, как это было раньше, иногда он переводит меня на правильную строку, но в основном это переводит меня на несколько строк выше/ниже фактического определения. Кто-нибудь может помочь?


person Mohit    schedule 20.05.2013    source источник
comment
Дважды проверьте, используете ли вы Exuberant Ctags, а не оригинальные Ctags.   -  person ernix    schedule 20.05.2013
comment
@ernix Я запустил ctags --version Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert Составлено: 14 апреля 2012 г., 13:09:28 Адреса: ‹[email protected]›, ctags.sourceforge.net Дополнительные скомпилированные функции: + подстановочные знаки, + регулярное выражение   -  person Mohit    schedule 20.05.2013
comment
Где в вашем проекте вы создаете этот файл tags?   -  person romainl    schedule 20.05.2013
comment
@romainl, у меня есть каталог A, который содержит каталоги A1, A2, A3, где A1, A2, A3 содержат исходные файлы, я запускал ctags -R в каталоге A, который создавал tags файл только в каталоге A   -  person Mohit    schedule 20.05.2013


Ответы (1)


Похоже, у вас есть файл тега для каждого каталога в вашем проекте. ctags -R изменяет только файл тегов в текущем каталоге. Он не изменяет все файлы тегов рекурсивно. Вот почему, когда вы делаете <C+]>, вы переходите к месту, близкому к фактическому определению.

Чтобы исправить это, у вас должен быть только один файл тегов, и он должен находиться в корне вашего проекта. Затем в вашем vimrc добавьте set tags=./tags;/. Это позволяет vim искать файл тегов, начиная с текущего каталога вверх по дереву, пока не найдет его. (остановка в корневом каталоге)

person FDinoff    schedule 21.05.2013
comment
каталог A является корнем моего проекта, я удалил файл тегов, который находился в каталоге A1, A2. теперь мой проект имеет только один файл тегов, но все равно меня перенаправляет на неправильную строку в исходнике - person Mohit; 22.05.2013
comment
@MohitAhuja Можете ли вы попробовать удалить файл тегов в A и перезапустить ctags -R. Что касается того, почему вы прыгаете не в то место, я не уверен. - person FDinoff; 22.05.2013
comment
Я удалил и перезапустил ctags -R, проблема осталась - person Mohit; 24.05.2013
comment
Я использовал обходной путь, проверив проект из репозитория ниже A. Ran ctags -R. Теперь работаем без забот - person Mohit; 24.05.2013