ファイヤープロジェクト
キーシーケンスをコマンドに割り当てる
2004-10-09T21:40+09:00   matsu
あるキーシーケンスによって,それに結びつけられたコマンドを呼び出せるように設定してみた.
canna-touroku-regionをキーシーケンス
C-x c t r
にて呼び出せるようにしてみる.
そもそも何らかのキーシーケンスがcanna-touroku-regionに割り当てられていないかどうかを確認しておいた方がよいだろう.そのためにaproposというLispコマンド(※1)について触れておく.
M-x apropos RET キーワード RET
上記でキーワードに関連する関数,変数,コマンドの説明が表示される.例えば
M-x apropos RET canna RET
とすると,以下のような内容のバッファが表示される.
...省略...
CANNA
  Variable: (not documented)
canna
  Command: (not documented)
canna-abandon-undo-info
  Command: (not documented)
canna-activate
  Function: (not documented)
...省略...
内容はもちろん環境によって異なる.例えばcanna-activeという関数が定義されていない環境では,該当の出力はない.EmacsではC-uによってコマンドに前置引数を渡すことができる.例えば
C-u 5 C-f
によってC-fを5回押した場合と同じ結果になる(※2).同様にaproposは前置引数をとる.
C-u M-x apropos RET canna-touroku-region
上記コマンドでcanna-touroku-regionの説明に加えて,それに割り当てられているキーシーケンスが表示される.私の環境では以下が得られた.
...省略...
canna-touroku-region	      M-x canna-touroku-region RET
  Command: Register a word in the selected region into a kana-to-kanji dictionary.
canna-touroku-regionにはキーシーケンスが割り当てられていないようだ.
  1. ※1 aproposコマンドやman -kと同様の機能である.
  2. ※2 C-fを(forward-char &optional N)に割り当ててある場合である.C-u 5によってNに5を割り当ててforward-charが呼び出される.
これから使用しようとしているキーシーケンスがすでに使用されていないかどうかを確認する.
M-x describe-bindings RET
これで現在使用しているキーシーケンスとそれが割り当てられているコマンドの一覧が表示される.私の環境ではキーシーケンスC-xctrは使用されていなかった.ちなみにdescribe-bindingsは
C-h b
でも起動される.
では,canna-touroku-regionにキーシーケンスC-x c t rを割り当てる.キーシーケンスをコマンドに割り当てるには,以下のパターンの式を使用する.
(global-set-key キーシーケンス文字列 コマンドシンボル)
キーシーケンス文字列では,コントロールキーは\C,メタキーは\Mと記述する.また,コマンドシンボルはクォートするのを忘れない.
(global-set-key "\C-xctr" 'canna-touroku-region)
では確認できたかを確認してみる.まずapropos.
canna-touroku-region	      C-x c t r
  Command: Register a word in the selected region into a kana-to-kanji dictionary.
そしてdescribe-bindings
...省略...
C-x c t r	canna-touroku-region
...省略...
確認できた.
matsu(C)
Since 2002
Mail to matsu