1" Test for 'iminsert' 2 3source view_util.vim 4source check.vim 5 6let s:imactivatefunc_called = 0 7let s:imstatusfunc_called = 0 8let s:imstatus_active = 0 9 10func IM_activatefunc(active) 11 let s:imactivatefunc_called = 1 12 let s:imstatus_active = a:active 13endfunc 14 15func IM_statusfunc() 16 let s:imstatusfunc_called = 1 17 return s:imstatus_active 18endfunc 19 20func Test_iminsert2() 21 let s:imactivatefunc_called = 0 22 let s:imstatusfunc_called = 0 23 24 set imactivatefunc=IM_activatefunc 25 set imstatusfunc=IM_statusfunc 26 set iminsert=2 27 normal! i 28 set iminsert=0 29 set imactivatefunc= 30 set imstatusfunc= 31 32 let expected = (has('win32') && has('gui_running')) ? 0 : 1 33 call assert_equal(expected, s:imactivatefunc_called) 34 call assert_equal(expected, s:imstatusfunc_called) 35endfunc 36 37func Test_getimstatus() 38 if has('win32') 39 CheckFeature multi_byte_ime 40 else 41 CheckFeature xim 42 endif 43 if has('win32') && has('gui_running') 44 set imactivatefunc= 45 set imstatusfunc= 46 else 47 set imactivatefunc=IM_activatefunc 48 set imstatusfunc=IM_statusfunc 49 let s:imstatus_active = 0 50 endif 51 52 new 53 set iminsert=2 54 call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx') 55 call assert_equal('1', getline(1)) 56 set iminsert=0 57 call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx') 58 call assert_equal('0', getline(2)) 59 bw! 60 61 set imactivatefunc= 62 set imstatusfunc= 63endfunc 64 65" Test for using an lmap in insert mode 66func Test_lmap_in_insert_mode() 67 new 68 call setline(1, 'abc') 69 lmap { w 70 set iminsert=1 71 call feedkeys('r{', 'xt') 72 call assert_equal('wbc', getline(1)) 73 set iminsert=2 74 call feedkeys('$r{', 'xt') 75 call assert_equal('wb{', getline(1)) 76 call setline(1, 'vim web') 77 set iminsert=1 78 call feedkeys('0f{', 'xt') 79 call assert_equal(5, col('.')) 80 set iminsert& 81 lunmap { 82 close! 83endfunc 84 85" Test for using CTRL-^ to toggle iminsert in insert mode 86func Test_iminsert_toggle() 87 CheckGui 88 if has('win32') 89 CheckFeature multi_byte_ime 90 else 91 CheckFeature xim 92 endif 93 if has('gui_running') && !has('win32') 94 throw 'Skipped: works only in Win32 GUI version (for some reason)' 95 endif 96 new 97 let save_imdisable = &imdisable 98 let save_iminsert = &iminsert 99 set noimdisable 100 set iminsert=0 101 exe "normal i\<C-^>" 102 call assert_equal(2, &iminsert) 103 exe "normal i\<C-^>" 104 call assert_equal(0, &iminsert) 105 let &iminsert = save_iminsert 106 let &imdisable = save_imdisable 107 close! 108endfunc 109 110" vim: shiftwidth=2 sts=2 expandtab 111