[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gnus shouldn't be making general-purpose variables buffer-local
From: |
Ami Fischman |
Subject: |
Re: gnus shouldn't be making general-purpose variables buffer-local |
Date: |
Mon, 22 Dec 2008 12:53:50 -0800 |
Thanks for adding me back to the thread, Reiner.
David's patch does solve my problem.
In case it's helpful for others who don't want to edit their copy of
gnus-sum.el, until now I'd been making do with:
(add-hook 'gnus-select-group-hook
(lambda ()
(kill-local-variable 'timestamp)))
with no apparent ill-effect.
-a
On Mon, Dec 22, 2008 at 10:55 AM, Reiner Steib
<address@hidden> wrote:
> [ Adding Ami Fischman, emacs-devel and emacs-jabber (again).
> (See
> <http://thread.gmane.org/gmane.emacs.gnus.general/67886/focus=67943>,
> <http://thread.gmane.org/gmane.emacs.devel/105256> also for the
> complete threads.) ]
>
> On Wed, Dec 17 2008, Katsumi Yamaoka wrote:
>
>> At least for `timestamp', the attached patch will solve (note
>> that you need to reload the patched gnus-group.elc because of
>> `defsubst'). At the first time you enter to a group, the buffer-
>> local variable `timestamp' is still alive, but it will be renamed
>> to `gnus-timestamp' when exiting the group. Maybe the change
>> will not slow Gnus.
> [...]
>> --- gnus-group.el~ 2008-10-03 05:47:11 +0000
>> +++ gnus-group.el 2008-12-17 10:18:31 +0000
>> @@ -4608,11 +4608,13 @@
>> (when gnus-newsgroup-name
>> (let ((time (current-time)))
>> (setcdr (cdr time) nil)
>> - (gnus-group-set-parameter gnus-newsgroup-name 'timestamp time))))
>> + (gnus-group-set-parameter gnus-newsgroup-name 'gnus-timestamp time)
>> + (gnus-group-remove-parameter gnus-newsgroup-name 'timestamp))))
>>
>> (defsubst gnus-group-timestamp (group)
>> "Return the timestamp for GROUP."
>> - (gnus-group-get-parameter group 'timestamp t))
>> + (or (gnus-group-get-parameter group 'gnus-timestamp t)
>> + (gnus-group-get-parameter group 'timestamp t)))
>
> After the initial report on emacs-devel, I wrote this quite similar
> patch:
>
> --8<---------------cut here---------------start------------->8---
> --- gnus-group.el 10 Sep 2008 03:28:52 +0200 1.77
> +++ gnus-group.el 03 Nov 2008 00:17:44 +0100
> @@ -4608,11 +4608,17 @@
> (when gnus-newsgroup-name
> (let ((time (current-time)))
> (setcdr (cdr time) nil)
> - (gnus-group-set-parameter gnus-newsgroup-name 'timestamp time))))
> + ;; Remove obsolete `timestamp' (used until 2008-11-03) if present.
> + ;; Note: This breaks down-grading.
> + (when (gnus-group-get-parameter group 'timestamp t)
> + (gnus-group-remove-parameter group 'timestamp))
> + (gnus-group-set-parameter gnus-newsgroup-name 'gnus-group-timestamp
> time))))
>
> (defsubst gnus-group-timestamp (group)
> "Return the timestamp for GROUP."
> - (gnus-group-get-parameter group 'timestamp t))
> + (or (gnus-group-get-parameter group 'gnus-group-timestamp t)
> + ;; For compatibility, check `timestamp' (used until 2008-11-03) as
> well.
> + (gnus-group-get-parameter group 'timestamp t)))
>
> (defun gnus-group-timestamp-delta (group)
> "Return the offset in seconds from the timestamp for GROUP to the current
> time, as a floating point number."
> --8<---------------cut here---------------end--------------->8---
>
> Beside the other name, it removes the old parameter `timestamp'.
>
> However, I wonder if the more general patch suggested by David Engster
> is better. Does anyone see a problem with it?
>
> Ami, does David's patch solve your problem?
>
> --8<---------------cut here---------------start------------->8---
> --- a/lisp/gnus-sum.el
> +++ b/lisp/gnus-sum.el
> @@ -3831,6 +3831,7 @@ This function is intended to be used in
> (and (consp elem) ; Has to be a cons.
> (consp (cdr elem)) ; The cdr has to be a list.
> (symbolp (car elem)) ; Has to be a symbol in there.
> + (boundp (car elem)) ; Has to be already bound
> (not (memq (car elem) vars))
> (ignore-errors ; So we set it.
> (push (car elem) vars)
> --8<---------------cut here---------------end--------------->8---
>
> Bye, Reiner.
> --
> ,,,
> (o o)
> ---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/
>