MeadowでCtrl+Spaceに半角/全角を割り当てる
ノートPCのWindows側にはエディタとしてMeadowをCygwinとかなしで単体で入れてるんだけど、最近ずっとUbuntuとか研究室のサーバのEmacs使っててすっかりそっちのキーバインドに慣れてしまったので、
MeadowではC-\に割り当てられてるtoggle-input-method(日本語入力のON/OFF)をC-SPCに割り当てたくなった。
デフォルトではC-SPCにはset-mark-command(リージョン選択)が割り当てられてるんだけど、これにはC-@使う方向で。
まぁ簡単にできるだろ、と思ってたら意外と詰まったのでエントリとしてまとめとく。
Meadowのバージョンは3.02-dev。
まずEmacs Lisp中でのSpaceの表現だけど、"\s"でも"\SPC"でも"
"\ "
が正解。まずこれにかなり手こずった。
そんでとりあえず設定ファイルに
(global-set-key "\C-\ " 'toggle-input-method)
と書いてみたんだけど、これだとエラーにはならないものの相変わらずC-SPCを押してもset-mark-commandが呼び出される。こっちが先に拾っちゃってる?
他のショートカットはこんな感じで設定したらちゃんと動いてるんだけどな。
そこで解決法調べてる途中で見つけたUbuntuフォーラムのあんまり関係ない感じのエントリ(Ubuntu日本語フォーラム / emacsでのモードライン表示について)に
書いてあった
(global-set-key [?\C-\ ] 'toggle-input-method)
こういう書き方を試してみたら、なぜかこれでめでたくC-SPCで日本語切り替えが使えるようになった。
[? ]と書くと優先順位が上がるのかな?まぁ動くのでこれで良しとする。
余談。今回の解決法を調べるにあたって発見した便利なショートカットをメモ。
操作 | 説明 |
---|---|
(Lisp文の行末で)C-x C-e | 行を評価する |
M-x describe-key-briefly | 続けてキーを入力すると、そのキーに割り当てられている関数の名前を表示 |