patch 8.2.4734: getcharpos() may change a mark position
Problem: getcharpos() may change a mark position.
Solution: Copy the mark position. (closes #10148)
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index 7d21d84..1c26f6d 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -188,12 +188,12 @@
call assert_fails('call getcharpos({})', 'E731:')
call assert_equal([0, 0, 0, 0], getcharpos(0))
new
- call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678'])
+ call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678', ' │ x'])
" Test for '.' and '$'
normal 1G
call assert_equal([0, 1, 1, 0], getcharpos('.'))
- call assert_equal([0, 4, 1, 0], getcharpos('$'))
+ call assert_equal([0, 5, 1, 0], getcharpos('$'))
normal 2G6l
call assert_equal([0, 2, 7, 0], getcharpos('.'))
normal 3G$
@@ -207,6 +207,12 @@
delmarks m
call assert_equal([0, 0, 0, 0], getcharpos("'m"))
+ " Check mark does not move
+ normal 5Gfxma
+ call assert_equal([0, 5, 5, 0], getcharpos("'a"))
+ call assert_equal([0, 5, 5, 0], getcharpos("'a"))
+ call assert_equal([0, 5, 5, 0], getcharpos("'a"))
+
" Test for the visual start column
vnoremap <expr> <F3> SaveVisualStartCharPos()
let g:VisualStartPos = []