LINUX.ORG.RU

[Vim] написал плагин, индексирующий все файлы проекта

 


0

0

Всем здравствуйте.

Не уверен, что выбрал правильный раздел, если чего, поправьте, пожалуйста.

В общем, как уже сказано в заголовке, я не смог найти плагин, индексирующий все файлы в проекте, который бы мне понравился, поэтому написал сам:

indexer.tar.gz

http://www.vim.org/scripts/script.php?script_id=3221

Если вы используете плагин project.tar.gz, то indexer может работать как дополнение к плагину project: он парсит файл проектов (который по умолчанию ~/.vimprojects), и если был открыт файл из какого-либо проекта, то будут сгенерированы теги для всех файлов из этого проекта. Конечно, будут установлены соответствующие значения в tags и path. Теги обновляются при сохранении файла.

По умолчанию теги сохраняются в файл ~/.vimtags/tags

Если плагин project вы не используете и не планируете использовать, то нужно создать файл ~/.indexer_files (конечно, можно выбрать другое расположение) вида:

[CoolProject]

/home/user/myproject/src/*.c
/home/user/myproject/src/*.h
/home/user/myproject/inc/*.h

[AnotherProject]

/home/user/myproject2**/*.c
/home/user/myproject2**/*.h
думаю, синтаксис понятен. На всякий случай поясню только, что «/home/user/myproject2**/*.c» значит «все файлы *.c из директории /home/user/myproject2 и всех поддиректорий рекурсивно»

Еще есть очень важная для меня возможность автоопределения корневой папки проекта. Для этого в корневую папку проекта нужно поместить подпапку ".vim" (название тоже, конечно, можно изменить). При запуске indexer будет подниматься вверх по дереву и искать эту директорию ".vim". Если директория будет найдена, то будут запущены все файлы «*.vim» из нее, установлена переменная $INDEXER_PROJECT_ROOT, и теги будут сохраняться в ".vim/tags/tags".

Лично мне это нужно для того, чтобы я мог переносить проект с одного компа на другой, просто копируя всю папку. Чтобы не было никаких ~/.vimprojects, которые нужно копировать отдельно. У меня этот .vimprojects лежит в директории .vim, и в нем указаны не абсолютные пути, а переменная $INDEXER_PROJECT_ROOT, таким образом, я могу перемещать проект куда захочу, и файлы все равно будут индексироваться корректно.

Пожалуйста, если есть желание, потестируйте, критикуйте. Для определения текущего состояния плагина (какой файл проектов был прочитан, какие файлы проиндексированы, прочее) можно воспользоваться командой :IndexerInfo

Спасибо за внимание.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.