Subject: bug#31739: 25.2; Cannot expire articles in virtual group

From: Jamie Forth <[email-masked]>
Date: Fri, 18 Oct 2019 13:13:19 +0000

Lars Ingebrigtsen <[email-masked]> writes:

> Let's see...  Here's the call sequence I get when I `E' and then `q'
> from the nnvirtual group:
>
> Debugger entered: nil
>   nnimap-request-expire-articles((392790 394237 394238) "spam" "quimby.gnus.org" nil)
>   gnus-request-expire-articles((392790 394237 394238) "nnimap+quimby.gnus.org:spam")
>   gnus-group-expire-articles-1("nnimap+quimby.gnus.org:spam")
>   nnvirtual-request-expire-articles((392790 394237 394238 394330) "imap-test" "^$\\|\\(^nnimap\\+quimby\\.gnus\\.org:spam$\\)" nil)
>   gnus-request-expire-articles((392790 394237 394238 394330) "nnvirtual:imap-test")
>   gnus-summary-expire-articles()
>   run-hooks(gnus-summary-prepare-exit-hook)
>   apply(run-hooks gnus-summary-prepare-exit-hook)
>   gnus-run-hooks(gnus-summary-prepare-exit-hook)
>   gnus-summary-exit()
>   funcall-interactively(gnus-summary-exit)
>
> So this is done from gnus-summary-prepare-exit-hook.  What's the value
> of that hook for you?

Not sure I’m doing the right thing here… setting `debug-on-entry` for
`gnus-summary-prepare-exit-hook` and stepping through I see this.

  Debugger entered--returning value: nil
  #f(compiled-function (&optional now) "Expire all articles that are marked as expirable in the current group." (interactive nil) #<bytecode 0x15590511b8b9>)()
* apply(#f(compiled-function (&optional now) "Expire all articles that are marked as expirable in the current group." (interactive nil) #<bytecode 0x15590511b8b9>) nil)
* gnus-summary-expire-articles()
  run-hooks(gnus-summary-prepare-exit-hook)
  apply(run-hooks gnus-summary-prepare-exit-hook)
  gnus-run-hooks(gnus-summary-prepare-exit-hook)
  gnus-summary-exit()
  funcall-interactively(gnus-summary-exit)
  call-interactively(gnus-summary-exit nil nil)
  command-execute(gnus-summary-exit)

And going a bit deeper…

  Debugger entered--entering a function:
* apply(message ("Expiring articles in %s..." "nnimap+gold:Junk Email"))
* gnus-message(6 "Expiring articles in %s..." "nnimap+gold:Junk Email")
* gnus-group-expire-articles-1("nnimap+gold:Junk Email")
* nnvirtual-request-expire-articles((13) "vg-test" "^nnimap\\+gold:Junk Email$" nil)
* gnus-request-expire-articles((13) "nnvirtual:vg-test")
* #f(compiled-function (&optional now) "Expire all articles that are marked as expirable in the current group." (interactive nil) #<bytecode 0x15590511b8b9>)()
* apply(#f(compiled-function (&optional now) "Expire all articles that are marked as expirable in the current group." (interactive nil) #<bytecode 0x15590511b8b9>) nil)
* gnus-summary-expire-articles()
  run-hooks(gnus-summary-prepare-exit-hook)
  apply(run-hooks gnus-summary-prepare-exit-hook)
  gnus-run-hooks(gnus-summary-prepare-exit-hook)
  gnus-summary-exit()
  funcall-interactively(gnus-summary-exit)
  call-interactively(gnus-summary-exit nil nil)
  command-execute(gnus-summary-exit)

Sorry if that wasn’t what you meant.

--
Jamie