Currently IM programmers are required to deal with the 3 context
'id' is used to communicate with C-side APIs such as im-commit
'context' is used as base object of Scheme-side context. It is
retrieved by (find-context id).
'per-im-context' contains IM-specific data. It is stored in a
'context' and retrieved by (context-data context).
The distinguishment requires IM-implementors tedious context
handling. You might have seen following code.
(lambda (id mode)
(let* ((c (find-context id))
(ac (context-data c)))
Although some reasons to distinguish the objects exist for API
implementor, all 3 context objects semantically mean same 'this
input context' for IM-implementors. So we should show the
context object as unified one for IM-implementors to eliminate
complexity and confusion.
See the URL for further information.
The modification for all available IMs have been performed by r1304.
The difference between new API and old one will be described in doc/COMPATIBILITY.