3 ;;; Configuration for VM
7 (setq vm-reply-subject-prefix "Re: "
8 vm-included-text-prefix "> "
9 vm-included-text-attribution-format "%F <%f> wrote:\n\n"
10 vm-folder-directory "~/Mail/"
11 vm-startup-with-summary t
12 vm-skip-deleted-messages nil
13 vm-circular-folders nil
15 vm-highlighted-header-regexp "^From\\|^Subject"
16 vm-movemail-program "movemail-hack"
17 vm-mail-header-from (format "Mark Wooding <%s>"
18 (or (mdw-config 'email)
19 "mdw@distorted.org.uk"))
20 vm-delete-after-saving t
21 vm-move-after-deleting t
22 vm-delete-empty-folders nil
23 vm-summary-format "%*%a [%-16.16F]: %I%s\n")
25 (setq-default vm-summary-show-threads t)
27 (setq auth-sources '("~/.authinfo.gpg")
28 vm-imap-max-message-size 0
29 vm-imap-refer-to-inbox-by-account-name t
30 vm-imap-save-to-server t
32 '(("imap-ssl:mail.distorted.org.uk:993:*:login:mdw:*"
34 ("imap-ssl:mail.distorted.org.uk:993:*:login:markw:*"
36 ("imap-ssl:imap.dovecot.chiark.greenend.org.uk:993:*:login:mdw:*"
38 ("imap-ssl:imap.dovecot.chiark.greenend.org.uk:993:*:login:mwooding:*"
40 ("imap-ssl:imap.gmail.com:993:*:login:distorted.mdw@gmail.com:*"
43 (and (eq (terminal-coding-system) 'utf-8)
44 (add-to-list 'vm-mime-default-face-charsets "utf-8"))
46 (setq vm-mime-qp-encoder-program nil
47 vm-mime-qp-decoder-program nil
48 vm-mime-base64-encoder-program nil
49 vm-mime-base64-decoder-program nil)
51 (setq vm-visible-headers '("resent-from:" "from:" "reply-to:" "sender:"
52 "to:" "apparently-to:" "cc:"
54 "delivered-to:" "return-path:"))
56 (setq vm-reply-ignored-addresses
57 (let ((pat bbdb-user-mail-names))
58 (if (string-prefix-p "^" pat)
59 (setq pat (substring pat 1)))
60 (if (string-suffix-p "$" pat)
61 (setq pat (substring pat 0 (1- (length pat)))))
62 (cons (concat "\\<" pat "\\>") nil)))
64 (defvar mdw-mailing-lists
65 '("hibachi-dealers-members@chiark\\.greenend\\.org\\.uk"))
67 (setq vm-mime-external-content-types-alist
68 '(("image/jpeg" "xdg-open")
69 ("image/jpg" "xdg-open")
70 ("image/gif" "xdg-open")
71 ("image/bmp" "xdg-open")
72 ("image/tiff" "xdg-open")
73 ("application/postscript" "xdg-open")
74 ("application/pdf" "xdg-open")))
76 (setq vm-url-browser "sensible-browser")
78 (setq vm-frame-parameter-alist
79 '((folder ((width . 81) (height . 33)))
80 (summary ((width . 81) (height . 33)))
81 (primary-summary ((width . 81) (height . 33)))))
83 (setq vm-auto-folder-alist
84 '(("delivered-to" ("root@" . "admin"))
85 ("from" ("Cron Daemon" . "admin"))))
87 (defun join-strings (del strings)
88 (with-output-to-string
92 (setq strings (cdr strings))
96 (setq strings (cdr strings))))))
98 (defun mdw-vm-fix-mailing-lists ()
101 (or (vm-mail-mode-get-header-contents "Resent-To:")
102 (vm-mail-mode-get-header-contents "Resent-Cc:")
103 (vm-mail-mode-get-header-contents "Resent-Bcc:")
104 (let ((mailing-list-regex (concat "\\<\\("
108 (to (vm-mail-mode-get-header-contents "To:"))
109 (cc (vm-mail-mode-get-header-contents "Cc:")))
110 (if (or (and to (string-match mailing-list-regex to))
111 (and cc (string-match mailing-list-regex cc)))
112 (let ((addrs (nconc (and to (vm-parse-addresses to))
113 (and cc (vm-parse-addresses cc))))
116 (if (string-match mailing-list-regex (car addrs))
117 (setq new (cons (car addrs) new)))
118 (setq addrs (cdr addrs)))
119 (vm-mail-mode-remove-header "Cc:")
120 (vm-mail-mode-remove-header "To:")
122 (goto-char (point-min))
123 (insert (format "To: %s\n" (join-strings ", " new))))))))))
125 (add-hook 'vm-reply-hook 'mdw-vm-fix-mailing-lists)
127 (defun mdw-mark-as-spam ()
129 (save-window-excursion
130 (vm-pipe-message-to-command "userv spamd spam" 1))
131 (vm-delete-message 1))
132 (define-key vm-summary-mode-map "/" 'mdw-mark-as-spam)