Keymap for when region is active
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
selected.el Bugfix Feb 22, 2017


selected.el provides the selected-minor-mode for Emacs. When selected-minor-mode is active, the keybindings in selected-keymap will be enabled when the region is active. This is useful for commands that operates on the region, which you only want bound to a key when the region is active. selected.el also provides selected-global-mode, if you want selected-minor-mode in every buffer.

selected-keymap has no default bindings. Bind it yourself:

(require 'selected)
(define-key selected-keymap (kbd "q") #'selected-off)
(define-key selected-keymap (kbd "u") #'upcase-region)
(define-key selected-keymap (kbd "d") #'downcase-region)
(define-key selected-keymap (kbd "w") #'count-words-region)
(define-key selected-keymap (kbd "m") #'apply-macro-to-region-lines)

It is cleaner with use-package:

(use-package selected
  :ensure t
  :commands selected-minor-mode
  :bind (:map selected-keymap
              ("q" . selected-off)
              ("u" . upcase-region)
              ("d" . downcase-region)
              ("w" . count-words-region)
              ("m" . apply-macro-to-region-lines)))

Then activate it with M-x selected-minor-mode. It can be a good idea to add selected-minor-mode to the hooks of the major-modes where you want it activated. selected-off is a function which deactivates the keybindings until the next time the region becomes active. This is useful when you want to execute a command on the region, but then disable selected-minor-mode in favour of other commands like multiple-cursors.

You might have other minor-modes which conflict with selected, such as worf, lispy or ryo. In that case you can use (setq selected-minor-mode-override t).

Major mode specific bindings

You may want some keybindings to operate on the region, but only if you’re in a certain major-mode. This is possible if you create a keymap named selected-<major-mode>-map (for instance selected-org-mode-map) and add the mode-specific bindings there. Here’s an example, using use-package:

(use-package selected
  :ensure t
  :commands selected-minor-mode
  (setq selected-org-mode-map (make-sparse-keymap))
  :bind (:map selected-keymap
              ("q" . selected-off)
              ("u" . upcase-region)
              ("d" . downcase-region)
              ("w" . count-words-region)
              ("m" . apply-macro-to-region-lines)
              :map selected-org-mode-map
              ("t" . org-table-convert-region)))

Installation and setup

selected.el is on MELPA, so the easiest way is to install it from there using M-x package-install. MELPA needs to be in your package-archives:

(add-to-list 'package-archives '("melpa" . "") t)

If you add (selected-global-mode) to your init-file, or if you add selected-minor-mode to a hook, please do so towards the end of your init-file. This is in order to prioritize the bindings in selected-keymap over other minor-modes.

Recommended resources

Here’s some functions and packages that are useful with selected.el:

Feel free to suggest additions to this list!


Added selected-global-mode.