forked from aniani/vim
Problem: Not restoring t_F2 in registers test. Solution: Assign to &t_F2 instead of t_F2. (Andy Massimino, closes #4434)
170 lines
4.1 KiB
VimL
170 lines
4.1 KiB
VimL
|
|
func Test_yank_shows_register()
|
|
enew
|
|
set report=0
|
|
call setline(1, ['foo', 'bar'])
|
|
" Line-wise
|
|
exe 'norm! yy'
|
|
call assert_equal('1 line yanked', v:statusmsg)
|
|
exe 'norm! "zyy'
|
|
call assert_equal('1 line yanked into "z', v:statusmsg)
|
|
exe 'norm! yj'
|
|
call assert_equal('2 lines yanked', v:statusmsg)
|
|
exe 'norm! "zyj'
|
|
call assert_equal('2 lines yanked into "z', v:statusmsg)
|
|
|
|
" Block-wise
|
|
exe "norm! \<C-V>y"
|
|
call assert_equal('block of 1 line yanked', v:statusmsg)
|
|
exe "norm! \<C-V>\"zy"
|
|
call assert_equal('block of 1 line yanked into "z', v:statusmsg)
|
|
exe "norm! \<C-V>jy"
|
|
call assert_equal('block of 2 lines yanked', v:statusmsg)
|
|
exe "norm! \<C-V>j\"zy"
|
|
call assert_equal('block of 2 lines yanked into "z', v:statusmsg)
|
|
|
|
bwipe!
|
|
endfunc
|
|
|
|
func Test_display_registers()
|
|
e file1
|
|
e file2
|
|
call setline(1, ['foo', 'bar'])
|
|
/bar
|
|
exe 'norm! y2l"axx'
|
|
call feedkeys("i\<C-R>=2*4\n\<esc>")
|
|
call feedkeys(":ls\n", 'xt')
|
|
|
|
let a = execute('display')
|
|
let b = execute('registers')
|
|
|
|
call assert_equal(a, b)
|
|
call assert_match('^\n--- Registers ---\n'
|
|
\ . '"" a\n'
|
|
\ . '"0 ba\n'
|
|
\ . '"a b\n'
|
|
\ . '.*'
|
|
\ . '"- a\n'
|
|
\ . '.*'
|
|
\ . '": ls\n'
|
|
\ . '"% file2\n'
|
|
\ . '"# file1\n'
|
|
\ . '"/ bar\n'
|
|
\ . '"= 2\*4', a)
|
|
|
|
let a = execute('registers a')
|
|
call assert_match('^\n--- Registers ---\n'
|
|
\ . '"a b', a)
|
|
|
|
let a = execute('registers :')
|
|
call assert_match('^\n--- Registers ---\n'
|
|
\ . '": ls', a)
|
|
|
|
bwipe!
|
|
endfunc
|
|
|
|
func Test_register_one()
|
|
" delete a line goes into register one
|
|
new
|
|
call setline(1, "one")
|
|
normal dd
|
|
call assert_equal("one\n", @1)
|
|
|
|
" delete a word does not change register one, does change "-
|
|
call setline(1, "two")
|
|
normal de
|
|
call assert_equal("one\n", @1)
|
|
call assert_equal("two", @-)
|
|
|
|
" delete a word with a register does not change register one
|
|
call setline(1, "three")
|
|
normal "ade
|
|
call assert_equal("three", @a)
|
|
call assert_equal("one\n", @1)
|
|
|
|
" delete a word with register DOES change register one with one of a list of
|
|
" operators
|
|
" %
|
|
call setline(1, ["(12)3"])
|
|
normal "ad%
|
|
call assert_equal("(12)", @a)
|
|
call assert_equal("(12)", @1)
|
|
|
|
" (
|
|
call setline(1, ["first second"])
|
|
normal $"ad(
|
|
call assert_equal("first secon", @a)
|
|
call assert_equal("first secon", @1)
|
|
|
|
" )
|
|
call setline(1, ["First Second."])
|
|
normal gg0"ad)
|
|
call assert_equal("First Second.", @a)
|
|
call assert_equal("First Second.", @1)
|
|
|
|
" `
|
|
call setline(1, ["start here."])
|
|
normal gg0fhmx0"ad`x
|
|
call assert_equal("start ", @a)
|
|
call assert_equal("start ", @1)
|
|
|
|
" /
|
|
call setline(1, ["searchX"])
|
|
exe "normal gg0\"ad/X\<CR>"
|
|
call assert_equal("search", @a)
|
|
call assert_equal("search", @1)
|
|
|
|
" ?
|
|
call setline(1, ["Ysearch"])
|
|
exe "normal gg$\"ad?Y\<CR>"
|
|
call assert_equal("Ysearc", @a)
|
|
call assert_equal("Ysearc", @1)
|
|
|
|
" n
|
|
call setline(1, ["Ynext"])
|
|
normal gg$"adn
|
|
call assert_equal("Ynex", @a)
|
|
call assert_equal("Ynex", @1)
|
|
|
|
" N
|
|
call setline(1, ["prevY"])
|
|
normal gg0"adN
|
|
call assert_equal("prev", @a)
|
|
call assert_equal("prev", @1)
|
|
|
|
" }
|
|
call setline(1, ["one", ""])
|
|
normal gg0"ad}
|
|
call assert_equal("one\n", @a)
|
|
call assert_equal("one\n", @1)
|
|
|
|
" {
|
|
call setline(1, ["", "two"])
|
|
normal 2G$"ad{
|
|
call assert_equal("\ntw", @a)
|
|
call assert_equal("\ntw", @1)
|
|
|
|
bwipe!
|
|
endfunc
|
|
|
|
" Check that replaying a typed sequence does not use an Esc and following
|
|
" characters as an escape sequence.
|
|
func Test_recording_esc_sequence()
|
|
new
|
|
try
|
|
let save_F2 = &t_F2
|
|
catch
|
|
endtry
|
|
let t_F2 = "\<Esc>OQ"
|
|
call feedkeys("qqiTest\<Esc>", "xt")
|
|
call feedkeys("OQuirk\<Esc>q", "xt")
|
|
call feedkeys("Go\<Esc>@q", "xt")
|
|
call assert_equal(['Quirk', 'Test', 'Quirk', 'Test'], getline(1, 4))
|
|
bwipe!
|
|
if exists('save_F2')
|
|
let &t_F2 = save_F2
|
|
else
|
|
set t_F2=
|
|
endif
|
|
endfunc
|