2017-01-02 17:31:24 +01:00
|
|
|
" Tests for various Visual mode.
|
2016-03-05 17:26:00 +01:00
|
|
|
if !has('visual')
|
|
|
|
finish
|
|
|
|
endif
|
|
|
|
|
2017-03-08 22:55:19 +01:00
|
|
|
|
2016-03-05 17:26:00 +01:00
|
|
|
func Test_block_shift_multibyte()
|
2017-01-02 17:31:24 +01:00
|
|
|
" Uses double-wide character.
|
|
|
|
if !has('multi_byte')
|
|
|
|
return
|
|
|
|
endif
|
2016-03-05 17:26:00 +01:00
|
|
|
split
|
|
|
|
call setline(1, ['xヹxxx', 'ヹxxx'])
|
|
|
|
exe "normal 1G0l\<C-V>jl>"
|
|
|
|
call assert_equal('x ヹxxx', getline(1))
|
|
|
|
call assert_equal(' ヹxxx', getline(2))
|
|
|
|
q!
|
|
|
|
endfunc
|
2017-01-02 17:31:24 +01:00
|
|
|
|
2017-08-06 15:42:06 +02:00
|
|
|
func Test_block_shift_overflow()
|
|
|
|
" This used to cause a multiplication overflow followed by a crash.
|
|
|
|
new
|
|
|
|
normal ii
|
|
|
|
exe "normal \<C-V>876543210>"
|
|
|
|
q!
|
|
|
|
endfunc
|
|
|
|
|
2017-01-02 17:31:24 +01:00
|
|
|
func Test_dotregister_paste()
|
|
|
|
new
|
|
|
|
exe "norm! ihello world\<esc>"
|
|
|
|
norm! 0ve".p
|
|
|
|
call assert_equal('hello world world', getline(1))
|
|
|
|
q!
|
|
|
|
endfunc
|
2017-02-01 21:50:21 +01:00
|
|
|
|
|
|
|
func Test_Visual_ctrl_o()
|
|
|
|
new
|
|
|
|
call setline(1, ['one', 'two', 'three'])
|
|
|
|
call cursor(1,2)
|
|
|
|
set noshowmode
|
|
|
|
set tw=0
|
|
|
|
call feedkeys("\<c-v>jjlIa\<c-\>\<c-o>:set tw=88\<cr>\<esc>", 'tx')
|
|
|
|
call assert_equal(['oane', 'tawo', 'tahree'], getline(1, 3))
|
|
|
|
call assert_equal(88, &tw)
|
|
|
|
set tw&
|
|
|
|
bw!
|
|
|
|
endfu
|
2017-02-17 11:40:00 +01:00
|
|
|
|
|
|
|
func Test_Visual_vapo()
|
|
|
|
new
|
|
|
|
normal oxx
|
|
|
|
normal vapo
|
|
|
|
bwipe!
|
|
|
|
endfunc
|
2017-02-18 23:12:01 +01:00
|
|
|
|
|
|
|
func Test_Visual_inner_quote()
|
|
|
|
new
|
|
|
|
normal oxX
|
|
|
|
normal vki'
|
|
|
|
bwipe!
|
|
|
|
endfunc
|
2017-08-07 22:02:30 +02:00
|
|
|
|
|
|
|
" Test for Visual mode not being reset causing E315 error.
|
|
|
|
func TriggerTheProblem()
|
|
|
|
" At this point there is no visual selection because :call reset it.
|
|
|
|
" Let's restore the selection:
|
|
|
|
normal gv
|
|
|
|
'<,'>del _
|
|
|
|
try
|
|
|
|
exe "normal \<Esc>"
|
|
|
|
catch /^Vim\%((\a\+)\)\=:E315/
|
|
|
|
echom 'Snap! E315 error!'
|
|
|
|
let g:msg='Snap! E315 error!'
|
|
|
|
endtry
|
|
|
|
endfunc
|
|
|
|
|
|
|
|
func Test_visual_mode_reset()
|
|
|
|
enew
|
|
|
|
let g:msg="Everything's fine."
|
|
|
|
enew
|
|
|
|
setl buftype=nofile
|
|
|
|
call append(line('$'), 'Delete this line.')
|
|
|
|
|
|
|
|
" NOTE: this has to be done by a call to a function because executing :del
|
|
|
|
" the ex-way will require the colon operator which resets the visual mode
|
|
|
|
" thus preventing the problem:
|
|
|
|
exe "normal! GV:call TriggerTheProblem()\<CR>"
|
|
|
|
call assert_equal("Everything's fine.", g:msg)
|
|
|
|
|
|
|
|
endfunc
|
2017-10-15 22:07:39 +02:00
|
|
|
|