aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Dalziel <tom_dl@hotmail.com>2024-04-30 14:10:59 +0200
committerTom Dalziel <33435574+tomdl89@users.noreply.github.com>2024-04-30 14:24:08 +0200
commit8d3da0c404d058b73949c32763b0e34f92f76f0e (patch)
tree08ddceba49abe004dfded2d0c81ff9d347ee61c5
parentfe44a565e6806dba4c298a76eb8800063016ec2d (diff)
Don't mutate register when stripping test props during paste
Fixes an issue noticed while triaging #1894
-rw-r--r--evil-commands.el14
-rw-r--r--evil-tests.el12
2 files changed, 19 insertions, 7 deletions
diff --git a/evil-commands.el b/evil-commands.el
index bde14d6..feb5225 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -2249,9 +2249,10 @@ The return value is the yanked text."
(let ((evil-kill-on-visual-paste (not evil-kill-on-visual-paste)))
(evil-visual-paste count register))
(evil-with-undo
- (let* ((text (if register
- (evil-get-register register)
- (current-kill 0)))
+ (let* ((text (copy-sequence
+ (if register
+ (evil-get-register register)
+ (current-kill 0))))
(yank-handler (or yank-handler
(when (stringp text)
(car-safe (get-text-property
@@ -2305,9 +2306,10 @@ The return value is the yanked text."
(if (evil-visual-state-p)
(evil-visual-paste count register)
(evil-with-undo
- (let* ((text (if register
- (evil-get-register register)
- (current-kill 0)))
+ (let* ((text (copy-sequence
+ (if register
+ (evil-get-register register)
+ (current-kill 0))))
(yank-handler (or yank-handler
(when (stringp text)
(car-safe (get-text-property
diff --git a/evil-tests.el b/evil-tests.el
index 1766e7f..b8f81f5 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -2750,7 +2750,17 @@ This bufferThis bufferThis buffe[r];; and for Lisp evaluation."))
("p")
";; This buffer is for notes you don't want to save.[;];
;; If you want to create a file, visit that file wi;; th C-x C-f,
-;; then enter the text in that file's own buffer. ;;")))
+;; then enter the text in that file's own buffer. ;;"))
+ (ert-info ("Don't mutate register when stripping test props")
+ (let (indent-tabs-mode)
+ (evil-test-buffer
+ "[a]aaaaaaaaaaaa
+bbbbbbbb
+cccc"
+ ("\C-vG$yA " "\C-r\"" [escape] "up")
+ "aaaaaaaaaaaaa[a]aaaaaaaaaaaa
+bbbbbbbb bbbbbbbb
+cccc cccc"))))
(ert-deftest evil-test-paste-after ()
"Test `evil-paste-after'"