NonGNU ELPA - swsw


Simple window switching
swsw-2.2.tar, 2022-Jul-09, 60.0 KiB
swsw Mailing List <~dsemy/>
Browse ELPA's repository
CGit or Gitweb

To install this package, run in Emacs:

M-x package-install RET swsw RET

Full description

swsw (simple window switching) provides a minor mode for switching
to windows using IDs assigned to them automatically.


Enable `swsw-mode':


For use-package users:

(use-package swsw

When `swsw-mode' is active:
- A window ID is displayed using a mode line lighter or a display
  function (see `swsw-display-lighter').
- Window IDs are assigned to all windows on all frames except for
  the minibuffer(by default, see `swsw-scope').
- `other-window' (C-x o by default) is remapped to `swsw-select'.

C-x o ID switches focus to the window which corresponds to ID.

C-x o m switches focus to the minibuffer if it's active.

C-x o 0 ID deletes the window which corresponds to ID.

More commands can be added through `swsw-command-map':

(define-key swsw-command-map (kbd "a") #'my-command)

You can customize `swsw-mode' using the customize interface:

M-x customize-group RET swsw RET

For more information see info node `(swsw)'.

Old versions

swsw-2.1.1.tar.lz2022-May-259.96 KiB


swsw NEWS -- history of user-visible changes. -*- mode: outline -*-
See the end of the file for an explanation of the versioning scheme.

* 2.2

** Rework display functions
'swsw-display-function' has been replaced by 'swsw-display-lighter',
display functions should now be added to 'swsw-mode-hook'.
For backwards compatibility, 'swsw-display-function' has been
redefined as an obsolete alias of 'swsw-display-lighter', and
'swsw-mode' currently still handles cases where the value of
'swsw-display-lighter' is a function.
Display functions which are added to 'swsw-mode-hook' shouldn't
require any arguments.

* 2.1.1

** Indicate that some functions are for interactive use only.

* 2.1

** Bump required Emacs version to 27.1.

** Update window information when switching frames.
This fixes several issues when 'swsw-scope' isn't set to t.

** Make 'swsw-select' and 'swsw-delete' respect 'swsw-scope'.
Previously, 'swsw-select' and 'swsw-delete' would not select/delete
the only other window if it was on a different frame and 'swsw-scope'
allowed tracking it.

** Remap 'other-window' to 'swsw-select' when 'swsw-mode' is active.
By default this changes nothing since the default binding for
'other-window' is 'C-x o'.
This change has been made to add (simple) out-of-the-box compatibility
with alternative key binding sets or different Emacs distributions
(provided they bind 'other-window').

* 2.0.2

** No user visible changes.

* 2.0.1

** Add a link to the info node in the customization buffer.

** Add version information to customizable variables.

** Fix 'swsw-delete' when the only other tracked window is the minibuffer.

* 2.0

** Add support for custom window management commands.
Binding a command to a key in 'swsw-command-map' allows you to call that
command instead of selecting an ID.
Currently three such commands are defined: 'swsw-select' (o),
'swsw-select-minibuffer' (m), 'swsw-delete' (0).

** Breaking changes

*** 'swsw-minibuffer-id' is no longer defined or used anywhere, instead
providing the same functionality through 'swsw-select-minibuffer'.

*** 'swsw-select' no longer accepts a window ID as an optional argument.

* 1.1.2

** Apply customization options immediately.
Customizing 'swsw-id-chars' and 'swsw-scope' and applying those changes now
causes all window IDs to update.

** Construct IDs without pre-computing all possible IDs.
This should hopefully help performance when dealing with a very large
number of windows.

** Fix the calculation of the ID length.
Previously the ID length reported was much bigger than it needed to

** Prevent setting the minibuffer ID to a character which can be used to
construct a regular ID, and vice versa.

** Fix window selection occurring when entering an invalid ID.

* 1.1.1

** Bump required Emacs version to 26.1.

** Add missing license information in several places.
The info node was missing license information, and created archives were missing
the LICENSE file.

** Update the homepage of the package to

** Update documentation strings.
Documentation strings for several functions and variables have been updated to
be more clear and to better comply with Emacs' conventions.

** Update installation instructions.
Installation instructions have been updated to indicate the possibility of
installing the package from GNU ELPA.
Note: at the time of writing this, this isn't actually possible yet, but the
instructions have been updated since I'm expecting this to be possible soon.

* 1.1

** Add the ability to customize the scope of 'swsw-mode'.
'swsw-scope' controls in which frames 'swsw-mode' tracks windows.

** Fix conditional display functions potentially breaking when the user presses
'C-g' ('keyboard-quit') while reading a window ID.

** Bind 'C-x o' to 'swsw-select' in 'swsw-mode-map' by default.

** Add an info node.
An info node (swsw) has been added which documents all user facing parts of the
package in detail.

* 1.0

** Add support for multi-character IDs.