[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: w3m-display-hook の破綻



>>>>> In [emacs-w3m : No.03837]
>>>>>	TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp> wrote:

白井さん> となるのです。そのため、~/.emacs で独自に add-hook している
白井さん> と defcustom で設定されるべき初期値が無効になります。

土屋さん> この問題は認識していましたが,~/.emacs に add-hook を書くだ
土屋さん> けの技量がある人ならば,

土屋さん>     (eval-after-load "w3m" '(add-hook ...))

土屋さん> と言う書き方をしないと,defcustom で記述されている初期値は反
土屋さん> 映されない,という知識も期待していいのではないかと思ったので
土屋さん> すが,どうでしょう?

これはぼくもよく使っていますが、ある日 after-load-alist の中身を
覗くと、そのぐちゃぐちゃさ加減にうんざりしたりもします。^^;;
技術的には defcustom にもっと強い意志を持たせることは可能です。

(progn
  ;; 初めは存在しない。
  (makunbound 'foo)

  ;; .emacs でユーザが追加。
  (add-hook 'foo 'bar)

  ;; xxx.elc が load されたとき。
  (defcustom foo '(baz)
  "docs."
  :set (lambda (symbol value)
	 (if (boundp symbol)
	     (let ((defaults (reverse
			      (car
			       (cdr
				(car
				 (get symbol 'standard-value)))))))
	       (while defaults
		 (add-hook symbol (car defaults))
		 (setq defaults (cdr defaults))))
	     (set-default symbol value))))

  ;; さて foo の値は?
  foo)
 => (baz bar)

まあ、こんな邪道はあまりやりたくないですけどね。
-- 
Katsumi Yamaoka <yamaoka@jpl.org>