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