* mu4e: mu4e-mark: mark all messages in region, even if point does not point

at msg
This commit is contained in:
djcb 2012-10-01 21:37:26 +03:00
parent 38a441a9bd
commit 679a214ba0
1 changed files with 9 additions and 13 deletions

View File

@ -171,26 +171,22 @@ provided, function asks for it."
(defun mu4e-mark-set (mark &optional target)
"Mark the header at point, or, if region is active, mark all
headers in the region. Optionally, provide TARGET (for moves)."
(let ((target ;; ask or check the target if it's a move
(or target
(case mark
(refile (mu4e-get-refile-folder (mu4e-message-at-point)))
(move (mu4e~mark-get-move-target target))
(trash (mu4e-get-trash-folder (mu4e-message-at-point))) ))))
(let ((get-target
(lambda (target)
(or target ;; ask or check the target if it's a move
(case mark
(refile (mu4e-get-refile-folder (mu4e-message-at-point)))
(move (mu4e~mark-get-move-target target))
(trash (mu4e-get-trash-folder (mu4e-message-at-point))))))))
(if (not (use-region-p))
;; single message
(mu4e-mark-at-point mark target)
(mu4e-mark-at-point mark (funcall get-target target))
;; mark all messages in the region.
(save-excursion
(let ((b (region-beginning)) (e (region-end)))
(goto-char b)
(while (<= (line-beginning-position) e)
(setq target ;; refile/trash targets are determined per-message
(case mark
(refile (mu4e-get-refile-folder (mu4e-message-at-point)))
(trash (mu4e-get-trash-folder (mu4e-message-at-point)))
(t target)))
(mu4e-mark-at-point mark target)
(mu4e-mark-at-point mark (funcall get-target target))
(forward-line 1)))))))
(defun mu4e-mark-restore (docid)