branch: elpa/evil
commit 41006dc73d8c850d2a6378a3c026aedb16b80813
Author: Tom Dalziel <tom...@hotmail.com>
Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>

    Preserve non-blank last line when :move ing
    
    Fixes #1595
---
 evil-commands.el |  5 ++++-
 evil-tests.el    | 17 +++++++++++------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/evil-commands.el b/evil-commands.el
index 24e4953091..ad57b22010 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -1754,8 +1754,11 @@ of the block."
     (forward-line address)
     (let* ((m (set-marker (make-marker) (point)))
            (txt (buffer-substring-no-properties beg end))
-           (len (length txt)))
+           (len (length txt))
+           (last-line-blank (progn (goto-char (point-max)) (bolp))))
       (delete-region beg end)
+      (unless last-line-blank ; as vim, preserve lack of blank last line
+        (progn (goto-char (point-max)) (when (bolp) (delete-char -1))))
       (goto-char m)
       (set-marker m nil)
       ;; ensure text consists of complete lines
diff --git a/evil-tests.el b/evil-tests.el
index b0d2ce1c08..028a10560c 100644
--- a/evil-tests.el
+++ b/evil-tests.el
@@ -8386,12 +8386,17 @@ Source
     (evil-test-buffer
       "5\n4\n3\n2\n1\n"
       (":g/^/m0")
-      "1\n2\n3\n4\n5\n"))
-  (ert-info ("Move with global, and visual selection")
-    (evil-test-buffer
-      "<5\n4\n3\n2\n[1]>\n"
-      (":g/^/m0")
-      "1\n2\n3\n4\n5\n")))
+      "1\n2\n3\n4\n5\n")
+    (ert-info ("... and visual selection")
+      (evil-test-buffer
+        "<5\n4\n3\n2\n[1]>\n"
+        (":g/^/m0")
+        "1\n2\n3\n4\n5\n"))
+    (ert-info ("... and no last blank line")
+      (evil-test-buffer
+        "5\n4\n3\n2\n1"
+        (":g/^/m0")
+        "1\n2\n3\n4\n5"))))
 
 (ert-deftest evil-test-write ()
   :tags '(evil ex)

Reply via email to