コマンドを無効にするとは、そのコマンドを対話的に呼び出しユーザーに確認を求めることを意味します。コマンドを無効にする目的は、ユーザーが間違ってコマンドを実行するのを防ぐためです。わたしたちは初心者を混乱させるようなコマンドにたいして、これを行なっています。
無効なコマンドを呼び出そうとすると、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->
(end-of-buffer
)というコマンドを実行する前に問い合わせを行うには、initファイルに以下のように記述してください:
(command-query 'end-of-buffer "Do you really want to go to the end of the buffer?")
デフォルトではy/nによる問い合わせを行いますが、3つ目のオプション引数に非nil
を与えれば、かわりにyesによる問い合わせを行います。
初期化ファイルを直接編集するか、初期化ファイルを編集するM-x disable-commandコマンドにより、コマンドを無効にできます。同様にM-x enable-commandはコマンドを永続的に有効にするために、初期化ファイルを編集します。Emacs初期化ファイルを参照してください。
Emacsが-qまたは--no-init-fileオプション(初期化オプションを参照してください)で呼び出された場合、これらのコマンドは初期化ファイルを編集しません。Emacsは初期化ファイルを読み込んでいないので、これを行なうと情報が失われるかもしれないからです。
コマンドが無効にされているかどうかは、それを呼び出すのに使用されるキーとは独立しています。M-xを使用してコマンドを呼び出しても、無効化は適用されます。しかしLispプログラムから関数として呼び出す場合、コマンドの無効化は効力をもちません。