view src/testdir/test_popup.vim @ 9467:5fb484647e12 v7.4.2014

commit https://github.com/vim/vim/commit/32b808a4bdf35b0dea63c735702a591e5869fecd Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jul 9 21:57:20 2016 +0200 patch 7.4.2014 Problem: Using "noinsert" in 'completeopt' does not insert match. Solution: Set compl_enter_selects. (Shougo, closes https://github.com/vim/vim/issues/875)
author Christian Brabandt <cb@256bit.org>
date Sat, 09 Jul 2016 22:00:07 +0200
parents 203792348947
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