1source view_util.vim 2 3let s:imactivatefunc_called = 0 4let s:imstatusfunc_called = 0 5let s:imstatus_active = 0 6 7func IM_activatefunc(active) 8 let s:imactivatefunc_called = 1 9let s:imstatus_active = a:active 10endfunc 11 12func IM_statusfunc() 13 let s:imstatusfunc_called = 1 14 return s:imstatus_active 15endfunc 16 17func Test_iminsert2() 18 let s:imactivatefunc_called = 0 19 let s:imstatusfunc_called = 0 20 21 set imactivatefunc=IM_activatefunc 22 set imstatusfunc=IM_statusfunc 23 set iminsert=2 24 normal! i 25 set iminsert=0 26 set imactivatefunc= 27 set imstatusfunc= 28 29 let expected = has('gui_running') ? 0 : 1 30 call assert_equal(expected, s:imactivatefunc_called) 31 call assert_equal(expected, s:imstatusfunc_called) 32endfunc 33 34func Test_imgetstatus() 35 if has('gui_running') 36 if !has('win32') 37 throw 'Skipped: running in the GUI, only works on MS-Windows' 38 endif 39 set imactivatefunc= 40 set imstatusfunc= 41 else 42 set imactivatefunc=IM_activatefunc 43 set imstatusfunc=IM_statusfunc 44 let s:imstatus_active = 0 45 endif 46 47 new 48 set iminsert=2 49 call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx') 50 call assert_equal('1', getline(1)) 51 set iminsert=0 52 call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx') 53 call assert_equal('0', getline(2)) 54 bw! 55 56 set imactivatefunc= 57 set imstatusfunc= 58endfunc 59