A project is a collection of files used for producing one or more programs. Files that belong to a project are typically stored in a hierarchy of directories; the top-level directory of the hierarchy is known as the project root.
Whether a given directory is a root of some project is determined by the project-specific infrastructure, known as project backend. Emacs currently supports two such backends: VC-aware (see Version Control), whereby a VCS repository is considered a project; and EDE (see Emacs Development Environment). This is expected to be extended in the future to support additional types of projects.
Which files do or don’t belong to a project is also determined by the project backend. For example, the VC-aware backend doesn’t consider “ignored” files (see Ignore Version Control Files) to be part of the project. See its entry below for description and related options.
If this user option is non-nil, Emacs displays the name of the
current project (if any) on the mode line; clicking mouse-1 on
the project name pops up the menu with the project-related commands.
The default value is nil.