view src/testdir/test_popup.vim @ 9667:c27052511998 v7.4.2110

commit https://github.com/vim/vim/commit/eac784eced501c54d2c99e18a1af96cd996f3a6c Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jul 28 22:08:24 2016 +0200 patch 7.4.2110 Problem: When there is an CmdUndefined autocmd then the error for a missing command is E464 instead of E492. (Manuel Ortega) Solution: Don't let the pointer be NULL.
author Christian Brabandt <cb@256bit.org>
date Thu, 28 Jul 2016 22:15:06 +0200
parents 5fb484647e12
children 0b0b9864c811
line wrap: on
line source

" Test for completion menu

let g:months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
let g:setting = ''

func ListMonths()
    if g:setting != ''
	exe ":set" g:setting
    endif
    call complete(col('.'), g:months) 
    return ''
endfunc

func! Test_popup_completion_insertmode()
  new
  inoremap <F5> <C-R>=ListMonths()<CR>

  call feedkeys("a\<f5>\<down>\<enter>\<esc>", 'tx')
  call assert_equal('February', getline(1))
  %d
  let g:setting = 'noinsertmode'
  call feedkeys("a\<f5>\<down>\<enter>\<esc>", 'tx')
  call assert_equal('February', getline(1))
  call assert_false(pumvisible())
  %d
  let g:setting = ''
  call feedkeys("a\<f5>". repeat("\<c-n>",12)."\<enter>\<esc>", 'tx')
  call assert_equal('', getline(1))
  %d
  call feedkeys("a\<f5>\<c-p>\<enter>\<esc>", 'tx')
  call assert_equal('', getline(1))
  %d
  call feedkeys("a\<f5>\<c-p>\<c-p>\<enter>\<esc>", 'tx')
  call assert_equal('December', getline(1))

  bwipe!
  iunmap <F5>
endfunc

function! ComplTest() abort
  call complete(1, ['source', 'soundfold'])
  return ''
endfunction

func Test_noinsert_complete()
  new
  set completeopt+=noinsert
  inoremap <F5>  <C-R>=ComplTest()<CR>
  call feedkeys("i\<F5>soun\<CR>\<CR>\<ESC>.", 'tx')
  call assert_equal('soundfold', getline(1))
  call assert_equal('soundfold', getline(2))
  bwipe!

  new
  inoremap <F5>  <C-R>=Test()<CR>
  call feedkeys("i\<F5>\<CR>\<ESC>", 'tx')
  call assert_equal('source', getline(1))
  bwipe!

  set completeopt-=noinsert
  iunmap <F5>
endfunc


function! Test() abort
  call complete(1, ['source', 'soundfold'])
  return ''
endfunction