lisp/my-mail.el
author Fabien Ninoles <fabien@tzone.org>
Sat, 03 Jan 2015 11:21:36 -0500
changeset 9 56e80afa3e1c
parent 1 a234a7579958
permissions -rw-r--r--
Only start sloppy timer on a mouse_enter. This avoid a bug when the focus is stolen by another window.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     1
(require 'browse-url)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     2
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     3
;;;_ Custom functions
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     4
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     5
; Redefine browse-url-mail for ?subject=SUBJECT support.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     6
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     7
(defun browse-url-mail (url &optional new-window)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     8
  "Open a new mail message buffer within Emacs.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     9
Default to using the mailto: URL around or before point as the
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    10
recipient's address.  Supplying a non-nil interactive prefix argument
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    11
will cause the mail to be composed in another window rather than the
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    12
current one.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    13
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    14
When called interactively, if variable `browse-url-new-window-flag' is
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    15
non-nil use `compose-mail-other-window', othserwise `compose-mail'.  A
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    16
non-nil interactive prefix argument reverses the effect of
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    17
`browse-url-new-window-flag'.
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    18
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    19
When called non-interactively, optional second argument NEW-WINDOW is
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    20
used instead of `browse-url-new-window-flag'."
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    21
  (interactive (browse-url-interactive-arg "Mailto URL: "))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    22
  (save-excursion
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    23
    (let ((to (if (string-match "^mailto:" url)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    24
		  (substring url 7)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    25
		url))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    26
	  (subject nil))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    27
      (if (string-match "\\?subject=" to)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    28
	  (setq subject (substring to (match-end 0))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    29
		to (substring to 0 (match-beginning 0))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    30
      (if (browse-url-maybe-new-window new-window)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    31
	  (compose-mail-other-window to subject nil nil
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    32
				     (list 'insert-buffer (current-buffer)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    33
	(compose-mail to subject nil nil nil
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    34
		      (list 'insert-buffer (current-buffer)))))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    35
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    36
;;;_ Wanderlust settings
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    37
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    38
(autoload 'wl-user-agent-compose "wl-draft" nil t)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    39
(if (boundp 'mail-user-agent)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    40
    (setq mail-user-agent 'wl-user-agent))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    41
(if (fboundp 'define-mail-user-agent)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    42
    (define-mail-user-agent
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    43
      'wl-user-agent
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    44
      'wl-user-agent-compose
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    45
      'wl-draft-send
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    46
      'wl-draft-kill
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    47
      'mail-send-hook))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    48
(setq wl-draft-init-config-alist
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    49
      '((reply "^\\(To\\|CC\\): .*@alteranode.com" 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    50
	       ("From" . "Fabien Ninoles <fabien@alteranode.com>")) 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    51
	(reply "^\\(To\\|CC\\): .*fabien@flipr.com" 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    52
	       ("From" . "Fabien Ninoles <fabien@flipr.com>"))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    53
(setq wl-draft-send-config-alist 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    54
      '(("^From: .*fabien\\(\\+.*\\)?@tzone.org"
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    55
	 ("BCC" . "fabien+sentmail@tzone.org"))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    56
	("From: .*fabien\\(\\+.*\\)?@alteranode.com" 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    57
	 ("Organisation" . "Alteranode, inc.")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    58
	 ("BCC" . "fabien+sentmail@alteranode.com")) 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    59
	("From: .*fabien\\(\\+.*\\)?@flipr.com" 
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    60
	 ("BCC" . "fabien+sentmail@alteranode.com"))))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    61
(add-hook 'wl-mail-setup-hook
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    62
	  '(lambda ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    63
	     (wl-draft-config-exec wl-draft-init-config-alist)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    64
	     (setq wl-draft-config-exec-flag t)))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    65
(add-hook 'wl-draft-send-hook
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    66
	  '(lambda ()
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    67
	     (setq wl-draft-config-exec-flag t)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    68
	     (wl-draft-config-exec wl-draft-send-config-alist)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    69
	     ))
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    70
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    71
;;;_ BBDB configuration
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    72
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    73
(require 'bbdb-wl)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    74
(bbdb-wl-setup)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    75
;; exceptional folders against auto collection
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    76
(setq bbdb-wl-ignore-folder-regexp "^@")
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    77
(setq signature-use-bbdb t)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    78
;; automatically add mailing list fields
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    79
(setq bbdb-ignore-selected-messages-confirmation t)
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    80
a234a7579958 Add Emacs lisp files.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    81
(provide 'my-mail)