Use /etc/mime.types if available, with a homebrew sed parser, and fall back to a handful of common types otherwise. --- completion/notmuch-completion.bash | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/completion/notmuch-completion.bash b/completion/notmuch-completion.bash index 78047b5f424d..c75eb483a9f3 100644 --- a/completion/notmuch-completion.bash +++ b/completion/notmuch-completion.bash @@ -58,6 +58,34 @@ _notmuch_email() sed 's/[^<]*<\([^>]*\)>/\1/' | tr "[:upper:]" "[:lower:]" | sort -u } +_notmuch_mimetype() +{ + # use mime types from mime-support package if available, and fall + # back to a handful of common ones otherwise + if [ -r "/etc/mime.types" ]; then + sed -e '/^[ \t]*\(#.*\)\?$/d;s/^\([^ \t]\+\).*$/\1/' < /etc/mime.types + else + cat <<EOF +application/gzip +application/msword +application/pdf +application/zip +audio/mpeg +audio/ogg +image/gif +image/jpeg +image/png +message/rfc822 +text/calendar +text/html +text/plain +text/vcard +text/x-diff +text/x-vcalendar +EOF + fi +} + _notmuch_search_terms() { local cur prev words cword split @@ -85,6 +113,10 @@ _notmuch_search_terms() COMPREPLY=( $(compgen -d "$path/${cur##folder:}" | \ sed "s|^$path/||" | grep -v "\(^\|/\)\(cur\|new\|tmp\)$" ) ) ;; + mimetype:*) + compopt -o nospace + COMPREPLY=( $(compgen -P "mimetype:" -W "`_notmuch_mimetype ${cur}`" -- ${cur##mimetype:}) ) + ;; *) local search_terms="from: to: subject: attachment: mimetype: tag: id: thread: folder: path: date: lastmod:" compopt -o nospace -- 2.1.4