39
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Emacs で自動的にキーバインドをポップアップする guide-key

Emacs で自動的にキーバインドをポップアップするライブラリ,guide-key.el を自作したので紹介したいと思います.one-key.el の代替ライブラリのつもりです.詳しくは自分のブログに書いたので,こちらでは軽く導入と設定を書いておきます.

guide-key.el の導入

guide-key.el は MELPA に登録しているので,package.el を使ってインストールできます.popwin に依存しているので,package.el でインストールすれば自動的に popwin もインストールされます.

package.el がない人は m2ym/popwin-elkai2nenobu/guide-key から popwin.el と guide-key.el を直接ダウンロードしてきて,適当に load-path が通っているところに保存してください.

使い方

guide-key/guide-key-sequence にポップアップして欲しいキーシーケンス(プレフィックスキー)を登録してください.guide-key/highlight-command-regexp に一致するコマンドはハイライトされます.

init.el
(require 'guide-key)
(setq guide-key/guide-key-sequence '("C-x r" "C-x 4"))
(setq guide-key/highlight-command-regexp "rectangle")
(guide-key-mode 1)  ; guide-key-mode を有効にする

これで C-x rC-x 4 を押した時に,次に続くキーを表示するウィンドウが自動的にポップアップされます.実際に C-x r を押した様子はこのようになります.

C-x r を押した様子

特定のモードで設定を追加

guide-key/add-local-guide-key-sequence
guide-key/add-local-highlight-command-regexp に特定のモードのフックと組み合
わせれば,特定のモードに対して設定を追加できます.例えば org-mode を例にとって
見ると,以下のような設定になります.

init.el
(defun guide-key/my-hook-function-for-org-mode ()
  (guide-key/add-local-guide-key-sequence "C-c")
  (guide-key/add-local-guide-key-sequence "C-c C-x")
  (guide-key/add-local-highlight-command-regexp "org-"))
(add-hook 'org-mode-hook 'guide-key/my-hook-function-for-org-mode)

この設定をした後,org-mode のバッファで C-c C-x p を押して org-set-property が実行される様子が以下の図です.

C-c C-x p を押した様子

まとめ

guide-key の特徴をまとめておきます.

  • 現在入力しているキーシケンスに続くキーを自動的にポップアップします.ポップアップさせたいプレフィックスを設定するだけで使えます.また動的にキーバインドを調べているので,キーバインドが変更されても動的に追随できます.

  • 特定のコマンドを色付けすることできます.いま注目している機能に関するコマンドだけを色付けすることにより,キーバインドを探しやすくなり体で覚えることができます.

  • 既存のコマンドを上書きしないので,describe-keydescribe-bindings などに影響が出ません.

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
39
Help us understand the problem. What are the problem?