[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 メーリングリストの案内