From a0cb6135f9513817f74a02a53985a1850e11f0ca Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 24 Jun 2026 07:21:55 -0400 Subject: fix(elisp): make dead let-bindings of foreign special vars take effect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Byte-compile flagged three let-bindings of package vars as unused lexical variables — under lexical-binding they compiled to dead locals the package never saw, so the intended behavior silently never happened. Declare each var special so the binding is dynamic: music-config now actually suppresses the emms overwrite prompt on playlist save (emms-source-playlist-ask-before-overwrite) and turns off orderless smart-case for the music picker; org-roam copy-todo-to-today now actually applies its custom dailies capture template. Same class as the coverage-core json fix. Claude-Session: https://claude.ai/code/session_01BqrdWUo9GcznYX2pZr76gZ --- modules/music-config.el | 6 ++++++ modules/org-roam-config.el | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/modules/music-config.el b/modules/music-config.el index 55eb47d25..7c3af0e13 100644 --- a/modules/music-config.el +++ b/modules/music-config.el @@ -98,6 +98,12 @@ (require 'cj-window-toggle-lib) ;; side-window size memory (F10 toggle) (require 'system-lib) ;; cj/confirm-strong (overwrite confirms) +;; Declare these foreign package vars special so `let'-binding them below +;; compiles as a dynamic bind, not a dead lexical local -- otherwise emms / +;; orderless never see the binding (the lexical-binding foreign-special-var trap). +(defvar orderless-smart-case) +(defvar emms-source-playlist-ask-before-overwrite) + ;;; Settings (no Customize) (defvar cj/music-root music-dir diff --git a/modules/org-roam-config.el b/modules/org-roam-config.el index 218f37d68..40df688d9 100644 --- a/modules/org-roam-config.el +++ b/modules/org-roam-config.el @@ -27,6 +27,11 @@ (require 'user-constants) +;; Declared special so the `let'-binding in `cj/org-roam-copy-todo-to-today' +;; compiles as a dynamic bind, not a dead lexical local -- otherwise the custom +;; capture template never reaches org-roam-dailies (the foreign-special-var trap). +(defvar org-roam-dailies-capture-templates) + ;; ---------------------------------- Org Roam --------------------------------- (defconst cj/--org-roam-dailies-head -- cgit v1.2.3