> This is because sit-for instantly returns t if > unread-command-events is not nil, and the currrent input > method mechanism uses unread-command-events in the following > way:
...Hmmm... interesting. Indeed, what happens basically is that when you type a b the `a' is only executed when you type the `b', because in the time between the two events, quail is waiting for another key in order to decide whether to really meant to type an `a' or maybe some other char (like à, ä, ...). In the case where `a' and `b' are bount to self-insert-command, I could imagine changing Quail such that the first (quail-input-method ?a) returns '(?a) and that a subsequent (quail-input-method ?\") returns '(?\^? ?ä), with some added magic to add/remove the underscore. But since those chars can be bound to something else than self-insert-command, there's no guarantee that it'll do the right thing. Or maybe we should first return '(set-quail-undo-boundary ?a) and then '(quail-undo-last ?ä) where both set-quail-undo-boundary and quail-undo-last are special events bound to similarly named functions. I guess that could work, although it would need additional hacks to enable/disable the undo-log and to add/remove the underscore. Stefan _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel