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)