forked from aniani/vim
Problem: Plugin cannot get the current IME status. Solution: Add the getimstatus() function. (closes #4904)
59 lines
1.3 KiB
VimL
59 lines
1.3 KiB
VimL
source view_util.vim
|
|
|
|
let s:imactivatefunc_called = 0
|
|
let s:imstatusfunc_called = 0
|
|
let s:imstatus_active = 0
|
|
|
|
func IM_activatefunc(active)
|
|
let s:imactivatefunc_called = 1
|
|
let s:imstatus_active = a:active
|
|
endfunc
|
|
|
|
func IM_statusfunc()
|
|
let s:imstatusfunc_called = 1
|
|
return s:imstatus_active
|
|
endfunc
|
|
|
|
func Test_iminsert2()
|
|
let s:imactivatefunc_called = 0
|
|
let s:imstatusfunc_called = 0
|
|
|
|
set imactivatefunc=IM_activatefunc
|
|
set imstatusfunc=IM_statusfunc
|
|
set iminsert=2
|
|
normal! i
|
|
set iminsert=0
|
|
set imactivatefunc=
|
|
set imstatusfunc=
|
|
|
|
let expected = has('gui_running') ? 0 : 1
|
|
call assert_equal(expected, s:imactivatefunc_called)
|
|
call assert_equal(expected, s:imstatusfunc_called)
|
|
endfunc
|
|
|
|
func Test_imgetstatus()
|
|
if has('gui_running')
|
|
if !has('win32')
|
|
throw 'Skipped: running in the GUI, only works on MS-Windows'
|
|
endif
|
|
set imactivatefunc=
|
|
set imstatusfunc=
|
|
else
|
|
set imactivatefunc=IM_activatefunc
|
|
set imstatusfunc=IM_statusfunc
|
|
let s:imstatus_active = 0
|
|
endif
|
|
|
|
new
|
|
set iminsert=2
|
|
call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
|
|
call assert_equal('1', getline(1))
|
|
set iminsert=0
|
|
call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
|
|
call assert_equal('0', getline(2))
|
|
bw!
|
|
|
|
set imactivatefunc=
|
|
set imstatusfunc=
|
|
endfunc
|