forked from aniani/vim
Problem: FEAT_TEXT_PROP is a confusing name. Solution: Use FEAT_PROP_POPUP. (Naruhiko Nishino, closes #5291)
177 lines
4.8 KiB
VimL
177 lines
4.8 KiB
VimL
" Tests for popup windows for text properties
|
|
|
|
source check.vim
|
|
CheckFeature popupwin
|
|
CheckFeature textprop
|
|
|
|
source screendump.vim
|
|
CheckScreendump
|
|
|
|
func Test_textprop_popup()
|
|
let lines =<< trim END
|
|
call setline(1, range(1, 100))
|
|
call setline(50, 'some text to work with')
|
|
50
|
|
normal zz
|
|
set scrolloff=0
|
|
call prop_type_add('popupMarker', #{highlight: 'DiffAdd', bufnr: bufnr('%')})
|
|
call prop_add(50, 11, #{
|
|
\ length: 7,
|
|
\ type: 'popupMarker',
|
|
\ bufnr: bufnr('%'),
|
|
\ })
|
|
let winid = popup_create('the text', #{
|
|
\ pos: 'botleft',
|
|
\ textprop: 'popupMarker',
|
|
\ border: [],
|
|
\ padding: [0,1,0,1],
|
|
\ close: 'click',
|
|
\ })
|
|
END
|
|
call writefile(lines, 'XtestTextpropPopup')
|
|
let buf = RunVimInTerminal('-S XtestTextpropPopup', #{rows: 10})
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_01', {})
|
|
|
|
call term_sendkeys(buf, "zt")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_02', {})
|
|
|
|
call term_sendkeys(buf, "zzIawe\<Esc>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_03', {})
|
|
|
|
call term_sendkeys(buf, "0dw")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_04', {})
|
|
|
|
call term_sendkeys(buf, "Oinserted\<Esc>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_05', {})
|
|
|
|
call term_sendkeys(buf, "k2dd")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_06', {})
|
|
|
|
call term_sendkeys(buf, "4\<C-E>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_07', {})
|
|
|
|
" clean up
|
|
call StopVimInTerminal(buf)
|
|
call delete('XtestTextpropPopup')
|
|
endfunc
|
|
|
|
func Test_textprop_popup_corners()
|
|
let lines =<< trim END
|
|
call setline(1, range(1, 100))
|
|
call setline(50, 'now working with some longer text here')
|
|
50
|
|
normal zz
|
|
set scrolloff=0
|
|
call prop_type_add('popupMarker', #{highlight: 'DiffAdd'})
|
|
call prop_add(50, 23, #{
|
|
\ length: 6,
|
|
\ type: 'popupMarker',
|
|
\ })
|
|
let winid = popup_create('bottom left', #{
|
|
\ pos: 'botleft',
|
|
\ textprop: 'popupMarker',
|
|
\ textpropwin: win_getid(),
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
let winid = popup_create('bottom right', #{
|
|
\ pos: 'botright',
|
|
\ textprop: 'popupMarker',
|
|
\ border: [],
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
let winid = popup_create('top left', #{
|
|
\ pos: 'topleft',
|
|
\ textprop: 'popupMarker',
|
|
\ border: [],
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
let winid = popup_create('top right', #{
|
|
\ pos: 'topright',
|
|
\ textprop: 'popupMarker',
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
END
|
|
call writefile(lines, 'XtestTextpropPopupCorners')
|
|
let buf = RunVimInTerminal('-S XtestTextpropPopupCorners', #{rows: 12})
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_corn_1', {})
|
|
|
|
call term_sendkeys(buf, "0dw")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_corn_2', {})
|
|
|
|
call term_sendkeys(buf, "46Goextra\<Esc>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_corn_3', {})
|
|
|
|
call term_sendkeys(buf, "u")
|
|
call term_sendkeys(buf, ":\<CR>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_corn_4', {})
|
|
|
|
call term_sendkeys(buf, ":vsplit foo\<CR>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_corn_5', {})
|
|
|
|
call term_sendkeys(buf, ":only!\<CR>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_corn_6', {})
|
|
|
|
" clean up
|
|
call StopVimInTerminal(buf)
|
|
call delete('XtestTextpropPopupCorners')
|
|
endfunc
|
|
|
|
func Test_textprop_popup_offsets()
|
|
let lines =<< trim END
|
|
call setline(1, range(1, 100))
|
|
call setline(50, 'now working with some longer text here')
|
|
50
|
|
normal zz
|
|
set scrolloff=0
|
|
call prop_type_add('popupMarker', #{highlight: 'DiffAdd'})
|
|
call prop_add(50, 23, #{
|
|
\ length: 6,
|
|
\ type: 'popupMarker',
|
|
\ })
|
|
let winid = popup_create('bottom left', #{
|
|
\ pos: 'botleft',
|
|
\ line: -1,
|
|
\ col: 2,
|
|
\ textprop: 'popupMarker',
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
let winid = popup_create('bottom right', #{
|
|
\ pos: 'botright',
|
|
\ line: -1,
|
|
\ col: -2,
|
|
\ textprop: 'popupMarker',
|
|
\ border: [],
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
let winid = popup_create('top left', #{
|
|
\ pos: 'topleft',
|
|
\ line: 1,
|
|
\ col: 2,
|
|
\ textprop: 'popupMarker',
|
|
\ border: [],
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
let winid = popup_create('top right', #{
|
|
\ pos: 'topright',
|
|
\ line: 1,
|
|
\ col: -2,
|
|
\ textprop: 'popupMarker',
|
|
\ padding: [0,1,0,1],
|
|
\ })
|
|
END
|
|
call writefile(lines, 'XtestTextpropPopupOffset')
|
|
let buf = RunVimInTerminal('-S XtestTextpropPopupOffset', #{rows: 12})
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_off_1', {})
|
|
|
|
" test that removing the text property closes the popups
|
|
call term_sendkeys(buf, ":call prop_clear(50)\<CR>")
|
|
call VerifyScreenDump(buf, 'Test_popup_textprop_off_2', {})
|
|
|
|
" clean up
|
|
call StopVimInTerminal(buf)
|
|
call delete('XtestTextpropPopupOffset')
|
|
endfunc
|
|
|
|
|
|
" vim: shiftwidth=2 sts=2
|