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