branch: elpa/evil commit f64cdca60ad55b0a5f77c0fc38f82d42822f88b3 Author: Tom Dalziel <tom...@hotmail.com> Commit: Tom Dalziel <33435574+tomd...@users.noreply.github.com>
evil-change only open newline if delete-func deleted line fixes #1636 --- evil-commands.el | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/evil-commands.el b/evil-commands.el index 44675aa1aa..94a43f5b61 100644 --- a/evil-commands.el +++ b/evil-commands.el @@ -1698,18 +1698,22 @@ of the block." (interactive "<R><x><y>") (let ((delete-func (or delete-func #'evil-delete)) (nlines (1+ (evil-count-lines beg end))) - (opoint (save-excursion - (goto-char beg) - (line-beginning-position)))) + opoint leftmost-point) + (save-excursion + (goto-char beg) + (setq opoint (line-beginning-position)) + (setq leftmost-point + (let ((inhibit-field-text-motion t)) (line-beginning-position)))) (unless (eq evil-want-fine-undo t) (evil-start-undo-step)) (funcall delete-func beg end type register yank-handler) (cond ((eq type 'line) (setq this-command 'evil-change-whole-line) ; for evil-maybe-remove-spaces - (if (= opoint (point)) - (evil-open-above 1) - (evil-open-below 1))) + (cond + ((/= opoint leftmost-point) (evil-insert 1)) ; deletion didn't delete line + ((= opoint (point)) (evil-open-above 1)) + (t (evil-open-below 1)))) ((eq type 'block) (evil-insert 1 nlines)) (t