emacs: search: use orig-tags in search

This uses the recent functionality to show the tag changes in the
search buffer. Currently this is only used to show changes the search
buffer makes itself: i.e., it does not make display any changes
reflecting tagging done by other notmuch-buffers.
This commit is contained in:
Mark Walters 2014-03-22 11:51:11 +00:00 committed by David Bremner
parent a673d618d1
commit af8c8c2b46

View file

@ -753,24 +753,33 @@ non-authors is found, assume that all of the authors match."
format-string (notmuch-sanitize (plist-get result :authors)))) format-string (notmuch-sanitize (plist-get result :authors))))
((string-equal field "tags") ((string-equal field "tags")
(let ((tags (plist-get result :tags))) (let ((tags (plist-get result :tags))
(insert (format format-string (notmuch-tag-format-tags tags tags))))))) (orig-tags (plist-get result :orig-tags)))
(insert (format format-string (notmuch-tag-format-tags tags orig-tags)))))))
(defun notmuch-search-show-result (result &optional pos) (defun notmuch-search-show-result (result pos)
"Insert RESULT at POS or the end of the buffer if POS is null." "Insert RESULT at POS."
;; Ignore excluded matches ;; Ignore excluded matches
(unless (= (plist-get result :matched) 0) (unless (= (plist-get result :matched) 0)
(let ((beg (or pos (point-max)))) (save-excursion
(save-excursion (goto-char pos)
(goto-char beg) (dolist (spec notmuch-search-result-format)
(dolist (spec notmuch-search-result-format) (notmuch-search-insert-field (car spec) (cdr spec) result))
(notmuch-search-insert-field (car spec) (cdr spec) result)) (insert "\n")
(insert "\n") (notmuch-search-color-line pos (point) (plist-get result :tags))
(notmuch-search-color-line beg (point) (plist-get result :tags)) (put-text-property pos (point) 'notmuch-search-result result))))
(put-text-property beg (point) 'notmuch-search-result result))
(when (string= (plist-get result :thread) notmuch-search-target-thread) (defun notmuch-search-append-result (result)
(setq notmuch-search-target-thread "found") "Insert RESULT at the end of the buffer.
(goto-char beg)))))
This is only called when a result is first inserted so it also
sets the :orig-tag property."
(let ((new-result (plist-put result :orig-tags (plist-get result :tags)))
(pos (point-max)))
(notmuch-search-show-result new-result pos)
(when (string= (plist-get result :thread) notmuch-search-target-thread)
(setq notmuch-search-target-thread "found")
(goto-char pos))))
(defun notmuch-search-process-filter (proc string) (defun notmuch-search-process-filter (proc string)
"Process and filter the output of \"notmuch search\"" "Process and filter the output of \"notmuch search\""
@ -784,7 +793,7 @@ non-authors is found, assume that all of the authors match."
(save-excursion (save-excursion
(goto-char (point-max)) (goto-char (point-max))
(insert string)) (insert string))
(notmuch-sexp-parse-partial-list 'notmuch-search-show-result (notmuch-sexp-parse-partial-list 'notmuch-search-append-result
results-buf))))) results-buf)))))
(defun notmuch-search-tag-all (tag-changes) (defun notmuch-search-tag-all (tag-changes)