notmuch search: Change default search order to be newest messages first.
authorCarl Worth <cworth@cworth.org>
Wed, 18 Nov 2009 04:52:09 +0000 (20:52 -0800)
committerCarl Worth <cworth@cworth.org>
Wed, 18 Nov 2009 04:58:30 +0000 (20:58 -0800)
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).

lib/notmuch.h
lib/query.cc
lib/thread.cc
notmuch-search.c
notmuch.el

index 32b5332815837f8be6b7d22c2ff53cff114a4491..f135fd3f2c1a8ab75814fafca2eeeab9db2dfd0e 100644 (file)
@@ -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;
 
index a70be1ddc4701dc28c7d24684180aad01394c5e5..a869f3e60d1e0aeace3526c90d8a1e6bde4ae9ff 100644 (file)
@@ -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:
index baa9e7e84e78ee082703447a0b2cb0386bb89ea8..9bb6a5e1f4d11b8ba50e89c7377e4e3122cc3ed4 100644 (file)
@@ -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);
index 59ffb038b1a56ca9550c2a466c0bab7a746066ae..91266c35b2635152d6b439fd960f2c3c4a2d9ad8 100644 (file)
@@ -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;
index 8894a8e194716f444489b1676c3630c545c82c95..9de16e006fd3cac225be5c723936512279bd1022 100644 (file)
@@ -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)
        ))))