16315a9aeSBram Moolenaarsource view_util.vim
2e2a3f36bSBram Moolenaarsource check.vim
36315a9aeSBram Moolenaar
46315a9aeSBram Moolenaarlet s:imactivatefunc_called = 0
56315a9aeSBram Moolenaarlet s:imstatusfunc_called = 0
6a3a12462SBram Moolenaarlet s:imstatus_active = 0
76315a9aeSBram Moolenaar
86315a9aeSBram Moolenaarfunc IM_activatefunc(active)
96315a9aeSBram Moolenaar  let s:imactivatefunc_called = 1
10a3a12462SBram Moolenaar  let s:imstatus_active = a:active
116315a9aeSBram Moolenaarendfunc
126315a9aeSBram Moolenaar
136315a9aeSBram Moolenaarfunc IM_statusfunc()
146315a9aeSBram Moolenaar  let s:imstatusfunc_called = 1
15a3a12462SBram Moolenaar  return s:imstatus_active
166315a9aeSBram Moolenaarendfunc
176315a9aeSBram Moolenaar
186315a9aeSBram Moolenaarfunc Test_iminsert2()
19a3a12462SBram Moolenaar  let s:imactivatefunc_called = 0
20a3a12462SBram Moolenaar  let s:imstatusfunc_called = 0
21a3a12462SBram Moolenaar
226315a9aeSBram Moolenaar  set imactivatefunc=IM_activatefunc
236315a9aeSBram Moolenaar  set imstatusfunc=IM_statusfunc
246315a9aeSBram Moolenaar  set iminsert=2
256315a9aeSBram Moolenaar  normal! i
266315a9aeSBram Moolenaar  set iminsert=0
276315a9aeSBram Moolenaar  set imactivatefunc=
286315a9aeSBram Moolenaar  set imstatusfunc=
292877d334SBram Moolenaar
30*c19fd917SBram Moolenaar  let expected = (has('win32') && has('gui_running')) ? 0 : 1
312877d334SBram Moolenaar  call assert_equal(expected, s:imactivatefunc_called)
322877d334SBram Moolenaar  call assert_equal(expected, s:imstatusfunc_called)
336315a9aeSBram Moolenaarendfunc
34a3a12462SBram Moolenaar
35e2a3f36bSBram Moolenaarfunc Test_getimstatus()
36e2a3f36bSBram Moolenaar  if has('win32')
37e2a3f36bSBram Moolenaar    CheckFeature multi_byte_ime
38e2a3f36bSBram Moolenaar  elseif !has('gui_mac')
39e2a3f36bSBram Moolenaar    CheckFeature xim
40e2a3f36bSBram Moolenaar  endif
41*c19fd917SBram Moolenaar  if has('win32') && has('gui_running')
42a3a12462SBram Moolenaar    set imactivatefunc=
43a3a12462SBram Moolenaar    set imstatusfunc=
44a3a12462SBram Moolenaar  else
45a3a12462SBram Moolenaar    set imactivatefunc=IM_activatefunc
46a3a12462SBram Moolenaar    set imstatusfunc=IM_statusfunc
47a3a12462SBram Moolenaar    let s:imstatus_active = 0
48a3a12462SBram Moolenaar  endif
49a3a12462SBram Moolenaar
50a3a12462SBram Moolenaar  new
51a3a12462SBram Moolenaar  set iminsert=2
52a3a12462SBram Moolenaar  call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
53a3a12462SBram Moolenaar  call assert_equal('1', getline(1))
54a3a12462SBram Moolenaar  set iminsert=0
55a3a12462SBram Moolenaar  call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
56a3a12462SBram Moolenaar  call assert_equal('0', getline(2))
57a3a12462SBram Moolenaar  bw!
58a3a12462SBram Moolenaar
59a3a12462SBram Moolenaar  set imactivatefunc=
60a3a12462SBram Moolenaar  set imstatusfunc=
61a3a12462SBram Moolenaarendfunc
620546d7dfSBram Moolenaar
631671f448SBram Moolenaar" Test for using an lmap in insert mode
641671f448SBram Moolenaarfunc Test_lmap_in_insert_mode()
651671f448SBram Moolenaar  new
661671f448SBram Moolenaar  call setline(1, 'abc')
671671f448SBram Moolenaar  lmap { w
681671f448SBram Moolenaar  set iminsert=1
691671f448SBram Moolenaar  call feedkeys('r{', 'xt')
701671f448SBram Moolenaar  call assert_equal('wbc', getline(1))
711671f448SBram Moolenaar  set iminsert=2
721671f448SBram Moolenaar  call feedkeys('$r{', 'xt')
731671f448SBram Moolenaar  call assert_equal('wb{', getline(1))
741671f448SBram Moolenaar  call setline(1, 'vim web')
751671f448SBram Moolenaar  set iminsert=1
761671f448SBram Moolenaar  call feedkeys('0f{', 'xt')
771671f448SBram Moolenaar  call assert_equal(5, col('.'))
781671f448SBram Moolenaar  set iminsert&
791671f448SBram Moolenaar  lunmap {
80845e0ee5SBram Moolenaar  close!
81845e0ee5SBram Moolenaarendfunc
82845e0ee5SBram Moolenaar
83845e0ee5SBram Moolenaar" Test for using CTRL-^ to toggle iminsert in insert mode
84845e0ee5SBram Moolenaarfunc Test_iminsert_toggle()
85845e0ee5SBram Moolenaar  CheckGui
86845e0ee5SBram Moolenaar  if has('win32')
87845e0ee5SBram Moolenaar    CheckFeature multi_byte_ime
88845e0ee5SBram Moolenaar  elseif !has('gui_mac')
89845e0ee5SBram Moolenaar    CheckFeature xim
90845e0ee5SBram Moolenaar  endif
91845e0ee5SBram Moolenaar  if has('gui_running') && !has('win32')
92845e0ee5SBram Moolenaar    " this works only in Win32 GUI version (for some reason)
93845e0ee5SBram Moolenaar    return
94845e0ee5SBram Moolenaar  endif
95845e0ee5SBram Moolenaar  new
96845e0ee5SBram Moolenaar  let save_imdisable = &imdisable
97845e0ee5SBram Moolenaar  let save_iminsert = &iminsert
98845e0ee5SBram Moolenaar  set noimdisable
99845e0ee5SBram Moolenaar  set iminsert=0
100845e0ee5SBram Moolenaar  exe "normal i\<C-^>"
101845e0ee5SBram Moolenaar  call assert_equal(2, &iminsert)
102845e0ee5SBram Moolenaar  exe "normal i\<C-^>"
103845e0ee5SBram Moolenaar  call assert_equal(0, &iminsert)
104845e0ee5SBram Moolenaar  let &iminsert = save_iminsert
105845e0ee5SBram Moolenaar  let &imdisable = save_imdisable
1061671f448SBram Moolenaar  close!
1071671f448SBram Moolenaarendfunc
1081671f448SBram Moolenaar
1090546d7dfSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
110