init.elを徐々にuse-packageで書き直していて、
キーバインドはbind-keyの機能を使って
(use-package hoge
:bind(("C-c 1" . func1)
("C-c 2" . func2))
)
みたいに書けたりするんだけど、これだとglobal-mapへの割り当てしかできない。
ローカルなマップに割り当てたいときは:bindじゃなくて:initを使うといいらしい。
(use-package multiple-cursors
:commands (mc/mark-next-like-this mc/mark-previous-like-this mc/mark-all-dwim)
:init
(bind-keys :map mode-specific-map
("C->" . mc/mark-next-like-this)
("C-< " . mc/mark-previous-like-this)
("M-R" . mc/mark-all-dwim))
:config
;; multiple-cursorsの設定
)
(参考:Emacs - use-packageで可読性の高いinit.elを書く - Qiita)
さらにこれにプレフィクスキーを使ったマップを設定したい。
bind-keyを使わない場合、
(defvar my-original-map (make-sparse-keymap) "My original keymap binded to C-q.")
(defalias 'my-original-prefix my-original-map)
(define-key global-map (kbd "C-q") 'my-original-prefix)
(参考:Emacs は外部 elisp がなくても強い (Emacs Advent Calendar jp: 2011 5日目) – 備忘録)
これをbind-keyでやる場合、:prefix-map を使う。
(use-package hoge
:init
(defvar hoge-map (make-sparse-keymap))
(bind-keys :prefix-map hoge-map
:prefix "<f8>"
("1" . func1)
("2" . func2)
))
うーん。なんかいろんなやりかたがあってややこしいなー。