(local IM_cmd "fcitx5-remote")
(local toggle_IM [IM_cmd "-t"])
(var was_IM_enabled false)

(fn get_IM_status []
  (= "2" (: (. (: (vim.system [IM_cmd]) :wait) :stdout) :sub 1 1)))

(fn toggle_IM_status []
  (if was_IM_enabled (vim.system toggle_IM)))

(vim.api.nvim_create_autocmd "InsertEnter" { :callback toggle_IM_status })

(vim.api.nvim_create_autocmd "InsertLeave"
                             { :callback
                               (lambda []
                                 (set was_IM_enabled (get_IM_status))
                                 (toggle_IM_status)) })

nil