コマンドを禁止するとは、 コマンドを実行するまえにユーザーの確認を必要とするように コマンドに印を付けることです。 コマンドを禁止するのは、 初心者に混乱をもたらす可能性のあるコマンドに対してや、 コマンドの誤用を防ぐためです。
コマンドを禁止する低レベルの機構は、
コマンドのLispシンボルにnil
以外の属性disabled
を入れることです。
これらの属性は、通常、ユーザーの.emacsファイルにて
つぎのようなLisp式で設定します。
(put 'upcase-region 'disabled t)
数個のコマンドにはデフォルトでこれらの属性がありますから、 .emacsファイルで属性を取り除きます。
属性disabled
の値は文字列であり、
コマンドを禁止したことを表すメッセージです。
たとえばつぎのとおりです。
(put 'delete-region 'disabled "Text deleted this way cannot be yanked back!\n")
禁止したコマンドを対話的に起動するとどうなるかについて 詳しくはSee 使用禁止コマンド。 コマンドを禁止しても、Lispプログラムから関数として呼び出すことには なんの影響もありません。
これ以降、特別な確認なしにcommandを実行可能にする。 さらに(ユーザーが了承すれば)ユーザーの.emacsファイルを変更して、 将来のセッションでもそのようにする。
これ以降、commandの実行には特別な確認を必要とするようにする。 さらに(ユーザーが了承すれば)ユーザーの.emacsファイルを変更して、 将来のセッションでもそのようにする。
禁止したコマンドをユーザーが対話的に起動したとき、 禁止したコマンドのかわりにこのノーマルフックを実行する。 フック関数では、
this-command-keys
を使って コマンドを実行するためにユーザーがなにを入力したかを調べ、 コマンドそのものを探し出せる。 see Hooks。デフォルトでは、
disabled-command-hook
には、 ユーザーに処理を進めるかどうかを問い合わせる関数が入っている。