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

Re: --with-icondir



実際の実装を見て検討するために,仮に作業してみました.ファイル名は 
w3m-setup.el です.configure の時点ではなく,make の時点で生成されるよ
うに変更しました.

既知の問題点が一つあります.この変更だと,w3m.el 単体を load して,
w3m-setup.el を load していない場合に設定が反映されません.w3m.el 本体
で (require 'w3m-setup) すればいい,と最初は単純に考えていたのですが,
実は結構根が深い問題なんですね….

単純に (require 'w3m-setup) するだけだと,w3m.el 本体中の defcustom で
定義されたデフォルト値とは(一般には)一致しませんから,
customize-variable でオプションを設定しようとする人の混乱を招く恐れが
あります.ですから,デフォルト値もまとめて変更しておく必要があるのです
が,トリッキーな方法はあるんですけど,まともに source の字面上とも一致
する方法がありません.すると,defcustom 自体を w3m-setup.el に移動する
必要が生じてしまうのですが,これは更に変更範囲を拡大するのであまり嬉し
くない方法です.一応,末尾にパッチをつけておきますが.

そういうわけで,「余分な分かり難い処理を伴わずに変更する」のはなかなか
難しい,ということが判明しつつあります.

>> On Wed, 25 Sep 2002 14:11:32 +0900
>> 「山」== yamaoka@jpl.org (Katsumi Yamaoka) said as follows:

寺> ぼくも最初は何もしなくてよいと思ったのですが、.emacs 設定の雛型を
寺> 自動生成してくれているだけ、と思えばそれはそれでいいか、と思うに至
寺> りました。

山> install-package で生成される auto-autoloads.el に対して FSF Emacs 
山> 用に何も無いのは不公平なので、ぼくも反対ではありません。

実は,どちらかと言えば消極的な意見が多いですし,結構難しいということに
遅まきながら気が付いたので,私も消極派になりつつあります.

ただ,この方向で修正することのメリットをもう一つ気が付いたので,指摘だ
けしておきますが,現在は w3m-icon-directory のデフォルト値の計算式が
w3m.el と w3mhack.el に分散して存在しているので,片方だけを変更した場
合には容易に矛盾が発生するのではないでしょうか.これをきちんと一本化し
ておくのは,将来的にバグを発生し難くするという点では意味のある作業だと
思います.

山> ;; しつこく何度もすみません。03940 に書いた ;;;###autoload クッ
山> ;; キーの件が気になってどうも寝覚めが悪いもので。

make 時に生成するようにしたので,w3mhack.el にちゃんと対応コードを書け
ば,autoload クッキーを反映させることも出来るのではないかと思います.

と言うより,w3mhack.el に w3m-setup.el 生成コードを仕込まないと,
Non-UNIX 環境でインストールできなくなってしまいますね.うーん,やっぱ
り難しいなあ….
--- w3m-setup.el.in	25 Sep 2002 06:07:29 -0000	1.1
+++ w3m-setup.el.in	25 Sep 2002 06:28:00 -0000
@@ -30,13 +30,13 @@
 
 ;;; Code:
 
-;; Developers, you must not edit this file directly.  Edit
-;; `w3m-setup.el.in' instead of this.
+;; Developers, you must edit `w3m-setup.el.in' instead of `w3m-setup.el'.
 
 (autoload 'w3m "w3m" "\
 Visit the World Wide Web page using the external command w3m, w3mmee
 or w3m-m17n." t)
 (autoload 'w3m-find-file "w3m" "w3m interface function for local file." t)
+(autoload 'w3m-browse-url "w3m" "w3m interface function for browse-url.el." t)
 (autoload 'w3m-region "w3m" "\
 Render region in current buffer and replace with result." t)
 (autoload 'w3m-search "w3m-search" "Search QUERY using SEARCH-ENGINE." t)
@@ -44,7 +44,10 @@
 (autoload 'w3m-antenna "w3m-antenna" "Report change of WEB sites." t)
 (autoload 'w3m-namazu "w3m-namazu" "Search files with Namazu." t)
 
-(setq w3m-icon-directory "@ICONDIR@")
+(defcustom w3m-icon-directory "@ICONDIR@"
+  "*Icon directory for w3m (XEmacs or Emacs 21)."
+  :group 'w3m
+  :type 'directory)
 
 (provide 'w3m-setup)
 
--- w3m.el	24 Sep 2002 11:51:07 -0000	1.724
+++ w3m.el	25 Sep 2002 06:28:02 -0000
@@ -70,6 +70,7 @@
   (defvar w3m-current-title nil "Title of this buffer.")
   (defvar w3m-current-url nil "URL of this buffer."))
 
+(require 'w3m-setup)
 (require 'w3m-util)
 (require 'w3m-proc)
 
@@ -572,17 +573,6 @@
 `w3m-display-inline-images' won't be changed."
   :group 'w3m
   :type 'boolean)
-
-(defcustom w3m-icon-directory
-  (if (fboundp 'locate-data-directory)
-      (locate-data-directory "w3m")
-    (let ((icons (expand-file-name "w3m/icons/"
-				   data-directory)))
-      (if (file-directory-p icons)
-	  icons)))
-  "*Icon directory for w3m (XEmacs or Emacs 21)."
-  :group 'w3m
-  :type 'directory)
 
 (defcustom w3m-broken-proxy-cache nil
   "*If non nil, cache on proxy server is not used.
-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )