Previous: , Up: キーバインディングのカスタマイズ   [Contents][Index]


49.3.11 コマンドの無効化

コマンドを無効にするとは、そのコマンドを対話的に呼び出しユーザーに確認を求めることを意味します。コマンドを無効にする目的は、ユーザーが間違ってコマンドを実行するのを防ぐためです。わたしたちは初心者を混乱させるようなコマンドにたいして、これを行なっています。

無効なコマンドを呼び出そうとすると、Emacsはコマンド名、コマンドのドキュメント、すぐに何を行なうかの手引きを対話的に表示します。その後、Emacsはコマンドを要求されたとおり実行するか、そのコマンドを有効にしてから実行するか、キャンセルするか入力を求めます。コマンドを有効にすると決めた場合は、他の質問 — 永続的に有効にするか、それともカレントセッションでだけ有効にするか — にも応えなければなりません(永続的に有効にする場合、これは自動的に初期化ファイルを編集することにより機能します)。!とタイプして、カレントセッションだけにたいして、すべてのコマンドを有効にすることもできます。

コマンド無効化の直接的なメカニズムは、コマンドにたいするLispシンボルのdisabledプロパティーに非nilをputすることです。以下はこれを行なうLispプログラムです:

(put 'delete-region 'disabled t)

disabledプロパティーの値が文字列の場合、その文字列はコマンドが使用されたときに表示されるメッセージに含まれます。

(put 'delete-region 'disabled
     "It's better to use `kill-region' instead.\n")

初期化ファイルを直接編集するか、初期化ファイルを編集するM-x disable-commandコマンドにより、コマンドを無効にできます。同様にM-x enable-commandはコマンドを永続的に有効にするために、初期化ファイルを編集します。Emacs初期化ファイルを参照してください。

Emacsが-qまたは--no-init-fileオプション(初期化オプションを参照してください)で呼び出された場合、これらのコマンドは初期化ファイルを編集しません。Emacsは初期化ファイルを読み込んでいないので、これを行なうと情報が失われるかもしれないからです。

コマンドが無効にされているかどうかは、それを呼び出すのに使用されるキーとは独立しています。M-xを使用してコマンドを呼び出しても、無効化は適用されます。しかしLispプログラムから関数として呼び出す場合、コマンドの無効化は効力をもちません。