GNU bug report logs -
#36843
26.2; ERC lurker feature broken
Previous Next
Reported by: Thibault Polge <thibault <at> thb.lt>
Date: Mon, 29 Jul 2019 22:06:02 UTC
Severity: normal
Tags: fixed, patch
Found in versions 24.4, 26.2
Fixed in version 27.1
Done: Noam Postavsky <npostavs <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #24 received at 36843 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Noam Postavsky <npostavs <at> gmail.com> writes:
> Amin Bandali <bandali <at> gnu.org> writes:
>
>> From: Amin Bandali <bandali <at> gnu.org>
>
> This address seems to be different than what's in the copyright list.
> Could you use that one, since otherwise it's a bit confusing as to
> whether I'm actually looking at the entry of the right person.
>
Thanks for bringing this to my attention. I’d changed my email back in
December 2018 and had notified the copyright clerk about it, but it
seems that their change hadn’t properly propagated to copyright.list.
It should be there now.
>
>> Date: Sat, 17 Aug 2019 14:09:11 -0400
>> Subject: [PATCH] Fix erc-lurker-update-status
>>
>> Fix erc-lurker-update-status (bug#36843), broken since
>> d0fcaff514d2be16ccf73817f658318cf85221e3.
>>
>> * lisp/erc/erc.el: define `erc-message-parsed', lexically bind it in
>
> Instead of "lexically" I believe you actually mean "dynamically"
> (binding lexically is the cause of the bug). And I would reformat like
> this:
>
Good catch! I rebased on latest master and reformatted per your
suggestion. I’ve attached an updated patch below.
Thanks for your feedback.
[0001-Fix-erc-lurker-update-status-bug-36843.patch (text/x-diff, inline)]
From 2bc8f35e4a0f76e7b59950738fbfdc3c3e48263c Mon Sep 17 00:00:00 2001
From: Amin Bandali <bandali <at> gnu.org>
Date: Sat, 17 Aug 2019 14:09:11 -0400
Subject: [PATCH] Fix erc-lurker-update-status (bug#36843)
Broken since 2013-08-22 "* lisp/erc/erc.el: Use lexical-binding".
* lisp/erc/erc.el (erc-message-parsed): New variable.
(erc-display-message): Dynamically bind it.
(erc-lurker-update-status): Check it instead of using `parsed'
directly. This results in `erc-lurker-state' being properly updated
to keep track of non-lurkers, and thus `erc-lurker-p' returning
correct results rather than return t for everyone.
---
lisp/erc/erc.el | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index f5c9decc3a..9ea9e608ac 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -2594,6 +2594,8 @@ erc-lurker-cleanup-interval
consumption of lurker state during long Emacs sessions and/or ERC
sessions with large numbers of incoming PRIVMSGs.")
+(defvar erc-message-parsed)
+
(defun erc-lurker-update-status (_message)
"Update `erc-lurker-state' if necessary.
@@ -2603,18 +2605,20 @@ erc-lurker-update-status
current time. Otherwise, take no action.
This function depends on the fact that `erc-display-message'
-dynamically binds `parsed', which is used to check if the current
-message is a PRIVMSG and to determine its sender. See also
-`erc-lurker-trim-nicks' and `erc-lurker-ignore-chars'.
+dynamically binds `erc-message-parsed', which is used to check if
+the current message is a PRIVMSG and to determine its sender.
+See also `erc-lurker-trim-nicks' and `erc-lurker-ignore-chars'.
In order to limit memory consumption, this function also calls
`erc-lurker-cleanup' once every `erc-lurker-cleanup-interval'
updates of `erc-lurker-state'."
- (when (and (boundp 'parsed) (erc-response-p parsed))
- (let* ((command (erc-response.command parsed))
+ (when (and (boundp 'erc-message-parsed)
+ (erc-response-p erc-message-parsed))
+ (let* ((command (erc-response.command erc-message-parsed))
(sender
(erc-lurker-maybe-trim
- (car (erc-parse-user (erc-response.sender parsed)))))
+ (car (erc-parse-user
+ (erc-response.sender erc-message-parsed)))))
(server
(erc-canonicalize-server-name erc-server-announced-name)))
(when (equal command "PRIVMSG")
@@ -2704,7 +2708,8 @@ erc-display-message
See also `erc-format-message' and `erc-display-line'."
(let ((string (if (symbolp msg)
(apply #'erc-format-message msg args)
- msg)))
+ msg))
+ (erc-message-parsed parsed))
(setq string
(cond
((null type)
--
2.23.0
This bug report was last modified 5 years and 265 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.