header

2015年2月2日月曜日

Emacsでkey-translation-mapを設定した

EmacsでC-x 8でなんかプレフィックスキーがあるのは知ってたが、このkey-translation-mapで数学に関係した文字(だけだはないけど)を入力できるらしい。どこで設定してるのかちょっと探したので、一応記事にしておく。

設定した理由

最近、ターミナル上のEmacsでC-mキーとEnterキーを別々に登録できた。(Linux版窓使いの憂鬱(mayu)とEmacsのevent-apply-modifierを利用した。)ただ、なぜだか謎のタイミングで登録したキーが消えて、代わりに"µ"の文字が入力されてしまった。ここで自分が設定したC-mの代わりのキーがA-mなのだが、key-translation-mapとつながっていておそらく autoload のタイミングで自分が設定したキーを上書きしていた。(っぽい)なので、もしA-XXX keyにキーバインドを登録してそれがいつの間にか消えていたら、このkey-translation-mapを疑ったほうがいいかもしれない。(あんま使う機会ないかもしれないけど)

iso-transl.elファイルで定義されている

Emacsのソースでgit.savannah.gnu.org/emacs/lisp/international/iso-transl.elのなかにあった。探すのうまい人はすぐみつかるんだろうけど、"µ"でgrepしても変な辞書にヒットしたり最初ちょっと???ってなった。

設定

読み込まれるタイミングがよくわからなかったので、with-eval-after-loadでinit_iso-trasl.elに保存した以下のファイルを読み込むようにした。

;; init_iso-transl.el
(require 'iso-transl)
;; unbind A-m key because I'm using this key at global map.
;; (and there are four keybinds of µ)
(define-key key-translation-map (kbd "A-m") nil)

C-x 8は結構長くて押したくないキーなのでminor-mode化した。まぁお好みで、、

(easy-mmode-define-minor-mode
Y/iso-transl-minor-mode "Yuta's iso transl key minor-mode"
:init-value nil :lighter nil :keymap iso-transl-ctl-x-8-map)

(defun Y/iso-transl-toggle-minor-mode ()
"Toggle `iso-transl-ctl-x-8-map' keybinds."
(interactive)
(if Y/iso-transl-minor-mode
(Y/iso-transl-minor-mode 0)
(Y/iso-transl-minor-mode t)))

;; 適当なキーに登録してください
(define-key global-map (kbd "C-0") 'Y/iso-transl-toggle-minor-mode)

おわり

一見このキーマップが便利そうな感じで紹介しているけど、数学の記号が入力したい場合は、 helm-ucs でもっとたくさん候補から選べるのでそこまで便利じゃないかもしれない。

Popular Posts

Blogger templates

Blogger news