Previous: , Up: Hooks   [Contents][Index]


22.1.2 Setting Hooks

以下は、Lisp Interactionモードのときに、モードフックを使用してAuto Fillモードをオンに切り替える例です:

(add-hook 'lisp-interaction-mode-hook 'auto-fill-mode)
Function: add-hook hook function &optional append local

この関数は、フック変数に関数functionを追加する手軽な方法である。ノーマルフックと同じように、アブノーマルフックにたいしてもこの関数を使用できる。functionには、正しい数の引数を受け付ける任意のLisp関数を指定できる。たとえば、

(add-hook 'text-mode-hook 'my-text-hook-function)

は、text-mode-hookと呼ばれるフックにmy-text-hook-functionを追加する。

hook内にfunctionがすでに存在する場合(比較にはequalを使用)、add-hookは2回目の追加を行わない。

functionのプロパティpermanent-local-hookが非nilの場合、kill-all-local-variables(またはメジャーモードを変更しても)、そのフック変数のローカル値から関数を削除しない。

ノーマルフックにたいして、フック関数は実行される順序に無関係であるようにデザインされるべきである。順序への依存は、トラブルを招く。とはいえ、その順序は予測可能である。通常、functionはフックリストの先頭に追加されるので、(他のadd-hook呼び出しがなければ)それは最初に実行される。オプション引数appendが非nilの場合、新たなフック関数はフックリストの最後に追加され、実行されるのも最後になる。

add-hookは、hookがvoidのとき、または値が単一の関数の場合、値を関数リストにセットまたは変更して、それらを扱うことができる。

localが非nilの場合、それはグローバルフックリストではなくバッファーローカルフックリストにfunctionを追加する。これはフックをバッファーローカルにして、そのバッファーローカルな値にtを追加する。バッファーローカルな値へのtの追加は、ローカル値と同じようにデフォルト値でもフック関数を実行するためのフラグである。

Function: remove-hook hook function &optional local

この関数は、フック変数hookからfunctionを削除する。これは、equalを使用してfunctionhook要素を比較するので、その比較はシンボルとラムダ式の両方で機能する。

localが非nilの場合、それはグローバルフックリストではなく、バッファーローカルフックリストからfunctionを削除する。