>>>>> "Jani" == Jani Nikula <jani@nikula.org> writes: Jani> On Sat, 10 Jan 2015, Todd <todd@electricoding.com> wrote: >> I wanted to tag messages with calendar invitations, but couldn't as >> the information wasn't indexed. >> >> This patch allows for queries for like: >> >> Find calendar invites >> - contenttype:text/calendar or contenttype:applicaton/ics >> >> Find any image attachments >> - contenttype:image >> >> Find all patches >> - contenttype:text/x-patch >> >> >> - Todd >> >> --- >> NEWS | 6 ++++++ >> completion/notmuch-completion.bash | 2 +- >> doc/man7/notmuch-search-terms.rst | 6 ++++++ >> emacs/notmuch.el | 2 +- >> lib/database.cc | 1 + >> lib/index.cc | 5 +++++ >> test/T190-multipart.sh | 32 ++++++++++++++++++++++++++++++++ Jani> IMO these could be split into several patches. No problem, I'll split them up the next time I post. >> 7 files changed, 52 insertions(+), 2 deletions(-) >> >> diff --git a/NEWS b/NEWS >> index 44e8d05..5f4622c 100644 >> --- a/NEWS >> +++ b/NEWS >> @@ -15,6 +15,12 @@ keyboard shortcuts to saved searches. >> Command-Line Interface >> ---------------------- >> >> +There is a new `contenttype:` search prefix >> + >> + The new `contenttype:` search prefix allows searching for the >> + content-type of attachments, which is now indexed by `notmuch >> + insert`. See the `notmuch-search-terms` manual page for details. >> + Jani> Admittedly I did not have the time to dig into details, but I think Jani> "attachment" is misleading, as it's really all mime parts, right? Jani> Will this also index the Content-Type: header of the message itself, Jani> regardless of whether it has mime structure or not? Maybe it Jani> should? Yes, all mime-parts. It does not index the Content-Type of the message itself. That probably wouldn't be difficult to add if it's a desired feature, but if there are plans for indexing other message headers it may fit better there. I also wasn't too happy with a "contenttype" keyword and debated just indexing the information under "attachment" along with the filename. >> Stopped `notmuch dump` failing if someone writes to the database >> >> The dump command now takes the write lock when running. This >> diff --git a/completion/notmuch-completion.bash b/completion/notmuch-completion.bash >> index d58dc8b..05b5969 100644 >> --- a/completion/notmuch-completion.bash >> +++ b/completion/notmuch-completion.bash >> @@ -61,7 +61,7 @@ _notmuch_search_terms() >> sed "s|^$path/||" | grep -v "\(^\|/\)\(cur\|new\|tmp\)$" ) ) >> ;; >> *) >> - local search_terms="from: to: subject: attachment: tag: id: thread: folder: path: date:" >> + local search_terms="from: to: subject: attachment: contenttype: tag: id: thread: folder: path: date:" >> compopt -o nospace >> COMPREPLY=( $(compgen -W "${search_terms}" -- ${cur}) ) >> ;; >> diff --git a/doc/man7/notmuch-search-terms.rst b/doc/man7/notmuch-search-terms.rst >> index 1acdaa0..d126ce6 100644 >> --- a/doc/man7/notmuch-search-terms.rst >> +++ b/doc/man7/notmuch-search-terms.rst >> @@ -40,6 +40,8 @@ indicate user-supplied values): >> >> - attachment:<word> >> >> +- contenttype:<word> >> + >> - tag:<tag> (or is:<tag>) >> >> - id:<message-id> >> @@ -66,6 +68,10 @@ by including quotation marks around the phrase, immediately following >> The **attachment:** prefix can be used to search for specific filenames >> (or extensions) of attachments to email messages. >> >> +The **contenttype:** prefix can be used to search for specific >> +content-types of attachments to email messages (as specified by the >> +sender). >> + >> For **tag:** and **is:** valid tag values include **inbox** and >> **unread** by default for new messages added by **notmuch new** as well >> as any other tag values added manually with **notmuch tag**. >> diff --git a/emacs/notmuch.el b/emacs/notmuch.el >> index 218486a..702700c 100644 >> --- a/emacs/notmuch.el >> +++ b/emacs/notmuch.el >> @@ -858,7 +858,7 @@ PROMPT is the string to prompt with." >> (lexical-let >> ((completions >> (append (list "folder:" "path:" "thread:" "id:" "date:" "from:" "to:" >> - "subject:" "attachment:") >> + "subject:" "attachment:" "contenttype:") >> (mapcar (lambda (tag) >> (concat "tag:" (notmuch-escape-boolean-term tag))) >> (process-lines notmuch-command "search" "--output=tags" "*"))))) >> diff --git a/lib/database.cc b/lib/database.cc >> index 3601f9d..a7a64c9 100644 >> --- a/lib/database.cc >> +++ b/lib/database.cc >> @@ -254,6 +254,7 @@ static prefix_t PROBABILISTIC_PREFIX[]= { >> { "from", "XFROM" }, >> { "to", "XTO" }, >> { "attachment", "XATTACHMENT" }, >> + { "contenttype", "XCONTENTTYPE"}, >> { "subject", "XSUBJECT"}, Jani> Is the use of probabilistic prefix intentional? I think it's probably Jani> the right thing to do, but just checking. I'm not familiar with Xapian and just followed the precedence of attachment. Jani> BR, Jani> Jani. - Todd