aboutsummaryrefslogtreecommitdiff
path: root/evil-ex.el
diff options
context:
space:
mode:
authorTom Dalziel <33435574+tomdl89@users.noreply.github.com>2021-04-09 10:57:43 +0200
committerGitHub <noreply@github.com>2021-04-09 10:57:43 +0200
commit7d00c23496c25a66f90ac7a6a354b1c7f9498162 (patch)
tree1292c2c340d4958488fc86c75478fd5d3220a6b1 /evil-ex.el
parentd3cc85bf828f04256de4a36ddb7624064b0252c8 (diff)
Fix `C-r` at evil ex search prompt (#1453)
* Introduce `evil-paste-clear-minibuffer-first` to aid `C-r` on search * Add test for pasting from register in ex-search prompt
Diffstat (limited to 'evil-ex.el')
-rw-r--r--evil-ex.el9
1 files changed, 8 insertions, 1 deletions
diff --git a/evil-ex.el b/evil-ex.el
index 09848b7..a5aa342 100644
--- a/evil-ex.el
+++ b/evil-ex.el
@@ -264,6 +264,11 @@ Clean up everything set up by `evil-ex-setup'."
(funcall runner 'stop)))))
(put 'evil-ex-teardown 'permanent-local-hook t)
+(defvar evil-paste-clear-minibuffer-first nil
+ "`evil-paste-before' cannot have `delete-minibuffer-contents' called
+before it fetches certain registers becuase this would trigger various ex-updates,
+sometimes moving point, so `C-a' `C-w' etc. would miss their intended target.")
+
(defun evil-ex-remove-default ()
"Remove the default text shown in the ex minibuffer.
When ex starts, the previous command is shown enclosed in
@@ -273,7 +278,9 @@ is pressed."
(/= (minibuffer-prompt-end) (point-max)))
(if (eq this-command 'evil-ex-delete-backward-char)
(setq this-command 'ignore))
- (delete-minibuffer-contents))
+ (if (eq this-original-command 'evil-paste-from-register)
+ (setq evil-paste-clear-minibuffer-first t)
+ (delete-minibuffer-contents)))
(remove-hook 'pre-command-hook #'evil-ex-remove-default))
(put 'evil-ex-remove-default 'permanent-local-hook t)