emacs-winum/README.org
2016-12-08 19:58:49 +01:00

3.9 KiB

Window numbers for Emacs !

Introduction

Window numbers for Emacs: Navigate your windows and frames using numbers !

This package is an extended and actively maintained version of the https://github.com/nschum/window-numbering.el package by Nikolaj Schumacher, with some ideas and code taken from https://github.com/abo-abo/ace-window.

This version brings, among other things, support for number sets across multiple frames, giving the user a smoother experience of multi-screen Emacs.

Installation

  • Clone the repo:
  cd /path/to/install/folder
  git clone https://github.com/deb0ch/winum.el
  • Add the following to your Emacs configuration:
  (add-to-list 'load-path "/path/to/install/folder/winum.el/")

  (require 'window-numbering)

  (window-numbering-mode)

How to use

Navigate windows

Use M-1 to M-9 to navigate windows numbered 1 to 9.

The functions for selecting windows are the select-window-[1..N] functions, where N is the maximum window number.

See configuration to rebind them any way you prefer.

Delete windows

Use M-1 to M-9 with an Emacs prefix argument to delete a window instead of selecting it.

Configuration

Custom keymap

To define your own bindings and override the default ones, override window-numbering-keymap before activating the mode:

(require 'window-numbering)

(setq window-numbering-keymap (let ((map (make-sparse-keymap)))
	  (define-key map "\M-m 0" 'select-window-0)
	  ; ...
	  (define-key map "\M-m 9" 'select-window-9)
	  map))
(window-numbering-mode)

This way your bindings will not error when the mode is turned off.

Customize options

Several options are available through Emacs' Customize interface under convenience > window-numbering:

  • window-numbering-scope

Frames affected by a number set. Choices are 'frame-local 'visible or 'global.

Default: 'global

  • window-numbering-reverse-frame-list

If t, order frames by reverse order of creation. Has effect only when `window-numbering-scope' is not 'frame-local.

Default: nil

  • window-numbering-auto-assign-0-to-minibuffer

If non-nil, window-numbering-mode assigns 0 to the minibuffer if active.

Default: t

  • window-numbering-before-hook

Hook called before window-numbering-mode starts assigning numbers. The list of windows to be numbered is passed as a parameter. Use window-numbering--assign to manually assign some of them a number. If you want to assign a number to just one buffer, use window-numbering-assign-func instead.

Default: nil

  • window-numbering-assign-func

Function called for each window by window-numbering-mode. This is called before automatic assignment begins. The function should return a number to have it assigned to the current-window, nil otherwise.

Default: nil

Example: always assign the calculator window the number 9:

    (setq window-numbering-assign-func
	  (lambda () (when (equal (buffer-name) "*Calculator*") 9)))
  • window-numbering-mode-line-position

The position in the mode-line `window-numbering-mode' displays the number.

Default: 1

  • window-numbering-window-number-max 10

Max number of windows that can be numbered.

Default: 10

  • window-numbering-ignored-buffers

List of buffers to ignore when selecting window.

Default: '(" which-key")

  • face: window-numbering-face

Face used for the number in the mode-line.