exuberant-ctags

Excluding directories in Exuberant CTags


I'm working with a very large code base and I find it useful to be selective about which directories are included for use with Exuberant Ctags.

The --exclude option works well to eliminate individual file and directory names (with globing wildcards), but I can't figure out how to get it to exclude path patterns containing more than one directory.

For example, I may want to exclude a directory tests, but only when processing thirdparty\tests (under Windows). The problem is if I just use --exclude=tests I exclude too many directories, including a test directory in the code I'm actively working on.

Here are some things I've tried:

--exclude=thirdparty\tests
--exclude=thirdparty\\tests
--exclude=*\thirdparty\tests
--exclude=*\\thirdparty\\tests
--exclude=thirdparty/tests

Ctags silently ignores all these as evidenced by an examination of the tags file.

How can I exclude a directory only when it is preceded by a given parent directory?

ADDED:

Here's my ctags --version output:

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

Solution

  • At some point it might be easier to define the list of files you do want indexed; save that list to a file, and use ctags -L <filename> to index just the chosen few.

    This lets you use find(1) to prune the directories you don't want to index, e.g.:

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

    would skip all the files in all subdirectories of ./Documentation.