anything のミニバッファで C-h が効かない件の対処法
方法
keyboard-translate で delete-backward-char を実現する。
(keyboard-translate ?\C-h ?\C-?)
背景
ずっと anything のミニバッファで C-h が効かなくて不便でした。
emacs では C-h に delete-backward-char を以下のように割り当てていました。
(global-set-key "\C-h" 'delete-backward-char )
ぐぐってみるとどうも以下のように anything-map でキーを割り当てるといいらしかったのですが、
(define-key anything-map (kbd "C-h") 'delete-backward-char)
これでも自分の環境では動きませんでした。
ほとほと困っていたところ、こちらで以下のようなコメントを発見。
;; anything-map だけ設定すると、'C-h' > delete-backward-char は思い通りの動作にならない事がある
;; 発生原因は不明だが、 何らかのanything系コマンドに絡んでいる
;; define-key による 'C-h' > delete-backward-char を実現するには
;; anything で使用される全ての map に再割り当ての必要がある
;; ※ anything-.*map$ は全て anything-map からのコピーなので、
;; anything-map だけ解決されていれば問題ないはず?
;; anything-map は minibuffer-local-map からのコピーを使用している。
;;
;; keyboard-translate によって delete-backward-char を実現している場合、下記の再割り当ては必要ない
面倒だし keyboard-translate でやろうと思い、そう変更したところ、
無事に anything のミニバッファでも動作しました。