16d91bcb4SBram Moolenaar" Test for 'iminsert'
26d91bcb4SBram Moolenaar
36315a9aeSBram Moolenaarsource view_util.vim
4e2a3f36bSBram Moolenaarsource check.vim
56315a9aeSBram Moolenaar
66315a9aeSBram Moolenaarlet s:imactivatefunc_called = 0
76315a9aeSBram Moolenaarlet s:imstatusfunc_called = 0
8a3a12462SBram Moolenaarlet s:imstatus_active = 0
96315a9aeSBram Moolenaar
106315a9aeSBram Moolenaarfunc IM_activatefunc(active)
116315a9aeSBram Moolenaar  let s:imactivatefunc_called = 1
12a3a12462SBram Moolenaar  let s:imstatus_active = a:active
136315a9aeSBram Moolenaarendfunc
146315a9aeSBram Moolenaar
156315a9aeSBram Moolenaarfunc IM_statusfunc()
166315a9aeSBram Moolenaar  let s:imstatusfunc_called = 1
17a3a12462SBram Moolenaar  return s:imstatus_active
186315a9aeSBram Moolenaarendfunc
196315a9aeSBram Moolenaar
206315a9aeSBram Moolenaarfunc Test_iminsert2()
21a3a12462SBram Moolenaar  let s:imactivatefunc_called = 0
22a3a12462SBram Moolenaar  let s:imstatusfunc_called = 0
23a3a12462SBram Moolenaar
246315a9aeSBram Moolenaar  set imactivatefunc=IM_activatefunc
256315a9aeSBram Moolenaar  set imstatusfunc=IM_statusfunc
266315a9aeSBram Moolenaar  set iminsert=2
276315a9aeSBram Moolenaar  normal! i
286315a9aeSBram Moolenaar  set iminsert=0
296315a9aeSBram Moolenaar  set imactivatefunc=
306315a9aeSBram Moolenaar  set imstatusfunc=
312877d334SBram Moolenaar
32c19fd917SBram Moolenaar  let expected = (has('win32') && has('gui_running')) ? 0 : 1
332877d334SBram Moolenaar  call assert_equal(expected, s:imactivatefunc_called)
342877d334SBram Moolenaar  call assert_equal(expected, s:imstatusfunc_called)
356315a9aeSBram Moolenaarendfunc
36a3a12462SBram Moolenaar
37e2a3f36bSBram Moolenaarfunc Test_getimstatus()
38e2a3f36bSBram Moolenaar  if has('win32')
39e2a3f36bSBram Moolenaar    CheckFeature multi_byte_ime
40*be7529e8SBram Moolenaar  else
41e2a3f36bSBram Moolenaar    CheckFeature xim
42e2a3f36bSBram Moolenaar  endif
43c19fd917SBram Moolenaar  if has('win32') && has('gui_running')
44a3a12462SBram Moolenaar    set imactivatefunc=
45a3a12462SBram Moolenaar    set imstatusfunc=
46a3a12462SBram Moolenaar  else
47a3a12462SBram Moolenaar    set imactivatefunc=IM_activatefunc
48a3a12462SBram Moolenaar    set imstatusfunc=IM_statusfunc
49a3a12462SBram Moolenaar    let s:imstatus_active = 0
50a3a12462SBram Moolenaar  endif
51a3a12462SBram Moolenaar
52a3a12462SBram Moolenaar  new
53a3a12462SBram Moolenaar  set iminsert=2
54a3a12462SBram Moolenaar  call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
55a3a12462SBram Moolenaar  call assert_equal('1', getline(1))
56a3a12462SBram Moolenaar  set iminsert=0
57a3a12462SBram Moolenaar  call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
58a3a12462SBram Moolenaar  call assert_equal('0', getline(2))
59a3a12462SBram Moolenaar  bw!
60a3a12462SBram Moolenaar
61a3a12462SBram Moolenaar  set imactivatefunc=
62a3a12462SBram Moolenaar  set imstatusfunc=
63a3a12462SBram Moolenaarendfunc
640546d7dfSBram Moolenaar
651671f448SBram Moolenaar" Test for using an lmap in insert mode
661671f448SBram Moolenaarfunc Test_lmap_in_insert_mode()
671671f448SBram Moolenaar  new
681671f448SBram Moolenaar  call setline(1, 'abc')
691671f448SBram Moolenaar  lmap { w
701671f448SBram Moolenaar  set iminsert=1
711671f448SBram Moolenaar  call feedkeys('r{', 'xt')
721671f448SBram Moolenaar  call assert_equal('wbc', getline(1))
731671f448SBram Moolenaar  set iminsert=2
741671f448SBram Moolenaar  call feedkeys('$r{', 'xt')
751671f448SBram Moolenaar  call assert_equal('wb{', getline(1))
761671f448SBram Moolenaar  call setline(1, 'vim web')
771671f448SBram Moolenaar  set iminsert=1
781671f448SBram Moolenaar  call feedkeys('0f{', 'xt')
791671f448SBram Moolenaar  call assert_equal(5, col('.'))
801671f448SBram Moolenaar  set iminsert&
811671f448SBram Moolenaar  lunmap {
82845e0ee5SBram Moolenaar  close!
83845e0ee5SBram Moolenaarendfunc
84845e0ee5SBram Moolenaar
85845e0ee5SBram Moolenaar" Test for using CTRL-^ to toggle iminsert in insert mode
86845e0ee5SBram Moolenaarfunc Test_iminsert_toggle()
87845e0ee5SBram Moolenaar  CheckGui
88845e0ee5SBram Moolenaar  if has('win32')
89845e0ee5SBram Moolenaar    CheckFeature multi_byte_ime
90*be7529e8SBram Moolenaar  else
91845e0ee5SBram Moolenaar    CheckFeature xim
92845e0ee5SBram Moolenaar  endif
93845e0ee5SBram Moolenaar  if has('gui_running') && !has('win32')
946d91bcb4SBram Moolenaar    throw 'Skipped: works only in Win32 GUI version (for some reason)'
95845e0ee5SBram Moolenaar  endif
96845e0ee5SBram Moolenaar  new
97845e0ee5SBram Moolenaar  let save_imdisable = &imdisable
98845e0ee5SBram Moolenaar  let save_iminsert = &iminsert
99845e0ee5SBram Moolenaar  set noimdisable
100845e0ee5SBram Moolenaar  set iminsert=0
101845e0ee5SBram Moolenaar  exe "normal i\<C-^>"
102845e0ee5SBram Moolenaar  call assert_equal(2, &iminsert)
103845e0ee5SBram Moolenaar  exe "normal i\<C-^>"
104845e0ee5SBram Moolenaar  call assert_equal(0, &iminsert)
105845e0ee5SBram Moolenaar  let &iminsert = save_iminsert
106845e0ee5SBram Moolenaar  let &imdisable = save_imdisable
1071671f448SBram Moolenaar  close!
1081671f448SBram Moolenaarendfunc
1091671f448SBram Moolenaar
1100546d7dfSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
111