[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-escape d53c8930e8 091/133: Improve evil-repeat-info s
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-escape d53c8930e8 091/133: Improve evil-repeat-info support but not quite right |
Date: |
Wed, 3 Jan 2024 21:59:55 -0500 (EST) |
branch: elpa/evil-escape
commit d53c8930e8f8b1c7aac144ea898e15b5b51efcea
Author: syl20bnr <sylvain.benner@gmail.com>
Commit: syl20bnr <sylvain.benner@gmail.com>
Improve evil-repeat-info support but not quite right
---
evil-escape.el | 71 ++++++++++++++++++++++++++++++++--------------------------
1 file changed, 39 insertions(+), 32 deletions(-)
diff --git a/evil-escape.el b/evil-escape.el
index 7515ac36cf..bf885cee30 100644
--- a/evil-escape.el
+++ b/evil-escape.el
@@ -123,6 +123,9 @@ key first."
:type 'sexp
:group 'evil-escape)
+(defvar evil-escape-inhibit nil
+ "When non nil evil-escape is inhibited.")
+
;;;###autoload
(define-minor-mode evil-escape-mode
"Buffer-local minor mode to escape insert state and everything else
@@ -131,36 +134,36 @@ with a key sequence."
:group 'evil
:global t
(if evil-escape-mode
- (add-hook 'pre-command-hook 'evil-escape-pre-command-hook t)
+ (add-hook 'pre-command-hook 'evil-escape-pre-command-hook)
(remove-hook 'pre-command-hook 'evil-escape-pre-command-hook)))
(defun evil-escape ()
- "Escape from everything... well almost everything."
+ "Return the function to escape from everything... well almost everything."
(interactive)
(pcase evil-state
(`normal (evil-escape--escape-normal-state))
(`motion (evil-escape--escape-motion-state))
- (`insert (evil-normal-state))
+ (`insert 'evil-normal-state)
(`emacs (evil-escape--escape-emacs-state))
(`hybrid (evil-escape--escape-emacs-state))
(`evilified (evil-escape--escape-emacs-state))
- (`visual (evil-exit-visual-state))
- (`replace (evil-normal-state))
- (`lisp (evil-normal-state))
- (`iedit (evil-iedit-state/quit-iedit-mode))
- (`iedit-insert (evil-iedit-state/quit-iedit-mode))
+ (`visual 'evil-exit-visual-state)
+ (`replace 'evil-normal-state)
+ (`lisp 'evil-normal-state)
+ (`iedit 'evil-iedit-state/quit-iedit-mode)
+ (`iedit-insert 'evil-iedit-state/quit-iedit-mode)
(_ (evil-escape--escape-normal-state))))
(defun evil-escape-pre-command-hook ()
"evil-escape pre-command hook."
(with-demoted-errors "evil-escape: Error %S"
(when (evil-escape-p)
- (let ((modified (buffer-modified-p))
- (repeat-info evil-repeat-info)
- (inserted (evil-escape--insert))
- (fkey (elt evil-escape-key-sequence 0))
- (skey (elt evil-escape-key-sequence 1))
- (evt (read-event nil nil evil-escape-delay)))
+ (let* ((modified (buffer-modified-p))
+ (repeat-info evil-repeat-info)
+ (inserted (evil-escape--insert))
+ (fkey (elt evil-escape-key-sequence 0))
+ (skey (elt evil-escape-key-sequence 1))
+ (evt (read-event nil nil evil-escape-delay)))
(when inserted (evil-escape--delete))
(setq evil-repeat-info repeat-info)
(set-buffer-modified-p modified)
@@ -171,15 +174,19 @@ with a key sequence."
(and evil-escape-unordered-key-sequence
(equal (this-command-keys) (evil-escape--second-key))
(char-equal evt fkey))))
- (evil-escape)
- (setq this-command 'ignore))
+ (setq this-command (evil-escape)))
((null evt))
(t (setq unread-command-events
(append unread-command-events (list evt)))))))))
+(defadvice evil-repeat (around evil-escape-repeat-info activate)
+ (let ((evil-escape-inhibit t))
+ ad-do-it))
+
(defun evil-escape-p ()
"Return non-nil if evil-escape can run."
- (and (or (window-minibuffer-p)
+ (and (not evil-escape-inhibit)
+ (or (window-minibuffer-p)
(bound-and-true-p isearch-mode)
(and (fboundp 'helm-alive-p) (helm-alive-p))
(not (eq evil-state 'normal)))
@@ -194,38 +201,38 @@ with a key sequence."
:initial-value nil))))
(defun evil-escape--escape-normal-state ()
- "Escape from normal state."
+ "Return the function to escape from normal state."
(cond
((and (fboundp 'helm-alive-p) (helm-alive-p))
- (abort-recursive-edit))
- ((bound-and-true-p isearch-mode) (isearch-abort))
- ((window-minibuffer-p) (abort-recursive-edit))))
+ 'abort-recursive-edit)
+ ((bound-and-true-p isearch-mode) 'isearch-abort)
+ ((window-minibuffer-p) 'abort-recursive-edit)))
(defun evil-escape--escape-motion-state ()
- "Escape from motion state."
+ "Return the function to escape from motion state."
(cond
((or (eq 'apropos-mode major-mode)
(eq 'help-mode major-mode)
(eq 'ert-results-mode major-mode)
(eq 'ert-simple-view-mode major-mode))
- (quit-window))
+ 'quit-window)
((eq 'undo-tree-visualizer-mode major-mode)
- (undo-tree-visualizer-quit))
+ 'undo-tree-visualizer-quit)
((and (fboundp 'helm-ag--edit-abort)
(string-equal "*helm-ag-edit*" (buffer-name)))
- (call-interactively 'helm-ag--edit-abort))
- ((eq 'neotree-mode major-mode) (neotree-hide))
- (t (evil-normal-state))))
+ 'helm-ag--edit-abort)
+ ((eq 'neotree-mode major-mode) 'neotree-hide)
+ (t 'evil-normal-state)))
(defun evil-escape--escape-emacs-state ()
- "Escape from emacs state."
+ "Return the function to escape from emacs state."
(cond ((string-match "magit" (symbol-name major-mode))
- (evil-escape--escape-with-q))
+ 'evil-escape--escape-with-q)
((eq 'paradox-menu-mode major-mode)
- (evil-escape--escape-with-q))
+ 'evil-escape--escape-with-q)
((eq 'gist-list-menu-mode major-mode)
- (quit-window))
- (t (evil-normal-state))))
+ 'quit-window)
+ (t 'evil-normal-state)))
(defun evil-escape--first-key ()
"Return the first key string in the key sequence."
- [nongnu] elpa/evil-escape b548e84505 118/133: remove leading space in package header, (continued)
- [nongnu] elpa/evil-escape b548e84505 118/133: remove leading space in package header, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape fd633a9ffb 093/133: Attempt 2 at fixing evil-repeat, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 3c335a5709 119/133: Bump version to 3.16, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape c23a84de99 085/133: Handle error in evil-escape-pre-command-hook, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 84e3166473 105/133: Add support for excluding evil states, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape aa3e64af5d 097/133: Add support for ibuffer, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 32fec964f8 090/133: Fix evil-repeat problem, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape d7f9940227 078/133: Fallback to evil-escape--escape-normal-state, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 88b2cfbb38 128/133: Update url in commentary, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 7966f4b1be 084/133: Add cl-lib dependency and provide a initial value to reduce., ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape d53c8930e8 091/133: Improve evil-repeat-info support but not quite right,
ELPA Syncer <=
- [nongnu] elpa/evil-escape c80afe7335 099/133: Handle minibuffer in emacs-state as well, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 533e8a5649 095/133: Update README and bump to 3.10, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 5e7a4c873e 107/133: Add support for nil evil-escape-key-sequence, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 58ec625a94 104/133: custom handling for deft causes duplicate inserts, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape 73b30bfd91 116/133: Use string-match-p over string-match, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape ddb2348b40 073/133: Bump version to 3.02, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape ce6982f7ce 125/133: Fix indentation, ELPA Syncer, 2024/01/03
- [nongnu] elpa/evil-escape f71394b38a 132/133: Add support for treemacs (#4), ELPA Syncer, 2024/01/03