Tuesday, April 24, 2007

Tab Completion

Ever since I've used cvs and subversion I've wanted to exclude the CVS directories and .svn directories from the tab completion list. In the past, I've lackadaisically looked for a solution to this. This problem comes up quite a bit for me when I'm inside the directories of a java project. Most of the time people will break their classes into separate packages, which is exactly what they should do. Hence, you get packages like com.ibm.ltc.eclipse.foobar which correspond to a directory structure like com/ibm/ltc/eclipse/foobar. The problem is that all the classes might be in the foobar directory. Most of the time, in a situation like this, it's nice to start above the com directory and continuously hit tab until you get to the last directory. This assumes there's nothing in the other directories. But if you're using subversion, then there's a .svn directory in each of them. This prevents you from using the tab completion as I've described because it wants you to choose between com and .svn. NO MORE MY FRIEND! I finally got a little frustrated with this today.

I use bash, so I used the following in my .bash_profile to solve the problem:

export FIGNORE=CVS:.svn

This will ignore the CVS and .svn directories for tab completions.