Version 1.3
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, ifhelm-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
orpurpose-x-magit-multi-on
. To deactivate, use commandpurpose-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 commandpurpose-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 withpurpose-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.
- Get functions:
- 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 ofpurpose--action-function
, if display was successful). - New options for purpose-display-fallback: value
nil
forpurpose-display-fallback
means to fallback to Emacs' originaldisplay-buffer
function when Purpose can't display a buffer. Valueerror
means to signal an error. Other possible values arepop-up-window
(the default) andpop-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.
...