mu4e: Fix Gmail trash management

master
Pierre Neidhardt 2018-04-11 20:04:26 +05:30
parent 5748a8b7ca
commit 4509d86d79
2 changed files with 45 additions and 4 deletions

View File

@ -152,11 +152,15 @@
"[" 'mu4e-headers-prev-unread
;; "R" 'mu4e-headers-mark-for-refile
"p" 'mu4e-headers-toggle-include-related
"r" 'mu4e-compose-reply)
"r" 'mu4e-compose-reply
;; Custom
"d" 'ambrevar/mu4e-headers-move-to-trash)
(evil-define-key 'visual mu4e-headers-mode-map
"d" 'mu4e-headers-mark-for-trash
"m" 'mu4e-headers-mark-for-move
"D" 'mu4e-headers-mark-for-delete
"u" 'mu4e-headers-mark-for-unmark)
"u" 'mu4e-headers-mark-for-unmark
;; Custom
"d" 'ambrevar/mu4e-headers-move-to-trash)
(evil-define-key 'motion mu4e-view-mode-map
(kbd "SPC") 'mu4e-view-scroll-up-or-next
(kbd "<tab>") 'shr-next-link
@ -172,7 +176,9 @@
(kbd "M-k") 'mu4e-view-headers-prev ; Custom
"h" 'evil-backward-char
"zh" 'mu4e-view-toggle-html
"gx" 'mu4e-view-go-to-url)
"gx" 'mu4e-view-go-to-url
;; Custom
"d" 'ambrevar/mu4e-view-move-to-trash)
(evil-set-initial-state 'mu4e-compose-mode 'insert)
(evil-define-key 'normal mu4e-compose-mode-map
"gg" 'mu4e-compose-goto-top)))

View File

@ -147,6 +147,41 @@ This function is suitable for `mu4e-compose-mode-hook'."
(define-key map (kbd "C-c C-t") 'org-mu4e-store-and-capture))
(setq org-mu4e-link-query-in-headers-mode nil))
;;; Gmail trash fix.
(defvar ambrevar/mu4e-move-to-trash-patterns nil
"List of regexps to match for moving to trash instead of deleting them.
Matches are done against the :maildir field of the e-mail at
point. See `ambrevar/mu4e-headers-move-to-trash' and
`ambrevar/mu4e-view-move-to-trash'.")
(defun ambrevar/mu4e-headers-move-to-trash ()
(interactive)
(let ((msg-dir (mu4e-message-field (mu4e-message-at-point) :maildir)))
(if (not (seq-filter (lambda (re)
(string-match re msg-dir))
ambrevar/mu4e-move-to-trash-patterns))
(mu4e-headers-mark-for-delete)
(mu4e-mark-set 'move (funcall mu4e-trash-folder (mu4e-message-at-point)))
(mu4e-headers-next))))
(defun ambrevar/mu4e-view-move-to-trash ()
(interactive)
(mu4e~view-in-headers-context
(ambrevar/mu4e-headers-move-to-trash)
(mu4e~headers-move (or n 1))))
;;; Don't display trashed messages in bookmarks. This is useful for Gmail where
;;; the "delete" flag is not used.
(defvar ambrevar/mu4e-trash-folders nil
"List of trash folders to filter out from bookmarks.")
(load "~/personal/mail/mu4e.el" t)
;; Do this after setting `ambrevar/mu4e-trash-folders'.
(dolist (bookmark mu4e-bookmarks)
;; TODO: Why mu4e-bookmark-query does not work here?
(setf (car bookmark) (concat (mapconcat (lambda (s) (format "NOT maildir:\"%s\" and " s))
ambrevar/mu4e-trash-folders "")
(car bookmark))))
(provide 'init-mu4e)