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 10let 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('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('gui_running') 42 if !has('win32') 43 throw 'Skipped: running in the GUI, only works on MS-Windows' 44 endif 45 set imactivatefunc= 46 set imstatusfunc= 47 else 48 set imactivatefunc=IM_activatefunc 49 set imstatusfunc=IM_statusfunc 50 let s:imstatus_active = 0 51 endif 52 53 new 54 set iminsert=2 55 call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx') 56 call assert_equal('1', getline(1)) 57 set iminsert=0 58 call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx') 59 call assert_equal('0', getline(2)) 60 bw! 61 62 set imactivatefunc= 63 set imstatusfunc= 64endfunc 65 66" Test for using an lmap in insert mode 67func Test_lmap_in_insert_mode() 68 new 69 call setline(1, 'abc') 70 lmap { w 71 set iminsert=1 72 call feedkeys('r{', 'xt') 73 call assert_equal('wbc', getline(1)) 74 set iminsert=2 75 call feedkeys('$r{', 'xt') 76 call assert_equal('wb{', getline(1)) 77 call setline(1, 'vim web') 78 set iminsert=1 79 call feedkeys('0f{', 'xt') 80 call assert_equal(5, col('.')) 81 set iminsert& 82 lunmap { 83 close! 84endfunc 85 86" vim: shiftwidth=2 sts=2 expandtab 87