mu4e: support 'no trash flag' for all mark-for-trash

Use a non-macro implementation for mu4e-(view|headers)-mark-for-trash,
and honor the no-trash flag.

Fixes #1687.
This commit is contained in:
Dirk-Jan C. Binnema 2020-05-16 11:44:48 +03:00
parent a2d315df4c
commit f016f257f9
2 changed files with 8 additions and 18 deletions

View File

@ -806,7 +806,6 @@ after the end of the search results."
(mu4e~headers-defun-mark-for flag) (mu4e~headers-defun-mark-for flag)
(mu4e~headers-defun-mark-for move) (mu4e~headers-defun-mark-for move)
(mu4e~headers-defun-mark-for read) (mu4e~headers-defun-mark-for read)
(mu4e~headers-defun-mark-for trash)
(mu4e~headers-defun-mark-for unflag) (mu4e~headers-defun-mark-for unflag)
(mu4e~headers-defun-mark-for untrash) (mu4e~headers-defun-mark-for untrash)
(mu4e~headers-defun-mark-for unmark) (mu4e~headers-defun-mark-for unmark)
@ -816,20 +815,18 @@ after the end of the search results."
(defvar mu4e-move-to-trash-patterns '() (defvar mu4e-move-to-trash-patterns '()
"List of regexps to match for moving to trash instead of flagging them. "List of regexps to match for moving to trash instead of flagging them.
This is particularly useful for mailboxes that don't use the This is particularly useful for mailboxes that don't use the
trash flag like Gmail. See `mu4e-headers-mark-or-move-to-trash' trash flag like Gmail. See `mu4e-view-mark-for-trash'.")
and `mu4e-view-mark-or-move-to-trash'.")
(defun mu4e-headers-mark-or-move-to-trash () (defun mu4e-headers-mark-for-trash ()
"Mark message for \"move\" to the trash folder if the message "Mark message for \"move\" to the trash folder if the message
maildir matches any regexp in `mu4e-move-to-trash-patterns'. maildir matches any regexp in `mu4e-move-to-trash-patterns'.
Otherwise mark with the \"trash\" flag. Otherwise mark with the \"trash\" flag."
Also see `mu4e-view-mark-or-move-to-trash'."
(interactive) (interactive)
(let ((msg-dir (mu4e-message-field (mu4e-message-at-point) :maildir))) (let ((msg-dir (mu4e-message-field (mu4e-message-at-point) :maildir)))
(if (not (seq-filter (lambda (re) (if (not (seq-filter (lambda (re)
(string-match re msg-dir)) (string-match re msg-dir))
mu4e-move-to-trash-patterns)) mu4e-move-to-trash-patterns))
(mu4e-headers-mark-for-trash) (mu4e-headers-mark-and-next 'trash)
(mu4e-mark-set 'move (if (functionp mu4e-trash-folder) (mu4e-mark-set 'move (if (functionp mu4e-trash-folder)
(funcall mu4e-trash-folder (mu4e-message-at-point)) (funcall mu4e-trash-folder (mu4e-message-at-point))
(mu4e-get-trash-folder (mu4e-message-at-point)))) (mu4e-get-trash-folder (mu4e-message-at-point))))
@ -895,8 +892,8 @@ Also see `mu4e-view-mark-or-move-to-trash'."
(define-key map "y" 'mu4e-select-other-view) (define-key map "y" 'mu4e-select-other-view)
;; marking/unmarking ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; marking/unmarking ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-key map (kbd "<backspace>") 'mu4e-headers-mark-or-move-to-trash) (define-key map (kbd "<backspace>") 'mu4e-headers-mark-for-trash)
(define-key map (kbd "d") 'mu4e-headers-mark-or-move-to-trash) (define-key map (kbd "d") 'mu4e-headers-mark-for-trash)
(define-key map (kbd "<delete>") 'mu4e-headers-mark-for-delete) (define-key map (kbd "<delete>") 'mu4e-headers-mark-for-delete)
(define-key map (kbd "<deletechar>") 'mu4e-headers-mark-for-delete) (define-key map (kbd "<deletechar>") 'mu4e-headers-mark-for-delete)
(define-key map (kbd "D") 'mu4e-headers-mark-for-delete) (define-key map (kbd "D") 'mu4e-headers-mark-for-delete)

View File

@ -873,7 +873,7 @@ FUNC should be a function taking two arguments:
(define-key map "A" (mu4e~native-def mu4e-view-attachment-action)) (define-key map "A" (mu4e~native-def mu4e-view-attachment-action))
;; marking/unmarking ;; marking/unmarking
(define-key map "d" 'mu4e-view-mark-or-move-to-trash) (define-key map "d" 'mu4e-view-mark-for-trash)
(define-key map (kbd "<delete>") 'mu4e-view-mark-for-delete) (define-key map (kbd "<delete>") 'mu4e-view-mark-for-delete)
(define-key map (kbd "<deletechar>") 'mu4e-view-mark-for-delete) (define-key map (kbd "<deletechar>") 'mu4e-view-mark-for-delete)
(define-key map (kbd "D") 'mu4e-view-mark-for-delete) (define-key map (kbd "D") 'mu4e-view-mark-for-delete)
@ -1614,8 +1614,8 @@ list."
(put ',funcname 'definition-name ',mark)))) (put ',funcname 'definition-name ',mark))))
(mu4e~view-defun-mark-for move) (mu4e~view-defun-mark-for move)
(mu4e~view-defun-mark-for trash)
(mu4e~view-defun-mark-for refile) (mu4e~view-defun-mark-for refile)
(mu4e~view-defun-mark-for trash)
(mu4e~view-defun-mark-for delete) (mu4e~view-defun-mark-for delete)
(mu4e~view-defun-mark-for flag) (mu4e~view-defun-mark-for flag)
(mu4e~view-defun-mark-for unflag) (mu4e~view-defun-mark-for unflag)
@ -1631,13 +1631,6 @@ list."
(mu4e~view-in-headers-context (mu4e~view-in-headers-context
(mu4e-mark-execute-all))) (mu4e-mark-execute-all)))
(defun mu4e-view-mark-or-move-to-trash (&optional n)
"See `mu4e-headers-mark-or-move-to-trash'."
(interactive "P")
(mu4e~view-in-headers-context
(mu4e-headers-mark-or-move-to-trash)
(mu4e~headers-move (or n 1))))
;;; URL handling ;;; URL handling
(defun mu4e~view-get-urls-num (prompt &optional multi) (defun mu4e~view-get-urls-num (prompt &optional multi)