Subject: bug#1003: 23.0.60; set-keyboard-coding-system incompatible with TeX input method

From: Kenichi Handa <[email-masked]>
Date: Mon, 25 May 2009 13:44:12 +0900

I've just noticed that this bug is not yet closed.

Laura Conrad <[email-masked]> wrote:
> in TeX input mode, I expect to be able to type ént by typing  "\'ent".
> When I  set:
> 
>      (set-keyboard-coding-system 'utf-8)
> 
> typing those four characters gives me some Chinese character.
> 
> This is with the ubuntu Linux 8.04 emacs-snapshot package.

It seems that this bug is now fixed by Stefan's workaround
patch accompanied with this comment:

        ;; Invalid utf-8 sequence.  Might be because Quail got involved
        ;; in-between and the bytes we thought we were reading were actually
        ;; latin-1 chars.  Let's presume that `event' is the second "byte",
        ;; i.e. there weren't any "apprently correct" between `lead' and
        ;; `event': it's easy to recover in this case, and the more general
        ;; case seems pretty unlikely.
        ;; FIXME: We should really do encoded-kbd decoding before processing
        ;; input-methods.

The strange thing is that the date of the orignal bug report
is 2008-09-19 but the above patch was installed on
2008-06-15.  Laura, do you still see the problem?

Stefan Monnier <[email-masked]> wrote:
> A real fix would probably be to perform keyboard-coding-system decoding
> earlier, but it's a non trivial change which may introduce its own set
> of problems.

I vaguely remember that I sent a patch to do that long ago,
but it seems that the discussion fizzled out without
reaching any conclusion.

> Maybe another way to fix the problem is to let quail emit not just é but
> the sequence [im-char é] and then have input-decode-map strip the
> `im-char' pseudo event; this would protect those im-generated chars from
> being processed by the keyboard-coding-system processing.

That's one idea, but seems tricky.  I prefer the first
method.

---
Kenichi Handa
[email-masked]