Releases: aurtzy/disproject
v1.3.1
Bugfix release to resolve an issue that could make the menu inaccessible for some users.
Fixed
- Fix issue where fetching the VC backend could fail when the
project-find-functions
hook was configured with other functions that could return project instances in unexpectedly different formats (#4).
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.
v1.2.0
This update consists of mainly quality-of-life / UX changes. Some changes to key-binds have also been made, with deprecations and planned removal time-frames.
Added
- Add
run
custom suffix command type for general shell commands that don't need features fromcompile
.
Changed
-
Display selected-project header for relevant menus other than the main dispatch.
-
Display warning to the user when a custom suffix command type is not recognized instead of silently doing nothing.
-
Change "active projects" references to "open projects" since "active" can be somewhat ambiguous. The latter term is also used by Projectile, so this should give some consistency for those who have used it.
- The key-bind for remembering open projects is also changed from
r a
tor o
(the former is deprecated, but still works as a hidden key-bind).
- The key-bind for remembering open projects is also changed from
-
Prefix all options (currently, just
--prefer-other-window
) with a comma.This will permit eventually showing the options section for all relevant menus, since it's not immediately clear to the user that they can in fact apply to other sub-prefixes; e.g. custom dispatch and magit commands dispatch. Making options available in other menus was not reasonable before as the commands would be in the same "namespace" as other commands, making it easy to cause key-bind conflicts (especially with custom dispatch, which reserves alphanumeric keys for custom suffixes).
Deprecated
- Deprecate symbols and key binds related to "active projects" in favor of their "open projects" alternatives. Removal is set for at least 1 month after this release.
- Deprecate non-comma-prefixed options. Removal is set for at least 1 month after this release.
Fixed
- Fix
disproject-dispatch
not being autoloaded as an interactive function. - Fix case where
disproject-custom-suffixes
was not considered safe if Disproject hadn't been loaded yet.
v1.1.1
This is a fix for an unlikely, but still undesirable bug.
Fixed
- Fixed case where if a user tried to remember active projects when there were actually none open, the known-projects file could be overwritten with an invalid
unset
value (value ofproject--list
when it's not initialized yet) that had to be manually removed e.g. by deleting the file.
v1.1.0
In addition to some new commands, this contains a semi-important fix for the custom dispatch menu. It is particularly relevant to those that have configured the dispatch-custom-suffixes
variable extensively.
Added
- Added new customizable command
disproject-find-line
, providingmulti-occur
for project buffers. - Included fallback commands for creating new git projects when Magit is not available.
- Added new command
disproject-dir-locals
for openingdir-locals-file
, or the personal directory-locals file (.dir-locals-2.el
by default) with a universal prefix argument. - Added custom variable
disproject-custom-allowed-suffixes
for permanently-allowed custom suffixes.
Fixed
- Implemented custom-dispatch-only prompt for allowing a local
disproject-custom-suffixes
value in the menu to fix a few issues:-
Emacs kindly remembers potentially-unsafe values marked as permanently safe across sessions, but in the case of
disproject-custom-suffixes
where it may be changed many times to many different values, it can cause thesafe-local-variable-values
variable to balloon very fast.disproject-custom-allowed-suffixes
is now used instead, which only tracks currently used suffixes. Options to e.g. "save N most recent configurations" may be added in the future.Users who have extensively customized this variable may want to consider
M-x customize
to prune the historical values fromsafe-local-variable-values
. -
The method used to obtain local variables caused the "risky variables" prompt to not actually allow the user to reject applying
disproject-custom-suffixes
; custom suffixes were always displayed even if the user answered "n". -
disproject-custom-suffixes
was not pretty-printed at all, so it could be difficult to properly verify the variable was safe. There is some pretty-printing now.
-
Changed
- Shortened "Extended command" to "Extended cmd." to make the column narrower.
- Marked custom variable
disproject-custom-suffixes
as safe in order to defer the prompt and apply fix withdisproject-custom-suffixes
.