~pkal/autocrypt

ref: 39c06eb4020c38de8f282340449691210cc23bb8 autocrypt/autocrypt-mu4e.el -rw-r--r-- 2.5 KiB
39c06eb4Philip K Rename autocrypt-load for Rmail 1 year, 1 month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
;;; autocrypt-mu4e.el --- Autocrypt for mu4e -*- lexical-binding:t -*-

;; Author: Philip K. <philip@warpmail.net>
;; Version: 0.4.0
;; Keywords: comm
;; Package-Requires: ((emacs "25.1"))
;; URL: https://git.sr.ht/~zge/autocrypt

;; This file is NOT part of Emacs.
;;
;; This file is in the public domain, to the extent possible under law,
;; published under the CC0 1.0 Universal license.
;;
;; For a full copy of the CC0 license see
;; https://creativecommons.org/publicdomain/zero/1.0/legalcode

;;; Commentary:

;; MUA specific functions for mu4e
;;
;; Setup with (add-hook 'mu4e-main-mode-hook #'autocrypt-mode)

;;; Code:

(declare-function mu4e-view-raw-message "mu4e" () )

;;; XXX: mu4e seems to share no common mode, and the `derived-mode'
;;;       specializer supports only one mode (currently). Therefore
;;;       the method definitions have to be duplicated.

;;;###autoload
(cl-defmethod autocrypt-load-system ((_mode (derived-mode mu4e-main-mode)))
  "Load this module."
  (require 'autocrypt-mu4e))

(cl-defmethod autocrypt-install ((_mode (derived-mode mu4e-main-mode)))
  "Install autocrypt hooks for mu4e."
  (require 'autocrypt-mu4e)
  (add-hook 'mu4e-view-mode-hook #'autocrypt-process-header)
  (add-hook 'mu4e-compose-mode-hook #'autocrypt-compose-setup))

(cl-defmethod autocrypt-uninstall ((_mode (derived-mode mu4e-main-mode)))
  "Remove autocrypt hooks for mu4e."
  (remove-hook 'mu4e-view-mode-hook #'autocrypt-process-header)
  (remove-hook 'mu4e-compose-mode-hook #'autocrypt-compose-setup))

(cl-defmethod autocrypt-get-header ((_mode (derived-mode mu4e-main-mode))
                                    header)
  "Ask mu4e to return HEADER."
  (save-window-excursion
    (with-current-buffer (mu4e-view-raw-message)
      (prog1 (mail-fetch-field header)
        (kill-buffer (current-buffer))))))

;;;###autoload
(cl-defmethod autocrypt-load-system ((_mode (derived-mode mu4e-view-mode)))
  "Load this module."
  (require 'autocrypt-mu4e))

(cl-defmethod autocrypt-install ((_mode (derived-mode mu4e-view-mode)))
  "Install autocrypt hooks for mu4e."
  (autocrypt-install 'mu4e-main-mode))

(cl-defmethod autocrypt-uninstall ((_mode (derived-mode mu4e-view-mode)))
  "Remove autocrypt hooks for mu4e."
  (autocrypt-uninstall 'mu4e-main-mode))

(cl-defmethod autocrypt-get-header ((_mode (derived-mode mu4e-view-mode))
                                    header)
  "Ask mu4e to return HEADER."
  (autocrypt-get-header 'mu4e-main-mode header))

(provide 'autocrypt-mu4e)

;;; autocrypt-mu4e.el ends here