• Mattias Engdegård's avatar
    Don't poll auto-revert files that use notification (bug#35418) · c61bbb4c
    Mattias Engdegård authored
    It is a waste to periodically poll files that use change notification
    in auto-revert mode; stop doing that.  If no files need polling,
    turn off the periodic execution entirely to further avoid wasting power.
    Use a timer to inhibit immediate reversion for some time after a
    notification, for throttling.
    
    This change does not apply to files in global-auto-revert-mode, where
    polling is still necessary.  It is disabled by default, and enabled by
    setting `auto-revert-avoid-polling' to non-nil.
    
    * lisp/autorevert.el
    (toplevel): Require cl-lib.
    (auto-revert-avoid-polling, auto-revert--polled-buffers)
    (auto-revert--need-polling-p, auto-revert--lockout-interval)
    (auto-revert--lockout-timer, auto-revert--end-lockout): New.
    (global-auto-revert-mode): Keep notifiers for buffers in auto-revert mode.
    (auto-revert-set-timer): Use auto-revert--need-polling-p.
    (auto-revert-notify-handler): Restart polling if notification stopped.
    Use new lockout timer.
    (auto-revert-buffers):
    Use auto-revert--polled-buffers and auto-revert--need-polling-p.
    (auto-revert-buffers-counter, auto-revert-buffers-counter-lockedout):
    Remove.
    
    * etc/NEWS (Changes in Specialized Modes and Packages):
    Describe the new auto-revert-avoid-polling variable.
    
    * doc/emacs/files.texi (Reverting):
    Add paragraph describing auto-revert-avoid-polling.
    c61bbb4c
autorevert.el 34.8 KB