selected 20170222.34(in MELPA)
Keymap for when region is active

概要

selected.el はregionが設定されているときの
キーマップを設定できるようにします。

たとえば、本設定を施すとregionを指定した後に

  • uを押すと大文字になり
  • dを押すと小文字になり
  • wを押すと単語数を数え
  • mを押すとキーボードマクロを各行に対して実行

したりします。

regionを設定してから
C-x C-uではなくてuで操作できるのですから、
かなり操作性は上がります。

org-modeではregionを指定して
t で表を作成してくれます。

なぜそのようなことができるかというと、
regionが存在するとき限定で
特別なキーマップにアクセスしているからです。

mykie.el でもその機能は含まれていますが、
mykieは複数の機能を持つ新しいコマンドを
定義するアプローチです。

新しいコマンドを定義するため、
元のコマンドをremapするパッケージに対しては
余計な設定を書く必要性が生じることがあります。

selectedは純粋にコマンドを
割り当てるだけなので
シンプルかつ純粋です。

regionが与えられたときに
常に作用するキーマップは
selected-keymap です。

メジャーモード固有のキーマップは
selected-MODENAME-mode-map です。

たとえば、org-modeで
regionが与えられたときには
selected-org-mode-map が使われます。

メジャーモード固有の
キーマップを設定するには、
予め make-sparse-keymap
キーマップを作成してから
キーを割り当ててください。

まれにselectedを
無効にしたいときがあります。

そのときは =
M-x selected-off= (本設定ではq)
を使います。

regionに対して独自のコマンドを
割り当てられるこのパッケージは、
すべてのEmacsユーザにおすすめできます。

ソースコードは短いので
メカニズムも理解しやすいです。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてselectedを使う方は
以下のコマンドを実行します。

M-x package-install selected

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name selected

設定 170225091939.selected.el(以下のコードと同一)

(require 'selected)
;;; 他のパッケージよりもselectedの設定を優先させる
(setq selected-minor-mode-override t)
(selected-global-mode 1)
(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)

(setq selected-org-mode-map (make-sparse-keymap))
(define-key selected-org-mode-map (kbd "t") #'org-table-convert-region)

実行方法

$ wget http://rubikitch.com/f/170225091939.selected.el
$ emacs -Q -f package-initialize -l 170225091939.selected.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。