Subject: bug#58070: [PATCH] Add tamil99 input method

From: Eli Zaretskii <[email-masked]>
Date: Tue, 27 Sep 2022 11:03:52 +0300

> From: Visuwesh <[email-masked]>
> Cc: Arun Isaac <[email-masked]>,  [email-masked]
> Date: Tue, 27 Sep 2022 13:22:02 +0530
> 
> Arun's implementation precalculates the key sequences that produce
> vowel-consonant pairs and adds them as separate Quail rules, kind of
> what happens in the itrans IMs.  So in the quail-map, you have rules
> like "h" = க, "d" = உ, "hd" = கு which works great until you run into a
> situation like Eric described in emacs-devel here: https://yhetil.org/emacs-devel/[email-masked]/T/#m5b261c1a7bb06c7c074fdcdb746fb53ab7af1aa1
> 
> I'm sure that situation is familiar to many who use Quail IMs regularly,
> which is why I decided to make my IM consider the character before point
> to decide what codepoint Quail should insert in the buffer.  In my
> implementation, the quail-map only has "h" = க, "d" = உ.  I use the
> UPDATE-TRANSLATION-FUNCTION to see what the character before point is
> and change what Quail should insert: if the user types 'd' and the
> character before point is a 'க', then I make Quail insert ு (instead of
> உ) to get கு.  This lets you insert vowel-consonant pairs out-of-order
> which is akin to what Eric wants.

But the price is that, after typing "h", your implementation doesn't
show in the echo-area that one of the possible next candidates is "d",
whereas Arun's implementation does, is that right?

> > Emacs 29 also has the composition-break-at-point variable, which you
> > could set non-nil, in which case <Delete> will also work by
> > codepoints.  So perhaps the out-of-sequence vowel insertion would be
> > possible without further complications if composition-break-at-point
> > is non-nil?
> 
> Unfortunately, composition-break-at-point is not enough here since the
> layout does not have keys to insert the *vowel signs* (the grave accent
> in Arun's example), only *vowels*.

One could add those missing keys, no?

Anyway, composition-break-at-point doesn't have to be useful with each
IM, that's not necessarily its main purpose.