Подтвердить что ты не робот

Исключение каталогов в Exuberant CTags

Я работаю с очень большой базой кода, и мне полезно выбирать, какие каталоги включены для использования с Exuberant Ctags.

Параметр --exclude отлично работает, чтобы исключить отдельные имена файлов и каталогов (с помощью шаблонов globing), но я не могу понять, как заставить его исключать шаблоны путей, содержащие более одного каталога.

Например, я могу исключить каталог tests, но только при обработке thirdparty\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: <[email protected]>, http://ctags.sourceforge.net
  Optional compiled features: +win32, +regex, +internal-sort
4b9b3361

Ответ 1

В какой-то момент может быть проще определить список файлов, которые вы хотите проиндексировать; сохраните этот список в файле и используйте ctags -L <filename> для индексации только выбранных.

Это позволяет использовать find(1) для обрезки каталогов, которые вы не хотите индексировать, например:

find . -path ./Documentation -prune -o -print > indexme

будет пропускать все файлы во всех подкаталогах ./Documentation.

Ответ 2

ack -f | ctags -L -

ack выведет список всех исходных файлов в указанном каталоге. Вы можете ограничить область заданного языка ack -f ruby. Вы можете исключить и dirs вместе с ним --ignore-dir.