* add support for searching the mailing list of a message
This commit is contained in:
@ -159,15 +159,15 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_PATH,
|
MU_MSG_FIELD_ID_LIST,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"path", 'l', 'L', /* 'l' for location */
|
"list", 'v', 'L',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_VALUE |
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
FLAG_XAPIAN_BOOLEAN | FLAG_XAPIAN_PREFIX_ONLY |
|
|
||||||
FLAG_XAPIAN_ESCAPE
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_MAILDIR,
|
MU_MSG_FIELD_ID_MAILDIR,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
@ -184,6 +184,26 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
FLAG_XAPIAN_TERM | FLAG_XAPIAN_ESCAPE | FLAG_XAPIAN_PREFIX_ONLY
|
FLAG_XAPIAN_TERM | FLAG_XAPIAN_ESCAPE | FLAG_XAPIAN_PREFIX_ONLY
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
MU_MSG_FIELD_ID_MSGID,
|
||||||
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
|
"msgid", 'i', 'I', /* 'i' for Id */
|
||||||
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
||||||
|
FLAG_XAPIAN_ESCAPE | FLAG_XAPIAN_PREFIX_ONLY
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
MU_MSG_FIELD_ID_PATH,
|
||||||
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
|
"path", 'l', 'L', /* 'l' for location */
|
||||||
|
FLAG_GMIME | FLAG_XAPIAN_VALUE |
|
||||||
|
FLAG_XAPIAN_BOOLEAN | FLAG_XAPIAN_PREFIX_ONLY |
|
||||||
|
FLAG_XAPIAN_ESCAPE
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_PRIO,
|
MU_MSG_FIELD_ID_PRIO,
|
||||||
MU_MSG_FIELD_TYPE_INT,
|
MU_MSG_FIELD_TYPE_INT,
|
||||||
@ -192,6 +212,15 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
FLAG_XAPIAN_PREFIX_ONLY
|
FLAG_XAPIAN_PREFIX_ONLY
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
MU_MSG_FIELD_ID_REFS,
|
||||||
|
MU_MSG_FIELD_TYPE_STRING_LIST,
|
||||||
|
"refs", 'r', 'R',
|
||||||
|
FLAG_GMIME | FLAG_XAPIAN_VALUE | FLAG_XAPIAN_PREFIX_ONLY
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_SIZE,
|
MU_MSG_FIELD_ID_SIZE,
|
||||||
MU_MSG_FIELD_TYPE_BYTESIZE,
|
MU_MSG_FIELD_TYPE_BYTESIZE,
|
||||||
@ -208,28 +237,6 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
FLAG_XAPIAN_TERM | FLAG_XAPIAN_ESCAPE
|
FLAG_XAPIAN_TERM | FLAG_XAPIAN_ESCAPE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
MU_MSG_FIELD_ID_TO,
|
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
|
||||||
"to", 't', 'T',
|
|
||||||
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
MU_MSG_FIELD_ID_MSGID,
|
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
|
||||||
"msgid", 'i', 'I', /* 'i' for Id */
|
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
|
||||||
FLAG_XAPIAN_ESCAPE | FLAG_XAPIAN_PREFIX_ONLY
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
MU_MSG_FIELD_ID_REFS,
|
|
||||||
MU_MSG_FIELD_TYPE_STRING_LIST,
|
|
||||||
"refs", 'r', 'R',
|
|
||||||
FLAG_GMIME | FLAG_XAPIAN_VALUE | FLAG_XAPIAN_PREFIX_ONLY
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_TAGS,
|
MU_MSG_FIELD_ID_TAGS,
|
||||||
MU_MSG_FIELD_TYPE_STRING_LIST,
|
MU_MSG_FIELD_TYPE_STRING_LIST,
|
||||||
@ -238,6 +245,13 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
FLAG_XAPIAN_ESCAPE
|
FLAG_XAPIAN_ESCAPE
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
MU_MSG_FIELD_ID_TO,
|
||||||
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
|
"to", 't', 'T',
|
||||||
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
||||||
|
},
|
||||||
|
|
||||||
{ /* special, internal field, to get a unique key */
|
{ /* special, internal field, to get a unique key */
|
||||||
MU_MSG_FIELD_ID_UID,
|
MU_MSG_FIELD_ID_UID,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
|
|||||||
@ -55,6 +55,10 @@ enum _MuMsgFieldId {
|
|||||||
MU_MSG_FIELD_ID_PRIO,
|
MU_MSG_FIELD_ID_PRIO,
|
||||||
MU_MSG_FIELD_ID_SIZE,
|
MU_MSG_FIELD_ID_SIZE,
|
||||||
|
|
||||||
|
/* add new ones here... */
|
||||||
|
MU_MSG_FIELD_ID_LIST, /* mailing list */
|
||||||
|
|
||||||
|
|
||||||
MU_MSG_FIELD_ID_NUM
|
MU_MSG_FIELD_ID_NUM
|
||||||
};
|
};
|
||||||
typedef guint8 MuMsgFieldId;
|
typedef guint8 MuMsgFieldId;
|
||||||
|
|||||||
@ -198,6 +198,29 @@ get_recipient (MuMsgFile *self, GMimeRecipientType rtype)
|
|||||||
return recip;
|
return recip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar*
|
||||||
|
get_mailing_list (MuMsgFile *self)
|
||||||
|
{
|
||||||
|
const char *hdr, *b, *e;
|
||||||
|
|
||||||
|
hdr = g_mime_object_get_header (GMIME_OBJECT(self->_mime_msg),
|
||||||
|
"List-Id");
|
||||||
|
if (mu_str_is_empty (hdr))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
e = NULL;
|
||||||
|
b = strchr (hdr, '<');
|
||||||
|
if (b)
|
||||||
|
e = strchr (b, '>');
|
||||||
|
|
||||||
|
if (b && e)
|
||||||
|
return g_strndup (b + 1, e - b - 1);
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
looks_like_attachment (GMimeObject *part)
|
looks_like_attachment (GMimeObject *part)
|
||||||
@ -500,6 +523,9 @@ get_references (MuMsgFile *self)
|
|||||||
return g_slist_reverse (msgids);
|
return g_slist_reverse (msgids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* see: http://does-not-exist.org/mail-archives/mutt-dev/msg08249.html */
|
/* see: http://does-not-exist.org/mail-archives/mutt-dev/msg08249.html */
|
||||||
static GSList*
|
static GSList*
|
||||||
get_tags (MuMsgFile *self)
|
get_tags (MuMsgFile *self)
|
||||||
@ -592,6 +618,10 @@ mu_msg_file_get_str_field (MuMsgFile *self, MuMsgFieldId mfid,
|
|||||||
|
|
||||||
case MU_MSG_FIELD_ID_PATH: return self->_path;
|
case MU_MSG_FIELD_ID_PATH: return self->_path;
|
||||||
|
|
||||||
|
case MU_MSG_FIELD_ID_LIST:
|
||||||
|
*do_free = TRUE;
|
||||||
|
return (char*)get_mailing_list (self);
|
||||||
|
|
||||||
case MU_MSG_FIELD_ID_SUBJECT:
|
case MU_MSG_FIELD_ID_SUBJECT:
|
||||||
return (char*)maybe_cleanup
|
return (char*)maybe_cleanup
|
||||||
(g_mime_message_get_subject (self->_mime_msg),
|
(g_mime_message_get_subject (self->_mime_msg),
|
||||||
|
|||||||
Reference in New Issue
Block a user