[Mew-dist 2139] Re: imsort (Re: 1.91 beta 2)
Takashi P.KATOH
p-katoh at example.com
1997年 9月 19日 (金) 13:17:07 JST
かとぺ@東北大です。
From: "Takashi P.KATOH" <p-katoh at example.com>
Subject: [Mew-dist 2047] imsort (Re: 1.91 beta 2)
>> ソースをちらっと見ただけですが、上の場合、
>> [mew-dist][Re:を除いたsubject]['Re: 'があれば'Re: '][シーケンス番号]
>> としてソートをかけるようです。うれしいような、うれしくないような…
...
> From: SAKAI Kiyotaka <ksakai at example.com>
> Subject: [Mew-dist 2041] Re: 1.91 beta 2
>> 以前に mew-dist に流れたパッチを当てたためですが、どういう仕様になるの
>> が嬉しいでしょうか?
> せめてオプション (と ~/.im/Config) で on/off できるとよいと
> 思います。
と思ったのですが、いろいろやってみた結果、
(1) どうせ Subject: で sort するときは --mode を指定しなきゃ
いけないんだから、
| % imsort --field=subject --mode=text (以前の仕様)
| % imsort --field=subject --mode=text --ml (現在の仕様)
で区別するよりは、
| % imsort --field=subject --mode=text
| % imsort --field=subject --mode=ml
の方が自然 (だと思う)。
(2) (両方考慮するんだったら) こっちの方が mew-sort.el をいじ
るときもラク :-)
なので、新たに mode を追加するのが良いと思います。
ってことでパッチです。
ただ ml という名前は非常にカッコ悪いと思いますので、もっとナ
イスな名前にしてくれると嬉しいです。
# enum (eliminate number) とか、nnum (no number) とか考えた
# んですが、いまいちピンとこなくって...
ついでに、
> あと、いまのままだと
> | Subject: (foo-ml 1737) This is subject
> のように ( ) になってるのはダメですね。
> 比較的良くあるパターンだと思いますので、残すならこれも対応し
> た方がいいように思います。
も出来るようになってると思います。
# [foo:01234) とか (bar 2345] とかもマッチしちゃいますけど、
# いいですよね (^^;
--
東北大学大学院 情報科学研究科 白鳥研究室 加藤 貴司
p-katoh at example.com / Takashi P.KATOH
http://www.shiratori.riec.tohoku.ac.jp/~p-katoh/MAIL/
-------------- next part --------------
--- imsort.in,orig Tue Sep 9 14:30:37 1997
+++ imsort.in Fri Sep 19 13:07:07 1997
@@ -74,7 +74,7 @@
$opt_src || im_die "no folder specified.\n";
@msgs || im_die "no message specified.\n";
$opt_field || im_die "no field specified.\n";
-$opt_mode =~ /^(date|num|text)$/
+$opt_mode =~ /^(date|num|text|ml)$/
|| im_die "Wrong mode $opt_mode.\n";
#
@@ -118,9 +118,9 @@
foreach $path (@msg_paths){
im_die "No file $path in $src. (Nothing was done.)\n"
if (!-f $path);
- push(@param, get_field_value($path, $field, $mode eq 'date'));
+ push(@param, get_field_value($path, $field, $mode));
}
- if ($mode eq 'text'){
+ if (($mode eq 'text') || ($mode eq 'ml')) {
@sorted_index = sort { $param[$a] cmp $param[$b] } 0 .. $#msg_paths;
} else {
@sorted_index = sort { $param[$a] <=> $param[$b] } 0 .. $#msg_paths;
@@ -151,7 +151,7 @@
}
sub get_field_value ($$$) {
- my ($path, $field, $is_date) = @_;
+ my ($path, $field, $smode) = @_;
local $_;
local $/ = '';
my ($ml, $num);
@@ -165,12 +165,16 @@
($_) = /^$field:\s+([^\n]*)/imo;
if (lc($field) eq 'subject') {
- s/^\[([^\]]*)\]\s*//i;
- $1 =~ /^(.*)[:,\s](.*)$/; $ml=$1; $num=$2;
- s/^(re:\s*)(.*)$/$2$1/i;
- $_ = $ml . $_ . $num;
+ if ($smode eq 'ml') {
+ s/^[\[\(]([^\]\)]*)[\]\)]\s*//i;
+ $1 =~ /^(.*)[:,\s](.*)$/; $ml=$1; $num=$2;
+ s/^(re:\s*)(.*)$/$2$1/i;
+ $_ = $ml . $_ . $num;
+ } else {
+ s/^(re:\s*)(.*)$/$2$1/i;
+ }
}
- if ($is_date){
+ if ($smode eq 'date'){
if (/(\d+)\s+($m_rxp)\s+(\d+)\s+(\d+):(\d+)(:(\d+))?\s+($z_rxp)/io){
return sec_from_epoc($3<100?$3+1900:$3, $MONTH{$2}, $1,
$4, $5, $7+0, $8);
Mew-dist メーリングリストの案内