emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Support for explicitly resetting the idle timer?


From: Campbell Barton
Subject: Support for explicitly resetting the idle timer?
Date: Sat, 27 Nov 2021 18:54:56 +1100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.1

Hi, I've run into a situation where being able to reset the idle time is needed. As far as I can tell there is no way to do this at the moment. So I'm writing to check if a patch to support this is likely to be considered.

To give some context for how I ended up needing this, the motivation for this is noted below.


Motivation
==========

There is a package I use/maintain which implements something like Firefox's auto-scroll (click-drag to scroll up/down) [0].

An issue with this is (unlike mouse wheel scrolling) using track-mouse doesn't handle keyboard events in a way that resets the idle timer.

So while scrolling, idle timers may run (which can cause visible stuttering).

I've worked around this by locally let binding `timer-idle-list` to nil, however this back-fires if any timers are added while scrolling (rare but possible), workarounds for this are possible - but they involve clearing the list while scrolling then moving the contents into the real `timer-idle-list` list... which as far as I can see is quite error prone, especially if packages are inspecting the contents of this list.

All this complexity could be avoided if the function `timer_stop_idle` in ./src/keyboard.c was exposed to elisp, this way scripts that use mouse input could explicitly reset the idle timer on mouse based user-interaction (when it makes sense).

Other solutions could work too (perhaps something specific to `track-mouse`), but I think having a way to reset the idle timer is most straightforward.

[0]: https://gitlab.com/ideasman42/emacs-scroll-on-drag




reply via email to

[Prev in Thread] Current Thread [Next in Thread]