diff --git a/core/core-keybinds.el b/core/core-keybinds.el index 53c2ab47f..705dde5ec 100644 --- a/core/core-keybinds.el +++ b/core/core-keybinds.el @@ -72,20 +72,22 @@ and Emacs states, and for non-evil users.") More specifically, when `doom/escape' is pressed. If any hook returns non-nil, all hooks after it are ignored.") -(defun doom/escape () +(defun doom/escape (&optional interactive) "Run `doom-escape-hook'." - (interactive) + (interactive (list 'interactive)) (cond ((minibuffer-window-active-p (minibuffer-window)) ;; quit the minibuffer if open. - (setq this-command 'abort-recursive-edit) + (when interactive + (setq this-command 'abort-recursive-edit)) (abort-recursive-edit)) ;; Run all escape hooks. If any returns non-nil, then stop there. ((run-hook-with-args-until-success 'doom-escape-hook)) ;; don't abort macros ((or defining-kbd-macro executing-kbd-macro) nil) ;; Back to the default - ((setq this-command 'keyboard-quit) - (keyboard-quit)))) + ((unwind-protect (keyboard-quit) + (when interactive + (setq this-command 'keyboard-quit)))))) (global-set-key [remap keyboard-quit] #'doom/escape)