Skip to content

Commit 476f5fb

Browse files
committed
Visual X, deletion column respects stick eol
1 parent 643e01d commit 476f5fb

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

evil-commands.el

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,7 +1510,10 @@ Save in REGISTER or in the kill-ring with YANK-HANDLER."
15101510
;; Special exceptions to ever saving column:
15111511
(not (memq evil-this-motion '(evil-forward-word-begin
15121512
evil-forward-WORD-begin))))
1513-
(move-to-column evil-operator-start-col))))
1513+
(move-to-column (if (and (eq most-positive-fixnum temporary-goal-column)
1514+
(memq last-command '(next-line previous-line)))
1515+
temporary-goal-column
1516+
evil-operator-start-col)))))
15141517

15151518
(evil-define-operator evil-delete-line (beg end type register yank-handler)
15161519
"Delete to end of line."
@@ -1526,7 +1529,13 @@ Save in REGISTER or in the kill-ring with YANK-HANDLER."
15261529
(let ((temporary-goal-column most-positive-fixnum)
15271530
(last-command 'next-line))
15281531
(evil-delete beg end 'block register yank-handler))
1529-
(evil-delete beg end type register yank-handler))))
1532+
(evil-delete beg end type register yank-handler)
1533+
(evil-first-non-blank)
1534+
(when (and (not evil-start-of-line) evil-operator-start-col)
1535+
(move-to-column (if (and (eq most-positive-fixnum temporary-goal-column)
1536+
(memq last-command '(next-line previous-line)))
1537+
temporary-goal-column
1538+
evil-operator-start-col))))))
15301539

15311540
(evil-define-operator evil-delete-whole-line
15321541
(beg end type register yank-handler)

evil-maps.el

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@
389389
(define-key evil-visual-state-map "R" 'evil-change-whole-line)
390390
(define-key evil-visual-state-map "u" 'evil-downcase)
391391
(define-key evil-visual-state-map "U" 'evil-upcase)
392+
(define-key evil-visual-state-map "X" 'evil-delete-line)
392393
(define-key evil-visual-state-map "z=" 'ispell-word)
393394
(define-key evil-visual-state-map "a" evil-outer-text-objects-map)
394395
(define-key evil-visual-state-map "i" evil-inner-text-objects-map)

evil-tests.el

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2135,7 +2135,7 @@ then enter the text in that file's own buffer."))
21352135
";; This <buffe[r]> is for notes,
21362136
and for Lisp evaluation."
21372137
("D")
2138-
"[a]nd for Lisp evaluation."))
2138+
"and for Lisp [e]valuation."))
21392139
(ert-info ("Act on each line of block selection")
21402140
(evil-test-buffer
21412141
:visual block
@@ -2218,6 +2218,14 @@ ine3 line3 line3 l\n"))
22182218
("\C-w")
22192219
"alpha [b]ravo charlie delta")))
22202220

2221+
(ert-deftest evil-test-visual-X ()
2222+
"Test `X' in visual state."
2223+
:tags '(evil)
2224+
(evil-test-buffer
2225+
"This is line one\nThis is lin[e] two\nThis is line three"
2226+
("v$oX")
2227+
"This is line one\nThis is lin[e] three"))
2228+
22212229
(ert-deftest evil-test-delete-back-to-indentation ()
22222230
"Test `evil-delete-back-to-indentation' in insert & replace states."
22232231
:tags '(evil)

0 commit comments

Comments
 (0)