Subject: Re: bug#67204: 29.1; request: always echo EMOJI name while emoji-list

From: Daniel Martín <[email-masked]>
Date: Mon, 25 Dec 2023 21:52:42 +0100

Eli Zaretskii <[email-masked]> writes:

>> 
>> This is because Emacs automatically moves the point when it’s in the
>> middle of text with the ’composition’ property.  See (elisp) Adjusting
>> Point in the Elisp Info manual for more information about this feature.
>> 
>> It seems that post-command-hook is invoked _before_ the point is moved,
>> so querying the position of point inside post-command-hook does not
>> always give correct results.  You could add your code to the
>> pre-redisplay-function instead.
>
> Would temporarily disabling point adjustment help here?

Not really.  I think point adjustment is really needed in the emoji-list
buffer; otherwise, sometimes you’d need to press C-f multiple times to
go from one emoji to the next one, when compositions are involved.

Here’s a complete recipe to understand the issue better:

emacs -Q

Eval the following code:

(add-hook #'post-command-hook
          (lambda ()
            (message "Column: %d" (current-column)))
          nil)

M-x column-number-mode
M-x emoji-list
C-s people > activity
C-n
C-n
C-f

The mode-line shows point is at line 115 and column 9, but the echo area
shows "Column: 8".

However, if you click on the emoji at column 9, then the echo area
correctly shows "Column: 9".