[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: w3m-display-hook
の破綻
From: 小関 吉則 (KOSEKI Yoshinori) <kose@wizard.tamra.co.jp> さん曰く
Subject: [emacs-w3m:03839] Re: w3m-display-hook の破綻
Message-ID: <20020829xjcelci2u1u.kose@wizard.tamra.co.jp>
Date: Thu, 29 Aug 2002 13:00:29 +0900
kose> 「-hook はこうで、-functions はこう使うんだよ」という
kose> Convention の記述ってどこかにありますでしょうか?
Elisp Info の "hooks" をまじめに(日本語ですけど)読んでみました。
そうすると、引数のある hook は abnormal hook だから、*-functions
や *-hooks じゃないといけないのか。
# 知らなかった ^^;;;
# w3m-display-hook、w3m-bitmap-cache-image-hook
# => w3m-display-hooks、w3m-bitmap-cache-image-hooks ?
*-functions と *-hooks の使い分けはわかりませんが、defcustom の
type を 'hook にするか '(repeat function) にするぐらいしか思い
つきません。
From: TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp> さん曰く
Subject: [emacs-w3m:03837] Re: w3m-display-hook の破綻
Message-ID: <mpar8gi8kt5.fsf@cherry.lang-private.kuee.kyoto-u.ac.jp>
Date: Thu, 29 Aug 2002 11:23:34 +0900
白井> となるのです。そのため、~/.emacs で独自に add-hook していると
白井> defcustom で設定されるべき初期値が無効になります。
土> この問題は認識していましたが,~/.emacs に add-hook を書くだけの技量が
土> ある人ならば,
土> (eval-after-load "w3m" '(add-hook ...))
土> と言う書き方をしないと,defcustom で記述されている初期値は反映されない,
土> という知識も期待していいのではないかと思ったのですが,どうでしょう?
それでは hook である意味が無いと思いますよ。
# というか、add-hook 自体が関数を追加するお手軽な設定方法なわけ
# ですから、難しい設定方法を要求するのは間違っていると思います。
白井> で、提案なのですが、ぼくの考えた限りでは上記の二通りの人を満足さ
白井> せるのは無理だと思うので、
土> これには同意します.
白井> 現状 w3m-*-hook の初期値をソース内で設定しているものは、
白井> w3m-*-functions にして、すべての w3m-*-hook の初期値は nil にす
白井> るのはどうでしょうか? 必要だから初期値を設定しているわけですし。
土> [中略]
白井> みたいに。(冗長?)
土> うーん,確かに hook をプログラム内部で色々と変更しているのは問題がある
土> のでしょうねえ….
これはぼくも気になっていました。
土> 現実装だと,Emacs20 / Emacs21 を共用している人が M-x
土> customize-variable RET w3m-displya-hook RET とかすると破綻しますし.
そういう使い方をする人は普通 custom-file が別のものをさすように
なっていると思います。そうじゃないと、w3m 以外でも困る局面が多々
あるでしょう。
土> とりあえず,もっと簡単な方法としては,上記 eval-after-load 相当の書き
土> 方を簡単に出来るように,~/.gnus のような初期化ファイルを用意するという
土> 方法があると思いますが….うーん,どうするべきなのかなあ.
現状を調べてみると、(local-hook は除く)
(1) w3m-mode-hook => 初期値あり
(2) w3m-fontify-before-hook => 初期値無し
(3) w3m-fontify-after-hook => 初期値あり
(4) w3m-display-hook => 初期値あり
(5) w3m-arrived-setup-hook => 初期値あり
(6) w3m-arrived-shutdown-hook => 初期値あり
(7) w3m-delete-buffer-hook => 初期値あり
(8) w3m-change-buffer-hook => 初期値あり
となっていて、(2) 以外は初期値があります。しかし、この初期値は
(大体のものは)必要だから入っているので hook じゃなくてもいいんじゃ
ないかな。
うーんどうしよう。やっぱり、*-hook と *-functions の二本立てが趣
味だなぁ。
## 現実逃避終了。また、あとで考えます。
--
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)
P.S.
山岡さん> 技術的には defcustom にもっと強い意志を持たせることは可能です。
すごい!! standard-value って知らなかった。
# しかし、確かにちょっとなんですね。^^;;;