(goto-char end))))))
(forward-line))))
-(defun notmuch-show-markup-part (beg end depth mime-message)
+(defun notmuch-show-markup-part (beg end depth)
(if (re-search-forward notmuch-show-part-begin-regexp nil t)
(progn
- (if (eq mime-message nil)
- (let ((filename (notmuch-show-get-filename)))
- (with-temp-buffer
- (insert-file-contents filename nil nil nil t)
- (setq mime-message (mm-dissect-buffer)))))
(forward-line)
- (let ((part-beg (point-marker)))
+ (let ((beg (point-marker)))
(re-search-forward notmuch-show-part-end-regexp)
-
- (let ((part-end (copy-marker (match-beginning 0))))
- (goto-char part-end)
+ (let ((end (copy-marker (match-beginning 0))))
+ (goto-char end)
(if (not (bolp))
(insert "\n"))
- (indent-rigidly part-beg part-end depth)
- (save-excursion
- (goto-char part-beg)
- (forward-line -1)
- (beginning-of-line)
- (let ((handle-type (mm-handle-type mime-message))
- mime-type)
- (if (sequencep (car handle-type))
- (setq mime-type (car handle-type))
- (setq mime-type (car (car (cdr handle-type))))
- )
- (if (equal mime-type "text/html")
- (mm-display-part mime-message))))
-
- (notmuch-show-markup-citations-region part-beg part-end depth)
+ (indent-rigidly beg end depth)
+ (notmuch-show-markup-citations-region beg end depth)
; Advance to the next part (if any) (so the outer loop can
; determine whether we've left the current message.
(if (re-search-forward notmuch-show-part-begin-regexp nil t)
(beginning-of-line)))))
- (goto-char end))
- mime-message)
+ (goto-char end)))
(defun notmuch-show-markup-parts-region (beg end depth)
(save-excursion
(goto-char beg)
- (let (mime-message)
- (while (< (point) end)
- (setq mime-message
- (notmuch-show-markup-part
- beg end depth mime-message))))))
+ (while (< (point) end)
+ (notmuch-show-markup-part beg end depth))))
(defun notmuch-show-markup-body (depth match btn)
"Markup a message body, (indenting, buttonizing citations,
(defvar notmuch-search-oldest-first t
"Show the oldest mail first in the search-mode")
+(defvar notmuch-search-disjunctive-regexp "\\<[oO][rR]\\>")
+
(defun notmuch-search-scroll-up ()
"Move forward through search results by one window's worth."
(interactive)
"Return the thread for the current thread"
(get-text-property (point) 'notmuch-search-thread-id))
+(defun notmuch-search-find-authors ()
+ "Return the authors for the current thread"
+ (get-text-property (point) 'notmuch-search-authors))
+
+(defun notmuch-search-find-subject ()
+ "Return the subject for the current thread"
+ (get-text-property (point) 'notmuch-search-subject))
+
(defun notmuch-search-show-thread ()
"Display the currently selected thread."
(interactive)
(goto-char (point-max))
(let ((beg (point-marker)))
(insert (format "%s %-7s %-40s %s (%s)\n" date count authors subject tags))
- (put-text-property beg (point-marker) 'notmuch-search-thread-id thread-id))
+ (put-text-property beg (point-marker) 'notmuch-search-thread-id thread-id)
+ (put-text-property beg (point-marker) 'notmuch-search-authors authors)
+ (put-text-property beg (point-marker) 'notmuch-search-subject subject))
(set 'line (match-end 0)))
(set 'more nil))))))
(delete-process proc))))
Runs a new search matching only messages that match both the
current search results AND the additional query string provided."
(interactive "sFilter search: ")
- (notmuch-search (concat notmuch-search-query-string " and " query) notmuch-search-oldest-first))
+ (let ((grouped-query (if (string-match-p notmuch-search-disjunctive-regexp query) (concat "( " query " )") query)))
+ (notmuch-search (concat notmuch-search-query-string " and " grouped-query) notmuch-search-oldest-first)))
(defun notmuch-search-filter-by-tag (tag)
"Filter the current search results based on a single tag.