You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm working on making a CPU-intensive function called from the modeline loop asynchronous, and am using a simple boolean var as a lock to skip body of a deferred:nextc it function when the lock is active. Unfortunately deferred:wait-idle unconditionally blocks execution of the deferred task chain. Would it be possible useful to add a third argument to its function definition? Something like a bool, that if nil will not block while waiting for the idle timer to expire (eg: skip the timer if nil). The form would become deferred:wait-idle (msec) (optional-boolean-lock).
I'm using a simple:
(deferred:$
(deferred:wait-idle idle-wait-value)
(deferred:next it (lambda (elapsed) set-lock-and-do-slow-CPU-intensive-stuff))
(deferred:next it (lambda (result) format-result-as-a-string-and-set-a-var-and-unset-lock)))
The buffer-local var set in the 3rd task is evaluated in the modeline loop. The 3rd task also unsets the lock. The specific issue I'm experiencing is that the unconditional wait-idle introduces a minimum latency of 2x the idle-wait-value. In my case it might be possible to merge 2nd and 3rd tasks, but I believe other people would find it useful to be able to conditionally skip the wait-idle task, thus eliminating the guarantied latency of 1x idle-wait-value.
Thank you for maintaining emacs-deferred!
Nicholas
The text was updated successfully, but these errors were encountered:
Hi,
I'm working on making a CPU-intensive function called from the modeline loop asynchronous, and am using a simple boolean var as a lock to skip body of a
deferred:nextc it
function when the lock is active. Unfortunatelydeferred:wait-idle
unconditionally blocks execution of the deferred task chain. Would it be possible useful to add a third argument to its function definition? Something like a bool, thatif nil
will not block while waiting for the idle timer to expire (eg: skip the timerif nil
). The form would becomedeferred:wait-idle (msec) (optional-boolean-lock)
.I'm using a simple:
The buffer-local var set in the 3rd task is evaluated in the modeline loop. The 3rd task also unsets the lock. The specific issue I'm experiencing is that the unconditional wait-idle introduces a minimum latency of 2x the idle-wait-value. In my case it might be possible to merge 2nd and 3rd tasks, but I believe other people would find it useful to be able to conditionally skip the wait-idle task, thus eliminating the guarantied latency of 1x
idle-wait-value
.Thank you for maintaining emacs-deferred!
Nicholas
The text was updated successfully, but these errors were encountered: