diff --git a/modules/editor/evil/init.el b/modules/editor/evil/init.el index 1cee4dd95..cbbdf6e9a 100644 --- a/modules/editor/evil/init.el +++ b/modules/editor/evil/init.el @@ -225,6 +225,11 @@ and complains if a module is loaded too early (during startup)." (with-demoted-errors "evil-collection error: %s" (evil-collection-init (list module))))) + (defadvice! +evil-collection-disable-blacklist-a (orig-fn) + :around #'evil-collection-vterm-toggle-send-escape ; allow binding to ESC + (let (evil-collection-key-blacklist) + (funcall-interactively orig-fn))) + ;; These modes belong to packages that Emacs always loads at startup, causing ;; evil-collection to load immediately. We avoid this by loading them after ;; evil-collection has first loaded... @@ -245,34 +250,30 @@ and complains if a module is loaded too early (during startup)." (mapc #'+evil-collection-init '(comint custom help))) - (defadvice! +evil-collection-disable-blacklist-a (orig-fn) - :around #'evil-collection-vterm-toggle-send-escape ; allow binding to ESC - (let (evil-collection-key-blacklist) - (funcall-interactively orig-fn))) - ;; ...or on first invokation of their associated major/minor modes. - (add-transient-hook! 'Buffer-menu-mode - (+evil-collection-init '(buff-menu "buff-menu"))) - (add-transient-hook! 'image-mode - (+evil-collection-init 'image)) - (add-transient-hook! 'emacs-lisp-mode - (+evil-collection-init 'elisp-mode)) - (add-transient-hook! 'occur-mode - (+evil-collection-init '(occur replace))) - (add-transient-hook! 'minibuffer-setup-hook - (when evil-collection-setup-minibuffer - (+evil-collection-init 'minibuffer) - (evil-collection-minibuffer-insert))) - (add-transient-hook! 'process-menu-mode - (+evil-collection-init '(process-menu simple))) - (add-transient-hook! 'xwidget-webkit-mode - (+evil-collection-init 'xwidget)) + (after! evil + (add-transient-hook! 'Buffer-menu-mode + (+evil-collection-init '(buff-menu "buff-menu"))) + (add-transient-hook! 'image-mode + (+evil-collection-init 'image)) + (add-transient-hook! 'emacs-lisp-mode + (+evil-collection-init 'elisp-mode)) + (add-transient-hook! 'occur-mode + (+evil-collection-init '(occur replace))) + (add-transient-hook! 'minibuffer-setup-hook + (when evil-collection-setup-minibuffer + (+evil-collection-init 'minibuffer) + (evil-collection-minibuffer-insert))) + (add-transient-hook! 'process-menu-mode + (+evil-collection-init '(process-menu simple))) + (add-transient-hook! 'xwidget-webkit-mode + (+evil-collection-init 'xwidget)) - ;; HACK Do this ourselves because evil-collection break's `eval-after-load' - ;; load order by loading their target plugin before applying keys. This - ;; makes it hard for end-users to overwrite these keybinds with a - ;; simple `after!' or `with-eval-after-load'. - (dolist (mode evil-collection-mode-list) - (dolist (req (or (cdr-safe mode) (list mode))) - (with-eval-after-load req - (+evil-collection-init mode +evil-collection-disabled-list))))) + ;; HACK Do this ourselves because evil-collection break's `eval-after-load' + ;; load order by loading their target plugin before applying keys. This + ;; makes it hard for end-users to overwrite these keybinds with a + ;; simple `after!' or `with-eval-after-load'. + (dolist (mode evil-collection-mode-list) + (dolist (req (or (cdr-safe mode) (list mode))) + (with-eval-after-load req + (+evil-collection-init mode +evil-collection-disabled-list))))))