diff options
| author | Tom Dalziel <tom_dl@hotmail.com> | 2024-04-30 14:10:59 +0200 |
|---|---|---|
| committer | Tom Dalziel <33435574+tomdl89@users.noreply.github.com> | 2024-04-30 14:24:08 +0200 |
| commit | 8d3da0c404d058b73949c32763b0e34f92f76f0e (patch) | |
| tree | 08ddceba49abe004dfded2d0c81ff9d347ee61c5 | |
| parent | fe44a565e6806dba4c298a76eb8800063016ec2d (diff) | |
Don't mutate register when stripping test props during paste
Fixes an issue noticed while triaging #1894
| -rw-r--r-- | evil-commands.el | 14 | ||||
| -rw-r--r-- | evil-tests.el | 12 |
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'" |
