Subject: Re: bug#77224: [PATCH] New minor mode 'cursor-indicators-mode'

From: Eli Zaretskii <[email-masked]>
Date: Sat, 29 Mar 2025 21:40:27 +0300

> From: Elijah Gabe Pérez <[email-masked]>
> Cc: [email-masked],  [email-masked],  Daniel Colascione
>  <[email-masked]>,  [email-masked]
> Date: Sat, 29 Mar 2025 12:26:40 -0600
> 
> Juri Linkov <[email-masked]> writes:
> 
>  I've updated the patch which should use the mode hook instead using
>  post-command-hook or idle timers (and allows (implicitly) to user use
>  post-command-hook (but that is user responsibility add it or not)).
> 
>  Also this should refresh the cursor while switching windows.
> 
>  However I've deleted the function/lambdas support as conditions because
>  i found it problematic.
> 
>  I've test it only for overwrite-mode, I ask if anyone wants to give it a
>  try.
> 
>  Please note that this is insufficient for 'repeat-mode'.
>  Currently it requires adding an advice to update the cursor
>  on the repeat timer events:
> 
>  (add-function :after repeat-echo-function #'cursor-indicators–update-indications)
> 
>  since need to update the cursor when the timer is fired:
> 
>  (run-with-idle-timer timeout nil #'repeat-exit)
>  (defun repeat-exit ()
>  (setq repeat-in-progress nil)
>  (funcall repeat-echo-function nil))
> 
>  This problem can be solved by adding a hook:
> 
>  (defun repeat-exit ()
>  (setq repeat-in-progress nil)
>  (funcall repeat-echo-function nil)
>  (run-hooks 'repeat-exit-hook))
> 
>  Then 'cursor-indicators-mode' needs to add this hook:
> 
>  (define-minor-mode cursor-indicators-mode
>  …
>  (add-hook 'repeat-exit-hook #'cursor-indicators–update-indications)
> 
>  Then maybe it's possible to add more hooks for other features as well.
> 
>  The drawback of this approach is that specific hooks make the cursor updating
>  less reliable than with using post-command-hook.
> 
> Well, then I think the best solution for this would be to make this
> package (cursor-indicators) part of the C code.
> 
> I'll see what I can do.

Let's please discuss your ideas before you implement them, to make
sure you don't work on some ideas that we might object to.