patch 8.2.3073: when cursor is move for block append wrong text is inserted

Problem:    When cursor is move for block append wrong text is inserted.
Solution:   Calculate an offset. (Christian Brabandt, closes #8433,
            closes #8288)
diff --git a/src/testdir/test_blockedit.vim b/src/testdir/test_blockedit.vim
index de56f23..29e2475 100644
--- a/src/testdir/test_blockedit.vim
+++ b/src/testdir/test_blockedit.vim
@@ -28,4 +28,52 @@
   bwipe!
 endfunc
 
+func Test_blockappend_eol_cursor()
+  new
+  " Test 1 Move 1 char left
+  call setline(1, ['aaa', 'bbb', 'ccc'])
+  exe "norm! gg$\<c-v>2jA\<left>x\<esc>"
+  call assert_equal(['aaxa', 'bbxb', 'ccxc'], getline(1, '$'))
+  " Test 2 Move 2 chars left
+  sil %d
+  call setline(1, ['aaa', 'bbb', 'ccc'])
+  exe "norm! gg$\<c-v>2jA\<left>\<left>x\<esc>"
+  call assert_equal(['axaa', 'bxbb', 'cxcc'], getline(1, '$'))
+  " Test 3 Move 3 chars left (outside of the visual selection)
+  sil %d
+  call setline(1, ['aaa', 'bbb', 'ccc'])
+  exe "norm! ggl$\<c-v>2jA\<left>\<left>\<left>x\<esc>"
+  call assert_equal(['xaaa', 'bbb', 'ccc'], getline(1, '$'))
+  bw!
+endfunc
+
+func Test_blockappend_eol_cursor2()
+  new
+  " Test 1 Move 1 char left
+  call setline(1, ['aaaaa', 'bbb', 'ccccc'])
+  exe "norm! gg\<c-v>$2jA\<left>x\<esc>"
+  call assert_equal(['aaaaxa', 'bbbx', 'ccccxc'], getline(1, '$'))
+  " Test 2 Move 2 chars left
+  sil %d
+  call setline(1, ['aaaaa', 'bbb', 'ccccc'])
+  exe "norm! gg\<c-v>$2jA\<left>\<left>x\<esc>"
+  call assert_equal(['aaaxaa', 'bbbx', 'cccxcc'], getline(1, '$'))
+  " Test 3 Move 3 chars left (to the beginning of the visual selection)
+  sil %d
+  call setline(1, ['aaaaa', 'bbb', 'ccccc'])
+  exe "norm! gg\<c-v>$2jA\<left>\<left>\<left>x\<esc>"
+  call assert_equal(['aaxaaa', 'bbxb', 'ccxccc'], getline(1, '$'))
+  " Test 4 Move 3 chars left (outside of the visual selection)
+  sil %d
+  call setline(1, ['aaaaa', 'bbb', 'ccccc'])
+  exe "norm! ggl\<c-v>$2jA\<left>\<left>\<left>x\<esc>"
+  call assert_equal(['aaxaaa', 'bbxb', 'ccxccc'], getline(1, '$'))
+  " Test 5 Move 4 chars left (outside of the visual selection)
+  sil %d
+  call setline(1, ['aaaaa', 'bbb', 'ccccc'])
+  exe "norm! ggl\<c-v>$2jA\<left>\<left>\<left>\<left>x\<esc>"
+  call assert_equal(['axaaaa', 'bxbb', 'cxcccc'], getline(1, '$'))
+  bw!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index fbd3ca4..789ff6f 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -807,11 +807,7 @@
   %d _
   call setline(1, ['aaa', 'bbb', 'ccc'])
   exe "normal $\<C-V>2jA\<Left>x"
-  " BUG: Instead of adding x as the third character in all the three lines,
-  " 'a' is added in the second and third lines at the end. This bug is not
-  " reproducible if this operation is performed manually.
-  "call assert_equal(['aaxa', 'bbxb', 'ccxc'], getline(1, '$'))
-  call assert_equal(['aaxa', 'bbba', 'ccca'], getline(1, '$'))
+  call assert_equal(['aaxa', 'bbxb', 'ccxc'], getline(1, '$'))
   " Repeat the previous test but use 'l' to move the cursor instead of '$'
   call setline(1, ['aaa', 'bbb', 'ccc'])
   exe "normal! gg2l\<C-V>2jA\<Left>x"