mu4e: Add Org captures for e-mails and contacts
parent
8492f798f5
commit
c819f4cd5d
|
@ -274,4 +274,56 @@ This function could be useful in `mu4e-compose-mode-hook'."
|
|||
(delete-blank-lines)))))
|
||||
(add-hook 'mu4e-compose-mode-hook 'ambrevar/message-github)
|
||||
|
||||
|
||||
|
||||
;;; Org captures
|
||||
(when (require 'org-mu4e nil t)
|
||||
(require 'init-org) ; For org-agenda-files
|
||||
(add-to-list 'org-capture-templates
|
||||
`("t" "Mark e-mail in agenda" entry (file+headline ,(car org-agenda-files) "E-mails")
|
||||
"* TODO [#A] %?\nSCHEDULED: %(org-insert-time-stamp (org-read-date nil t \"+0d\"))\n%a\n"))
|
||||
|
||||
;; TODO: Don't duplicate contacts.
|
||||
(defun ambrevar/mu4e-contact-dwim ()
|
||||
"Return a list of (NAME . ADDRESS).
|
||||
If point has an `email' property, move it to the front of the list.
|
||||
Addresses in `mu4e-user-mail-address-list' are skipped."
|
||||
(let (result
|
||||
(message org-store-link-plist))
|
||||
(setq result (seq-remove
|
||||
(lambda (contact) (member (cadr contact) mu4e-user-mail-address-list))
|
||||
(apply 'append
|
||||
(mapcar (lambda (addr) (mail-extract-address-components addr t))
|
||||
(delq nil
|
||||
(mapcar (lambda (field) (mu4e-message-field message field))
|
||||
'(:from :to :cc :bcc)))))))
|
||||
;; Move contact at point to front.
|
||||
(let ((email-at-point (get-text-property (point) 'email))
|
||||
(contacts result))
|
||||
(when email-at-point
|
||||
(while contacts
|
||||
(if (not (string= (cadr (car contacts)) email-at-point))
|
||||
(setq contacts (cdr contacts))
|
||||
(setq result (delete (car contacts) result))
|
||||
(push (car contacts) result)
|
||||
(setq contacts nil)))))
|
||||
result))
|
||||
|
||||
(defun ambrevar/org-contacts-template-name (&optional return-value)
|
||||
"Like `org-contacts-template-name' for mu4e."
|
||||
(or (car (car (ambrevar/mu4e-contact-dwim)))
|
||||
return-value
|
||||
"%^{Name}"))
|
||||
(defun ambrevar/org-contacts-template-email (&optional return-value)
|
||||
"Like `org-contacts-template-name' for mu4e."
|
||||
(or (cadr (car (ambrevar/mu4e-contact-dwim)))
|
||||
return-value
|
||||
(concat "%^{" org-contacts-email-property "}p")))
|
||||
(add-to-list 'org-capture-templates
|
||||
`("c" "Add e-mail address to contacts" entry (file+headline ,(car org-contacts-files) "Contacts")
|
||||
"* %(ambrevar/org-contacts-template-name)
|
||||
:PROPERTIES:
|
||||
:EMAIL: %(ambrevar/org-contacts-template-email)
|
||||
:END:")))
|
||||
|
||||
(provide 'init-mu4e)
|
||||
|
|
Loading…
Reference in New Issue