まったりいんふぉまてぃくすめもらんだむ

主にプログラミング関係のメモに使うかもしれないしそうでないかもしれない

MeadowでCtrl+Spaceに半角/全角を割り当てる

ノートPCのWindows側にはエディタとしてMeadowCygwinとかなしで単体で入れてるんだけど、最近ずっと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"でも""でも"\x20"でもなく、

"\ "

が正解。まずこれにかなり手こずった。

そんでとりあえず設定ファイルに

(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 続けてキーを入力すると、そのキーに割り当てられている関数の名前を表示