* bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity
@ 2025-01-03 22:30 Jean Louis
2025-01-04 17:56 ` Ship Mints
2025-01-04 18:46 ` Eli Zaretskii
0 siblings, 2 replies; 6+ messages in thread
From: Jean Louis @ 2025-01-03 22:30 UTC (permalink / raw)
To: 75361
The function is not working unless there is some activity. I remember it
worked well in past, do not know what changed.
(defun my-message ()
(message (format-time-string "%T Hello")))
(run-with-idle-timer 10 t 'my-message)
From that point I will see one hello message but if I do not touch
anything it will not repeat.
That is bug.
It should be repeating the message each 10 seconds.
In GNU Emacs 31.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version
3.24.38, cairo version 1.16.0) of 2024-12-05 built on lco2
Repository revision: 25b4bf7fcd75564f23b2e60e29e8ff7354186371
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)
Configured using:
'configure --with-mailutils --with-native-compilation=yes
--with-tree-sitter --with-imagemagick'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB
Important settings:
value of $LC_ALL: en_US.UTF-8
value of $LC_COLLATE: en_US.UTF-8
value of $LC_CTYPE: en_US.UTF-8
value of $LC_MESSAGES: en_US.UTF-8
value of $LANG: de_DE.UTF-8
value of $XMODIFIERS: @im=exwm-xim
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
minibuffer-regexp-mode: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util time-date subr-x mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-print debug
backtrace find-func misearch multi-isearch cl-extra shortdoc
text-property-search comp-common rx help-fns byte-opt gv bytecomp
byte-compile radix-tree help-mode leuven-dark-theme cus-theme cus-edit
pp cus-start cus-load icons wid-edit cl-loaddefs cl-lib rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list
replace newcomment text-mode lisp-mode prog-mode register page tab-bar
menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse
jit-lock font-lock syntax font-core term/tty-colors frame minibuffer
nadvice seq simple cl-generic indonesian philippine cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process native-compile emacs)
Memory information:
((conses 16 117793 13718) (symbols 48 9320 2) (strings 32 26053 2808)
(string-bytes 1 732164) (vectors 16 13753)
(vector-slots 8 184380 13787) (floats 8 123 18) (intervals 56 540 20)
(buffers 992 15))
--
Jean Louis
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity
2025-01-03 22:30 bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity Jean Louis
@ 2025-01-04 17:56 ` Ship Mints
2025-01-04 19:21 ` bug#75361: SOLVED - " Jean Louis
2025-01-04 18:46 ` Eli Zaretskii
1 sibling, 1 reply; 6+ messages in thread
From: Ship Mints @ 2025-01-04 17:56 UTC (permalink / raw)
To: Jean Louis; +Cc: 75361
[-- Attachment #1: Type: text/plain, Size: 5137 bytes --]
I believe this is intended behavior. You should use a regular interval
timer if you want repeating executions that do not depend upon Emacs
entering the idle state. Not sure why you think this worked differently in
the recent past.
"Emacs becomes *idle* when it starts waiting for user input (unless it
waits for input with a timeout, see Reading One Event
<https://www.gnu.org/software/emacs/manual/html_node/elisp/Reading-One-Event.html>),
and it remains idle until the user provides some input. If a timer is set
for five seconds of idleness, it runs approximately five seconds after
Emacs first becomes idle. Even if repeat is non-nil, this timer will not
run again as long as Emacs remains idle, because the duration of idleness
will continue to increase and will not go down to five seconds again."
On Sat, Jan 4, 2025 at 12:39 PM Jean Louis <bugs@gnu.support> wrote:
>
> The function is not working unless there is some activity. I remember it
> worked well in past, do not know what changed.
>
> (defun my-message ()
> (message (format-time-string "%T Hello")))
>
> (run-with-idle-timer 10 t 'my-message)
>
> From that point I will see one hello message but if I do not touch
> anything it will not repeat.
>
> That is bug.
>
> It should be repeating the message each 10 seconds.
>
>
> In GNU Emacs 31.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version
> 3.24.38, cairo version 1.16.0) of 2024-12-05 built on lco2
> Repository revision: 25b4bf7fcd75564f23b2e60e29e8ff7354186371
> Repository branch: master
> Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
> System Description: Debian GNU/Linux 12 (bookworm)
>
> Configured using:
> 'configure --with-mailutils --with-native-compilation=yes
> --with-tree-sitter --with-imagemagick'
>
> Configured features:
> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ
> IMAGEMAGICK JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY
> INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
> TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB
>
> Important settings:
> value of $LC_ALL: en_US.UTF-8
> value of $LC_COLLATE: en_US.UTF-8
> value of $LC_CTYPE: en_US.UTF-8
> value of $LC_MESSAGES: en_US.UTF-8
> value of $LANG: de_DE.UTF-8
> value of $XMODIFIERS: @im=exwm-xim
> locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
> tooltip-mode: t
> global-eldoc-mode: t
> eldoc-mode: t
> show-paren-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> tool-bar-mode: t
> menu-bar-mode: t
> file-name-shadow-mode: t
> global-font-lock-mode: t
> font-lock-mode: t
> blink-cursor-mode: t
> minibuffer-regexp-mode: t
> line-number-mode: t
> indent-tabs-mode: t
> transient-mark-mode: t
> auto-composition-mode: t
> auto-encryption-mode: t
> auto-compression-mode: t
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort mail-extr emacsbug message mailcap yank-media puny dired
> dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
> epg-config gnus-util time-date subr-x mm-decode mm-bodies mm-encode
> mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
> rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-print debug
> backtrace find-func misearch multi-isearch cl-extra shortdoc
> text-property-search comp-common rx help-fns byte-opt gv bytecomp
> byte-compile radix-tree help-mode leuven-dark-theme cus-theme cus-edit
> pp cus-start cus-load icons wid-edit cl-loaddefs cl-lib rmc iso-transl
> tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
> lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
> touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list
> replace newcomment text-mode lisp-mode prog-mode register page tab-bar
> menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse
> jit-lock font-lock syntax font-core term/tty-colors frame minibuffer
> nadvice seq simple cl-generic indonesian philippine cham georgian
> utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
> japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
> ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop
> case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
> cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
> files window text-properties overlay sha1 md5 base64 format env
> code-pages mule custom widget keymap hashtable-print-readable backquote
> threads dbusbind inotify lcms2 dynamic-setting system-font-setting
> font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
> make-network-process native-compile emacs)
>
> Memory information:
> ((conses 16 117793 13718) (symbols 48 9320 2) (strings 32 26053 2808)
> (string-bytes 1 732164) (vectors 16 13753)
> (vector-slots 8 184380 13787) (floats 8 123 18) (intervals 56 540 20)
> (buffers 992 15))
>
> --
> Jean Louis
>
>
>
>
[-- Attachment #2: Type: text/html, Size: 6731 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity
2025-01-03 22:30 bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity Jean Louis
2025-01-04 17:56 ` Ship Mints
@ 2025-01-04 18:46 ` Eli Zaretskii
2025-01-06 21:28 ` Stefan Kangas
1 sibling, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2025-01-04 18:46 UTC (permalink / raw)
To: Jean Louis; +Cc: 75361
tags 75361 notabug
thanks
> From: Jean Louis <bugs@gnu.support>
> Date: Sat, 04 Jan 2025 01:30:03 +0300
>
>
> The function is not working unless there is some activity. I remember it
> worked well in past, do not know what changed.
>
> (defun my-message ()
> (message (format-time-string "%T Hello")))
>
> (run-with-idle-timer 10 t 'my-message)
>
> >From that point I will see one hello message but if I do not touch
> anything it will not repeat.
That's expected. From the ELisp manual:
Emacs becomes “idle” when it starts waiting for user input (unless it
waits for input with a timeout, *note Reading One Event::), and it
remains idle until the user provides some input. If a timer is set for
five seconds of idleness, it runs approximately five seconds after Emacs
first becomes idle. Even if REPEAT is non-‘nil’, this timer will not
run again as long as Emacs remains idle, because the duration of
idleness will continue to increase and will not go down to five seconds
again.
> That is bug.
>
> It should be repeating the message each 10 seconds.
See above: your expectations are incorrect.
This is not a bug.
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#75361: SOLVED - Re: bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity
2025-01-04 17:56 ` Ship Mints
@ 2025-01-04 19:21 ` Jean Louis
2025-01-06 20:47 ` Ship Mints
0 siblings, 1 reply; 6+ messages in thread
From: Jean Louis @ 2025-01-04 19:21 UTC (permalink / raw)
To: Ship Mints; +Cc: 75361
* Ship Mints <shipmints@gmail.com> [2025-01-04 20:58]:
> I believe this is intended behavior. You should use a regular interval
> timer if you want repeating executions that do not depend upon Emacs
> entering the idle state. Not sure why you think this worked differently in
> the recent past.
>
> "Emacs becomes *idle* when it starts waiting for user input (unless it
> waits for input with a timeout, see Reading One Event
> <https://www.gnu.org/software/emacs/manual/html_node/elisp/Reading-One-Event.html>),
> and it remains idle until the user provides some input. If a timer is set
> for five seconds of idleness, it runs approximately five seconds after
> Emacs first becomes idle. Even if repeat is non-nil, this timer will not
> run again as long as Emacs remains idle, because the duration of idleness
> will continue to increase and will not go down to five seconds again."
Okay I got it. Though I am surprised as I was using idle timer
thousands of times. I was thinking it repeated itself, while it
didn't.
Recently I started observing and have seen it is getting blocked, I
wondered why, due to lack of understanding.
I have found solution to my problem, so I will simply run the function
`run-with-timer` and then check if user is idle to execute it.
Basically, I do not need executions if user is not idle.
(defun my-hello ()
(when (and (current-idle-time)
(>= (cadr (current-idle-time)) 5))
(rcd-message "Current idle time: %s" (cadr (current-idle-time)))))
(run-with-timer 5 5 'my-hello)
So in the sense of how I understand it, `run-with-idle-timer` only
sounds as the function I need, while it is not.
I can make it this way:
(run-with-timer 10 10 'rcd-run-repeatingly-when-idle 5 'my-hello)
(defun rcd-run-repeatingly-when-idle (secs function &rest args)
(when (and (current-idle-time)
(>= (cadr (current-idle-time)) secs))
(apply 'funcall function args)))
As that way it will use `run-with-timer` though only when user is idle
for SECS.
--
Jean Louis
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#75361: SOLVED - Re: bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity
2025-01-04 19:21 ` bug#75361: SOLVED - " Jean Louis
@ 2025-01-06 20:47 ` Ship Mints
0 siblings, 0 replies; 6+ messages in thread
From: Ship Mints @ 2025-01-06 20:47 UTC (permalink / raw)
To: Jean Louis; +Cc: 75361
[-- Attachment #1: Type: text/plain, Size: 3052 bytes --]
Also in the documentation for idle timers, you can find a different
approach that might work for you than the one you proposed. At the very
least, your timer will fire only when Emacs is idle rather than polling for
idleness. HTH.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Idle-Timers.html
"Similarly, do not write an idle timer function that sets up another idle
timer (including the same idle timer) with secs argument less than or equal
to the current idleness time. Such a timer will run almost immediately, and
continue running again and again, instead of waiting for the next time
Emacs becomes idle. The correct approach is to reschedule with an
appropriate increment of the current value of the idleness time, as
described below."
-Stephane
On Mon, Jan 6, 2025 at 3:30 PM Jean Louis <bugs@gnu.support> wrote:
> * Ship Mints <shipmints@gmail.com> [2025-01-04 20:58]:
> > I believe this is intended behavior. You should use a regular interval
> > timer if you want repeating executions that do not depend upon Emacs
> > entering the idle state. Not sure why you think this worked differently
> in
> > the recent past.
> >
> > "Emacs becomes *idle* when it starts waiting for user input (unless it
> > waits for input with a timeout, see Reading One Event
> > <
> https://www.gnu.org/software/emacs/manual/html_node/elisp/Reading-One-Event.html
> >),
> > and it remains idle until the user provides some input. If a timer is set
> > for five seconds of idleness, it runs approximately five seconds after
> > Emacs first becomes idle. Even if repeat is non-nil, this timer will not
> > run again as long as Emacs remains idle, because the duration of idleness
> > will continue to increase and will not go down to five seconds again."
>
> Okay I got it. Though I am surprised as I was using idle timer
> thousands of times. I was thinking it repeated itself, while it
> didn't.
>
> Recently I started observing and have seen it is getting blocked, I
> wondered why, due to lack of understanding.
>
> I have found solution to my problem, so I will simply run the function
> `run-with-timer` and then check if user is idle to execute it.
>
> Basically, I do not need executions if user is not idle.
>
> (defun my-hello ()
> (when (and (current-idle-time)
> (>= (cadr (current-idle-time)) 5))
> (rcd-message "Current idle time: %s" (cadr (current-idle-time)))))
>
> (run-with-timer 5 5 'my-hello)
>
> So in the sense of how I understand it, `run-with-idle-timer` only
> sounds as the function I need, while it is not.
>
> I can make it this way:
>
> (run-with-timer 10 10 'rcd-run-repeatingly-when-idle 5 'my-hello)
>
> (defun rcd-run-repeatingly-when-idle (secs function &rest args)
> (when (and (current-idle-time)
> (>= (cadr (current-idle-time)) secs))
> (apply 'funcall function args)))
>
> As that way it will use `run-with-timer` though only when user is idle
> for SECS.
>
> --
> Jean Louis
>
>
>
>
[-- Attachment #2: Type: text/html, Size: 4561 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity
2025-01-04 18:46 ` Eli Zaretskii
@ 2025-01-06 21:28 ` Stefan Kangas
0 siblings, 0 replies; 6+ messages in thread
From: Stefan Kangas @ 2025-01-06 21:28 UTC (permalink / raw)
To: Eli Zaretskii, Jean Louis; +Cc: 75361-done
Eli Zaretskii <eliz@gnu.org> writes:
> tags 75361 notabug
> thanks
>
>> From: Jean Louis <bugs@gnu.support>
>> Date: Sat, 04 Jan 2025 01:30:03 +0300
>>
>>
>> The function is not working unless there is some activity. I remember it
>> worked well in past, do not know what changed.
>>
>> (defun my-message ()
>> (message (format-time-string "%T Hello")))
>>
>> (run-with-idle-timer 10 t 'my-message)
>>
>> >From that point I will see one hello message but if I do not touch
>> anything it will not repeat.
>
> That's expected. From the ELisp manual:
>
> Emacs becomes “idle” when it starts waiting for user input (unless it
> waits for input with a timeout, *note Reading One Event::), and it
> remains idle until the user provides some input. If a timer is set for
> five seconds of idleness, it runs approximately five seconds after Emacs
> first becomes idle. Even if REPEAT is non-‘nil’, this timer will not
> run again as long as Emacs remains idle, because the duration of
> idleness will continue to increase and will not go down to five seconds
> again.
>
>> That is bug.
>>
>> It should be repeating the message each 10 seconds.
>
> See above: your expectations are incorrect.
>
> This is not a bug.
I'm therefore closing this bug report.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-01-06 21:28 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-03 22:30 bug#75361: 31.0.50; run-with-idle-timer not working unless there is some activity Jean Louis
2025-01-04 17:56 ` Ship Mints
2025-01-04 19:21 ` bug#75361: SOLVED - " Jean Louis
2025-01-06 20:47 ` Ship Mints
2025-01-04 18:46 ` Eli Zaretskii
2025-01-06 21:28 ` Stefan Kangas
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).