- avy-menu 20170518.2245(in MELPA)
- Library providing avy-powered popup menu
概要
候補選択インターフェースはたくさんありますが、
少数の候補を選択する場合にhelm等は大袈裟ではないでしょうか。
かといってダイアログボックスが好きなEmacsユーザはそんなにいないと思います。
キーボード操作が主体のEmacsにおいては、やはりキーボード選択メニューが好まれます。
キーボード選択メニューは、one-key.elや123-menu.elなどがありましたが、
今ならばこのavy-menu.elがいい感じです。
avy.elはace-jump-mode.elの後継として汎用的に使えるように再設計されました。
エントリポイントはavy-menu関数です。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))
初めてavy-menuを使う方は
以下のコマンドを実行します。
M-x package-install avy-menu
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name avy-menu
シンプルな使用例 161018111644.avy-menu-1.el(以下のコードと同一)
(defun avy-menu-1 () (interactive) (message "Answer: %d" (avy-menu "*avy-menu-1*" ;バッファ名 '("メニュー" ;メニューの名前 ("" ;セクション名(1つならば空文字列でよい) ;; 表示文字列と値のペア… ("Print one" . 1) ("Print two" . 2))))))
Fig1: M-x avy-menu-1
Fig2: aを押して選択した結果
ちょっと複雑な使用例 161018112241.avy-menu-2.el(以下のコードと同一)
(defun avy-menu-2 () (interactive) (eval (avy-menu "*avy-menu-2*" '("メニュー" ("ファイル・ディレクトリを開く" ;; 値にS式を指定してevalで評価させる ("find init.el" . (find-file "~/.emacs.d/init.el")) ("open home directory" . (find-file "~/"))) ("メッセージを表示する" ("message" . (message "ok")))) ;; 第3引数をtにすることでセクション名も表示する t)))
Fig3: M-x avy-menu-2
161019135329.avy-menu-3.el(以下のコードと同一)
メニューごとにキーを設定する 現時点のavy-menuには、メニューごとにキーを設定する機能が存在しません。
その代わりavyそのものの変数avy-keysをローカル変数にすることでそれが可能になります。
avy-keysは文字のリストを指定しますが、appendに文字列とnilを渡して作成する方法もあります。
(append "12" nil) ; => (49 50) '(?1 ?2) ; => (49 50)
(defun avy-menu-3 () (interactive) ;; 1,2をキーにする (let ((avy-keys (append "12" nil))) (message "Answer: %d" (avy-menu "*avy-menu-3*" '("メニュー" ("" ("Print one" . 1) ("Print two" . 2)))))))
Fig4: M-x avy-menu-3
実行方法
$ wget http://rubikitch.com/f/161019135329.avy-menu-3.el $ emacs -Q -f package-initialize -l 161019135329.avy-menu-3.el
本サイト内の関連パッケージ
- avy - tree-based completion
- ace-jump-mode - a quick cursor location minor mode for emacs
- ace-popup-menu - Replace GUI popup menu with something more efficient
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。