Skip to content

Releases: aurtzy/disproject

v1.3.1

13 Dec 19:05
Compare
Choose a tag to compare

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

11 Dec 23:11
Compare
Choose a tag to compare

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 default C-x p c key-bind for project-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 and disproject-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 replaces disproject-vc-dir and disproject-magit-status as a more versatile VC status command in the main dispatch menu. This is customizable through disproject-vc-status-commands, and is pre-configured to use magit-status (if available) for git-backed projects.
  • Include disproject-vc-status and disproject-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 like disproject-compile respect compile-command set from dir-locals, for example.
  • Use disproject-prefix as the prefix class for all Disproject menus that make use of disproject-scope.

Deprecated

  • Deprecate the optional project argument for some dispatch commands as they are now redundant with the support for project-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 into disproject-dispatch, with the exception of magit-dispatch and magit-file-dispatch; these may still be accessed through the Magit-provided key-binds C-x M-g and C-c M-g, respectively. Removal is set for at least 1 month after this release.
  • Deprecate disproject-vc-dir and disproject-magit-status, both of which have been replaced by disproject-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 from disproject-manage-projects-dispatch. This didn't actually do anything.

v1.2.0

28 Nov 21:52
Compare
Choose a tag to compare

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 from compile.

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 to r o (the former is deprecated, but still works as a hidden key-bind).
  • 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

24 Nov 20:00
Compare
Choose a tag to compare

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 of project--list when it's not initialized yet) that had to be manually removed e.g. by deleting the file.

v1.1.0

21 Nov 19:21
Compare
Choose a tag to compare

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, providing multi-occur for project buffers.
  • Included fallback commands for creating new git projects when Magit is not available.
  • Added new command disproject-dir-locals for opening dir-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 the safe-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 from safe-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 with disproject-custom-suffixes.