From: Carl Worth <cworth@cworth.org>
Date: Wed, 18 Nov 2009 04:52:09 +0000 (-0800)
Subject: notmuch search: Change default search order to be newest messages first.
X-Git-Tag: 0.1~458
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=333486572517d2e2084d66208de59085f21d8573;p=obsolete%2Fnotmuch-old

notmuch search: Change default search order to be newest messages first.

This is what most people want for a _search_ command. It's often
different for actually reading mail in an inbox, (where it makes more
sense to have results displayed in chronological order), but in such a
case, ther user is likely using an interface that can simply pass the
--sort=oldest-first option to "notmuch search".

Here we're also change the sort enum from NOTMUCH_SORT_DATE and
NOTMUCH_SORT_DATE_REVERSE to NOTMUCH_SORT_OLDEST_FIRST and
NOTMUCH_SORT_NEWEST_FIRST. Similarly we replace the --reverse option
to "notmuch search" with two options: --sort=oldest-first and
--sort=newest-first.

Finally, these changes are all tracked in the emacs interface, (which
has no change in its behavior).
---

diff --git a/lib/notmuch.h b/lib/notmuch.h
index 32b53328..f135fd3f 100644
--- a/lib/notmuch.h
+++ b/lib/notmuch.h
@@ -299,8 +299,8 @@ notmuch_query_create (notmuch_database_t *database,
 
 /* Sort values for notmuch_query_set_sort */
 typedef enum {
-    NOTMUCH_SORT_DATE,
-    NOTMUCH_SORT_DATE_REVERSE,
+    NOTMUCH_SORT_OLDEST_FIRST,
+    NOTMUCH_SORT_NEWEST_FIRST,
     NOTMUCH_SORT_MESSAGE_ID
 } notmuch_sort_t;
 
diff --git a/lib/query.cc b/lib/query.cc
index a70be1dd..a869f3e6 100644
--- a/lib/query.cc
+++ b/lib/query.cc
@@ -61,7 +61,7 @@ notmuch_query_create (notmuch_database_t *notmuch,
 
     query->query_string = talloc_strdup (query, query_string);
 
-    query->sort = NOTMUCH_SORT_DATE;
+    query->sort = NOTMUCH_SORT_NEWEST_FIRST;
 
     return query;
 }
@@ -109,10 +109,10 @@ notmuch_query_search_messages (notmuch_query_t *query,
 	}
 
 	switch (query->sort) {
-	case NOTMUCH_SORT_DATE:
+	case NOTMUCH_SORT_OLDEST_FIRST:
 	    enquire.set_sort_by_value (NOTMUCH_VALUE_TIMESTAMP, FALSE);
 	    break;
-	case NOTMUCH_SORT_DATE_REVERSE:
+	case NOTMUCH_SORT_NEWEST_FIRST:
 	    enquire.set_sort_by_value (NOTMUCH_VALUE_TIMESTAMP, TRUE);
 	    break;
 	case NOTMUCH_SORT_MESSAGE_ID:
diff --git a/lib/thread.cc b/lib/thread.cc
index baa9e7e8..9bb6a5e1 100644
--- a/lib/thread.cc
+++ b/lib/thread.cc
@@ -258,7 +258,7 @@ _notmuch_thread_create (void *ctx,
     thread->oldest = 0;
     thread->newest = 0;
 
-    notmuch_query_set_sort (thread_id_query, NOTMUCH_SORT_DATE);
+    notmuch_query_set_sort (thread_id_query, NOTMUCH_SORT_OLDEST_FIRST);
 
     for (messages = notmuch_query_search_messages (thread_id_query, 0, -1);
 	 notmuch_messages_has_more (messages);
diff --git a/notmuch-search.c b/notmuch-search.c
index 59ffb038..91266c35 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -45,7 +45,7 @@ do_search_threads (const void *ctx,
 
 	thread = notmuch_threads_get (threads);
 
-	if (sort == NOTMUCH_SORT_DATE)
+	if (sort == NOTMUCH_SORT_OLDEST_FIRST)
 	    date = notmuch_thread_get_oldest_date (thread);
 	else
 	    date = notmuch_thread_get_newest_date (thread);
@@ -85,7 +85,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
     char *query_str;
     int i, first = 0, max_threads = -1;
     char *opt, *end;
-    notmuch_sort_t sort = NOTMUCH_SORT_DATE;
+    notmuch_sort_t sort = NOTMUCH_SORT_NEWEST_FIRST;
 
     for (i = 0; i < argc && argv[i][0] == '-'; i++) {
 	if (strcmp (argv[i], "--") == 0) {
@@ -106,8 +106,16 @@ notmuch_search_command (void *ctx, int argc, char *argv[])
 		fprintf (stderr, "Invalid value for --max-threads: %s\n", opt);
 		return 1;
 	    }
-	} else if (strcmp (argv[i], "--reverse") == 0) {
-	    sort = NOTMUCH_SORT_DATE_REVERSE;
+	} else if (STRNCMP_LITERAL (argv[i], "--sort=") == 0) {
+	    opt = argv[i] + sizeof ("--sort=") - 1;
+	    if (strcmp (opt, "oldest-first") == 0) {
+		sort = NOTMUCH_SORT_OLDEST_FIRST;
+	    } else if (strcmp (opt, "newest-first") == 0) {
+		sort = NOTMUCH_SORT_NEWEST_FIRST;
+	    } else {
+		fprintf (stderr, "Invalid value for --sort: %s\n", opt);
+		return 1;
+	    }
 	} else {
 	    fprintf (stderr, "Unrecognized option: %s\n", argv[i]);
 	    return 1;
diff --git a/notmuch.el b/notmuch.el
index 8894a8e1..9de16e00 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -874,8 +874,8 @@ This function advances point to the next line when finished."
       (goto-char (point-min))
       (save-excursion
 	(if oldest-first
-	    (call-process "notmuch" nil t nil "search" query)
-	  (call-process "notmuch" nil t nil "search" "--reverse" query))
+	    (call-process "notmuch" nil t nil "search" "--sort=oldest-first" query)
+	  (call-process "notmuch" nil t nil "search" "--sort=newest-first" query))
 	(notmuch-search-markup-thread-ids)
 	))))