From 914b0fae43bcfb3769e2fc8faa588ff85d115096 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 19 May 2017 13:04:14 +0200 Subject: [PATCH] Don't intercept evil-force-normal-state in popups If we remap evil-force-normal-state, we're bypassing all the useful cleanup hooks attached to +evil-esc-hook, which is bothersome in popups we want to do some editing in. --- core/core-popups.el | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/core/core-popups.el b/core/core-popups.el index 916d5df50..d07a03af3 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -278,15 +278,21 @@ properties." (after! evil (let ((map doom-popup-mode-map)) - (define-key map [remap evil-window-delete] 'doom/popup-close) - (define-key map [remap evil-save-modified-and-close] 'doom/popup-close) - (define-key map [remap evil-window-move-very-bottom] 'ignore) - (define-key map [remap evil-window-move-very-top] 'ignore) - (define-key map [remap evil-window-move-far-left] 'ignore) - (define-key map [remap evil-window-move-far-right] 'ignore) - (define-key map [remap evil-window-split] 'ignore) - (define-key map [remap evil-window-vsplit] 'ignore) - (define-key map [remap evil-force-normal-state] 'doom/popup-close-maybe)) + (define-key map [remap evil-window-delete] #'doom/popup-close) + (define-key map [remap evil-save-modified-and-close] #'doom/popup-close) + (define-key map [remap evil-window-move-very-bottom] #'ignore) + (define-key map [remap evil-window-move-very-top] #'ignore) + (define-key map [remap evil-window-move-far-left] #'ignore) + (define-key map [remap evil-window-move-far-right] #'ignore) + (define-key map [remap evil-window-split] #'ignore) + (define-key map [remap evil-window-vsplit] #'ignore)) + + (defun doom|popup-close-maybe () + "Close the current window if it's a popup with no :noesc property." + (when (and (doom-popup-p) + (not (doom-popup-prop :noesc))) + (delete-window))) + (add-hook '+evil-esc-hook #'doom|popup-close-maybe) (defun doom|popup-close-all-maybe () "Close popups with an :autoclose property when pressing ESC from normal