Update mu4e stuff
This commit is contained in:
@@ -36,6 +36,10 @@ does.")
|
|||||||
(symbol-function 'mu4e-compose-mode)
|
(symbol-function 'mu4e-compose-mode)
|
||||||
"The `message-mode' (or derived mode) used by `org-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
|
(defvar-local org-mu4e--preview-message-buffer nil
|
||||||
"The message buffer that backs this preview buffer.")
|
"The message buffer that backs this preview buffer.")
|
||||||
|
|
||||||
@@ -432,6 +436,12 @@ WIDE is the same as `mu4e-compose-reply'."
|
|||||||
(interactive "P")
|
(interactive "P")
|
||||||
(org-mu4e-compose-reply-to nil wide))
|
(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
|
;;;###autoload
|
||||||
(defun org-mu4e-compose-edit ()
|
(defun org-mu4e-compose-edit ()
|
||||||
"This is like `mu4e-compose-edit', but utilizes `org-mu4e-compose-mode'."
|
"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
|
(org-mu4e--with-replaced-compse-func
|
||||||
(mu4e-compose-edit)))
|
(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
|
;;;###autoload
|
||||||
(defvar-keymap org-mu4e-compose-mode-map
|
(defvar-keymap org-mu4e-compose-mode-map
|
||||||
:parent org-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'."
|
"Return `org-mu4e-user-agent'."
|
||||||
'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)
|
(provide 'org-mu4e-compose)
|
||||||
;;; org-mu4e-compose.el ends here
|
;;; org-mu4e-compose.el ends here
|
||||||
|
|||||||
@@ -3414,38 +3414,35 @@ This is the same as `evil-ret' except that it works for links in
|
|||||||
;; mu4e compose HTML messages
|
;; mu4e compose HTML messages
|
||||||
(use-package org-mime)
|
(use-package org-mime)
|
||||||
(require 'org-mu4e-compose)
|
(require 'org-mu4e-compose)
|
||||||
(setq mail-user-agent 'org-mu4e-user-agent
|
(with-eval-after-load 'org-mu4e-compose
|
||||||
org-mime-org-html-with-latex-default 'dvisvgm
|
(org-mu4e-override-mode))
|
||||||
org-mime-export-options '(:with-latex dvisvgm :with-footnotes t))
|
(setq ;; mail-user-agent 'org-mu4e-user-agent
|
||||||
(evil-define-key '(normal visual) org-mu4e-compose-mode-map
|
org-mime-org-html-with-latex-default 'dvisvgm
|
||||||
"G" #'mu4e-compose-goto-bottom
|
org-mime-export-options '(:with-latex dvisvgm :with-footnotes t))
|
||||||
"gg" #'mu4e-compose-goto-top)
|
;; (evil-define-key '(normal visual) org-mu4e-compose-mode-map
|
||||||
(evil-define-key 'normal org-mu4e-compose-mode-map
|
;; "G" #'mu4e-compose-goto-bottom
|
||||||
"ZZ" #'message-send-and-exit
|
;; "gg" #'mu4e-compose-goto-top)
|
||||||
"ZD" #'message-dont-send
|
;; (evil-define-key 'normal org-mu4e-compose-mode-map
|
||||||
"ZQ" #'message-kill-buffer
|
;; "ZZ" #'message-send-and-exit
|
||||||
"ZF" #'mml-attach-file)
|
;; "ZD" #'message-dont-send
|
||||||
(evil-define-key 'normal mu4e-view-mode-map
|
;; "ZQ" #'message-kill-buffer
|
||||||
"R" #'org-mu4e-compose-reply
|
;; "ZF" #'mml-attach-file)
|
||||||
"cr" #'org-mu4e-compose-reply
|
;; (evil-define-key 'normal mu4e-view-mode-map
|
||||||
"ce" #'org-mu4e-compose-edit
|
;; "R" #'org-mu4e-compose-reply
|
||||||
"C" #'org-mu4e-compose-new)
|
;; "cr" #'org-mu4e-compose-reply
|
||||||
(evil-define-key 'normal mu4e-headers-mode-map
|
;; "ce" #'org-mu4e-compose-edit
|
||||||
"R" #'org-mu4e-compose-reply
|
;; "C" #'org-mu4e-compose-new
|
||||||
"cr" #'org-mu4e-compose-reply
|
;; "cc" #'org-mu4e-compose-new
|
||||||
"E" #'org-mu4e-compose-edit
|
;; "cw" #'org-mu4e-compose-wide-reply)
|
||||||
"ce" #'org-mu4e-compose-edit
|
;; (evil-define-key 'normal mu4e-headers-mode-map
|
||||||
"C" #'org-mu4e-compose-new)
|
;; "R" #'org-mu4e-compose-reply
|
||||||
(evil-define-key 'normal mu4e-main-mode-map
|
;; "cr" #'org-mu4e-compose-reply
|
||||||
"C" #'compose-mail
|
;; "E" #'org-mu4e-compose-edit
|
||||||
"cc" #'compose-mail)
|
;; "ce" #'org-mu4e-compose-edit
|
||||||
(defun my/-setup-org-mu4e-compose-mode ()
|
;; "C" #'org-mu4e-compose-new)
|
||||||
"Setup up stuff in `org-mu4e-compose' buffers."
|
;; (evil-define-key 'normal mu4e-main-mode-map
|
||||||
(setq-local ltex-eglot-variable-save-method 'file)
|
;; "C" #'compose-mail
|
||||||
;; this should come last so it can pick up the above
|
;; "cc" #'compose-mail)
|
||||||
;; (my/eglot-if-trusted)
|
|
||||||
)
|
|
||||||
(add-hook 'org-mu4e-compose-mode-hook #'my/-setup-org-mu4e-compose-mode)
|
|
||||||
(setopt mu4e-compose-switch 'display-buffer)
|
(setopt mu4e-compose-switch 'display-buffer)
|
||||||
(defun my/-match-mu4e-message-buffer (buffer _action)
|
(defun my/-match-mu4e-message-buffer (buffer _action)
|
||||||
"Matcher for mu4e message buffers for `display-buffer-alist'.
|
"Matcher for mu4e message buffers for `display-buffer-alist'.
|
||||||
|
|||||||
Reference in New Issue
Block a user