mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
vim-patch:8.1.2375: no suffucient testing for registers
Problem: No suffucient testing for registers.
Solution: Add more test cases. (Yegappan Lakshmanan, closes vim/vim#5296)
Fix that "p" on last virtual column of tab inserts spaces.
6f1f0ca3ed
This patch doesn't actually change any behavior in Nvim, because Nvim
always has vartabs feature.
I modified a line in the test because of #6137.
This commit is contained in:
parent
9b04336445
commit
e1b557d913
@ -3154,11 +3154,12 @@ void do_put(int regname, yankreg_T *reg, int dir, long count, int flags)
|
||||
|
||||
if (ve_flags == VE_ALL && y_type == kMTCharWise) {
|
||||
if (gchar_cursor() == TAB) {
|
||||
/* Don't need to insert spaces when "p" on the last position of a
|
||||
* tab or "P" on the first position. */
|
||||
int viscol = getviscol();
|
||||
long 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
|
||||
? tabstop_padding(viscol, curbuf->b_p_ts, curbuf->b_p_vts_array) != 1
|
||||
? tabstop_padding(viscol, ts, curbuf->b_p_vts_array) != 1
|
||||
: curwin->w_cursor.coladd > 0) {
|
||||
coladvance_force(viscol);
|
||||
} else {
|
||||
|
@ -13,6 +13,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()
|
||||
@ -141,6 +143,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
|
||||
|
||||
@ -164,6 +174,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", histget(':', -1)) " Modified because of #6137
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
@ -187,6 +219,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,6 +81,48 @@ 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
|
||||
|
||||
" Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
|
||||
|
@ -433,6 +433,19 @@ 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
|
||||
|
||||
func Test_visual_put_in_block()
|
||||
new
|
||||
call setline(1, ['xxxx', 'y∞yy', 'zzzz'])
|
||||
|
Loading…
Reference in New Issue
Block a user