diff --git a/lib/notmuch.h b/lib/notmuch.h index 6469744d..d0b0d9e4 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_OLDEST_FIRST, - NOTMUCH_SORT_DATE_NEWEST_FIRST, + NOTMUCH_SORT_DATE, + NOTMUCH_SORT_DATE_REVERSE, NOTMUCH_SORT_MESSAGE_ID } notmuch_sort_t; diff --git a/lib/query.cc b/lib/query.cc index e853d4ec..7c1df90c 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_OLDEST_FIRST; + query->sort = NOTMUCH_SORT_DATE; return query; } @@ -123,10 +123,10 @@ notmuch_query_search_messages (notmuch_query_t *query, } switch (query->sort) { - case NOTMUCH_SORT_DATE_OLDEST_FIRST: + case NOTMUCH_SORT_DATE: enquire.set_sort_by_value (NOTMUCH_VALUE_TIMESTAMP, FALSE); break; - case NOTMUCH_SORT_DATE_NEWEST_FIRST: + case NOTMUCH_SORT_DATE_REVERSE: 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 df1d0db7..ffecc9d0 100644 --- a/lib/thread.cc +++ b/lib/thread.cc @@ -186,7 +186,7 @@ _notmuch_thread_create (void *ctx, thread->oldest = 0; thread->newest = 0; - notmuch_query_set_sort (thread_id_query, NOTMUCH_SORT_DATE_OLDEST_FIRST); + notmuch_query_set_sort (thread_id_query, NOTMUCH_SORT_DATE); 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 a0a71bbd..8db09c77 100644 --- a/notmuch-search.c +++ b/notmuch-search.c @@ -34,6 +34,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[]) time_t date; int i, first = 0, max_threads = -1; char *opt, *end; + notmuch_sort_t sort = NOTMUCH_SORT_DATE; for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (strcmp (argv[i], "--") == 0) { @@ -54,6 +55,11 @@ 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 { + fprintf (stderr, "Unrecognized option: %s\n", argv[i]); + return 1; } } @@ -80,6 +86,8 @@ notmuch_search_command (void *ctx, int argc, char *argv[]) return 1; } + notmuch_query_set_sort (query, sort); + for (threads = notmuch_query_search_threads (query, first, max_threads); notmuch_threads_has_more (threads); notmuch_threads_advance (threads)) @@ -88,7 +96,11 @@ notmuch_search_command (void *ctx, int argc, char *argv[]) thread = notmuch_threads_get (threads); - date = notmuch_thread_get_oldest_date (thread); + if (sort == NOTMUCH_SORT_DATE) + date = notmuch_thread_get_oldest_date (thread); + else + date = notmuch_thread_get_newest_date (thread); + relative_date = notmuch_time_relative_date (ctx, date); printf ("thread:%s %12s [%d/%d] %s; %s",