From 22232fc39598ffc065ee134889c3143566be5faa Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 12 May 2026 00:34:03 -0500 Subject: refactor(mail): extract the mu4e attachment workflow into its own module The attachment-save UI (the MIME-part filters, the three save commands, and the `special-mode'-derived selection buffer) was ~230 lines in `mail-config.el' and depended on nothing else there. It moves to `modules/mu4e-attachments.el', which `mail-config' now requires. `cj/email-map' and its C-; e bindings stay put. The keymap just points at commands that now live next door. The unit tests move with it: `test-mail-config-attachments.el' becomes `test-mu4e-attachments.el' and requires the new module directly instead of pulling in the whole mu4e and org-msg use-package stack. The two tests that check `cj/email-map' wiring move to a new `test-mail-config.el', since that map belongs to `mail-config'. One of the moved tests quietly relied on a real mu4e install (it loaded `mu4e-mime-parts' through a load-path entry that loading `mail-config' happens to add), so it now stubs that path itself. --- tests/test-mail-config.el | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/test-mail-config.el (limited to 'tests/test-mail-config.el') diff --git a/tests/test-mail-config.el b/tests/test-mail-config.el new file mode 100644 index 000000000..d2e2cc0b7 --- /dev/null +++ b/tests/test-mail-config.el @@ -0,0 +1,24 @@ +;;; test-mail-config.el --- Tests for mail-config keymap wiring -*- lexical-binding: t; -*- + +;;; Commentary: +;; Tests that mail-config wires the attachment-save commands (defined in +;; `mu4e-attachments') into its `cj/email-map' prefix keymap. + +;;; Code: + +(require 'ert) + +(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) +(require 'mail-config) + +(ert-deftest test-mail-config-email-map-attachment-bindings () + "Normal: the email prefix map routes to the attachment-save commands." + (should (eq (lookup-key cj/email-map (kbd "S")) + #'cj/mu4e-save-all-attachments)) + (should (eq (lookup-key cj/email-map (kbd "s")) + #'cj/mu4e-save-attachment-here)) + (should (eq (lookup-key cj/email-map (kbd "m")) + #'cj/mu4e-save-some-attachments))) + +(provide 'test-mail-config) +;;; test-mail-config.el ends here -- cgit v1.2.3