MAPLIST = '<map-list>' MAP + '</map-list>'
STATELIST = '<state-list>' STATE + '</state-list>'
-MODULE = '<module>' DEFUN-NAME + '</module>'
+MODULE = '<module id="' MODULENAME '">' DEFUN-NAME + '</module>'
DEFUN-NAME = '<defun fname="' FNAME '"/>'
COMMAND
KEYSEQ = '<keyseq>' [ STRTERM | LISTTERM ] '</keyseq>'
KEYSEQTERM = KEYSEQ | VAR (value is KEYSEQ) | FUNCALL (return KEYSEQ)
-MARKER = '<marker>' SYMBOL '</marker>'
+MARKER = '<marker>' STRING '</marker>'
MARKERTERM = MARKER | VAR (value is MARKER) | FUNCALL (return MARKER)
-SELECTOR = '<selector>' SYMTERM '</selector>'
+SELECTOR = '<selector>' "@..." '</selector>'
SELECTORTERM = SELECTOR | VAR (value is SELECTOR) | FUNCALL (return SELECTOR)
MIM-PREDEFINED
= INSERT | CANDIDATES | DELETE | SELECT | SHOW | HIDE
| MARK | MOVE | PUSHBACK | POP | UNDO | COMMIT | UNHANDLE
- | SHIFT | SHIFTBACK
+ | SHIFT | SHIFTBACK | CHAR-AT | KEY-COUNT | SURROUNDING-TEXT-FLAG
INSERT = '<insert>' [ INTTERM | STRTERM ] '</insert>'
-CANDIDATES = '<insert-candidates>' [ STRTERM | LISTTERM ] + '</insert-candiates>'
+CANDIDATES = '<insert-candidates>' [ STRTERM | LISTTERM ]+ '</insert-candiates>'
DELETE = '<delete>' [ MARKERTERM | INTTERM ] '</delete>'
SELECT = '<select>' [ SELECTORTERM | INTTERM ] '</select>'
SHOW = '<show-candidates/>'
UNHANDLE = '<unhandle/>'
SHIFT = '<shift>' SYMTERM '</shift>'
SHIFTBACK = '<shiftback/>'
+CHAR-AT = '<char-at>' MARKERTERM '</char-at>'
+ => <integer>C</integer>, where C is the character in the preedit text
+ or the surrounding text at the postion specified by MARKERTERM.
+KEY-COUNT = '<key-count/>'
+ => <integer>N</integer>, where N is the number of currently handled keys
+SURROUNDING-TEXT-FLAG = '<surrounding-text-flag/>'
+ => <integer>1</integer> if surrounding text handling is supported
+ or <integer>0</integer> if not.