Во-первых, .vimprj , а не .vimproj, так ведь?
Во-вторых, omnicppcomplete видит ровно столько же, сколько видит сам Vim. Что видит Vim вы можете узнать, набрав :set tags?
Единственное требование, насколько я знаю — это чтобы теги были сгенерированы с опциями --c++-kinds=+p --fields=+iaS --extra=+q — все это у вас тоже есть, насколько вижу.
Я не являюсь знатоком omnicppcomplete, поэтому не смогу помочь. У меня проблем с этим не было.
Блин, опять ответил комментом к статье :-/ Читайте ниже.
И добавлю еще: вместо omnicppcomplete попробуйте clang_complete. Народ очень хвалит — автодополнение работает четко, без глюков, в отличие от omnicppcomplete. Для его работы не нужны теги вообще.
Я его только потестировал немного — понравилось, но использовать в своих задачах пока не могу, т.к. пишу под микроконтроллеры, и из-за специфики clang не понимает некоторые вещи. Пока руки не дошли приручить его, да и omnicppcomplete, хоть и неидеально, но работает.
Насчет omnicppcomplete: вроде у меня без проблем все заработало, когда я настраивал его впервые. Вот мои настройки, относящиеся к нему: тынц.
Насчет генерации тегов для файлов, не входящих в проект:
Если использовать плагин project, то на данный момент есть только один способ, который я всегда и использую: в вашем случае нужно создать файл /home/victor/development/hist/.vimprj и поместить туда следующий код:
set tags+=/path/to/my/first_lib/tags set tags+=/path/to/my/second_lib/tags
…
То есть, перечислить все файлы тегов для инклудов. Недостаток: если эти файлы тегов еще не сгенерированы, то работать, конечно, не будет. То есть, если, например, я настраиваю свое рабочее окружение на новом компе, то мне нужно открыть в виме каждую либу, чтобы indexer сгенерировал теги для всех них.
У меня в планах сделать возможность подключать другие проекты, чтобы теги для них генерировались автоматически, но пока — так.
Выглядит все хорошо. Должны быть проиндексированы следующие 4 файла: algorithm-list.cpp, bgfg-segm.cpp, main.cpp, viewer.cpp.
Попробуйте навести курсор, например, на имя какого-нибудь метода из этих классов, и нажать Ctrl+].
Если Вим перешел на определение данного метода — значит, миссия моего плагина выполнена (теги сгенерированы), и проблема где-то в настройке omnicppcomplete.
Если же нет (выдал ошибку E426, т.е. tag not found) — то это странно, и тогда приведите, пожалуйста, содержимое файла /home/victor/.vimprojects_tags/hist.
Не припомню, чтобы мой плагин когда-нибудь выдавал мне такую ошибку. Расскажите поподробнее-то:
*) какая версия плагина;
*) используете с .vimprojects или .indexer_files? желательно выложите куда-нибудь используемый файл, я гляну;
*) Вим, наверное, еще сказал вам, в какой строке произошла эта ошибка. Напишите.
Выглядит просто как пиар непонятного поделия под названием «анонимная социальная сеть» с помощью хорошей, годной фортепианной онлайн-радиостанции. Мда.
А скажите, пожалуйста: почему теперь с pianorama.ru переадресовывает на nekto.me/pianorama?
Сверху теперь синяя полоса этого nekto.me, которая бросается в глаза и поэтому немного накаляет.
Конечно, главное в этом сервисе — музыка, но, тем не менее: зачем?
Насчет этой синтаксической конструкции include=… в .indexer_files я сам давно думал, но руки не доходят, т.к. есть другое, более универсальное решение этой задачи.
В корне каждого проекта у меня есть папка .vimprj, в ней может находиться любое количество файлов *.vim, и когда Vim переключается на буфер с любым файлом из этого проекта, то все эти файлы *.vim запускаются.
У меня там есть только один файл my.vim с настройками проекта, например, tabstop, shiftwidth. И если нужно подключить какой-то файл тегов, то я добавляю в этот файл еще «set tags+=/path/to/tags»
То есть, решение вашей задачи: создать в корне проекта папку ".vimprj", создать в ней файл «my.vim», в этот файл поместить строку: «set tags+=/тут/путь/к/вашему/файлу/тегов»
1. А зачем вам это, если не секрет? Такой метод именования был сделан специально, т.к. одновременно в Vim можно открыть несколько проектов, описания которых могут лежать в разных .indexer_files или .vimprojects, и если открыть два проекта, находящихся в разных файлах, но имеющие одинаковые имена, то будет конфликт.
2, 3: няня, я у них поел. Что такое «файл подсветки для проекта»? Что значит «управлять либами», и что это за либы? Расскажите подробнее.
И еще.
Я на всякий случай извиняюсь, но смолчать не могу, мне глаза режет: пишется «подСветка», «проЕкт», а «чтобы» пишется слитно. :-[
Залил новую версию Indexer 3.0, в которой, наконец, реализовал очень важные для меня «фичи»:
1. Теги генерируются в фоновом режиме. Это означает, что независимо от размера вашего проекта, вам не нужно будет ждать, пока весь проект проиндексируется: ctags генерит теги, вы продолжаете работать в vim.
2. Можно в одном сеансе vim открывать файлы из разных проектов, и теги будут сгенерированы корректно для всех нужных проектов. Теги из разных проектов не перемешаются. Это чертовски удобно, когда нужно работать с несколькими проектами одновременно. (например, проекты нескольких сущностей, взаимодействующих между собой)
И это тоже правильно. Когда g:indexer_ctagsDontSpecifyFilesIfPossible == 0, то indexer будет перечислять все файлы при вызове ctags. Т.к. их у вас очень много, то команда получается слишком длинная, и ничего не выполняется.
Когда g:indexer_ctagsDontSpecifyFilesIfPossible == 1, то ctags будет вызван с ключом -R и только для одной директории — "~/workspace/beehonest". Это должно работать.
IndexerInfo говорит все правильно, так и должно быть.
А по тегам не ходит? И посмотрите еще файл тегов /home/kuzma/.vim/tags/beehonest — в нем есть что-то похожее на теги?
Да, об этой проблеме я уже тоже знаю, в скором времени доберусь. У вас используется файл .vimprojects, а при работе с ним плагин умеет запускать ctags только перечисляя все файлы проекта. У вас их много — 2658. Текст команды получается огромный, поэтому возникает ошибка. В скором времени я сделаю, чтобы если установлена опция g:indexer_ctagsDontSpecifyFilesIfPossible, то при работе с .vimprojects плагин будет перечислять не файлы, а папки.
А пока, чтобы плагин заработал, предлагаю временно создать файл ~/.indexer_files следующего содержания:
[PROJECTS_PARENT]
~/workspace
это даст плагину понять, что каждую папку в ~/workspace нужно воспринимать как отдельный проект. В том числе и beehonest будет отдельным проектом.
.vimprj, а не.vimproj, так ведь?Во-вторых, omnicppcomplete видит ровно столько же, сколько видит сам Vim. Что видит Vim вы можете узнать, набрав
:set tags?Единственное требование, насколько я знаю — это чтобы теги были сгенерированы с опциями
--c++-kinds=+p --fields=+iaS --extra=+q— все это у вас тоже есть, насколько вижу.Я не являюсь знатоком omnicppcomplete, поэтому не смогу помочь. У меня проблем с этим не было.
И добавлю еще: вместо omnicppcomplete попробуйте clang_complete. Народ очень хвалит — автодополнение работает четко, без глюков, в отличие от omnicppcomplete. Для его работы не нужны теги вообще.
Я его только потестировал немного — понравилось, но использовать в своих задачах пока не могу, т.к. пишу под микроконтроллеры, и из-за специфики clang не понимает некоторые вещи. Пока руки не дошли приручить его, да и omnicppcomplete, хоть и неидеально, но работает.
.vimprjвы можете прочитать в доке к плагину vimprj.Насчет генерации тегов для файлов, не входящих в проект:
Если использовать плагин project, то на данный момент есть только один способ, который я всегда и использую: в вашем случае нужно создать файл
/home/victor/development/hist/.vimprjи поместить туда следующий код:set tags+=/path/to/my/first_lib/tagsset tags+=/path/to/my/second_lib/tags…
То есть, перечислить все файлы тегов для инклудов. Недостаток: если эти файлы тегов еще не сгенерированы, то работать, конечно, не будет. То есть, если, например, я настраиваю свое рабочее окружение на новом компе, то мне нужно открыть в виме каждую либу, чтобы indexer сгенерировал теги для всех них.
У меня в планах сделать возможность подключать другие проекты, чтобы теги для них генерировались автоматически, но пока — так.
algorithm-list.cpp, bgfg-segm.cpp, main.cpp, viewer.cpp.Попробуйте навести курсор, например, на имя какого-нибудь метода из этих классов, и нажать
Ctrl+].Если Вим перешел на определение данного метода — значит, миссия моего плагина выполнена (теги сгенерированы), и проблема где-то в настройке omnicppcomplete.
Если же нет (выдал ошибку E426, т.е. tag not found) — то это странно, и тогда приведите, пожалуйста, содержимое файла
/home/victor/.vimprojects_tags/hist.:IndexerInfo:IndexerDebugInfo:set tags?*) какая версия плагина;
*) используете с .vimprojects или .indexer_files? желательно выложите куда-нибудь используемый файл, я гляну;
*) Вим, наверное, еще сказал вам, в какой строке произошла эта ошибка. Напишите.
Сверху теперь синяя полоса этого nekto.me, которая бросается в глаза и поэтому немного накаляет.
Конечно, главное в этом сервисе — музыка, но, тем не менее: зачем?
Насчет этой синтаксической конструкции include=… в .indexer_files я сам давно думал, но руки не доходят, т.к. есть другое, более универсальное решение этой задачи.
В корне каждого проекта у меня есть папка .vimprj, в ней может находиться любое количество файлов *.vim, и когда Vim переключается на буфер с любым файлом из этого проекта, то все эти файлы *.vim запускаются.
У меня там есть только один файл my.vim с настройками проекта, например, tabstop, shiftwidth. И если нужно подключить какой-то файл тегов, то я добавляю в этот файл еще «set tags+=/path/to/tags»
То есть, решение вашей задачи: создать в корне проекта папку ".vimprj", создать в ней файл «my.vim», в этот файл поместить строку: «set tags+=/тут/путь/к/вашему/файлу/тегов»
2, 3: няня, я у них поел. Что такое «файл подсветки для проекта»? Что значит «управлять либами», и что это за либы? Расскажите подробнее.
И еще.
Я на всякий случай извиняюсь, но смолчать не могу, мне глаза режет: пишется «подСветка», «проЕкт», а «чтобы» пишется слитно. :-[
1. Теги генерируются в фоновом режиме. Это означает, что независимо от размера вашего проекта, вам не нужно будет ждать, пока весь проект проиндексируется: ctags генерит теги, вы продолжаете работать в vim.
2. Можно в одном сеансе vim открывать файлы из разных проектов, и теги будут сгенерированы корректно для всех нужных проектов. Теги из разных проектов не перемешаются. Это чертовски удобно, когда нужно работать с несколькими проектами одновременно. (например, проекты нескольких сущностей, взаимодействующих между собой)
В связке с gmail работает, и даже довольно удобно.
А если нет, то у вас, может быть, не последняя версия плагина?
Когда g:indexer_ctagsDontSpecifyFilesIfPossible == 1, то ctags будет вызван с ключом -R и только для одной директории — "~/workspace/beehonest". Это должно работать.
А по тегам не ходит? И посмотрите еще файл тегов /home/kuzma/.vim/tags/beehonest — в нем есть что-то похожее на теги?
Да, об этой проблеме я уже тоже знаю, в скором времени доберусь. У вас используется файл .vimprojects, а при работе с ним плагин умеет запускать ctags только перечисляя все файлы проекта. У вас их много — 2658. Текст команды получается огромный, поэтому возникает ошибка. В скором времени я сделаю, чтобы если установлена опция g:indexer_ctagsDontSpecifyFilesIfPossible, то при работе с .vimprojects плагин будет перечислять не файлы, а папки.
А пока, чтобы плагин заработал, предлагаю временно создать файл ~/.indexer_files следующего содержания:
[PROJECTS_PARENT]~/workspace
это даст плагину понять, что каждую папку в ~/workspace нужно воспринимать как отдельный проект. В том числе и beehonest будет отдельным проектом.