summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-03-25 21:13:46 +0100
committerBram Moolenaar <Bram@vim.org>2020-03-25 21:13:46 +0100
commita07e31af545b91925362854a48c42fee16dd8c28 (patch)
tree08d3eb70b05cafe17862000dfbb7d56d57c94152
parentf66ca9f1df535c8042292ce20f4260cafc877670 (diff)
downloadvim-git-a07e31af545b91925362854a48c42fee16dd8c28.tar.gz
patch 8.2.0446: listener with undo of deleting all lines not testedv8.2.0446
Problem: Listener with undo of deleting all lines not tested. Solution: Add a test.
-rw-r--r--src/testdir/test_listener.vim25
-rw-r--r--src/version.c2
2 files changed, 27 insertions, 0 deletions
diff --git a/src/testdir/test_listener.vim b/src/testdir/test_listener.vim
index 9c9ba7fe4..037242064 100644
--- a/src/testdir/test_listener.vim
+++ b/src/testdir/test_listener.vim
@@ -296,6 +296,31 @@ func Test_listener_undo_line_number()
call listener_remove(lid)
endfunc
+func Test_listener_undo_delete_all()
+ new
+ call setline(1, [1, 2, 3, 4])
+ let s:changes = []
+ func s:ExtendList(bufnr, start, end, added, changes)
+ call extend(s:changes, a:changes)
+ endfunc
+ let id = listener_add('s:ExtendList')
+
+ set undolevels& " start new undo block
+ normal! ggdG
+ undo
+ call listener_flush()
+ call assert_equal(2, s:changes->len())
+ " delete removes four lines, empty line remains
+ call assert_equal({'lnum': 1, 'end': 5, 'col': 1, 'added': -4}, s:changes[0])
+ " undo replaces empty line and adds 3 lines
+ call assert_equal({'lnum': 1, 'end': 2, 'col': 1, 'added': 3}, s:changes[1])
+
+ call listener_remove(id)
+ delfunc s:ExtendList
+ unlet s:changes
+ bwipe!
+endfunc
+
func Test_listener_cleared_newbuf()
func Listener(bufnr, start, end, added, changes)
let g:gotCalled += 1
diff --git a/src/version.c b/src/version.c
index f99097def..6b5e252a9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 446,
+/**/
445,
/**/
444,