aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-04-27 16:37:16 -0500
committerCraig Jennings <c@cjennings.net>2026-04-27 16:37:16 -0500
commiteb6425f74959c181fb4514f6e0dd167603d4648f (patch)
tree6f453a05d8dbe6888c7ec172f585dcc1f91dbeca /modules
parent31ca4db2a05ab7694a66d97ce2e788861534f47d (diff)
downloaddotemacs-eb6425f74959c181fb4514f6e0dd167603d4648f.tar.gz
dotemacs-eb6425f74959c181fb4514f6e0dd167603d4648f.zip
fix(mail): default cj/custom-keymap so the file byte-compiles standalone
cj/custom-keymap is defined in keybindings.el, which init.el loads before mail-config.el. The use-package org-msg :preface block calls keymap-set on it, and use-package wraps :preface in eval-and-compile. So byte-compiling mail-config.el on its own tries to call keymap-set when cj/custom-keymap is still void. Wrapping a defvar with a make-sparse-keymap default in eval-and-compile gives the symbol a value during compilation. At runtime keybindings.el has already populated the real keymap, so defvar does nothing.
Diffstat (limited to 'modules')
-rw-r--r--modules/mail-config.el8
1 files changed, 8 insertions, 0 deletions
diff --git a/modules/mail-config.el b/modules/mail-config.el
index 93989f975..0d9fe450c 100644
--- a/modules/mail-config.el
+++ b/modules/mail-config.el
@@ -26,6 +26,14 @@
(require 'user-constants)
+;; cj/custom-keymap's real binding is in keybindings.el, which init.el loads
+;; first. The use-package org-msg :preface below wraps in eval-and-compile, so
+;; standalone byte-compile evaluates `keymap-set` on it at compile time. This
+;; shim defines cj/custom-keymap then; defvar is a no-op once the real keymap
+;; is in place at load time.
+(eval-and-compile
+ (defvar cj/custom-keymap (make-sparse-keymap)))
+
;; -------------------- HarfBuzz Crash Fix: Disable Composition ---------------
;; Disable auto-composition in mu4e headers to prevent SIGSEGV from HarfBuzz
;; when shaping emoji characters in email subjects. See Commentary above.