view src/testdir/test_popupwin_textprop.vim @ 33532:f99f5a56ff27 v9.0.2015

patch 9.0.2015: Vim9: does not handle islocked() from a method correctly Commit: https://github.com/vim/vim/commit/4c8da025ef8140168b7a09d9fe922ce4bb40f19d Author: Ernie Rael <errael@raelity.com> Date: Wed Oct 11 21:35:11 2023 +0200 patch 9.0.2015: Vim9: does not handle islocked() from a method correctly Problem: Vim9: does not handle islocked() from a method correctly Solution: Handle islocked() builtin from a method. - Setup `lval_root` from `f_islocked()`. - Add function `fill_exec_lval_root()` to get info about executing method. - `sync_root` added in get_lval to handle method member access. - Conservative approach to reference counting. closes: #13309 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Ernie Rael <errael@raelity.com>
author Christian Brabandt <cb@256bit.org>
date Wed, 11 Oct 2023 21:45:04 +0200
parents dbec60b8c253
children
line wrap: on
line source

" 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', 'D')
  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)
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', 'D')
  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)
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', 'D')
  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)
endfunc


" vim: shiftwidth=2 sts=2