- Disproject
Disproject is a [[https://www.gnu.org/software/emacs/][GNU Emacs]] package that implements [[https://github.com/magit/transient][Transient]] menus for managing and interacting with project files. It aims to provide a featureful, yet extensible interface from which users can intuitively dispatch commands on projects.
Some of its notable features include:
- a main menu with access to many of the built-in project library's commands and other project-aware commands;
- auto-detection of current project as the default project to act on from the menu;
- options for switching to other projects from the menu in order to execute commands elsewhere;
- a menu for finding common "special" project files, like the dir-locals file;
- a menu for custom project-local suffix commands;
- and display-buffer override options, to control where commands should display buffers to.
An Info manual is included with this program under the name =disproject=, which can also be viewed in the Org format at [[file:doc/disproject.org]].
This package was inspired by the ~project-switch-project~ command, from the built-in project library. Users may also draw similarities to the Projectile library's ~projectile-commander~.
[[file:images/disproject-dispatch.png]]
See [[file:images/][images]] for more screenshots of Disproject menus.
** Installation
[[https://melpa.org/#/disproject][file:https://melpa.org/packages/disproject-badge.svg]] [[https://stable.melpa.org/#/disproject][file:https://stable.melpa.org/packages/disproject-badge.svg]] [[https://packages.guix.gnu.org/packages/emacs-disproject][file:https://packages.guix.gnu.org/packages/emacs-disproject/badges/latest-version.svg]]
*** MELPA
Disproject is available in [[https://melpa.org/#/disproject][MELPA]] and [[https://stable.melpa.org/#/disproject][MELPA Stable]]. See [[https://melpa.org/#/getting-started][Getting Started]] instructions for using MELPA.
*** Guix
Disproject is also available as a [[https://guix.gnu.org/][GNU Guix]] package.
The stable version can be found in the ~(gnu packages emacs-xyz)~ module under the name ~emacs-disproject~. It may be installed in the user profile like so:
+begin_src sh
guix install emacs-disproject
+end_src
Alternatively, one may use the package definition in =./guix.scm= to install a development version of Disproject from the repository. For example, to install in the user profile, run the following in this repository's root directory:
+begin_src sh
guix package --install-from-file=guix.scm
+end_src
** Usage
BEGIN Copied text from Getting Started section of manual.
Disproject is usable out of the box. After it is loaded, the only command that needs to be known is ~disproject-dispatch~, which opens a transient interface - referred to as the "main menu" - with access to a collection of commands that the user can choose from to execute on projects.
The following configuration is a suggested minimal setup that can be added to the user's init file:
+begin_src emacs-lisp
(use-package disproject
;; Replace project-prefix-map' withdisproject-dispatch'.
:bind ( :map ctl-x-map
("p" . disproject-dispatch)))
+end_src
END Copied text.
See [[file:doc/disproject.org][the manual]] for more information on using and configuring Disproject.