Update mu4e stuff
This commit is contained in:
@@ -36,6 +36,10 @@ does.")
|
||||
(symbol-function 'mu4e-compose-mode)
|
||||
"The `message-mode' (or derived mode) used by `org-mu4e-compose-mode'.")
|
||||
|
||||
(defvar org-mu4e--old-mail-user-agent nil
|
||||
"Previous value of `mail-user-agent'.
|
||||
Set by `org-mu4e-mode'.")
|
||||
|
||||
(defvar-local org-mu4e--preview-message-buffer nil
|
||||
"The message buffer that backs this preview buffer.")
|
||||
|
||||
@@ -432,6 +436,12 @@ WIDE is the same as `mu4e-compose-reply'."
|
||||
(interactive "P")
|
||||
(org-mu4e-compose-reply-to nil wide))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-mu4e-compose-wide-reply ()
|
||||
"`org-mu4e-compose-mode' version of `mu4e-compose-wide-reply'."
|
||||
(interactive)
|
||||
(org-mu4e-compose-reply-to nil t))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-mu4e-compose-edit ()
|
||||
"This is like `mu4e-compose-edit', but utilizes `org-mu4e-compose-mode'."
|
||||
@@ -439,6 +449,13 @@ WIDE is the same as `mu4e-compose-reply'."
|
||||
(org-mu4e--with-replaced-compse-func
|
||||
(mu4e-compose-edit)))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-mu4e-compose-forward ()
|
||||
"`org-mu4e-compose-mode' version of `mu4e-compose-forward'."
|
||||
(interactive)
|
||||
(org-mu4e--with-replaced-compse-func
|
||||
(mu4e-compose-forward)))
|
||||
|
||||
;;;###autoload
|
||||
(defvar-keymap org-mu4e-compose-mode-map
|
||||
:parent org-mode-map
|
||||
@@ -558,5 +575,91 @@ This is derived from `org-mode', but it also essentially runs
|
||||
"Return `org-mu4e-user-agent'."
|
||||
'org-mu4e-user-agent)
|
||||
|
||||
;; ########################
|
||||
;; # Global override mode #
|
||||
;; ########################
|
||||
(defun org-mu4e--make-override-keymap (parent)
|
||||
"Create and return new override keymap for PARENT.
|
||||
An override keymap is the same as PARENT except that it remaps certain mu4e
|
||||
functions to their org-mu4e equivalents."
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(set-keymap-parent map parent)
|
||||
(define-key map [remap mu4e-compose-new] #'org-mu4e-compose-new)
|
||||
(define-key map [remap mu4e-compose-forward] #'org-mu4e-compose-forward)
|
||||
(define-key map [remap mu4e-compose-reply] #'org-mu4e-compose-reply)
|
||||
(define-key map [remap mu4e-compose-reply-to] #'org-mu4e-compose-reply-to)
|
||||
(define-key map [remap mu4e-compose-wide-reply]
|
||||
#'org-mu4e-compose-wide-reply)
|
||||
(define-key map [remap mu4e-compose-edit] #'org-mu4e-compose-edit)
|
||||
map))
|
||||
|
||||
(define-minor-mode org-mu4e--main-override-mode
|
||||
"Minor mode to replace key bindings in `mu4e-headers-mode'."
|
||||
:interactive nil
|
||||
:keymap (org-mu4e--make-override-keymap mu4e-main-mode-map))
|
||||
|
||||
(define-minor-mode org-mu4e--headers-override-mode
|
||||
"Minor mode to replace key bindings in `mu4e-headers-mode'."
|
||||
:interactive nil
|
||||
:keymap (org-mu4e--make-override-keymap mu4e-headers-mode-map))
|
||||
|
||||
(define-minor-mode org-mu4e--view-override-mode
|
||||
"Minor mode to replace key bindings in `mu4e-headers-mode'."
|
||||
:interactive nil
|
||||
:keymap (org-mu4e--make-override-keymap mu4e-view-mode-map))
|
||||
|
||||
(defun org-mu4e--enable-override-mode ()
|
||||
"Enable `org-mu4e-override-mode'."
|
||||
(setq org-mu4e--old-mail-user-agent mail-user-agent)
|
||||
(setopt mail-user-agent 'org-mu4e-user-agent)
|
||||
(add-hook 'mu4e-main-mode-hook #'org-mu4e--main-override-mode)
|
||||
(add-hook 'mu4e-headers-mode-hook #'org-mu4e--headers-override-mode)
|
||||
(add-hook 'mu4e-view-mode-hook #'org-mu4e--view-override-mode)
|
||||
(dolist (buffer (buffer-list))
|
||||
(with-current-buffer buffer
|
||||
(cond
|
||||
((derived-mode-p 'mu4e-main-mode)
|
||||
(org-mu4e--main-override-mode))
|
||||
((derived-mode-p 'mu4e-headers-mode)
|
||||
(org-mu4e--headers-override-mode))
|
||||
((derived-mode-p 'mu4e-view-mode)
|
||||
(org-mu4e--view-override-mode))))))
|
||||
|
||||
(defun org-mu4e--disable-override-mode ()
|
||||
"Disable `org-mu4e-override-mode'."
|
||||
(setopt mail-user-agent org-mu4e--old-mail-user-agent)
|
||||
(remove-hook 'mu4e-main-mode-hook #'org-mu4e--main-override-mode)
|
||||
(remove-hook 'mu4e-headers-mode-hook #'org-mu4e--headers-override-mode)
|
||||
(remove-hook 'mu4e-view-mode-hoook #'org-mu4e--view-override-mode)
|
||||
(dolist (buffer (buffer-list))
|
||||
(with-current-buffer buffer
|
||||
(org-mu4e--main-override-mode -1)
|
||||
(org-mu4e--headers-override-mode -1)
|
||||
(org-mu4e--view-override-mode -1))))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode org-mu4e-override-mode
|
||||
"Minor mode to replace all mu4e commands with their org-mu4e variant.
|
||||
This also sets `mail-user-agent'."
|
||||
:global t
|
||||
:group 'org-mu4e
|
||||
(if org-mu4e-override-mode
|
||||
(org-mu4e--enable-override-mode)
|
||||
(org-mu4e--disable-override-mode)))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-mu4e-install-evil-bindings ()
|
||||
"Convenience function to install useful evil keybindings for org-mu4e.
|
||||
Note that this mutates some org-mu4e keymaps (but not any mu4e keymaps)."
|
||||
(require 'evil)
|
||||
(evil-define-key '(normal visual) org-mu4e-compose-mode-map
|
||||
"G" #'mu4e-compose-goto-bottom
|
||||
"gg" #'mu4e-compose-goto-top)
|
||||
(evil-define-key 'normal org-mu4e-compose-mode-map
|
||||
"ZZ" #'message-send-and-exit
|
||||
"ZD" #'message-dont-send
|
||||
"ZQ" #'message-kill-buffer
|
||||
"ZF" #'mml-attach-file))
|
||||
|
||||
(provide 'org-mu4e-compose)
|
||||
;;; org-mu4e-compose.el ends here
|
||||
|
||||
Reference in New Issue
Block a user