"[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)
(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
'(
;; 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
(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.
;;