emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/evil a4b1910 5/7: Replace state evil-delete-backward-word


From: ELPA Syncer
Subject: [nongnu] elpa/evil a4b1910 5/7: Replace state evil-delete-backward-word
Date: Sun, 19 Dec 2021 12:57:43 -0500 (EST)

branch: elpa/evil
commit a4b19105b930498973d96d879c0c8d846840fa8e
Author: Tom Dalziel <tom_dl@hotmail.com>
Commit: Tom Dalziel <33435574+tomdl89@users.noreply.github.com>

    Replace state evil-delete-backward-word
---
 evil-commands.el | 19 +++++++++----------
 evil-tests.el    | 46 +++++++++++++++++++++++++++++-----------------
 2 files changed, 38 insertions(+), 27 deletions(-)

diff --git a/evil-commands.el b/evil-commands.el
index e764857..d34abfd 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -1578,16 +1578,15 @@ be joined with the previous line if and only if
 
 (evil-define-command evil-delete-backward-word ()
   "Delete previous word."
-  (if (and (bolp) (not (bobp)))
-      (progn
-        (unless evil-backspace-join-lines (user-error "Beginning of line"))
-        (delete-char -1))
-    (delete-region (max
-                    (save-excursion
-                      (evil-backward-word-begin)
-                      (point))
-                    (line-beginning-position))
-                   (point))))
+  (let ((beg (save-excursion (evil-backward-word-begin) (point)))
+        (end (point)))
+    (cond
+     ((evil-replace-state-p) (while (< beg (point))
+                               (evil-replace-backspace)))
+     ((or (not (bolp)) (bobp)) (delete-region (max beg 
(line-beginning-position))
+                                              end))
+     (evil-backspace-join-lines (delete-char -1))
+     (t (user-error "Beginning of line")))))
 
 (evil-define-command evil-delete-back-to-indentation ()
   "Delete back to the first non-whitespace character.
diff --git a/evil-tests.el b/evil-tests.el
index c17c97c..2cd80bd 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -2079,24 +2079,36 @@ ine3 line3      line3 l\n")))
       "line1\n\n[\n]last line\n")))
 
 (ert-deftest evil-test-delete-backward-word ()
-  "Test `evil-delete-backward-word' in insert state."
+  "Test `evil-delete-backward-word' in insert & replace states."
   :tags '(evil)
-  (let ((evil-backspace-join-lines t))
-    (evil-test-buffer
-      "abc def\n   ghi j[k]l\n"
-      ("i" (kbd "C-w"))
-      "abc def\n   ghi [k]l\n"
-      ((kbd "C-w"))
-      "abc def\n   [k]l\n"
-      ((kbd "C-w"))
-      "abc def\n[k]l\n"
-      ((kbd "C-w"))
-      "abc def[k]l\n"))
-  (let (evil-backspace-join-lines)
-    (evil-test-buffer
-      "abc def\n[k]l\n"
-      (should-error (execute-kbd-macro (concat "i" (kbd "C-w"))))
-      "abc def\n[k]l\n")))
+  (ert-info ("evil-delete-backward-word in insert state")
+    (let ((evil-backspace-join-lines t))
+      (evil-test-buffer
+        "abc def\n   ghi j[k]l\n"
+        ("i" (kbd "C-w"))
+        "abc def\n   ghi [k]l\n"
+        ((kbd "C-w"))
+        "abc def\n   [k]l\n"
+        ((kbd "C-w"))
+        "abc def\n[k]l\n"
+        ((kbd "C-w"))
+        "abc def[k]l\n"))
+    (let (evil-backspace-join-lines)
+      (evil-test-buffer
+        "abc def\n[k]l\n"
+        (should-error (execute-kbd-macro (concat "i" (kbd "C-w"))))
+        "abc def\n[k]l\n")))
+  (ert-info ("evil-delete-backward-word in replace state")
+    (evil-test-buffer
+      "alpha bravo [c]harlie delta"
+      ("R" "one two")
+      "alpha bravo one two[ ]delta"
+      ("\C-w")
+      "alpha bravo one [l]ie delta"
+      ("\C-w")
+      "alpha bravo [c]harlie delta"
+      ("\C-w")
+      "alpha [b]ravo charlie delta")))
 
 (ert-deftest evil-test-delete-back-to-indentation ()
   "Test `evil-delete-back-to-indentation' in insert state."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]