Я работаю с очень большой базой кода и считаю полезным выбирать, какие каталоги включены для использования с Exuberant Ctags.
Параметр - exclude
хорошо работает для исключения отдельных имен файлов и каталогов (с подстановочными знаками подстановки), но я не могу понять, как заставить его исключить шаблоны путей, содержащие более одного каталога.
Например, я могу исключить каталог tests
, но только при обработке сторонних \ tests
(под Windows). Проблема в том, что если я просто использую - exclude = tests
, я исключаю слишком много каталогов, включая тестовый каталог в коде, над которым я активно работаю.
Вот некоторые вещи, которые я пробовал:
--exclude=thirdparty\tests
--exclude=thirdparty\\tests
--exclude=*\thirdparty\tests
--exclude=*\\thirdparty\\tests
--exclude=thirdparty/tests
Ctags молча игнорирует все это, о чем свидетельствует проверка файла тегов.
Как я могу исключить каталог, только если ему предшествует данный родительский каталог?
ДОБАВЛЕНО:
Вот мой вывод ctags --version
:
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Jul 9 2009, 17:05:35
Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
Optional compiled features: +win32, +regex, +internal-sort
В какой-то момент может быть проще определить список файлов, которые вы хотите проиндексировать; сохраните этот список в файл и используйте ctags -L <filename>
для индексирования только немногих избранных.
Это позволяет вам использовать find(1)
для сокращения каталогов, которые вы не хотите индексировать, например :
find . -path ./Documentation -prune -o -print > indexme
пропустит все файлы во всех подкаталогах ./Documentation
.