Re: Stray/unreferenced timeouts in erc-cmd-IGNORE?
Alcor <[email protected]> Mon, 01 Apr 2024 21:36:29 +0200
| Newsgroups | gmane.emacs.erc.general |
|---|---|
| Message-ID | <[email protected]> |
Short addendum: The attached patch is a short surgical fix for this issue. It can be applied on top of Erc 5.6. I'm not sure whether it's clean enough – but will leave it here for posterity, just in case someone is interested in a quick solution for this issue. Cheers, -A.
erc56-fix-ignore.diff
(text/x-diff, 1.8 KB)
--- erc.el 2024-04-01 20:18:40.344312693 +0200
+++ erc.el 2024-04-01 21:07:44.068028858 +0200
@@ -4237,9 +4237,17 @@
"Add a timeout? (Blank for no, or a time spec like 2h): "))
(buffer (current-buffer)))
(when timeout
- (run-at-time timeout nil
- (lambda ()
- (erc--unignore-user user buffer))))
+ (erc-with-server-buffer
+ (unless (and (boundp 'erc-ignore-timeouts) erc-ignore-timeouts)
+ (setq-local erc-ignore-timeouts (make-hash-table :test 'equal)))
+ (when-let ((existing (gethash user erc-ignore-timeouts)))
+ (cancel-timer existing)
+ (remhash user erc-ignore-timeouts))
+ (puthash user
+ (run-at-time timeout nil
+ (lambda ()
+ (erc--unignore-user user buffer)))
+ erc-ignore-timeouts)))
(erc-display-message nil 'notice 'active
(format "Now ignoring %s" user))
(erc-with-server-buffer (add-to-list 'erc-ignore-list user))))
@@ -4273,7 +4281,11 @@
(erc-display-message nil 'notice 'active
(format "No longer ignoring %s" user))
(erc-with-server-buffer
- (setq erc-ignore-list (delete user erc-ignore-list))))))
+ (setq erc-ignore-list (delete user erc-ignore-list))
+ (when (and (boundp 'erc-ignore-timeouts) erc-ignore-timeouts)
+ (when-let ((existing (gethash user erc-ignore-timeouts)))
+ (cancel-timer existing))
+ (remhash user erc-ignore-timeouts))))))
(defvar erc--pre-clear-functions nil
"Abnormal hook run when truncating buffers.