次へ: Emacsプログラミングのヒント, 前へ: Emacs Lispコーディング規約, 上へ: ヒントと規約
[目次][索引]
D.2 キーバインドの規約 ¶
-
Dired、Info、Compilation、Occur といった多くの特殊なメジャーモードは、ハイパーリンクを含む読み取り専用テキストを処理するように設計されています。このようなメジャーモードでは、リンクを辿るように
mouse-2 と RET
を再定義する必要があります。また、リンクが
mouse-1-click-follows-link
に従うよう、follow-link 条件を設定する必要があります。クリック可能なテキストの定義
を参照してください。このようなクリック可能なリンクを簡単に実装する方法については、ボタン を参照してください。
- Lispプログラムにおいて、C-c letterをキーとして定義しないでください。C-cと文字(大文字または小文字、ASCIIまたは非ASCII)からなるシーケンスはユーザー用に予約されています。これらはユーザー用に予約された唯一のシーケンスであるため、使用を制限しないでください。
Emacsのすべてのメジャーモードをこの規約に準拠させるのは多大な労力を要しました。この規約を放棄すれば、その労力が無駄になるだけでなく、ユーザーにも不便を強いることになります。どうか準拠してください。
- 修飾キーを伴わないファンクションキー F5 から F9
も、ユーザーが定義できるよう予約されています。
- C-c に続いて制御文字または数字が続くシーケンスは、メジャーモード用に予約されています。
- C-c に続いて {、}、<、>、: または ;
が並ぶシーケンスも、メジャーモード用に予約されています。
- C-c に続き、任意の ASCII
句読点または記号文字が配置されたシーケンスは、マイナーモード用に割り当てられています。メジャーモードでこれらを使用することが絶対的に禁止されているわけではありませんが、そうした場合、メジャーモードのバインディングが時折マイナーモードによってシャドウイングされることがあります。
- プレフィックス文字(C-cを含む)の後にC-hをバインドしないでください。C-hをバインドしない場合、プレフィックス文字のサブコマンド一覧を表示するためのヘルプ文字として自動的に利用可能になります。
- ESC で終わるキーシーケンスは、別の ESC
に続く場合を除き、バインドしないでください。(つまり、ESC ESC で終わるシーケンスをバインドしても問題ありません。)
このルールが設けられている理由は、いかなるコンテキストにおいても ESC
にプレフィックスなしのバインディングが設定されていると、そのコンテキスト内でエスケープシーケンスをファンクションキーとして認識できなくなるためです。
- 同様に、C-g
で終わるキーシーケンスはバインドしないでください。これはキーシーケンスをキャンセルするために一般的に用いられるためです。
- ユーザーが出入りできる一時的なモードや状態として機能するものは、脱出手段として ESC ESC または ESC ESC ESC を定義すべきです。
通常のEmacsコマンドを受け付ける状態、あるいはより一般的に、ESC
の後にファンクションキーや矢印キーが続くことが意味を持ち得るあらゆる状態においては、ESC ESC
を定義してはなりません。そうすると、ESC
の後のエスケープシーケンスを認識できなくなるためです。これらの状態では、エスケープ手段として ESC ESC ESC を定義してください。そうでない場合は、代わりに ESC ESC を定義してください。