]> Sergey Matveev's repositories - public-inbox.git/commitdiff
searchview: show full (&x=t) messages in ascending chronlogical order
authorEric Wong <e@80x24.org>
Fri, 24 Mar 2017 01:41:11 +0000 (01:41 +0000)
committerEric Wong <e@80x24.org>
Fri, 24 Mar 2017 01:46:04 +0000 (01:46 +0000)
When displaying search results with full messages, it makes
more sense to show them in ascending chronological order when
going by date.  Reverse chronological order makes more sense
for search results which only show the subject.

lib/PublicInbox/SearchView.pm

index b867d002da71f79d718971e1d03ef4acd5463177..cec87c6ad1c84c891fe41d4eac62ec556e6b3a97 100644 (file)
@@ -185,9 +185,9 @@ sub mset_thread {
                $pct{$smsg->mid} = $i->get_percent;
                $smsg;
        } ($mset->items) ]});
                $pct{$smsg->mid} = $i->get_percent;
                $smsg;
        } ($mset->items) ]});
-
+       my $r = $q->{r};
        my $rootset = PublicInbox::SearchThread::thread($msgs,
        my $rootset = PublicInbox::SearchThread::thread($msgs,
-               $q->{r} ? sort_relevance(\%pct) : *PublicInbox::View::sort_ts);
+               $r ? sort_relevance(\%pct) : *PublicInbox::View::sort_ts);
        my $skel = search_nav_bot($mset, $q). "<pre>";
        my $inbox = $ctx->{-inbox};
        $ctx->{-upfx} = '';
        my $skel = search_nav_bot($mset, $q). "<pre>";
        my $inbox = $ctx->{-inbox};
        $ctx->{-upfx} = '';
@@ -203,11 +203,11 @@ sub mset_thread {
 
        PublicInbox::View::walk_thread($rootset, $ctx,
                *PublicInbox::View::pre_thread);
 
        PublicInbox::View::walk_thread($rootset, $ctx,
                *PublicInbox::View::pre_thread);
-
+       @$msgs = reverse @$msgs if $r;
        my $mime;
        sub {
                return unless $msgs;
        my $mime;
        sub {
                return unless $msgs;
-               while ($mime = shift @$msgs) {
+               while ($mime = pop @$msgs) {
                        $mime = $inbox->msg_by_smsg($mime) and last;
                }
                if ($mime) {
                        $mime = $inbox->msg_by_smsg($mime) and last;
                }
                if ($mime) {