[Date Prev][Date Next][Thread Prev][][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 って知らなかった。

# しかし、確かにちょっとなんですね。^^;;;