add-hook
hook というのは、「ひっかけるかぎ」である。
それぞれの
Elisp の中に用意されていて、その名前が分ったら、利用出来る。
例えば
C-x C-f (find-file) には find-file-hooks というのが用意されている。
(add-hook 'find-file-hooks
(function (lambda ()
(if (string-match "makoto/writing" buffer-file-name)
(setq fill-column 44))
(if (string-match "makoto/writing/jk" buffer-file-name)
(setq fill-column 84))
(if (string-match "vertical/" buffer-file-name)
(setq fill-column 40))
(if (string-match "Mail/draft/" buffer-file-name)
(setq fill-column 60)) ;; not good now
(if (string-match "makoto/diary/" buffer-file-name)
(setq default-buffer-file-coding-system 'euc-japan)
(setq default-buffer-file-coding-system 'iso-2022-jp ))
)))
次のようにして試す。
(add-hook 'find-file-hooks
(function (lambda ()
(if (string-match "\\.eeee$" buffer-file-name)
(set-buffer-file-coding-system 'euc-japan))
)))
こうしておくと、譜を新規に開ける時に、
*.eeee という名前の時には euc,
それ以外の場合には iso-2022-jp になる。
どんな hook があるか
というのは、変数名と同じで、次のような探し方があると思う。
-
Standard hooks
に書いてある
- info 等の説明に書いてある
- *.el や *var.el の中を見る
- M-x apropos RET packagename.*hook RET として探す
例えば
M-x apropos RET find-file.*hook RET とすると、次の三つが見つかる。
find-file-hooks
Variable: List of functions to be called after a buffer is loaded from a file.
Plist: variable-documentation
find-file-not-found-hooks
Variable: List of functions to be called for `find-file' on nonexistent file.
Plist: variable-documentation
vc-find-file-hook
Function: Function for `find-file-hooks' activating VC mode if appropriate.
|