v1.3.0
This is a maintenance-heavy release which comes with a fair bit of reworked internals, particularly with handling of transient scope/state. Some of these changes are exposed as stable interfaces, and may provide more options to the user for extending the menus.
Other highlights include a merging of Magit commands with the main menu to help with generalizing to other version control systems, and the addition of a standalone compile command in disproject-dispatch
.
Added
- Add compilation command
disproject-compile
to the main dispatch menu. This provides a more accessible compile command compared to the custom suffixes that also matches the defaultC-x p c
key-bind forproject-compile
. - Support
project-current-directory-override
, which can be reliably used now to e.g. set the initial selected project for dispatch commands. - Add the
disproject-prefix
class, which should make it easier to add new transient sub-prefixes to the menu. - Add the
disproject-scope
anddisproject-project
classes, which provide interfaces for interacting with the transient scope for Disproject prefixes. This replaces the previous implementation of passing state around menus, and should offer more benefits - like the improved state-tracking noted below - moving forward. - Add new command
disproject-vc-status
, which replacesdisproject-vc-dir
anddisproject-magit-status
as a more versatile VC status command in the main dispatch menu. This is customizable throughdisproject-vc-status-commands
, and is pre-configured to usemagit-status
(if available) for git-backed projects. - Include
disproject-vc-status
anddisproject-magit-todos-list
in the Main commands section.
Changed
- Bump transient dependency version to 0.8.0.
- Improve state-tracking while navigating through Disproject menus. This notably allows for easier deferring/caching of state, so prompts to e.g. apply per-project custom suffixes will show up just once (and only when needed) for each transient "session" until the menu closes.
- Automatically use the current project if suffix commands (e.g.
disproject-find-file
;disproject-shell
) are called and are unable to find a selected project from transient scope. When there is no current project, a prompt to select a project will occur as it has before. - Allow version control commands to be invoked in the main dispatch menu when no project is selected. This will trigger a prompt to select one, like the other commands.
- Apply directory-local variables in
disproject-with-environment
so commands likedisproject-compile
respectcompile-command
set from dir-locals, for example. - Use
disproject-prefix
as the prefix class for all Disproject menus that make use ofdisproject-scope
.
Deprecated
- Deprecate the optional
project
argument for some dispatch commands as they are now redundant with the support forproject-current-directory-override
. Removal is set for at least 1 month after this release. - Deprecate
disproject-magit-commands-dispatch
. Commands from this menu have been moved intodisproject-dispatch
, with the exception ofmagit-dispatch
andmagit-file-dispatch
; these may still be accessed through the Magit-provided key-bindsC-x M-g
andC-c M-g
, respectively. Removal is set for at least 1 month after this release. - Deprecate
disproject-vc-dir
anddisproject-magit-status
, both of which have been replaced bydisproject-vc-status
. Removal is set for at least 1 month after this release.
Fixed
- Breaking: Prevent situations where the
disproject-process-buffer-name
function can unintentionally cause prompts for a selected project to occur more than once. This changes the function signature to make the project directory argument explicit, and is a breaking change.
Removed
- Remove redundant
project
argument fromdisproject-manage-projects-dispatch
. This didn't actually do anything.