16f02b00bSBram Moolenaar" Tests for cursor() and other functions that get/set the cursor position 25a46a58eSBram Moolenaar 35a46a58eSBram Moolenaarfunc Test_wrong_arguments() 437175409SBram Moolenaar call assert_fails('call cursor(1. 3)', 'E474:') 592b83ccfSBram Moolenaar call assert_fails('call cursor(test_null_list())', 'E474:') 65a46a58eSBram Moolenaarendfunc 75a46a58eSBram Moolenaar 85a46a58eSBram Moolenaarfunc Test_move_cursor() 95a46a58eSBram Moolenaar new 105a46a58eSBram Moolenaar call setline(1, ['aaa', 'bbb', 'ccc', 'ddd']) 115a46a58eSBram Moolenaar 125a46a58eSBram Moolenaar call cursor([1, 1, 0, 1]) 135a46a58eSBram Moolenaar call assert_equal([1, 1, 0, 1], getcurpos()[1:]) 145a46a58eSBram Moolenaar call cursor([4, 3, 0, 3]) 155a46a58eSBram Moolenaar call assert_equal([4, 3, 0, 3], getcurpos()[1:]) 165a46a58eSBram Moolenaar 175a46a58eSBram Moolenaar call cursor(2, 2) 182ab375e5SBram Moolenaar call assert_equal([2, 2, 0, 2], getcurpos()[1:]) 195a46a58eSBram Moolenaar " line number zero keeps the line number 205a46a58eSBram Moolenaar call cursor(0, 1) 212ab375e5SBram Moolenaar call assert_equal([2, 1, 0, 1], getcurpos()[1:]) 225a46a58eSBram Moolenaar " col number zero keeps the column 235a46a58eSBram Moolenaar call cursor(3, 0) 242ab375e5SBram Moolenaar call assert_equal([3, 1, 0, 1], getcurpos()[1:]) 255a46a58eSBram Moolenaar " below last line goes to last line 261a3a8916SBram Moolenaar eval [9, 1]->cursor() 272ab375e5SBram Moolenaar call assert_equal([4, 1, 0, 1], getcurpos()[1:]) 289ebcf231SBram Moolenaar " pass string arguments 299ebcf231SBram Moolenaar call cursor('3', '3') 309ebcf231SBram Moolenaar call assert_equal([3, 3, 0, 3], getcurpos()[1:]) 315a46a58eSBram Moolenaar 3217aca707SBram Moolenaar call setline(1, ["\<TAB>"]) 3317aca707SBram Moolenaar call cursor(1, 1, 1) 3417aca707SBram Moolenaar call assert_equal([1, 1, 1], getcurpos()[1:3]) 3517aca707SBram Moolenaar 369a963377SBram Moolenaar call assert_fails('call cursor(-1, -1)', 'E475:') 3717aca707SBram Moolenaar 385a46a58eSBram Moolenaar quit! 395a46a58eSBram Moolenaarendfunc 402ab375e5SBram Moolenaar 412ab375e5SBram Moolenaar" Very short version of what matchparen does. 422ab375e5SBram Moolenaarfunction s:Highlight_Matching_Pair() 432ab375e5SBram Moolenaar let save_cursor = getcurpos() 44aad222c9SBram Moolenaar eval save_cursor->setpos('.') 452ab375e5SBram Moolenaarendfunc 462ab375e5SBram Moolenaar 472ab375e5SBram Moolenaarfunc Test_curswant_with_autocommand() 482ab375e5SBram Moolenaar new 492ab375e5SBram Moolenaar call setline(1, ['func()', '{', '}', '----']) 502ab375e5SBram Moolenaar autocmd! CursorMovedI * call s:Highlight_Matching_Pair() 51eb992cb9SBram Moolenaar call test_override("char_avail", 1) 522ab375e5SBram Moolenaar exe "normal! 3Ga\<Down>X\<Esc>" 53eb992cb9SBram Moolenaar call test_override("char_avail", 0) 542ab375e5SBram Moolenaar call assert_equal('-X---', getline(4)) 552ab375e5SBram Moolenaar autocmd! CursorMovedI * 562ab375e5SBram Moolenaar quit! 572ab375e5SBram Moolenaarendfunc 582ab375e5SBram Moolenaar 59177ab9e0SBram Moolenaar" Tests for behavior of curswant with cursorcolumn/line 60177ab9e0SBram Moolenaarfunc Test_curswant_with_cursorcolumn() 61177ab9e0SBram Moolenaar new 62177ab9e0SBram Moolenaar call setline(1, ['01234567', '']) 63177ab9e0SBram Moolenaar exe "normal! ggf6j" 64177ab9e0SBram Moolenaar call assert_equal(6, winsaveview().curswant) 65177ab9e0SBram Moolenaar set cursorcolumn 66177ab9e0SBram Moolenaar call assert_equal(6, winsaveview().curswant) 67177ab9e0SBram Moolenaar quit! 68177ab9e0SBram Moolenaarendfunc 69177ab9e0SBram Moolenaar 70177ab9e0SBram Moolenaarfunc Test_curswant_with_cursorline() 71177ab9e0SBram Moolenaar new 72177ab9e0SBram Moolenaar call setline(1, ['01234567', '']) 73177ab9e0SBram Moolenaar exe "normal! ggf6j" 74177ab9e0SBram Moolenaar call assert_equal(6, winsaveview().curswant) 75177ab9e0SBram Moolenaar set cursorline 76177ab9e0SBram Moolenaar call assert_equal(6, winsaveview().curswant) 77177ab9e0SBram Moolenaar quit! 78177ab9e0SBram Moolenaarendfunc 79b3d17a20SBram Moolenaar 80b3d17a20SBram Moolenaarfunc Test_screenpos() 81b3d17a20SBram Moolenaar rightbelow new 82b3d17a20SBram Moolenaar rightbelow 20vsplit 83b3d17a20SBram Moolenaar call setline(1, ["\tsome text", "long wrapping line here", "next line"]) 84b3d17a20SBram Moolenaar redraw 85b3d17a20SBram Moolenaar let winid = win_getid() 86b3d17a20SBram Moolenaar let [winrow, wincol] = win_screenpos(winid) 87b3d17a20SBram Moolenaar call assert_equal({'row': winrow, 88b3d17a20SBram Moolenaar \ 'col': wincol + 0, 89b3d17a20SBram Moolenaar \ 'curscol': wincol + 7, 90f92e58caSBram Moolenaar \ 'endcol': wincol + 7}, winid->screenpos(1, 1)) 91b3d17a20SBram Moolenaar call assert_equal({'row': winrow, 92b3d17a20SBram Moolenaar \ 'col': wincol + 13, 93b3d17a20SBram Moolenaar \ 'curscol': wincol + 13, 94196b4664SBram Moolenaar \ 'endcol': wincol + 13}, winid->screenpos(1, 7)) 95b3d17a20SBram Moolenaar call assert_equal({'row': winrow + 2, 96b3d17a20SBram Moolenaar \ 'col': wincol + 1, 97b3d17a20SBram Moolenaar \ 'curscol': wincol + 1, 98b3d17a20SBram Moolenaar \ 'endcol': wincol + 1}, screenpos(winid, 2, 22)) 99b3d17a20SBram Moolenaar setlocal number 100b3d17a20SBram Moolenaar call assert_equal({'row': winrow + 3, 101b3d17a20SBram Moolenaar \ 'col': wincol + 9, 102b3d17a20SBram Moolenaar \ 'curscol': wincol + 9, 103b3d17a20SBram Moolenaar \ 'endcol': wincol + 9}, screenpos(winid, 2, 22)) 104*189663bdSBram Moolenaar 105*189663bdSBram Moolenaar let wininfo = getwininfo(winid)[0] 106*189663bdSBram Moolenaar call setline(3, ['x']->repeat(wininfo.height)) 107*189663bdSBram Moolenaar call setline(line('$') + 1, 'x'->repeat(wininfo.width * 3)) 108*189663bdSBram Moolenaar setlocal nonumber display=lastline so=0 109*189663bdSBram Moolenaar exe "normal G\<C-Y>\<C-Y>" 110*189663bdSBram Moolenaar redraw 111*189663bdSBram Moolenaar call assert_equal({'row': winrow + wininfo.height - 1, 112*189663bdSBram Moolenaar \ 'col': wincol + 7, 113*189663bdSBram Moolenaar \ 'curscol': wincol + 7, 114*189663bdSBram Moolenaar \ 'endcol': wincol + 7}, winid->screenpos(line('$'), 8)) 115*189663bdSBram Moolenaar call assert_equal({'row': winrow - 1, 'col': 0, 'curscol': 0, 'endcol': 0}, 116*189663bdSBram Moolenaar \ winid->screenpos(line('$'), 22)) 117*189663bdSBram Moolenaar 118b3d17a20SBram Moolenaar close 119bdd2c290SBram Moolenaar call assert_equal({}, screenpos(999, 1, 1)) 120*189663bdSBram Moolenaar 121b3d17a20SBram Moolenaar bwipe! 122*189663bdSBram Moolenaar set display& 1238dd46e72SBram Moolenaar 1248dd46e72SBram Moolenaar call assert_equal({'col': 1, 'row': 1, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1)) 1258dd46e72SBram Moolenaar nmenu WinBar.TEST : 1268dd46e72SBram Moolenaar call assert_equal({'col': 1, 'row': 2, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1)) 1278dd46e72SBram Moolenaar nunmenu WinBar.TEST 128b3d17a20SBram Moolenaarendfunc 12938ba4dceSBram Moolenaar 13038ba4dceSBram Moolenaarfunc Test_screenpos_number() 13138ba4dceSBram Moolenaar rightbelow new 13238ba4dceSBram Moolenaar rightbelow 73vsplit 13338ba4dceSBram Moolenaar call setline (1, repeat('x', 66)) 13438ba4dceSBram Moolenaar setlocal number 13538ba4dceSBram Moolenaar redraw 13638ba4dceSBram Moolenaar let winid = win_getid() 13738ba4dceSBram Moolenaar let [winrow, wincol] = win_screenpos(winid) 13838ba4dceSBram Moolenaar let pos = screenpos(winid, 1, 66) 13938ba4dceSBram Moolenaar call assert_equal(winrow, pos.row) 14038ba4dceSBram Moolenaar call assert_equal(wincol + 66 + 3, pos.col) 14138ba4dceSBram Moolenaar close 14238ba4dceSBram Moolenaar bwipe! 14338ba4dceSBram Moolenaarendfunc 14408f4157cSBram Moolenaar 1459145846bSBram Moolenaar" Save the visual start character position 1466f02b00bSBram Moolenaarfunc SaveVisualStartCharPos() 1476f02b00bSBram Moolenaar call add(g:VisualStartPos, getcharpos('v')) 1486f02b00bSBram Moolenaar return '' 1496f02b00bSBram Moolenaarendfunc 1506f02b00bSBram Moolenaar 1519145846bSBram Moolenaar" Save the current cursor character position in insert mode 1529145846bSBram Moolenaarfunc SaveInsertCurrentCharPos() 1539145846bSBram Moolenaar call add(g:InsertCurrentPos, getcharpos('.')) 1549145846bSBram Moolenaar return '' 1559145846bSBram Moolenaarendfunc 1569145846bSBram Moolenaar 1576f02b00bSBram Moolenaar" Test for the getcharpos() function 1586f02b00bSBram Moolenaarfunc Test_getcharpos() 1596f02b00bSBram Moolenaar call assert_fails('call getcharpos({})', 'E731:') 1606f02b00bSBram Moolenaar call assert_equal([0, 0, 0, 0], getcharpos(0)) 1616f02b00bSBram Moolenaar new 1626f02b00bSBram Moolenaar call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678']) 1636f02b00bSBram Moolenaar 1646f02b00bSBram Moolenaar " Test for '.' and '$' 1656f02b00bSBram Moolenaar normal 1G 1666f02b00bSBram Moolenaar call assert_equal([0, 1, 1, 0], getcharpos('.')) 1676f02b00bSBram Moolenaar call assert_equal([0, 4, 1, 0], getcharpos('$')) 1686f02b00bSBram Moolenaar normal 2G6l 1696f02b00bSBram Moolenaar call assert_equal([0, 2, 7, 0], getcharpos('.')) 1706f02b00bSBram Moolenaar normal 3G$ 1716f02b00bSBram Moolenaar call assert_equal([0, 3, 1, 0], getcharpos('.')) 1726f02b00bSBram Moolenaar normal 4G$ 1736f02b00bSBram Moolenaar call assert_equal([0, 4, 9, 0], getcharpos('.')) 1746f02b00bSBram Moolenaar 1756f02b00bSBram Moolenaar " Test for a mark 1766f02b00bSBram Moolenaar normal 2G7lmmgg 1776f02b00bSBram Moolenaar call assert_equal([0, 2, 8, 0], getcharpos("'m")) 1786f02b00bSBram Moolenaar delmarks m 1796f02b00bSBram Moolenaar call assert_equal([0, 0, 0, 0], getcharpos("'m")) 1806f02b00bSBram Moolenaar 1816f02b00bSBram Moolenaar " Test for the visual start column 1826f02b00bSBram Moolenaar vnoremap <expr> <F3> SaveVisualStartCharPos() 1836f02b00bSBram Moolenaar let g:VisualStartPos = [] 1846f02b00bSBram Moolenaar exe "normal 2G6lv$\<F3>ohh\<F3>o\<F3>" 1859145846bSBram Moolenaar call assert_equal([[0, 2, 7, 0], [0, 2, 10, 0], [0, 2, 5, 0]], g:VisualStartPos) 1866f02b00bSBram Moolenaar call assert_equal([0, 2, 9, 0], getcharpos('v')) 1876f02b00bSBram Moolenaar let g:VisualStartPos = [] 1886f02b00bSBram Moolenaar exe "normal 3Gv$\<F3>o\<F3>" 1899145846bSBram Moolenaar call assert_equal([[0, 3, 1, 0], [0, 3, 2, 0]], g:VisualStartPos) 1906f02b00bSBram Moolenaar let g:VisualStartPos = [] 1916f02b00bSBram Moolenaar exe "normal 1Gv$\<F3>o\<F3>" 1926f02b00bSBram Moolenaar call assert_equal([[0, 1, 1, 0], [0, 1, 1, 0]], g:VisualStartPos) 1936f02b00bSBram Moolenaar vunmap <F3> 1946f02b00bSBram Moolenaar 1959145846bSBram Moolenaar " Test for getting the position in insert mode with the cursor after the 1969145846bSBram Moolenaar " last character in a line 1979145846bSBram Moolenaar inoremap <expr> <F3> SaveInsertCurrentCharPos() 1989145846bSBram Moolenaar let g:InsertCurrentPos = [] 1999145846bSBram Moolenaar exe "normal 1GA\<F3>" 2009145846bSBram Moolenaar exe "normal 2GA\<F3>" 2019145846bSBram Moolenaar exe "normal 3GA\<F3>" 2029145846bSBram Moolenaar exe "normal 4GA\<F3>" 2039145846bSBram Moolenaar exe "normal 2G6li\<F3>" 2049145846bSBram Moolenaar call assert_equal([[0, 1, 1, 0], [0, 2, 10, 0], [0, 3, 2, 0], [0, 4, 10, 0], 2059145846bSBram Moolenaar \ [0, 2, 7, 0]], g:InsertCurrentPos) 2069145846bSBram Moolenaar iunmap <F3> 2079145846bSBram Moolenaar 2086f02b00bSBram Moolenaar %bw! 2096f02b00bSBram Moolenaarendfunc 2106f02b00bSBram Moolenaar 2116f02b00bSBram Moolenaar" Test for the setcharpos() function 2126f02b00bSBram Moolenaarfunc Test_setcharpos() 2136f02b00bSBram Moolenaar call assert_equal(-1, setcharpos('.', test_null_list())) 2146f02b00bSBram Moolenaar new 2156f02b00bSBram Moolenaar call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678']) 2166f02b00bSBram Moolenaar call setcharpos('.', [0, 1, 1, 0]) 2176f02b00bSBram Moolenaar call assert_equal([1, 1], [line('.'), col('.')]) 2186f02b00bSBram Moolenaar call setcharpos('.', [0, 2, 7, 0]) 2196f02b00bSBram Moolenaar call assert_equal([2, 9], [line('.'), col('.')]) 2206f02b00bSBram Moolenaar call setcharpos('.', [0, 3, 4, 0]) 2216f02b00bSBram Moolenaar call assert_equal([3, 1], [line('.'), col('.')]) 2226f02b00bSBram Moolenaar call setcharpos('.', [0, 3, 1, 0]) 2236f02b00bSBram Moolenaar call assert_equal([3, 1], [line('.'), col('.')]) 2246f02b00bSBram Moolenaar call setcharpos('.', [0, 4, 0, 0]) 2256f02b00bSBram Moolenaar call assert_equal([4, 1], [line('.'), col('.')]) 2266f02b00bSBram Moolenaar call setcharpos('.', [0, 4, 20, 0]) 2276f02b00bSBram Moolenaar call assert_equal([4, 9], [line('.'), col('.')]) 2286f02b00bSBram Moolenaar 2296f02b00bSBram Moolenaar " Test for mark 2306f02b00bSBram Moolenaar delmarks m 2316f02b00bSBram Moolenaar call setcharpos("'m", [0, 2, 9, 0]) 2326f02b00bSBram Moolenaar normal `m 2336f02b00bSBram Moolenaar call assert_equal([2, 11], [line('.'), col('.')]) 2349145846bSBram Moolenaar " unload the buffer and try to set the mark 2359145846bSBram Moolenaar let bnr = bufnr() 2369145846bSBram Moolenaar enew! 2379145846bSBram Moolenaar call assert_equal(-1, setcharpos("'m", [bnr, 2, 2, 0])) 2386f02b00bSBram Moolenaar 2396f02b00bSBram Moolenaar %bw! 2406f02b00bSBram Moolenaar call assert_equal(-1, setcharpos('.', [10, 3, 1, 0])) 2416f02b00bSBram Moolenaarendfunc 2426f02b00bSBram Moolenaar 2436f02b00bSBram Moolenaarfunc SaveVisualStartCharCol() 2446f02b00bSBram Moolenaar call add(g:VisualStartCol, charcol('v')) 2456f02b00bSBram Moolenaar return '' 2466f02b00bSBram Moolenaarendfunc 2476f02b00bSBram Moolenaar 2489145846bSBram Moolenaarfunc SaveInsertCurrentCharCol() 2499145846bSBram Moolenaar call add(g:InsertCurrentCol, charcol('.')) 2509145846bSBram Moolenaar return '' 2519145846bSBram Moolenaarendfunc 2529145846bSBram Moolenaar 2536f02b00bSBram Moolenaar" Test for the charcol() function 2546f02b00bSBram Moolenaarfunc Test_charcol() 2556f02b00bSBram Moolenaar call assert_fails('call charcol({})', 'E731:') 2566f02b00bSBram Moolenaar call assert_equal(0, charcol(0)) 2576f02b00bSBram Moolenaar new 2586f02b00bSBram Moolenaar call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678']) 2596f02b00bSBram Moolenaar 2606f02b00bSBram Moolenaar " Test for '.' and '$' 2616f02b00bSBram Moolenaar normal 1G 2626f02b00bSBram Moolenaar call assert_equal(1, charcol('.')) 2636f02b00bSBram Moolenaar call assert_equal(1, charcol('$')) 2646f02b00bSBram Moolenaar normal 2G6l 2656f02b00bSBram Moolenaar call assert_equal(7, charcol('.')) 2666f02b00bSBram Moolenaar call assert_equal(10, charcol('$')) 2676f02b00bSBram Moolenaar normal 3G$ 2686f02b00bSBram Moolenaar call assert_equal(1, charcol('.')) 2696f02b00bSBram Moolenaar call assert_equal(2, charcol('$')) 2706f02b00bSBram Moolenaar normal 4G$ 2716f02b00bSBram Moolenaar call assert_equal(9, charcol('.')) 2726f02b00bSBram Moolenaar call assert_equal(10, charcol('$')) 2736f02b00bSBram Moolenaar 2746f02b00bSBram Moolenaar " Test for [lnum, '$'] 2756f02b00bSBram Moolenaar call assert_equal(1, charcol([1, '$'])) 2766f02b00bSBram Moolenaar call assert_equal(10, charcol([2, '$'])) 2776f02b00bSBram Moolenaar call assert_equal(2, charcol([3, '$'])) 2786f02b00bSBram Moolenaar call assert_equal(0, charcol([5, '$'])) 2796f02b00bSBram Moolenaar 2806f02b00bSBram Moolenaar " Test for a mark 2816f02b00bSBram Moolenaar normal 2G7lmmgg 2826f02b00bSBram Moolenaar call assert_equal(8, charcol("'m")) 2836f02b00bSBram Moolenaar delmarks m 2846f02b00bSBram Moolenaar call assert_equal(0, charcol("'m")) 2856f02b00bSBram Moolenaar 2866f02b00bSBram Moolenaar " Test for the visual start column 2876f02b00bSBram Moolenaar vnoremap <expr> <F3> SaveVisualStartCharCol() 2886f02b00bSBram Moolenaar let g:VisualStartCol = [] 2896f02b00bSBram Moolenaar exe "normal 2G6lv$\<F3>ohh\<F3>o\<F3>" 2909145846bSBram Moolenaar call assert_equal([7, 10, 5], g:VisualStartCol) 2916f02b00bSBram Moolenaar call assert_equal(9, charcol('v')) 2926f02b00bSBram Moolenaar let g:VisualStartCol = [] 2936f02b00bSBram Moolenaar exe "normal 3Gv$\<F3>o\<F3>" 2949145846bSBram Moolenaar call assert_equal([1, 2], g:VisualStartCol) 2956f02b00bSBram Moolenaar let g:VisualStartCol = [] 2966f02b00bSBram Moolenaar exe "normal 1Gv$\<F3>o\<F3>" 2976f02b00bSBram Moolenaar call assert_equal([1, 1], g:VisualStartCol) 2986f02b00bSBram Moolenaar vunmap <F3> 2996f02b00bSBram Moolenaar 3009145846bSBram Moolenaar " Test for getting the column number in insert mode with the cursor after 3019145846bSBram Moolenaar " the last character in a line 3029145846bSBram Moolenaar inoremap <expr> <F3> SaveInsertCurrentCharCol() 3039145846bSBram Moolenaar let g:InsertCurrentCol = [] 3049145846bSBram Moolenaar exe "normal 1GA\<F3>" 3059145846bSBram Moolenaar exe "normal 2GA\<F3>" 3069145846bSBram Moolenaar exe "normal 3GA\<F3>" 3079145846bSBram Moolenaar exe "normal 4GA\<F3>" 3089145846bSBram Moolenaar exe "normal 2G6li\<F3>" 3099145846bSBram Moolenaar call assert_equal([1, 10, 2, 10, 7], g:InsertCurrentCol) 3109145846bSBram Moolenaar iunmap <F3> 3119145846bSBram Moolenaar 3126f02b00bSBram Moolenaar %bw! 3136f02b00bSBram Moolenaarendfunc 3146f02b00bSBram Moolenaar 3159145846bSBram Moolenaarfunc SaveInsertCursorCharPos() 3169145846bSBram Moolenaar call add(g:InsertCursorPos, getcursorcharpos('.')) 3179145846bSBram Moolenaar return '' 3189145846bSBram Moolenaarendfunc 3199145846bSBram Moolenaar 3206f02b00bSBram Moolenaar" Test for getcursorcharpos() 3216f02b00bSBram Moolenaarfunc Test_getcursorcharpos() 3226f02b00bSBram Moolenaar call assert_equal(getcursorcharpos(), getcursorcharpos(0)) 3236f02b00bSBram Moolenaar call assert_equal([0, 0, 0, 0, 0], getcursorcharpos(-1)) 3246f02b00bSBram Moolenaar call assert_equal([0, 0, 0, 0, 0], getcursorcharpos(1999)) 3256f02b00bSBram Moolenaar 3266f02b00bSBram Moolenaar new 3276f02b00bSBram Moolenaar call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678']) 3286f02b00bSBram Moolenaar normal 1G9l 3296f02b00bSBram Moolenaar call assert_equal([0, 1, 1, 0, 1], getcursorcharpos()) 3306f02b00bSBram Moolenaar normal 2G9l 3316f02b00bSBram Moolenaar call assert_equal([0, 2, 9, 0, 14], getcursorcharpos()) 3326f02b00bSBram Moolenaar normal 3G9l 3336f02b00bSBram Moolenaar call assert_equal([0, 3, 1, 0, 1], getcursorcharpos()) 3346f02b00bSBram Moolenaar normal 4G9l 3356f02b00bSBram Moolenaar call assert_equal([0, 4, 9, 0, 9], getcursorcharpos()) 3366f02b00bSBram Moolenaar 3379145846bSBram Moolenaar " Test for getting the cursor position in insert mode with the cursor after 3389145846bSBram Moolenaar " the last character in a line 3399145846bSBram Moolenaar inoremap <expr> <F3> SaveInsertCursorCharPos() 3409145846bSBram Moolenaar let g:InsertCursorPos = [] 3419145846bSBram Moolenaar exe "normal 1GA\<F3>" 3429145846bSBram Moolenaar exe "normal 2GA\<F3>" 3439145846bSBram Moolenaar exe "normal 3GA\<F3>" 3449145846bSBram Moolenaar exe "normal 4GA\<F3>" 3459145846bSBram Moolenaar exe "normal 2G6li\<F3>" 3469145846bSBram Moolenaar call assert_equal([[0, 1, 1, 0, 1], [0, 2, 10, 0, 15], [0, 3, 2, 0, 2], 3479145846bSBram Moolenaar \ [0, 4, 10, 0, 10], [0, 2, 7, 0, 12]], g:InsertCursorPos) 3489145846bSBram Moolenaar iunmap <F3> 3499145846bSBram Moolenaar 3506f02b00bSBram Moolenaar let winid = win_getid() 3516f02b00bSBram Moolenaar normal 2G5l 3526f02b00bSBram Moolenaar wincmd w 3536f02b00bSBram Moolenaar call assert_equal([0, 2, 6, 0, 11], getcursorcharpos(winid)) 3546f02b00bSBram Moolenaar %bw! 3556f02b00bSBram Moolenaarendfunc 3566f02b00bSBram Moolenaar 3576f02b00bSBram Moolenaar" Test for setcursorcharpos() 3586f02b00bSBram Moolenaarfunc Test_setcursorcharpos() 3596f02b00bSBram Moolenaar call assert_fails('call setcursorcharpos(test_null_list())', 'E474:') 3606f02b00bSBram Moolenaar call assert_fails('call setcursorcharpos([1])', 'E474:') 3616f02b00bSBram Moolenaar call assert_fails('call setcursorcharpos([1, 1, 1, 1, 1])', 'E474:') 3626f02b00bSBram Moolenaar new 3636f02b00bSBram Moolenaar call setline(1, ['', "01\tà4è678", 'Ⅵ', '012345678']) 3646f02b00bSBram Moolenaar normal G 3656f02b00bSBram Moolenaar call setcursorcharpos([1, 1]) 3666f02b00bSBram Moolenaar call assert_equal([1, 1], [line('.'), col('.')]) 3676f02b00bSBram Moolenaar call setcursorcharpos([2, 7, 0]) 3686f02b00bSBram Moolenaar call assert_equal([2, 9], [line('.'), col('.')]) 3696f02b00bSBram Moolenaar call setcursorcharpos(3, 4) 3706f02b00bSBram Moolenaar call assert_equal([3, 1], [line('.'), col('.')]) 3716f02b00bSBram Moolenaar call setcursorcharpos([3, 1]) 3726f02b00bSBram Moolenaar call assert_equal([3, 1], [line('.'), col('.')]) 3736f02b00bSBram Moolenaar call setcursorcharpos([4, 0, 0, 0]) 3746f02b00bSBram Moolenaar call assert_equal([4, 1], [line('.'), col('.')]) 3756f02b00bSBram Moolenaar call setcursorcharpos([4, 20]) 3766f02b00bSBram Moolenaar call assert_equal([4, 9], [line('.'), col('.')]) 3776f02b00bSBram Moolenaar normal 1G 3786f02b00bSBram Moolenaar call setcursorcharpos([100, 100, 100, 100]) 3796f02b00bSBram Moolenaar call assert_equal([4, 9], [line('.'), col('.')]) 3806f02b00bSBram Moolenaar normal 1G 3816f02b00bSBram Moolenaar call setcursorcharpos('$', 1) 3826f02b00bSBram Moolenaar call assert_equal([4, 1], [line('.'), col('.')]) 3836f02b00bSBram Moolenaar 3846f02b00bSBram Moolenaar %bw! 3856f02b00bSBram Moolenaarendfunc 3866f02b00bSBram Moolenaar 38708f4157cSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 388