}
for (tags = notmuch_message_get_tags (message);
- notmuch_tags_has_more (tags);
- notmuch_tags_advance (tags))
+ notmuch_tags_valid (tags);
+ notmuch_tags_move_to_next (tags))
{
tag = notmuch_tags_get (tags);
g_hash_table_insert (thread->tags, xstrdup (tag), NULL);
notmuch_message_t *message)
{
time_t date;
+ notmuch_message_t *hashed_message;
date = notmuch_message_get_date (message);
thread->newest = date;
thread->matched_messages++;
+
+ if (g_hash_table_lookup_extended (thread->message_hash,
+ notmuch_message_get_message_id (message), NULL,
+ (void **) &hashed_message)) {
+ notmuch_message_set_flag (hashed_message,
+ NOTMUCH_MESSAGE_FLAG_MATCH, 1);
+ }
}
static void
while ((node = *prev)) {
message = node->message;
in_reply_to = _notmuch_message_get_in_reply_to (message);
- if (in_reply_to &&
+ if (in_reply_to && strlen (in_reply_to) &&
g_hash_table_lookup_extended (thread->message_hash,
in_reply_to, NULL,
(void **) &parent))
* subject line, the total count of messages, and all authors). The
* second search is for all messages that are in the thread and that
* also match the given query_string. This is to allow for a separate
- * count of matched messages, and to allow a viewer to diplay these
+ * count of matched messages, and to allow a viewer to display these
* messages differently.
*
* Here, 'ctx' is talloc context for the resulting thread object.
const char *thread_id_query_string, *matched_query_string;
notmuch_query_t *thread_id_query, *matched_query;
notmuch_messages_t *messages;
+ notmuch_message_t *message;
thread_id_query_string = talloc_asprintf (ctx, "thread:%s", thread_id);
if (unlikely (query_string == NULL))
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);
- notmuch_messages_advance (messages))
+ for (messages = notmuch_query_search_messages (thread_id_query);
+ notmuch_messages_valid (messages);
+ notmuch_messages_move_to_next (messages))
{
- _thread_add_message (thread, notmuch_messages_get (messages));
+ message = notmuch_messages_get (messages);
+ _thread_add_message (thread, message);
+ _notmuch_message_close (message);
}
notmuch_query_destroy (thread_id_query);
-
- for (messages = notmuch_query_search_messages (matched_query, 0, -1);
- notmuch_messages_has_more (messages);
- notmuch_messages_advance (messages))
+ for (messages = notmuch_query_search_messages (matched_query);
+ notmuch_messages_valid (messages);
+ notmuch_messages_move_to_next (messages))
{
- _thread_add_matched_message (thread, notmuch_messages_get (messages));
+ message = notmuch_messages_get (messages);
+ _thread_add_matched_message (thread, message);
+ _notmuch_message_close (message);
}
notmuch_query_destroy (matched_query);