[mew-dist 23712] Re: Mew 3.xの+inboxでのソート

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2003年 6月 5日 (木) 21:32:15 JST


# 夜の息抜き ^^;

From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 23711] Re: Mew 3.xの+inboxでのソート
Message-ID: <20030605.202137.116311540.kazu at example.com>
Date: Thu, 05 Jun 2003 20:21:37 +0900 (JST)

> 自分で mew-sort-switch にエントリを追加すればできるでしょう。
> 
>  ("date2" mew-sort-key-date mew-sort-string2)
> 
>  (defsubst mew-sort-string2 (x y)
>    (or (string= (mew-sort-key x) (mew-sort-key y))
>        (string< (mew-sort-key y) (mew-sort-key x))))
> 
> などのように。

mew-input-sort-key() の car で "mewls (mewl) -d key" をするから、
sort をいじるのは結構大変ですよ。

もとのメールを読んだときにちょっと考えたのですが、日付の逆順専用
でもこれだけめちゃくちゃなものが必要でした。

(defun mew-summary-sort-date-reverse (&optional arg)
  (interactive "P")
  (let ((mew-sort-switch (copy-sequence mew-sort-switch))
	(orig-mew-input-sort-key (make-symbol "orig-mew-input-sort-key")))
    (setq mew-sort-switch
	  (cons '("date" mew-sort-key-date (lambda (x y)
					     (string< (mew-sort-key y) (mew-sort-key x))))
		(delq (assoc "date" mew-sort-switch) mew-sort-switch)))
    (fset orig-mew-input-sort-key (symbol-function 'mew-input-sort-key))
    (fset 'mew-input-sort-key (lambda (&rest arg) '("date" . "date")))
    (unwind-protect
	(mew-summary-sort arg)
      (fset 'mew-input-sort-key (symbol-function orig-mew-input-sort-key)))))

# orig-mew-input-sort-key は一度質問にリターンを押せば良いだけで
# すけどね。

> > これとはちょっと違ってthread表示において、
> > 今は、各スレッドの祖先の日付でソートしていますよね?
> > これをスレッドの最後尾の日付でソートするようにすることはできるでしょうか?
> 
> スレッドは木構造であり、たくさんの葉があります。どの葉を最後尾と言うの
> かよく分りません。
> 
> Mew が最後の行に表示しているものを最後尾と呼んでいるのでしょうか? 
> それらでソートすることに、どういう意味があるのでしょう?
> (根のメールに対し日付の逆順に並べるというのなら、意味は分ります。)

おそらく、

・一番新しいメールが含まれているスレッドを一番上のスレッドとして
  表示する
・残ったメールで一番新しいメールが含まれているスレッドを次のスレッ
  ドに表示する
・以下、続く。。。

ということだと思うのですが、ちと無理でしょうね。


P.S. 

全然関係ありませんが、mew-sort.el を見ていて浮かんだ素朴な疑問

(defvar mew-sort-switch
  '(("text" mew-sort-key-text mew-sort-string)
    ("ml"   mew-sort-key-ml   mew-sort-string)
  ....

みたいな設定で、それぞれの関数を funcall しています。

このとき、mew-sort-key-text や mew-sort-string などは defsubst
を使っていますが、こういう使い方のとき、defsubst(*1)するのは、な
にか効果があるのかしらん。悪影響はないと思いますが。

(*1) byte-compile のときに inline に展開して速度向上をくわだてる
もの、と理解しているのですが。

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内