Decouple doom/escape & evil

This commit is contained in:
Henrik Lissner 2018-01-06 03:00:45 -05:00
parent a88cb1e4eb
commit 60cded00e6
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 10 additions and 5 deletions

View file

@ -24,7 +24,7 @@
;; ;;
(defvar doom-escape-hook nil (defvar doom-escape-hook nil
"A hook run after C-g is pressed (or ESC in normal mode, for evil users). Both "A hook run after C-g is pressed (or ESC in normal mode, for evil users). Both
keys trigger `doom/escape'. trigger `doom/escape'.
If any hook returns non-nil, all hooks after it are ignored.") If any hook returns non-nil, all hooks after it are ignored.")
@ -34,16 +34,12 @@ If any hook returns non-nil, all hooks after it are ignored.")
(cond ((minibuffer-window-active-p (minibuffer-window)) (cond ((minibuffer-window-active-p (minibuffer-window))
;; quit the minibuffer if open. ;; quit the minibuffer if open.
(abort-recursive-edit)) (abort-recursive-edit))
((and (featurep 'evil) (evil-ex-hl-active-p 'evil-ex-search))
;; disable ex search buffer highlights.
(evil-ex-nohighlight))
;; Run all escape hooks. If any returns non-nil, then stop there. ;; Run all escape hooks. If any returns non-nil, then stop there.
((run-hook-with-args-until-success 'doom-escape-hook)) ((run-hook-with-args-until-success 'doom-escape-hook))
;; Back to the default ;; Back to the default
(t (keyboard-quit)))) (t (keyboard-quit))))
(global-set-key [remap keyboard-quit] #'doom/escape) (global-set-key [remap keyboard-quit] #'doom/escape)
(advice-add #'evil-force-normal-state :after #'doom/escape)
;; ;;

View file

@ -88,6 +88,15 @@
;; --- evil hacks ------------------------- ;; --- evil hacks -------------------------
(advice-add #'evil-force-normal-state :after #'doom/escape)
(defun +evil|disable-highlights ()
"Disable ex search buffer highlights."
(when (evil-ex-hl-active-p 'evil-ex-search)
(evil-ex-nohighlight)
t))
(add-hook 'doom-escape-hook #'+evil|disable-highlights)
(defun +evil*restore-normal-state-on-windmove (orig-fn &rest args) (defun +evil*restore-normal-state-on-windmove (orig-fn &rest args)
"If in anything but normal or motion mode when moving to another window, "If in anything but normal or motion mode when moving to another window,
restore normal mode. This prevents insert state from bleeding into other modes restore normal mode. This prevents insert state from bleeding into other modes