Announcements and discussions for Gnus, the GNU Emacs Usenet newsreader
 help / color / mirror / Atom feed
* Update topic unread counts on group exit?
@ 2022-05-04 17:35 Adam Sjøgren
  2022-05-04 17:58 ` Eric Abrahamsen
  0 siblings, 1 reply; 10+ messages in thread
From: Adam Sjøgren @ 2022-05-04 17:35 UTC (permalink / raw)
  To: info-gnus-english

  Hi,


When I exit a group, the unread count in the topic it is under doesn't
update.

If I collapse the topic, the count gets updated. That's cool.

Is there a way to get Gnus to update the counts automatically on group
exit as well?

The speed of Emacs these days makes me think I don't mind Gnus doing the
the extra work.


  Best regards,

    Adam

-- 
 "Sunday morning when the rain begins to fall               Adam Sjøgren
  I believe I have seen the end of it all"             asjo@koldfront.dk



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 17:35 Update topic unread counts on group exit? Adam Sjøgren
@ 2022-05-04 17:58 ` Eric Abrahamsen
  2022-05-04 18:17   ` Adam Sjøgren
  0 siblings, 1 reply; 10+ messages in thread
From: Eric Abrahamsen @ 2022-05-04 17:58 UTC (permalink / raw)
  To: info-gnus-english

Adam Sjøgren <asjo@koldfront.dk> writes:

>   Hi,
>
>
> When I exit a group, the unread count in the topic it is under doesn't
> update.
>
> If I collapse the topic, the count gets updated. That's cool.
>
> Is there a way to get Gnus to update the counts automatically on group
> exit as well?

It looks to me like you could add a function to
`gnus-summary-exit-hook', which calls
`gnus-topic-update-topics-containing-group' on the value of
`gnus-newsgroup-name'. At that stage in summary exit,
`gnus-newsgroup-name' won't have been cleared yet, so it should still
hold the name of the group you're coming out of.



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 17:58 ` Eric Abrahamsen
@ 2022-05-04 18:17   ` Adam Sjøgren
  2022-05-04 18:23     ` Adam Sjøgren
  2022-05-04 18:32     ` Eric Abrahamsen
  0 siblings, 2 replies; 10+ messages in thread
From: Adam Sjøgren @ 2022-05-04 18:17 UTC (permalink / raw)
  To: info-gnus-english

Eric writes:

>> Is there a way to get Gnus to update the counts automatically on group
>> exit as well?

> It looks to me like you could add a function to
> `gnus-summary-exit-hook', which calls
> `gnus-topic-update-topics-containing-group' on the value of
> `gnus-newsgroup-name'. At that stage in summary exit,
> `gnus-newsgroup-name' won't have been cleared yet, so it should still
> hold the name of the group you're coming out of.

Any reason for Gnus not to do that by default?

I hacked this together before reading your suggestion:

    (defun asjo-update-topics ()
      (let ((pos (point)))
        (beginning-of-buffer)
        (gnus-topic-read-group)
        (gnus-topic-read-group)
        (goto-char pos)))

    (add-hook 'gnus-summary-exit-hook 'asjo-update-topics)

Which just toggles the top-level topic, which has the side effect of
updating the counts.

I couldn't make save-mark-and-excursion work, so I did the point +
goto-char dance, which is a little icky.

I will see if I can get your suggestion going after dinner :-)

Thanks!


  Best regards,

    Adam

-- 
 "Our voodoo-dolls are full of hopes"                       Adam Sjøgren
                                                       asjo@koldfront.dk



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 18:17   ` Adam Sjøgren
@ 2022-05-04 18:23     ` Adam Sjøgren
  2022-05-04 19:51       ` Eric Abrahamsen
  2022-05-04 18:32     ` Eric Abrahamsen
  1 sibling, 1 reply; 10+ messages in thread
From: Adam Sjøgren @ 2022-05-04 18:23 UTC (permalink / raw)
  To: info-gnus-english

Adam writes:

> Eric writes:
>
>> It looks to me like you could add a function to
>> `gnus-summary-exit-hook', which calls
>> `gnus-topic-update-topics-containing-group' on the value of
>> `gnus-newsgroup-name'. At that stage in summary exit,
>> `gnus-newsgroup-name' won't have been cleared yet, so it should still
>> hold the name of the group you're coming out of.

[...]

> I will see if I can get your suggestion going after dinner :-)

This is what I did:

    (defun asjo-update-topics ()
      (gnus-topic-update-topics-containing-group gnus-newsgroup-name))

    (add-hook 'gnus-summary-exit-hook 'asjo-update-topics)

But simpler than my hack - but nothing is updated.

When I edebug-defun it, I can see that gnus-newsgroup-name is indeed the
full newsgroup name, e.g. "nntp+gm:gmane.emacs.gnus.user", but the topic
counts aren't updated.


  Best regards,

    Adam

-- 
 "The code is more what you'd call 'guidelines',            Adam Sjøgren
  than actual rules."                                  asjo@koldfront.dk



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 18:17   ` Adam Sjøgren
  2022-05-04 18:23     ` Adam Sjøgren
@ 2022-05-04 18:32     ` Eric Abrahamsen
  1 sibling, 0 replies; 10+ messages in thread
From: Eric Abrahamsen @ 2022-05-04 18:32 UTC (permalink / raw)
  To: info-gnus-english

Adam Sjøgren <asjo@koldfront.dk> writes:

> Eric writes:
>
>>> Is there a way to get Gnus to update the counts automatically on group
>>> exit as well?
>
>> It looks to me like you could add a function to
>> `gnus-summary-exit-hook', which calls
>> `gnus-topic-update-topics-containing-group' on the value of
>> `gnus-newsgroup-name'. At that stage in summary exit,
>> `gnus-newsgroup-name' won't have been cleared yet, so it should still
>> hold the name of the group you're coming out of.
>
> Any reason for Gnus not to do that by default?

I can't think of any reason off the top of my head. It's not like it's
such a costly procedure. gnus-topic is a little fiddly about how it
hooks into the rest of the Gnus machinery, but it shouldn't be hard to
figure out.

> I will see if I can get your suggestion going after dinner :-)

It ought to work without the hacky dance, but I'll be curious to hear!



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 18:23     ` Adam Sjøgren
@ 2022-05-04 19:51       ` Eric Abrahamsen
  2022-05-04 21:16         ` Adam Sjøgren
  2022-05-04 21:44         ` Adam Sjøgren
  0 siblings, 2 replies; 10+ messages in thread
From: Eric Abrahamsen @ 2022-05-04 19:51 UTC (permalink / raw)
  To: info-gnus-english

Adam Sjøgren <asjo@koldfront.dk> writes:

> Adam writes:
>
>> Eric writes:
>>
>>> It looks to me like you could add a function to
>>> `gnus-summary-exit-hook', which calls
>>> `gnus-topic-update-topics-containing-group' on the value of
>>> `gnus-newsgroup-name'. At that stage in summary exit,
>>> `gnus-newsgroup-name' won't have been cleared yet, so it should still
>>> hold the name of the group you're coming out of.
>
> [...]
>
>> I will see if I can get your suggestion going after dinner :-)
>
> This is what I did:
>
>     (defun asjo-update-topics ()
>       (gnus-topic-update-topics-containing-group gnus-newsgroup-name))
>
>     (add-hook 'gnus-summary-exit-hook 'asjo-update-topics)
>
> But simpler than my hack - but nothing is updated.
>
> When I edebug-defun it, I can see that gnus-newsgroup-name is indeed the
> full newsgroup name, e.g. "nntp+gm:gmane.emacs.gnus.user", but the topic
> counts aren't updated.

And if I'd looked at that function before recommending it, I would have
immediately seen that it's buggy! That and `gnus-topic-update-topic'
check to see if the major-mode is 'gnus-topic-mode, which of course it
never is, because gnus-topic-mode is a minor mode.

In fact, gnus-topic.el already thinks it's doing what you want --
updating topic lines on group exit -- but because of the bug in
`gnus-topic-update-topic', the update never happens.

Lars added that major-mode check as part of a larger commit last year, I
have to assume it was a mistake. I'll remove the checks now.

Eric



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 19:51       ` Eric Abrahamsen
@ 2022-05-04 21:16         ` Adam Sjøgren
  2022-05-04 21:44         ` Adam Sjøgren
  1 sibling, 0 replies; 10+ messages in thread
From: Adam Sjøgren @ 2022-05-04 21:16 UTC (permalink / raw)
  To: info-gnus-english

Eric writes:

> In fact, gnus-topic.el already thinks it's doing what you want --
> updating topic lines on group exit -- but because of the bug in
> `gnus-topic-update-topic', the update never happens.

Oooh, cool, I didn't remember that it used to work ;-)

> Lars added that major-mode check as part of a larger commit last year, I
> have to assume it was a mistake. I'll remove the checks now.

Nice piece of debugging!

However, I think you broke something? When I try to q out of a group I
now get:

    Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p t)
      gnus-topic-find-groups("feedwork" 5 nil t)
      gnus-topic-update-topic-line("feedwork")
      gnus-topic-update-topics-containing-group("nntp+fb:feedbase.blog.inspiredpython")
      gnus-group-update-group("nntp+fb:feedbase.blog.inspiredpython" nil t)
      gnus-summary-update-info()
      gnus-summary-exit()
      funcall-interactively(gnus-summary-exit)
      command-execute(gnus-summary-exit)

(when toggle-debug-on-error is on, and I have removed my hook).


  Best regards,

    Adam

-- 
 "The world is short of delimiters," says Don.              Adam Sjøgren
                                                       asjo@koldfront.dk



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 19:51       ` Eric Abrahamsen
  2022-05-04 21:16         ` Adam Sjøgren
@ 2022-05-04 21:44         ` Adam Sjøgren
  2022-05-05  1:00           ` Eric Abrahamsen
  1 sibling, 1 reply; 10+ messages in thread
From: Adam Sjøgren @ 2022-05-04 21:44 UTC (permalink / raw)
  To: info-gnus-english

Eric writes:

> I'll remove the checks now.

The line the error is triggered in is:

    (defun gnus-topic-update-topic-line (topic-name &optional reads)
      (let* ((top (gnus-topic-find-topology topic-name))
             (type (cadr top))
             (children (cddr top))
             (entries (gnus-topic-find-groups
                       (car type) (car gnus-group-list-mode)
                       (cdr gnus-group-list-mode)))
             (all-groups (gnus-topic-find-groups
                       (car type) (car gnus-group-list-mode)
                       (cdr gnus-group-list-mode) t))         <------ HERE
             (parent (gnus-topic-parent-topic topic-name))

gnus-topic-find-groups: Wrong type argument: number-or-marker-p, t

gnus-group-list-mode is (5) here, so the cdr is nil, and
gnus-topic-find-groups doesn't like that, apparently. I didn't have time
to step through that to pinpoint it further.


  Best regards,

    Adam

-- 
 "*We* focus on doing nothing at all!"                      Adam Sjøgren
                                                       asjo@koldfront.dk



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-04 21:44         ` Adam Sjøgren
@ 2022-05-05  1:00           ` Eric Abrahamsen
  2022-05-05  4:36             ` Adam Sjøgren
  0 siblings, 1 reply; 10+ messages in thread
From: Eric Abrahamsen @ 2022-05-05  1:00 UTC (permalink / raw)
  To: info-gnus-english

Adam Sjøgren <asjo@koldfront.dk> writes:

> Eric writes:
>
>> I'll remove the checks now.
>
> The line the error is triggered in is:
>
>     (defun gnus-topic-update-topic-line (topic-name &optional reads)
>       (let* ((top (gnus-topic-find-topology topic-name))
>              (type (cadr top))
>              (children (cddr top))
>              (entries (gnus-topic-find-groups
>                        (car type) (car gnus-group-list-mode)
>                        (cdr gnus-group-list-mode)))
>              (all-groups (gnus-topic-find-groups
>                        (car type) (car gnus-group-list-mode)
>                        (cdr gnus-group-list-mode) t))         <------ HERE
>              (parent (gnus-topic-parent-topic topic-name))
>
> gnus-topic-find-groups: Wrong type argument: number-or-marker-p, t
>
> gnus-group-list-mode is (5) here, so the cdr is nil, and
> gnus-topic-find-groups doesn't like that, apparently. I didn't have time
> to step through that to pinpoint it further.

Looks like Dick Chiang has already opened a bug report containing the
fix, so expect this to work Real Soon Now.



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Update topic unread counts on group exit?
  2022-05-05  1:00           ` Eric Abrahamsen
@ 2022-05-05  4:36             ` Adam Sjøgren
  0 siblings, 0 replies; 10+ messages in thread
From: Adam Sjøgren @ 2022-05-05  4:36 UTC (permalink / raw)
  To: info-gnus-english

Eric writes:

> Looks like Dick Chiang has already opened a bug report containing the
> fix, so expect this to work Real Soon Now.

That fixed it - great, thanks!


  Best regards,

    Adam

-- 
 "Referring to glorified travelling salesmen                Adam Sjøgren
  as ``road warriors'' is an insult to                 asjo@koldfront.dk
  gun-toting nomadic mercenaries everywhere."



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-05-05  4:37 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-04 17:35 Update topic unread counts on group exit? Adam Sjøgren
2022-05-04 17:58 ` Eric Abrahamsen
2022-05-04 18:17   ` Adam Sjøgren
2022-05-04 18:23     ` Adam Sjøgren
2022-05-04 19:51       ` Eric Abrahamsen
2022-05-04 21:16         ` Adam Sjøgren
2022-05-04 21:44         ` Adam Sjøgren
2022-05-05  1:00           ` Eric Abrahamsen
2022-05-05  4:36             ` Adam Sjøgren
2022-05-04 18:32     ` Eric Abrahamsen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).