NonGNU ELPA - swsw


Simple window switching
swsw-2.3.tar, 2022-Oct-22, 70.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 0 ID deletes the window which corresponds to ID.

C-x o 1 ID makes the window which corresponds to ID the sole window of
           its frame.

C-x o 2 ID splits the window which corresponds to ID from below.

C-x o 3 ID splits the window which corresponds to ID from the right.

C-x 0 4 ID displays the buffer of the next command in the window which
           corresponds to ID.

C-x 0 t ID swaps the states of the current window and the window which
           corresponds to ID.

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

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

(define-key swsw-command-map (kbd "z") #'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.2.tar.lz2022-Jul-0910.8 KiB
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.3

** Rework window commands
A new macro has been added ('swsw-define-window-command') which
greatly simplifies the creation of window commands; existing commands
now use it and 5 new window commands have been added:
'swsw-delete-other', 'swsw-split-window-below' and
'swsw-split-window-right', which correspond to the built-in commands,
'swsw-selected-window-prefix', which displays the buffer of the next
command in the selected window (Emacs 28+), and 'swsw-swap' which
swaps the state of the current window and the selected window.

* 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.