forked from aniani/vim
patch 8.1.2375: no suffucient testing for registers
Problem: No suffucient testing for registers. Solution: Add more test cases. (Yegappan Lakshmanan, closes #5296) Fix that "p" on last virtual column of tab inserts spaces.
This commit is contained in:
@@ -1668,21 +1668,19 @@ do_put(
|
||||
{
|
||||
if (gchar_cursor() == TAB)
|
||||
{
|
||||
int viscol = getviscol();
|
||||
int ts = curbuf->b_p_ts;
|
||||
|
||||
// Don't need to insert spaces when "p" on the last position of a
|
||||
// tab or "P" on the first position.
|
||||
if (dir == FORWARD ?
|
||||
#ifdef FEAT_VARTABS
|
||||
int viscol = getviscol();
|
||||
if (dir == FORWARD
|
||||
? tabstop_padding(viscol, curbuf->b_p_ts,
|
||||
curbuf->b_p_vts_array) != 1
|
||||
tabstop_padding(viscol, ts, curbuf->b_p_vts_array) != 1
|
||||
#else
|
||||
ts - (viscol % ts) != 1
|
||||
#endif
|
||||
: curwin->w_cursor.coladd > 0)
|
||||
coladvance_force(viscol);
|
||||
#else
|
||||
if (dir == FORWARD
|
||||
? (int)curwin->w_cursor.coladd < curbuf->b_p_ts - 1
|
||||
: curwin->w_cursor.coladd > 0)
|
||||
coladvance_force(getviscol());
|
||||
#endif
|
||||
else
|
||||
curwin->w_cursor.coladd = 0;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,8 @@ func Test_aaa_empty_reg_test()
|
||||
call assert_fails('normal @!', 'E354:')
|
||||
call assert_fails('normal @:', 'E30:')
|
||||
call assert_fails('normal @.', 'E29:')
|
||||
call assert_fails('put /', 'E35:')
|
||||
call assert_fails('put .', 'E29:')
|
||||
endfunc
|
||||
|
||||
func Test_yank_shows_register()
|
||||
@@ -203,6 +205,14 @@ func Test_last_used_exec_reg()
|
||||
normal @@
|
||||
call assert_equal('EditEdit', a)
|
||||
|
||||
" Test for repeating the last command-line in visual mode
|
||||
call append(0, 'register')
|
||||
normal gg
|
||||
let @r = ''
|
||||
call feedkeys("v:yank R\<CR>", 'xt')
|
||||
call feedkeys("v@:", 'xt')
|
||||
call assert_equal("\nregister\nregister\n", @r)
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
@@ -226,6 +236,28 @@ func Test_get_register()
|
||||
|
||||
call assert_equal('', getregtype('!'))
|
||||
|
||||
" Test for clipboard registers (* and +)
|
||||
if has("clipboard_working")
|
||||
call append(0, "text for clipboard test")
|
||||
normal gg"*yiw
|
||||
call assert_equal('text', getreg('*'))
|
||||
normal gg2w"+yiw
|
||||
call assert_equal('clipboard', getreg('+'))
|
||||
endif
|
||||
|
||||
" Test for inserting an invalid register content
|
||||
call assert_beeps('exe "normal i\<C-R>!"')
|
||||
|
||||
" Test for inserting a register with multiple lines
|
||||
call deletebufline('', 1, '$')
|
||||
call setreg('r', ['a', 'b'])
|
||||
exe "normal i\<C-R>r"
|
||||
call assert_equal(['a', 'b', ''], getline(1, '$'))
|
||||
|
||||
" Test for inserting a multi-line register in the command line
|
||||
call feedkeys(":\<C-R>r\<Esc>", 'xt')
|
||||
call assert_equal("a\rb\r", histget(':', -1))
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
@@ -249,6 +281,25 @@ func Test_set_register()
|
||||
call setreg('=', 'b', 'a')
|
||||
call assert_equal('regwrite', getreg('='))
|
||||
|
||||
" Test for settting a list of lines to special registers
|
||||
call setreg('/', [])
|
||||
call assert_equal('', @/)
|
||||
call setreg('=', [])
|
||||
call assert_equal('', @=)
|
||||
call assert_fails("call setreg('/', ['a', 'b'])", 'E883:')
|
||||
call assert_fails("call setreg('=', ['a', 'b'])", 'E883:')
|
||||
call assert_equal(0, setreg('_', ['a', 'b']))
|
||||
|
||||
" Test for recording to a invalid register
|
||||
call assert_beeps('normal q$')
|
||||
|
||||
" Appending to a register when recording
|
||||
call append(0, "text for clipboard test")
|
||||
normal gg
|
||||
call feedkeys('qrllq', 'xt')
|
||||
call feedkeys('qRhhq', 'xt')
|
||||
call assert_equal('llhh', getreg('r'))
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
|
||||
@@ -81,4 +81,46 @@ func Test_edit_change()
|
||||
normal Cx
|
||||
call assert_equal('x', getline(1))
|
||||
bwipe!
|
||||
set virtualedit=
|
||||
endfunc
|
||||
|
||||
" Test for pasting before and after a tab character
|
||||
func Test_paste_in_tab()
|
||||
new
|
||||
let @" = 'xyz'
|
||||
set virtualedit=all
|
||||
call append(0, "a\tb")
|
||||
call cursor(1, 2, 6)
|
||||
normal p
|
||||
call assert_equal("a\txyzb", getline(1))
|
||||
call setline(1, "a\tb")
|
||||
call cursor(1, 2)
|
||||
normal P
|
||||
call assert_equal("axyz\tb", getline(1))
|
||||
|
||||
" Test for virtual block paste
|
||||
call setreg('"', 'xyz', 'b')
|
||||
call setline(1, "a\tb")
|
||||
call cursor(1, 2, 6)
|
||||
normal p
|
||||
call assert_equal("a\txyzb", getline(1))
|
||||
call setline(1, "a\tb")
|
||||
call cursor(1, 2, 6)
|
||||
normal P
|
||||
call assert_equal("a xyz b", getline(1))
|
||||
|
||||
" Test for virtual block paste with gp and gP
|
||||
call setline(1, "a\tb")
|
||||
call cursor(1, 2, 6)
|
||||
normal gp
|
||||
call assert_equal("a\txyzb", getline(1))
|
||||
call assert_equal([0, 1, 6, 0, 12], getcurpos())
|
||||
call setline(1, "a\tb")
|
||||
call cursor(1, 2, 6)
|
||||
normal gP
|
||||
call assert_equal("a xyz b", getline(1))
|
||||
call assert_equal([0, 1, 12, 0 ,12], getcurpos())
|
||||
|
||||
bwipe!
|
||||
set virtualedit=
|
||||
endfunc
|
||||
|
||||
@@ -428,3 +428,18 @@ func Test_Visual_Block()
|
||||
|
||||
close!
|
||||
endfunc
|
||||
|
||||
" Test for 'p'ut in visual block mode
|
||||
func Test_visual_block_put()
|
||||
enew
|
||||
|
||||
call append(0, ['One', 'Two', 'Three'])
|
||||
normal gg
|
||||
yank
|
||||
call feedkeys("jl\<C-V>ljp", 'xt')
|
||||
call assert_equal(['One', 'T', 'Tee', 'One', ''], getline(1, '$'))
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
||||
@@ -742,6 +742,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2375,
|
||||
/**/
|
||||
2374,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user