Skip to content

Version 1.3

Compare
Choose a tag to compare
@bmag bmag released this 25 Mar 14:48

Summary of Version 1.3

Version 1.3 improves Purpose in several ways.
First, Purpose's package was renamed to "window-purpose" , and Purpose now uses autoloads and automatic tests.
Second, Purpose has some new extensions and features, such as Code1 extension, new display functions and new user commands.
Third, a few bugs have been fixed and integration with several other packages has been introduced. Among these packages are Helm, Magit and Hydra.
See below for a full list of changes.

Next Release

The plan for Purpose's next version is to focus on integrating Purpose with other packages. Packages that do their own kind of window management will probably need special care to make them work with Purpose.

One such notable package is Helm. Currently, Purpose has basic support for Helm that should work fine, but they may be some rough edges. Purpose's support for Helm should be improved in the next version.

Reporting issues and contributing will help significantly, so feel free.

Important changes:

  • Renamed package: The package was renamed from "purpose" to "window-purpose". The source files were renamed as well, but the symbols themselves remain unchanged.
    Hopefully this will help users to find the package, without causing too much trouble for existing users.

Changes

Integration changes and extensions:

  • Integration with Helm and IDO: Purpose works reasonably with Helm. The issue where Purpose would call IDO functions instead of regular functions is resolved: when ido-mode is enabled, Purpose will use IDO. Otherwise, if helm-mode is enabled, Purpose will use Helm.
    There may still be some issues with using Purpose and Helm together, I plan to fully integrate Purpose and Helm in the next release. Reporting issues and any other help is welcome.
    Purpose continues to support IDO fully.
  • Integration with Magit: For users of Magit, two different purpose configurations are available. One configuration gives the same purpose to all Magit buffers, while the other purpose gives a unique purpose for each Magit major mode. To activate, use command purpose-x-magit-single-on or purpose-x-magit-multi-on. To deactivate, use command purpose-x-magit-off.
    See Extensions.
  • Integration with Hydra (issue #31): Fixed issue with Hydra's popup window displaying in the wrong place.
  • Integration with golden-ratio-mode: For users of golden-ratio-mode, proper integration with Purpose is activated by command purpose-x-golden-ratio-setup and deactivated by command purpose-x-golden-ratio-unset.
    See Extensions.
  • New extension: Code1: Code1 is an extension that provides a window layout with one main dedicated edit window, and 3 dedicated side windows (dired, ibuffer, imenu-list). Activate with command purpose-x-code1-setup, deactivate with purpose-x-code1-unset. This extension is not fully developed, so sometimes the dired buffer doesn't update.
    See Extensions.
  • New extensions combining popup-switcher and purpose-switch-buffer-with-purpose: command purpose-x-psw-switch-buffer-with-purpose uses popup-switcher's interface to switch to a buffer with the same purpose as the current buffer. popup-switcher needs to be installed separately.
    See Extensions.

User interface and API changes:

  • New commands and key bindings:
    C-c , 1: purpose-delete-non-dedicated-windows
    C-c , w: purpose-delete-window-at - delete window at top/bottom/left/right (depends on prefix argument)
    C-c , b: purpose-switch-buffer-with-purpose
    C-c , 4 b: purpose-switch-buffer-with-purpose-other-window
    C-c , 5 b: purpose-switch-buffer-with-purpose-other-frame
  • New functions and commands for handling windows at edges (issue #32):
    • Get functions: purpose-get-top-window, purpose-get-left-window, etc.
    • Display functions: purpose-display-at-top, purpose-display-at-left, etc.
    • Delete functions: purpose-delete-window-at-top, purpose-delete-window-at-left, etc.
  • Renaming of variables and functions:
    purpose-default-action-sequence --> purpose-default-action-order
    purpose--change-buffer --> purpose-change-buffer
    purpose-display-buffer-hook --> purpose-display-buffer-functions
  • New hook: purpose-display-buffer-functions: The hook purpose-display-buffer-functions runs after Purpose displayed a buffer (runs at the end of purpose--action-function, if display was successful).
  • New options for purpose-display-fallback: value nil for purpose-display-fallback means to fallback to Emacs' original display-buffer function when Purpose can't display a buffer. Value error means to signal an error. Other possible values are pop-up-window (the default) and pop-up-frame.

General changes:

  • Automatic tests: Purpose gained automatic tests through Travis CI.
  • Error with eager macro expansion is fixed (issue #35)
  • Purpose now uses autoloads
  • Fixed bug with compilation-next-error-function (issue #17)

Plans for the future:

  • Integration with other packages: I plan to make Purpose work well with other packages. Packages that do their own window management will probably need special care (e.g. Helm, Popwin). Reporting issues and contributing would help significantly, so feel free.

...