[Mew-dist 15692] Re: How to control the threading
Shun-ichi TAHARA ( 田原 俊一 )
jado at example.com
2000年 12月 29日 (金) 15:09:09 JST
From: Tak Ota <Takaaki.Ota at example.com>
Message-Id: <20001228.211105.01367500.Takaaki.Ota at example.com>
> ところで上手く思ったとおりの表示になるまでに何回か try and error を繰
> り返していて感じたのですが column を指定させるのは人間には不向きの作業
> ですね。もし scan-form の type のような特別なキーワード例えば thread
> を導入して
>
> > (setq mew-scan-form-list
> > '((("+inbox")
> > (-3 type (-3 size) "│" (5 date) "│" (12 from) "│" (0 subj)) 30)
>
> の代りに
>
> > (setq mew-scan-form-list
> > '((("+inbox")
> > (-3 type (-3 size) "│" (5 date) "│" (12 from) "│" thread (0 subj)))
>
> とできると素人さんにも使い易いユーザインタフェースだなあと思いました。
確かにそうですね。
ええと、ものすごくざっくりと、
(defun mew-thread-column (form)
(if (integerp (car form))
(mew-thread-column-get (abs (car form)) (cdr form))
(mew-thread-column-get 0 (append mew-scan-form-header form))))
(defun mew-thread-column-get (column form)
(catch 'thread
(mapcar
(lambda (entry)
(cond
((eq entry 'indent)
(throw 'thread column))
((listp entry)
(setq column (+ column (abs (car entry)))))
((symbolp entry)
(setq column (1+ column)))
((stringp entry)
(setq column (+ column (length entry))))))
form)
0))
みたいなのを用意して、mew-thread-column に mew-scan-form か、
mew-scan-form-list のエントリかを渡せば何とかなりそうですね。
# コイツは scan-form 中の 'indent に引っかかります
ただ、毎回やるのは大変なので、mew-thread-setup あたりで処理するべきな
のでしょう。その前に、他にも何ヶ所か手を入れないといけない。
--
田原 / jado at example.com
Mew-dist メーリングリストの案内