Плагин тегов Vim отображает теги C ++ дважды - PullRequest
1 голос
/ 20 октября 2011

Я использую плагин "taglist" в vim для навигации по исходным файлам в моем проекте, но я столкнулся с проблемой, свойственной работе с файлами C ++ (в отличие от C; это может случиться с другими языками, такими как Java) .

Для каждой функции в файле будут отображаться два тега: один полностью определен, а другой нет, то есть:

initialise [()]
ClassName::initialise [()]
update [()]
ClassName::update [()]

и пр. Это понятно, так как мой файл ctags генерируется с --extra = + q, что, как указано в man-странице для ctags,

Включите [s] дополнительную запись класса для каждого тега, который является членом класса (для языков, для которых эта информация извлекается; в настоящее время C ++, Eiffel и Java). Фактическая форма квалифицированного тега зависит от языка, из которого был получен тег (использование формы, наиболее естественной для определения квалифицированных вызовов на языке). Для C ++ это в форме "class :: member"; для Eiffel и Java это в форме "class.member". Это может упростить определение местоположения определенных тегов, когда в файле тегов встречается несколько раз имя тега. Однако обратите внимание, что это может потенциально более чем удвоить размер файла тега.

Поэтому этот параметр полезен для меня, когда я использую Ctrl +] для навигации и т. Д., Поэтому я предпочел бы сохранить его, но я бы предпочел, чтобы квалифицированные версии были удалены в меню taglist. Я искал ответ, но не нашел ничего связанного с этой проблемой; Удивительно, но я думаю, что OmniCPPComplete рекомендует использовать --extra = + q, поэтому я ожидаю, что многие программисты на C ++ будут его использовать.

Ниже приведены мои ctags и настройки taglist. Любая помощь приветствуется!

~ / .ctags:

--c++-kinds=+p
--fields=+iaS
--extra=+q

~ / .vimrc (извлечены настройки списка тегов)

let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Process_File_Always = 1
let Tlist_File_Fold_Auto_Close = 0
let Tlist_Enable_Fold_Column = 0
let Tlist_Use_Right_Window = 1
let Tlist_Show_One_File = 1
let Tlist_Ctags_Cmd = 'ctags'

1 Ответ

3 голосов
/ 25 октября 2011

Ответ смотрел мне в лицо!Я не осознавал, что taglist каждый раз запускает свои собственные ctags, а не просто использует мой файл тегов.Все, что мне нужно было сделать, это явно отключить эти специфические настройки C ++ в команде ctags taglist, таким образом:

let Tlist_Ctags_Cmd = 'ctags --extra=-q --c++-kinds=-p'

Надеюсь, этот пост пригодится всем, у кого такая же проблема!

...