patch 8.1.2000: plugin cannot get the current IME status

Problem:    Plugin cannot get the current IME status.
Solution:   Add the getimstatus() function. (closes #4904)
diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim
index 1a8e4c8..9316ff6 100644
--- a/src/testdir/test_iminsert.vim
+++ b/src/testdir/test_iminsert.vim
@@ -2,17 +2,22 @@
 
 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 0
+  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
@@ -25,3 +30,29 @@
   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