At the first, I explain the current state of Vim and IM.
Vim is supporting some GUI interface.

* Windows
* Mac
* Xaw
* GTK
* etc...

And Vim is supporting some IM on the above.

* Windows - WindowsIME
* Mac - MacIME
* Xaw - XIM
* GTK - gtkimmodule
* etc...

WindowsIME, MacIME, XIM are able to catch a trigger which IM was toggled.
ex: IM is on, IM is off

But gtkimmodule can't same. gtkimmodule does not provide API like a following.

* regist event handler which can catch the IM toggle.
* get current IM state.

Most IM on gtkimmodule use key sniffer for the catching IM's activation-key.
and client application can't know how key was trigger event. so far, vim
pretended that IM is active because it sent 'imactivatekey'. but it was big
workaround or ad-hock logic. I know that vim using gtkimmodule can't support
CursorIM correctly. The thing that it work without lies is only following.

* WindowsIME, MacIME, XIM work as before.
* vim-gtk2 change cursor to CursorIM only between preedit_start and preedit_end.

Unfortunately, Some gtkimmodule emit preedit_end when word was commited
 while state of preediting.
And some gtkimmodule don't emit preedit_start when user press the
 activation-key and when user type leading character of preediting word.

I know that vim is only application that try to change IM status.

I think that vim-gtk2 should not support CursorIM like other's behavior.
 Or, CursorIM should be changed while the preediting characters are exist.

Bram, how do you think about?

If you accept above changes, I'll make a patch of fixing this.
(I have already the patch roughly)

-- 
- Yasuhiro Matsumoto

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to