
function! ImStatusFunc()
  python <<EOF
import vim
import ibus
bus = ibus.Bus()
try:
  ic = ibus.InputContext(bus, bus.current_input_contxt())
  if ic.is_enabled():
    vim.command('let result = 1')
  else:
    vim.command('let result = 0')
except:
  # When switching window, error is raised.
  # dbus.exception.DBusException: org.freedesktop.DBus.Error.failed: No focused input context
  vim.command('let result = 0')
EOF
  return result
endfunction

set imstatusfunc=ImStatusFunc

function! ImActivateFunc(active)
  python <<EOF
import vim
import ibus
ic = ibus.InputContext(bus, bus.current_input_contxt())
if vim.eval('a:active') == '1':
  ic.enable()
else:
  ic.disable()
EOF
endfunction

set imactivatefunc=ImActivateFunc

