I've read many questions about project-management in emacs, though they don't seem to be getting at how I like to work (which dates back to Borland days).
Basically, I'd like to create my own hierarchy of files from which I can open files for editing. This would be distinct from the directory structure : Often there are files that make logical sense to be collected together from an editing point of view, but are not in the same directory, etc.
At the moment, I've been working with scitepm, which is a side-bar launcher for the editor SciTE (a Scintilla derivative). But it seems to me that emacs must be able to do something similar - I just can't tease out my specific use-case from the various descriptions of eproject, speedbar, etc...
Any pointers? Or is my workflow hopelessly retro?
Vanilla Emacs, out of the box, offers some features that can help:
Filesets: persistent sets of files --- see (emacs) Filesets
.
Dired can be opened on an explicit set of files, regardless of what directories they are in. Just pass a list of absolute file names as the DIRNAME
argument to command dired
.
TAGS files give you direct or searchable access to "definitions" in a given set of files. A definition can be anything, in principle, but it is typically a function, variable, class, etc. definition (IOW, programming constructs).
Bookmark+ offers some more features that can help (bookmarks are typically peristent):
Dired bookmarks: Any set of files and subdirectories, together with the inserted subdirectories, set of Dired markings, hidden inserted subdirectories, and "omitted" files and subdirs.
Autofile bookmarks: Bookmark any file without even visiting it.
Bookmark tagging: Categorize bookmarks any ways you like. Tags define sets of bookmarks. Sort by tags, search wrt tags,...
Multiple bookmark files: Another way to define sets of bookmarks.
Desktop bookmarks: Emacs session states --- bring back filesets, whatever in a new session.
Composite, or sequence bookmarks combine the effect of multiple bookmarks.
Icicles offers other features that can help:
Here is a good entry point to its support for projects: Icicles - Support for Projects.
It lets you easily save and restore sets of file names persistently (or session only). This includes emacs filesets but also more flexible sets of files and directories. You can complete against a saved set of file names when you use C-x C-f
etc. The file names saved in a collection can be anywhere on your file system (or remote).
It enhances the Bookmark+ features in various ways.
It enhances the use of Emacs TAGS files and code navigation.
It enhances the use of Dired in various ways.
It provides features for searching across a set of files or buffers, including a persistent set.