Go to the first, previous, next, last section, table of contents.

フック

フックは、フック関数もしくはフック関数のリストを参照する変数です。

フック変数を用いる理由は、フックを用いて参照される関数は、ユーザーもしくは他の 関数から変更しうるという点にあります。フックはしばしばメジャーモードやマイナー モードと関係付けられ、ユーザーがそのモードの動作をカスタマイズできるようになっ ています。例えば、find-file-not-found-hooks で名指される関数は find-file で ファイルが見つからない場合 (常に) 呼ばれます。

通常、モードがそれに対するフック変数を持つ場合、そのフックはそのモードの初期化 の後走ります。このように、(例えばバッファローカル変数の初期値を変えることで)そ のモードの動きを変更するコードをフック関数の中に入れることができます。以下の例 は c-mode と c++-mode 用のフックの定義方法を示しています。フック関数は、関数の 名前もしくは anonymous lambda 式でありうる点に注意して下さい。

      (setq c-mode-hook '(lambda ()
                           (setq c-indent-level 4
                                 c-argdecl-indent 0
                                 c-label-offset -4
                                 c-continued-statement-indent 0
                                 c-brace-offset 0
                                 comment-column 40
                                 )))
      (setq c++-mode-hook c-mode-hook)

(lisp 関数と primitive に対しフックを追加することについて論ずること!!)

Function: run-hooks &rest hooklist

この関数は、アーギュメントとしてフックの名前をいくつか受け取り、その各々を 順に走らせます。メジャーモード関数は、ユーザーによって定義されたフックを呼 び出すのに、これを用いることがあります。 hooklist アーギュメントの各々は フック変数であるシンボルでなくてはいけません。このアーギュメントは指定され た順に処理されます。

フック変数が non-nil の値を持つ場合、その値は関数もしくは関数のリストで す。値が関数の場合、それを呼びます。リストの場合、要素である関数を順に呼び ます。フック関数は(全て)アーギュメントを持たずに呼ばれます。

  (run-hooks 'c-mode-hook)

フックのリストに関しては補足を参照して下さい。


Go to the first, previous, next, last section, table of contents.