Simple global minor mode for working with a collection of source code files in a directory tree, a “project”. Lisp:projman.el


projman makes it easy to switch between multiple projects and automatically setup your emacs environment correctly for each.

A project is identified by a root directory and a series of project keywords, variables and hook functions that are applied when the project is opened. Each project can also maintain a list of open buffers, closing them when quiting a project and automatically restoring them when opening a project (similar to desktop-mode). There are also a series of commands that can be applied to the files of a project.


Use projman-projects to define your projects and options. (see doc string for details)

 (setq projman-projects
          :root "c:/_proj/myproject"
          :ignore-dirs ("tests")
          :type c
          :open-hook (lambda () (global-auto-revert-mode 1))
          :compile-command " c:/_proj/myproject/myproject.sln /build Debug"

Load the projman.el library and execute projman-mode to start.


projman-switch-project is used to switch between projects. This will setup the project environment and optionally restore buffers from the previous session.

Once a project is active there are also a series of commands that can be used (see projman.el for more)

A project can also be created on the fly using projman-create-project but it currently only allows a small number of options to be specified interactively.

If projman-use-active-file is non-nil (the default) projman will record the open buffers when a project is closed. These will then be automatically visited when the project is later opened. If projman-lazy-load-buffers is non-nil this will be done is a lazy fashion. See also projman-close-buffers-when-close-project to automatically close the buffers when existing a project.


Because projman makes use of the find command it will only work on a unix type environment, but windows+cygwin works fine provided that cygwin’s find command is used instead of the windows find command.

See projman-find-command for a way to specify the command path if needed.

CategoryProgramming CategoryProgrammerUtils CategoryProject