dsemy.com swsw [Home] [Up]


Emacs package providing a minor mode for switching to windows or
performing actions on them using IDs assigned to them automatically.
Read the manual for more information.


All releases listed in reverse chronological order.

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


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


Version 2.1.1

  • Now available on NonGNU ELPA.
  • Indicate that some functions are for interactive use only.


Version 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).


Version 2.0.2

  • No user visible changes.
    See the Git log for more information.


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


Version 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
    • Custom variable swsw-minibuffer-id is no longer defined or used
      anywhere, instead providing the same functionality through

    • Command swsw-select no longer accepts a window ID as an optional argument.

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

Version 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 documentation strings.
    Documentation strings for several functions and variables have been
    updated to be more clear and to better comply with Emacs'

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

Version 1.0

  • Add support for multi-character IDs.
    IDs can now be constructed from multiple characters taken from
    swsw-id-chars, when there are enough tracked windows. Add support
    for alternate display functions.
  • A new customization variable has been added: swsw-display-function.
    If it is set to a function, that function is used to display window
    IDs instead of the mode line lighter. See the documentation of the
    variable for more information. Two reference functions are
    provided: swsw-mode-line-display-function displays window IDs
    similarly to the way they were displayed before version 0.3.
    swsw-mode-line-conditional-display-function displays window IDs in
    the same way but only when window selection is in progress.


The main repository is hosted at SourceHut.

Copyright © Daniel Semyonov 2020-2022