This is a very simple Emacs Lisp extension, intended to work as a ‘find-file’ alternative, that lets you index the files under a certain directory, using include and exclude regular expressions. Once the files are indexed, invoking the ‘find-file-suggest’ function will open a buffer with filename suggestions interactively matching what you are typing in the minibuffer. You can easily navigate this buffer with either the arrow keys or the mouse. The instructions for install and use can be found in the Elisp source file.

I also added ‘ffs-grep’, a function that performs a basic grep on the indexed files, using the same interface. It must be stated that this is a very crude and not terribly efficient function that is in no way meant to replace the real grep, as it simply tries to ‘match-string’ your query against the set of indexed files, no more. If the index does not contain too many files however this can be an acceptable and quick way to check for the occurrence of a certain string, and visit the retrieved files, using the same mechanism.

Update 2009-10-16: I modified the file index so that it’s actually an associative list linking the files to the number of times that they’ve been visited. The list of matching files for a query can then be sorted in decreasing order of this value, thus making the ones that are used the most often percolate to the top.

Update 2009-11-09: I added support for multiple file indexes, as well as a simpler mechanism for creating/refreshing them (and some minor bug fixes).

Update 2010-03-02: I thought of a smarter way to determine which file index to use at startup (if startup dir is a sub-dir of a given file index, then it should have the focus).

You can get it from

Somewhat similar package: PushyCompletion