* 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

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)
(or target ;; ask or check the target if it's a move
(case mark (case mark
(refile (mu4e-get-refile-folder (mu4e-message-at-point))) (refile (mu4e-get-refile-folder (mu4e-message-at-point)))
(move (mu4e~mark-get-move-target target)) (move (mu4e~mark-get-move-target target))
(trash (mu4e-get-trash-folder (mu4e-message-at-point))) )))) (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)