mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 02:48:08 +01:00
contrib: pick: add thread based utility functions
Previously notmuch-pick had no thread based functionality. This adds a macro to iterate through all messages in a thread. To simplify this it adds a text-property marker to the first message of each thread.
This commit is contained in:
parent
db465e443f
commit
f8a8afe5c2
1 changed files with 24 additions and 0 deletions
|
@ -594,6 +594,29 @@ message will be \"unarchived\", i.e. the tag changes in
|
||||||
target
|
target
|
||||||
(get-buffer buffer-name))))
|
(get-buffer buffer-name))))
|
||||||
|
|
||||||
|
(defun notmuch-pick-thread-top ()
|
||||||
|
(when (notmuch-pick-get-message-properties)
|
||||||
|
(while (not (or (notmuch-pick-get-prop :first) (eobp)))
|
||||||
|
(forward-line -1))))
|
||||||
|
|
||||||
|
(defun notmuch-pick-thread-mapcar (function)
|
||||||
|
"Iterate through all messages in the current thread
|
||||||
|
and call FUNCTION for side effects."
|
||||||
|
(save-excursion
|
||||||
|
(notmuch-pick-thread-top)
|
||||||
|
(loop collect (funcall function)
|
||||||
|
do (forward-line)
|
||||||
|
while (and (notmuch-pick-get-message-properties)
|
||||||
|
(not (notmuch-pick-get-prop :first))))))
|
||||||
|
|
||||||
|
(defun notmuch-pick-get-messages-ids-thread-search ()
|
||||||
|
"Return a search string for all message ids of messages in the current thread."
|
||||||
|
(mapconcat 'identity
|
||||||
|
(notmuch-pick-thread-mapcar 'notmuch-pick-get-message-id)
|
||||||
|
" or "))
|
||||||
|
|
||||||
|
;; Functions below here display the pick buffer itself.
|
||||||
|
|
||||||
(defun notmuch-pick-clean-address (address)
|
(defun notmuch-pick-clean-address (address)
|
||||||
"Try to clean a single email ADDRESS for display. Return
|
"Try to clean a single email ADDRESS for display. Return
|
||||||
AUTHOR_NAME if present, otherwise return AUTHOR_EMAIL. Return
|
AUTHOR_NAME if present, otherwise return AUTHOR_EMAIL. Return
|
||||||
|
@ -702,6 +725,7 @@ message together with all its descendents."
|
||||||
(push "├" tree-status)))
|
(push "├" tree-status)))
|
||||||
|
|
||||||
(push (concat (if replies "┬" "─") "►") tree-status)
|
(push (concat (if replies "┬" "─") "►") tree-status)
|
||||||
|
(plist-put msg :first (and first (eq 0 depth)))
|
||||||
(notmuch-pick-goto-and-insert-msg (plist-put msg :tree-status tree-status))
|
(notmuch-pick-goto-and-insert-msg (plist-put msg :tree-status tree-status))
|
||||||
(pop tree-status)
|
(pop tree-status)
|
||||||
(pop tree-status)
|
(pop tree-status)
|
||||||
|
|
Loading…
Reference in a new issue