From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: Karl Fogel <kfogel@red-bean.com>
Cc: Lars Ingebrigtsen <larsi@gnus.org>,
Emacs Development <emacs-devel@gnu.org>
Subject: Re: Why does Gnus article-moving act like a fetch of new news?
Date: Tue, 13 Apr 2021 14:59:40 -0700 [thread overview]
Message-ID: <87pmyxg81f.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <875z0qextc.fsf@red-bean.com> (Karl Fogel's message of "Tue, 13 Apr 2021 15:25:51 -0500")
Karl Fogel <kfogel@red-bean.com> writes:
> On 12 Apr 2021, Eric Abrahamsen wrote:
>>> On 12 Apr 2021, Eric Abrahamsen wrote:
>>>> So maybe `gnus-activate-group' would be sufficient? Though it
>>>> looks
>>>> like the number-of-articles update is happening at line 10271,
>>>> anyway. Karl, would you be willing to patch the function to
>>>> replace `gnus-group-get-new-news-this-group' with
>>>> `gnus-activate-group', and run that for a while and see if
>>>> anything
>>>> terrible happens?
>>>
>>> Yes, I'll do that and set a bit to report back here in two weeks.
>>> I'm
>>> happy to be the Gnus test suite for a fortnight :-).
>>
>>Hopefully things won't go too wrong :)
>
> Well, they go sort-of wrong :-). Here's what happens:
>
> First, this is the patch I'm using:
>
> --- lisp/gnus/gnus-sum.el
> +++ lisp/gnus/gnus-sum.el
> @@ -10346,8 +10346,8 @@ gnus-summary-move-article
> (apply #'gnus-summary-remove-process-mark
> articles-to-update-marks))
> ;; Re-activate all groups that have been moved to.
> (with-current-buffer gnus-group-buffer
> - (let ((gnus-group-marked to-groups))
> - (gnus-group-get-new-news-this-group nil t)))
> + (dolist (group to-groups)
> + (gnus-activate-group group nil t nil t)))
> (gnus-kill-buffer copy-buf)
> (gnus-summary-position-point)
>
> (There's a variant in which that first `nil' argument to
> `gnus-activate-group' is `t' instead. I'll discuss both ways below.)
>
> * *Without* the patch applied, per-article behavior is correct:
>
> If you're in the summary buffer for group A, and you move an article
> to group B, then if you exit group A's summary buffer and go visit
> group B's summary, the article is there already, and its
> read-vs-unread state has been properly preserved.
>
> * With the patch as shown above:
>
> Immediately after moving an unread article from A to B, when you enter
> group B's summary buffer and look for the article, it won't be there.
> However, if you `q'uit out of Gnus and then start Gnus again with `M-x
> gnus', *then* when you visit B, the article will be in B and marked as
> unread.
>
> Now try the same thing with a marked-as-read article. Not only will
> the article not be in group B right away, but even after you quit out
> of Gnus and then start Gnus again, when you visit group B, the article
> will be there *but marked as unread*.
>
> * With the same patch but with the first `nil' changed to `t':
>
> That's the SCAN argument, but changing it to `t' has no effect: it's
> the same behavior as with the original patch.
>
> Now, maybe my patch wasn't what you hand in mind? Comments/suggestions
> welcome...
Your patch was what I had in mind, and I guess that means the update is
necessary! I guess I would have expected that
`gnus-request-accept-article' would take care of all the necessary
updating of group/article data, but apparently it doesn't. I guess it
updates the _backend_, but not _Gnus_.
With your patch, can you confirm that it's enough (after the article is
moved) to put point on the moved-to group and run M-g? That should mimic
the current behavior, and let you find the moved article correctly.
Anyway, I don't see a good solution to your problem, except for maybe my
earliest suggestion: that get-new-news not run the hooks if DONT-SCAN
is t. But now I'm not even confident that that behavior would be correct...
next prev parent reply other threads:[~2021-04-13 21:59 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-09 21:47 Why does Gnus article-moving act like a fetch of new news? Karl Fogel
2021-04-10 4:11 ` Eric Abrahamsen
2021-04-10 4:58 ` Karl Fogel
2021-04-10 5:29 ` Eric Abrahamsen
2021-04-10 8:29 ` Andreas Schwab
2021-04-10 13:06 ` Stefan Monnier
2021-04-10 22:00 ` Eric Abrahamsen
2021-04-11 6:02 ` Karl Fogel
2021-04-11 16:05 ` Lars Ingebrigtsen
2021-04-12 17:05 ` Eric Abrahamsen
2021-04-12 17:56 ` Karl Fogel
2021-04-12 18:26 ` Eric Abrahamsen
2021-04-13 20:25 ` Karl Fogel
2021-04-13 21:59 ` Eric Abrahamsen [this message]
2021-04-14 3:27 ` Karl Fogel
2021-04-25 17:37 ` Lars Ingebrigtsen
2021-05-03 20:52 ` Eric Abrahamsen
2021-05-03 20:53 ` Eric Abrahamsen
2021-05-05 23:21 ` Karl Fogel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87pmyxg81f.fsf@ericabrahamsen.net \
--to=eric@ericabrahamsen.net \
--cc=emacs-devel@gnu.org \
--cc=kfogel@red-bean.com \
--cc=larsi@gnus.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).