branch: elpa/bind-map
commit 5913a860c56a7c2f4ce9b7323b9080f515d34c93
Author: Aaron Jensen <[email protected]>
Commit: Aaron Jensen <[email protected]>

    Programmatically created buffers get leader keys
---
 bind-map.el | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/bind-map.el b/bind-map.el
index 8fc74c66645..fd7cb053300 100644
--- a/bind-map.el
+++ b/bind-map.el
@@ -335,6 +335,8 @@ mode maps. Set up by bind-map.el." map))
          (turn-on-override-mode (intern (format "turn-on-%s" override-mode)))
          (turn-on-override-mode-doc (format "Enable `%s' except in minibuffer"
                                             override-mode))
+         (ensure-override-mode-func (intern (format "bind-map--ensure-%s" 
override-mode)))
+         (ensure-override-mode-doc (format "Ensure %s is enabled in 
appropriate buffers." override-mode))
          (evil-keys (or (plist-get args :evil-keys)
                         bind-map-default-evil-keys))
          (evil-states (or (plist-get args :evil-states)
@@ -403,7 +405,18 @@ mode maps. Set up by bind-map.el." map))
          ;; Normalize Evil keymaps when the override mode toggles
          (with-eval-after-load 'evil
            (add-hook ',(intern (format "%s-hook" override-mode))
-                     #'evil-normalize-keymaps))))
+                     #'evil-normalize-keymaps))
+         ;; Defensive hook to ensure the mode is enabled in buffers that may
+         ;; have been created in unusual ways (e.g., programmatically via
+         ;; get-buffer-create). This catches cases where 
after-change-major-mode-hook
+         ;; might not fire or fires before the global mode is enabled.
+         (defun ,ensure-override-mode-func ()
+           ,ensure-override-mode-doc
+           (when (and ,global-override-mode
+                      (not ,override-mode)
+                      (not (minibufferp)))
+             (,override-mode 1)))
+         (add-hook 'buffer-list-update-hook #',ensure-override-mode-func)))
 
      (if (or minor-modes major-modes)
          ;; only bind keys in root-map

Reply via email to