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

From: Visuwesh <[email-masked]>
Date: Tue, 27 Sep 2022 15:41:33 +0530

[செவ்வாய் செப்டம்பர் 27, 2022] Eli Zaretskii wrote:

>> From: Visuwesh <[email-masked]>
>> Cc: [email-masked],  [email-masked]
>> Date: Tue, 27 Sep 2022 13:04:48 +0530
>> 
>> In delete-forward-char, we use find-composition to get the extend of the
>> current glyphs in terms of characters.  AFAICT, find-composition does a
>> forward search for the 'composition' text property.  My proposal was
>> that we write a find-composition variant that would do a backward search
>> for the 'composition' text property which we then can make of use in
>> delete-backward-char.
>
> You are looking at the wrong branch of the code.  There's no
> 'composition' text property in the case that is of interest to you;
> the characters are composed by the so-called "automatic composition",
> whereby Emacs decides which characters to compose without any special
> text property.  The relevant code is in find_automatic_composition,
> which is called by find-composition-internal.

My recollection of the find-composition-internal was that it eventually
fell back to a text property search even for automatic compositions but
I see now that's not the case.  Thanks for setting me straight.

> In any case, my suggestion for finding composition backward is to
> incrementally go back and call find-composition-internal, until it
> fails to find a composition at or before point.

Thanks, I will see what I can do.

> The next question will be: what would be the key to which you'd bind
> this new command?

I thought a user option that would make DEL delete by grapheme clusters
would do the job.

>> We cannot simply do backward-char then delete-forward-char and bind it
>> to a command since IIRC the grapheme cluster movement happens in the
>> display code?
>
> No, it happens in the command loop.  See adjust_point_for_property,
> which calls composition_adjust_point.  I don't think this is important
> for the issue at hand, because the point adjustment happens only after
> interactive commands.