X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch-lib.el;h=6907a5f910b4e33b8efc9f6d65bee3708a1a2c82;hb=8225ff21ec85a70749b2c58283c0a9f714303b4b;hp=c146748ac2935206377a8418bfc6a5cf5b105fd2;hpb=2ee1d8e1c70ce20728bc3faada389a4802636352;p=notmuch diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el index c146748a..6907a5f9 100644 --- a/emacs/notmuch-lib.el +++ b/emacs/notmuch-lib.el @@ -144,6 +144,10 @@ the user hasn't set this variable with the old or new value." "[No Subject]" subject))) +(defun notmuch-id-to-query (id) + "Return a query that matches the message with id ID." + (concat "id:\"" (replace-regexp-in-string "\"" "\"\"" id t t) "\"")) + ;; (defun notmuch-common-do-stash (text) @@ -185,8 +189,9 @@ the user hasn't set this variable with the old or new value." (st2 (notmuch-split-content-type t2))) (if (or (string= (cadr st1) "*") (string= (cadr st2) "*")) - (string= (car st1) (car st2)) - (string= t1 t2)))) + ;; Comparison of content types should be case insensitive. + (string= (downcase (car st1)) (downcase (car st2))) + (string= (downcase t1) (downcase t2))))) (defvar notmuch-multipart/alternative-discouraged '( @@ -215,13 +220,13 @@ the given type." ;; Helper for parts which are generally not included in the default ;; JSON output. -(defun notmuch-get-bodypart-internal (message-id part-number process-crypto) +(defun notmuch-get-bodypart-internal (query part-number process-crypto) (let ((args '("show" "--format=raw")) (part-arg (format "--part=%s" part-number))) (setq args (append args (list part-arg))) (if process-crypto (setq args (append args '("--decrypt")))) - (setq args (append args (list message-id))) + (setq args (append args (list query))) (with-temp-buffer (let ((coding-system-for-read 'no-conversion)) (progn @@ -230,11 +235,14 @@ the given type." (defun notmuch-get-bodypart-content (msg part nth process-crypto) (or (plist-get part :content) - (notmuch-get-bodypart-internal (concat "id:" (plist-get msg :id)) nth process-crypto))) + (notmuch-get-bodypart-internal (notmuch-id-to-query (plist-get msg :id)) nth process-crypto))) -(defun notmuch-plist-to-alist (plist) +;; Converts a plist of headers to an alist of headers. The input plist should +;; have symbols of the form :Header as keys, and the resulting alist will have +;; symbols of the form 'Header as keys. +(defun notmuch-headers-plist-to-alist (plist) (loop for (key value . rest) on plist by #'cddr - collect (cons (substring (symbol-name key) 1) value))) + collect (cons (intern (substring (symbol-name key) 1)) value))) ;; Compatibility functions for versions of emacs before emacs 23. ;;