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

Re: inheriting shimbun-text



>>>>> In [emacs-w3m : No.08119] 村田さん wrote:

> In the message [emacs-w3m : No.08118]
>    on Mon, 30 May 2005 20:26:10 +0900, Katsumi Yamaoka wrote:

>> でも、わかる人には何でもないことなんですかねえ。出来上がったコー
>> ドは実にすっきりしてしまうんですが、何がどうなっているかを簡単に
>> 把握できないのが辛いです。例えば、動作時に使われる f1fan の
>> content-start の値は、こんなにこみいった場所にあります。

> [...]

> この辺は見なかった事にすべきだと思います.

たぶん、ぼくはその分岐点で間違った道を選んでしまったんでしょう。
luna-* マクロが、その名前からは具体的に何をするものかがよくわか
らないので、ぼくは毎度 macroexpand してみているのです。しかし、
展開結果に現れる luna-* 関数が、やはりぼくには理解することが困難、
というか全体像を描くための頭のバッファサイズを越えてしまいます。
ぼくの luna との付き合いは、歩いても歩いても山頂が近づいてこない
登山に似ています。この、努力しても報われない感じは、他ではあまり
経験したことがありません。

> 例えば,

> (defun shimbun-content-start (shimbun)
>   (if (shimbun-prefer-text-plain-internal shimbun)
>       (or (shimbun-text-content-start-internal shimbun)
> 	  (shimbun-content-start-internal shimbun))
>     (or (shimbun-content-start-internal shimbun)
> 	(shimbun-text-content-start-internal shimbun))))

> として, luna-class-slot-index 等の物理レイアウトに踏み込む様なもの
> は, 使わない方が良いと思います.

shimbun-content-start-internal マクロの再定義は、ぼくも流儀を逸
脱していると思うんですが、すでに多方面で使われているので、元をい
じってしまったわけです。しかし、こんな美しいやり方があるのなら、
「多方面」の方を変更することを考えましょう。

>> それから、ユーザオプションの値に応じて動作をダイナミックに変更す
>> るような用途に luna は向いていないですね。今般 prefer-text-plain
>> を作っているときに、改めて感じました。

> 起動後に変更された場合であっても, 実行時に設定されているユーザオプ
> ションの値で, 処理を変えたいのであれば, こんな感じでどうでしょう?

> (luna-define-generic shimbun-prefer-text-plain (shimbun))

> (luna-define-method shimbun-prefer-text-plain ((shimbun shimbun-mainichi))
>   shimbun-mainichi-prefer-text-plain)

どうもありがとうございます。さっそく macroexpand してみました
(それが間違いの元なのかもなあ ^^;;)。ともかく取り組んでみますね。

>> [1] 記事を読んでいるときに shimbun-open はかなり頻繁に実行される
>>     はずですが、これが呼ぶ luna-make-entity が毎回新規に vector
>>     (というか obarray) を作っているように見えます。たぶん
>>     garbage collect が後で消してくれるんでしょうけれど。

> 因みに, Wanderlust はサマリに移動する時に 1度だけ shimbun-open を
> 呼んでインスタンスを作成した後, そのサマリに居る間はそれをそのまま
> 保持する様になっています.

なるほど、ちゃんと考慮されているんですねえ。さすが。