unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
       [not found] ` <87inp4p7ri.fsf@gnus.org>
@ 2017-01-24 19:50   ` Lars Ingebrigtsen
  2017-01-24 19:55     ` Lars Ingebrigtsen
  2017-01-24 23:09   ` Nikolaus Rath
  1 sibling, 1 reply; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-24 19:50 UTC (permalink / raw)
  To: bug#20670

Lars Ingebrigtsen <larsi@gnus.org> writes:

> reassign 20670 emacs,gnus
> thanks
>
> bug#20670 <20670@debbugs.gnu.org> writes:
>
>> retitle 20670 [PATCH] nnimap: enable additional expunge options
>> reassign 20670 gnus
>
> And part of the reason I hadn't seen the patch before is this.  I wasn't
> aware that there were Gnus-only bugs?  All the ones I'm seeing are marked
>
> reassing <foo> emacs,gnus
>
> *gulp*  Perhaps there's a gazillion Gnus-only bug reports?

Indeed.  There were about 100 Gnus-only bug reports, so I've never seen
them before.  *sigh*

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 19:50   ` bug#20670: Status: [PATCH] nnimap: enable additional expunge options Lars Ingebrigtsen
@ 2017-01-24 19:55     ` Lars Ingebrigtsen
  2017-01-24 23:10       ` Nikolaus Rath
  2017-01-24 23:21       ` Glenn Morris
  0 siblings, 2 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-24 19:55 UTC (permalink / raw)
  To: bug#20670

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Indeed.  There were about 100 Gnus-only bug reports, so I've never seen
> them before.  *sigh*

Would anybody mind if I reassigned them all back to emacs,gnus?  So they
don't get "lost" again?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
       [not found] ` <87inp4p7ri.fsf@gnus.org>
  2017-01-24 19:50   ` bug#20670: Status: [PATCH] nnimap: enable additional expunge options Lars Ingebrigtsen
@ 2017-01-24 23:09   ` Nikolaus Rath
  2017-01-24 23:27     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 20+ messages in thread
From: Nikolaus Rath @ 2017-01-24 23:09 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: bug#20670

On Jan 24 2017, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> reassign 20670 emacs,gnus
> thanks
>
> bug#20670 <20670@debbugs.gnu.org> writes:
>
>> retitle 20670 [PATCH] nnimap: enable additional expunge options
>> reassign 20670 gnus
>
> And part of the reason I hadn't seen the patch before is this.  I wasn't
> aware that there were Gnus-only bugs?

I think that is what M-x gnus-bug produces by default (or at least used
to produce).


Best,
-Nikolaus

-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 19:55     ` Lars Ingebrigtsen
@ 2017-01-24 23:10       ` Nikolaus Rath
  2017-01-24 23:26         ` Glenn Morris
  2017-01-24 23:21       ` Glenn Morris
  1 sibling, 1 reply; 20+ messages in thread
From: Nikolaus Rath @ 2017-01-24 23:10 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: bug#20670

On Jan 24 2017, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>> Indeed.  There were about 100 Gnus-only bug reports, so I've never seen
>> them before.  *sigh*
>
> Would anybody mind if I reassigned them all back to emacs,gnus?  So they
> don't get "lost" again?

I certainly don't mind. But I think there's some other issues with the
bug tracker. I only see your last three messages by accident when using
the web interface. They were not send to me by email, despite my being
the submitter.


Best,
-Nikolaus

-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 19:55     ` Lars Ingebrigtsen
  2017-01-24 23:10       ` Nikolaus Rath
@ 2017-01-24 23:21       ` Glenn Morris
  2017-01-24 23:26         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 20+ messages in thread
From: Glenn Morris @ 2017-01-24 23:21 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: bug#20670

Lars Ingebrigtsen wrote:

> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>> Indeed.  There were about 100 Gnus-only bug reports, so I've never seen
>> them before.  *sigh*
>
> Would anybody mind if I reassigned them all back to emacs,gnus?  So they
> don't get "lost" again?

Personally I don't care what you do with them. :)
I like to discourage the use of packages as glorified tags, so perhaps
get rid of the "gnus" package altogether, and instead use a usertag or
just add "gnus" to the subject.

But it sounds like maybe the history here has been forgotten:

Gnus always had its own dedicated bug list, and some time ago [1]
we set things up so that would redirect to a "gnus" package at
debbugs.gnu.org. "emacs,gnus" was not appropriate, since eg these
reports might be about gnus with XEmacs or other issues irrelevant to
gnus-as-shipped with Emacs. See gnus-bug-package in gnus.el.

Anyway, that was the reasoning at the time.

[1] https://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00598.html





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 23:21       ` Glenn Morris
@ 2017-01-24 23:26         ` Lars Ingebrigtsen
  2017-01-24 23:48           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-24 23:26 UTC (permalink / raw)
  To: Glenn Morris; +Cc: bug#20670

Glenn Morris <rgm@gnu.org> writes:

> I like to discourage the use of packages as glorified tags, so perhaps
> get rid of the "gnus" package altogether, and instead use a usertag or
> just add "gnus" to the subject.

Sure, sounds good to me.

> But it sounds like maybe the history here has been forgotten:
>
> Gnus always had its own dedicated bug list, and some time ago [1]
> we set things up so that would redirect to a "gnus" package at
> debbugs.gnu.org. "emacs,gnus" was not appropriate, since eg these
> reports might be about gnus with XEmacs or other issues irrelevant to
> gnus-as-shipped with Emacs. See gnus-bug-package in gnus.el.
>
> Anyway, that was the reasoning at the time.

I'm sure it made sense at the time, but these days there is no Gnus
outside of Emacs, so I think it would be nice to roll them back into the
Emacs bug tracker.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 23:10       ` Nikolaus Rath
@ 2017-01-24 23:26         ` Glenn Morris
  2017-01-24 23:38           ` Nikolaus Rath
  0 siblings, 1 reply; 20+ messages in thread
From: Glenn Morris @ 2017-01-24 23:26 UTC (permalink / raw)
  To: Nikolaus Rath; +Cc: Lars Ingebrigtsen, bug#20670

Nikolaus Rath wrote:

> bug tracker. I only see your last three messages by accident when using
> the web interface. They were not send to me by email, despite my being
> the submitter.

The system is working as designed.
People should use reply-to-all on GNU mailing lists, but sometimes they
only reply-to-list.





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 23:09   ` Nikolaus Rath
@ 2017-01-24 23:27     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-24 23:27 UTC (permalink / raw)
  To: Nikolaus Rath; +Cc: bug#20670

Nikolaus Rath <Nikolaus@rath.org> writes:

> I think that is what M-x gnus-bug produces by default (or at least used
> to produce).

Ah, so it does:

X-Debbugs-Version: 5.13
X-Debbugs-Package: gnus

I'll fix that...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]   ` <87pojcp7y7.fsf@gnus.org>
@ 2017-01-24 23:37     ` Nikolaus Rath
  2017-01-24 23:46       ` Lars Ingebrigtsen
                         ` (4 more replies)
  0 siblings, 5 replies; 20+ messages in thread
From: Nikolaus Rath @ 2017-01-24 23:37 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 20670, ding

[-- Attachment #1: Type: text/plain, Size: 1655 bytes --]

On Jan 24 2017, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> Nikolaus Rath <Nikolaus@rath.org> writes:
>
>> If the IMAP server supports the UID EXPUNGE command, the nnimap backend
>> currently always expunges deleted articles.
>>
>> If the IMAP server does not support this command, articles are either
>> not expunged at all (nnimap-expunge is nil), or ALL articles that are
>> currently flagged as deleted will be expunged when any one article is
>> deleted in Gnus.
>>
>> This patch introduces three new settings for nnimap-expunge:
>
> Looks good.  Two minor comments:
>
> +               (nnheader-message 3 (concat "nnimap-expunge set to 'immediately, but "
> +                                           "server doesn't support UIDPLUS"))))
> +
>
> You've probably done this to make the lines short enough, but the first
> one is still more than 80 chars wide.
>
> +             (nnheader-message 7 "Article marked for deletion, but not expunged.")))))
>
> And so is this.  It's probably better to just reflow by breaking the
> line after `nnheader-message'.
>
> This change should also be documented in the "Customizing the IMAP
> Connection" node in the Gnus manual, and get an entry in the NEWS
> file.

Thanks! Attached is an updated patch.

Btw, is there any way to generate the list of affected functions in the
commit message automatically? Doing this by hand is rather cumbersome...


Best,
-Nikolaus
-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-nnimap.el-support-additional-expunge-options.patch --]
[-- Type: text/x-diff, Size: 7909 bytes --]

From 3421d2b8c8d3eb20052432d1ba331be886d812a6 Mon Sep 17 00:00:00 2001
From: Nikolaus Rath <Nikolaus@rath.org>
Date: Tue, 24 Jan 2017 15:31:46 -0800
Subject: [PATCH] nnimap.el: support additional expunge options

* lisp/gnus/nnimap.el (nnimap-close-group,
nnimap-request-expire-articles, nnimap-delete-article,
nnimap-request-scan): add new 'never, 'immediate, and 'on-exit
settings for nnimap-expunge.
---
 doc/misc/gnus.texi  | 16 ++++++++--
 etc/NEWS            | 10 +++++++
 lisp/gnus/nnimap.el | 85 ++++++++++++++++++++++++++++++-----------------------
 3 files changed, 72 insertions(+), 39 deletions(-)

diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 05159..e8524 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -14273,9 +14273,19 @@ Customizing the IMAP Connection
 @code{plain} or @code{cram-md5}.
 
 @item nnimap-expunge
-If non-@code{nil}, expunge articles after deleting them.  This is always done
-if the server supports UID EXPUNGE, but it's not done by default on
-servers that doesn't support that command.
+When to expunge deleted messages.  If @code{never}, deleted articles
+are marked with the IMAP @code{\\Delete} flag but not automatically
+expunged. If @code{immediately}, deleted articles are immediately expunged
+(this requires the server to support the UID EXPUNGE command). If
+@code{on-exit}, deleted articles are flagged, and all flagged articles are
+expunged when the group is closed.
+
+For backwards compatibility, this variable may also be set to t
+or nil. If the server supports UID EXPUNGE, both t and nil are
+equivalent to @code{immediately}. If the server does not support UID
+EXPUNGE nil is equivalent to @code{never}, while t will immediately
+expunge ALL articles that are currently flagged as deleted
+(i.e., potentially not only the article that was just deleted).
 
 @item nnimap-streaming
 Virtually all @acronym{IMAP} server support fast streaming of data.
diff --git a/etc/NEWS b/etc/NEWS
index ca66d..e5ee4 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -81,6 +81,16 @@ for '--daemon'.
 * Changes in Emacs 26.1
 
 +++
+** The Gnus user variable 'nnimap-expunge' supports three new values:
+'never' for never expunging messages, 'immediately' for immediately
+expunging deleted messages, and 'on-exit' to expunge deleted articles
+when exiting the group's summary buffer. Setting 'nnimap-expunge' to
+'nil' or 't' is still supported but not recommended, since it may
+result in Gnus expunging all messages that have been flagged as
+deleted by any IMAP client (rather than just those that have been
+deleted by Gnus).
+
++++
 ** The new function 'mapbacktrace' applies a function to all frames of
 the current stack trace.
 
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 700e86..e7e64 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -92,10 +92,21 @@ nnimap-authenticator
 Possible choices are nil (use default methods), `anonymous',
 `login', `plain' and `cram-md5'.")
 
-(defvoo nnimap-expunge t
-  "If non-nil, expunge articles after deleting them.
-This is always done if the server supports UID EXPUNGE, but it's
-not done by default on servers that doesn't support that command.")
+(defvoo nnimap-expunge 'on-exit
+  "When to expunge deleted messages.
+If 'never, deleted articles are marked with the IMAP \\Delete
+flag but not automatically expunged. If 'immediately, deleted
+articles are immediately expunged (this requires the server to
+support the UID EXPUNGE command). If 'on-exit, deleted articles
+are flagged, and all flagged articles are expunged when the
+group is closed.
+
+For backwards compatibility, this variable may also be set to t
+or nil. If the server supports UID EXPUNGE, both t and nil are
+equivalent to 'immediately. If the server does not support UID
+EXPUNGE nil is equivalent to 'never, while t will immediately
+expunge ALL articles that are currently flagged as deleted
+(i.e., potentially not only the article that was just deleted).")
 
 (defvoo nnimap-streaming t
   "If non-nil, try to use streaming commands with IMAP servers.
@@ -911,7 +922,11 @@ nnimap-get-flags
     (nreverse articles)))
 
 (deffoo nnimap-close-group (_group &optional _server)
-  t)
+  (when (eq nnimap-expunge 'on-exit)
+    (nnoo-change-server 'nnimap server nil)
+    (with-current-buffer (nnimap-buffer)
+      (nnimap-wait-for-response
+       (nnimap-send-command "EXPUNGE")))))
 
 (deffoo nnimap-request-move-article (article group server accept-form
 					     &optional _last
@@ -960,8 +975,7 @@ nnimap-request-expire-articles
     articles)
    ((and force
 	 (eq nnmail-expiry-target 'delete))
-    (unless (nnimap-delete-article (gnus-compress-sequence articles))
-      (nnheader-message 7 "Article marked for deletion, but not expunged."))
+    (nnimap-delete-article (gnus-compress-sequence articles))
     nil)
    (t
     (let ((deletable-articles
@@ -1084,21 +1098,38 @@ nnimap-find-article-by-message-id
             (when (and limit number-of-article)
               (nnimap-find-article-by-message-id group server message-id))))))))
 
-(defun nnimap-delete-article (articles)
+(defun nnimap-delete-article (articles &optional sync)
+  "Delete ARTICLES.
+
+If sync is non-nil, wait for server response."
   (with-current-buffer (nnimap-buffer)
     (nnimap-command "UID STORE %s +FLAGS.SILENT (\\Deleted)"
 		    (nnimap-article-ranges articles))
+    (let ((sequence
     (cond
-     ((nnimap-capability "UIDPLUS")
+            ((eq nnimap-expunge 'immediately)
+             (if (nnimap-capability "UIDPLUS")
       (nnimap-command "UID EXPUNGE %s"
 		      (nnimap-article-ranges articles))
-      t)
+      (nnheader-message
+       3 (concat "nnimap-expunge set to 'immediately, but "
+                 "server doesn't support UIDPLUS"))))
+
+            ((memq nnimap-expunge '(on-exit never)) nil)
+
+            ((nnimap-capability "UIDPLUS")
+             (nnimap-command "UID EXPUNGE %s"
+                             (nnimap-article-ranges articles)))
+
      (nnimap-expunge
-      (nnimap-command "EXPUNGE")
-      t)
-     (t (gnus-message 7 (concat "nnimap: nnimap-expunge is not set and the "
-                                "server doesn't support UIDPLUS, so we won't "
-                                "delete this article now"))))))
+             (nnimap-command "EXPUNGE"))
+
+            (t
+             (nnheader-message
+              7 "Article marked for deletion, but not expunged.")))))
+
+      (if (and sync sequence)
+          (nnimap-wait-for-response sequence)))))
 
 (deffoo nnimap-request-scan (&optional group server)
   (when group
@@ -2118,27 +2149,9 @@ nnimap-split-incoming-mail
 	      (nnimap-wait-for-response (caar sequences))
 	      ;; And then mark the successful copy actions as deleted,
 	      ;; and possibly expunge them.
-	      (nnimap-mark-and-expunge-incoming
-	       (nnimap-parse-copied-articles sequences)))
-            (nnimap-mark-and-expunge-incoming junk-articles)))))))
-
-(defun nnimap-mark-and-expunge-incoming (range)
-  (when range
-    (setq range (nnimap-article-ranges range))
-    (erase-buffer)
-    (let ((sequence
-	   (nnimap-send-command
-	    "UID STORE %s +FLAGS.SILENT (\\Deleted)" range)))
-      (cond
-       ;; If the server supports it, we now delete the message we have
-       ;; just copied over.
-       ((nnimap-capability "UIDPLUS")
-	(setq sequence (nnimap-send-command "UID EXPUNGE %s" range)))
-       ;; If it doesn't support UID EXPUNGE, then we only expunge if the
-       ;; user has configured it.
-       (nnimap-expunge
-	(setq sequence (nnimap-send-command "EXPUNGE"))))
-      (nnimap-wait-for-response sequence))))
+              (nnimap-delete-article
+               (nnimap-parse-copied-articles sequences) t))
+            (nnimap-delete-article junk-articles t)))))))
 
 (defun nnimap-parse-copied-articles (sequences)
   (let (sequence copied range)
-- 
2.1.4


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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 23:26         ` Glenn Morris
@ 2017-01-24 23:38           ` Nikolaus Rath
  0 siblings, 0 replies; 20+ messages in thread
From: Nikolaus Rath @ 2017-01-24 23:38 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Lars Ingebrigtsen, bug#20670

On Jan 24 2017, Glenn Morris <rgm@gnu.org> wrote:
> Nikolaus Rath wrote:
>
>> bug tracker. I only see your last three messages by accident when using
>> the web interface. They were not send to me by email, despite my being
>> the submitter.
>
> The system is working as designed.

Well, in that case I think its badly designed, because...

> People should use reply-to-all on GNU mailing lists, but sometimes they
> only reply-to-list.

..this then leads to messages being lost without anyone noticing.

Best,
-Nikolaus

-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
  2017-01-24 23:37     ` bug#20670: [PATCH] nnimap: enable additional expunge options (v3) Nikolaus Rath
@ 2017-01-24 23:46       ` Lars Ingebrigtsen
  2017-01-25  0:18       ` Lars Ingebrigtsen
                         ` (3 subsequent siblings)
  4 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-24 23:46 UTC (permalink / raw)
  To: 20670; +Cc: ding

Nikolaus Rath <Nikolaus@rath.org> writes:

> Thanks! Attached is an updated patch.

Thanks; applied.

> Btw, is there any way to generate the list of affected functions in the
> commit message automatically? Doing this by hand is rather cumbersome...

I don't know of any such functionality...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: Status: [PATCH] nnimap: enable additional expunge options
  2017-01-24 23:26         ` Lars Ingebrigtsen
@ 2017-01-24 23:48           ` Lars Ingebrigtsen
  0 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-24 23:48 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 20670

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Glenn Morris <rgm@gnu.org> writes:
>
>> I like to discourage the use of packages as glorified tags, so perhaps
>> get rid of the "gnus" package altogether, and instead use a usertag or
>> just add "gnus" to the subject.
>
> Sure, sounds good to me.

Do you have some magic you could do on your side?  :-)  Otherwise I can
script something that sends "reassign" messages to the about 100 bug
reports in question...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
  2017-01-24 23:37     ` bug#20670: [PATCH] nnimap: enable additional expunge options (v3) Nikolaus Rath
  2017-01-24 23:46       ` Lars Ingebrigtsen
@ 2017-01-25  0:18       ` Lars Ingebrigtsen
  2017-01-25  0:24       ` npostavs
                         ` (2 subsequent siblings)
  4 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-25  0:18 UTC (permalink / raw)
  To: 20670; +Cc: Nikolaus Rath, ding

(The reason you call out of the mail headers is because you have a

  Mail-Copies-To: never

in the mails you send out.  So you're never Cc'd.)

There was a bug in the patch, so I've reverted it for now.

Here's the backtrace:

Debugger entered--Lisp error: (error "Format specifier doesn’t match argument type")
  format("%d .*\n" (t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge" "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
  (looking-at (format "%d .*\n" sequence))
  (not (looking-at (format "%d .*\n" sequence)))
  (progn (while (and (not (bobp)) (progn (forward-line -1) (looking-at "\\*\\|[0-9]+ OK NOOP")))) (not (looking-at (format "%d .*\n" sequence))))
  (and (setq openp (memq (process-status process) (quote (open run)))) (progn (while (and (not (bobp)) (progn (forward-line -1) (looking-at "\\*\\|[0-9]+ OK NOOP")))) (not (looking-at (format "%d .*\n" sequence)))))
  (while (and (setq openp (memq (process-status process) (quote (open run)))) (progn (while (and (not (bobp)) (progn (forward-line -1) (looking-at "\\*\\|[0-9]+ OK NOOP")))) (not (looking-at (format "%d .*\n" sequence))))) (if messagep (progn (nnheader-message-maybe 7 "nnimap read %dk from %s%s" (/ (buffer-size) 1000) nnimap-address (if (not (= 0 (progn "Access slot \"initial-resync\" of `nnimap' struct CL-X." nil ... ...))) (format " (initial sync of %d group%s; please wait)" (progn "Access slot \"initial-resync\" of `nnimap' struct CL-X." nil (or ... ...) (aref nnimap-object 12)) (if (= ... 1) "" "s")) "")))) (nnheader-accept-process-output process) (goto-char (point-max)))
  (progn (goto-char (point-max)) (while (and (setq openp (memq (process-status process) (quote (open run)))) (progn (while (and (not (bobp)) (progn (forward-line -1) (looking-at "\\*\\|[0-9]+ OK NOOP")))) (not (looking-at (format "%d .*\n" sequence))))) (if messagep (progn (nnheader-message-maybe 7 "nnimap read %dk from %s%s" (/ (buffer-size) 1000) nnimap-address (if (not (= 0 ...)) (format " (initial sync of %d group%s; please wait)" (progn "Access slot \"initial-resync\" of `nnimap' struct CL-X." nil ... ...) (if ... "" "s")) "")))) (nnheader-accept-process-output process) (goto-char (point-max))) (progn "Access slot \"initial-resync\" of `nnimap' struct CL-X." nil (or (and (memq (aref nnimap-object 0) cl-struct-nnimap-tags)) (signal (quote wrong-type-argument) (list (quote nnimap) nnimap-object))) (let* ((v nnimap-object)) (aset v 12 0))) openp)
  (condition-case nil (progn (goto-char (point-max)) (while (and (setq openp (memq (process-status process) (quote (open run)))) (progn (while (and (not ...) (progn ... ...))) (not (looking-at (format "%d .*\n" sequence))))) (if messagep (progn (nnheader-message-maybe 7 "nnimap read %dk from %s%s" (/ (buffer-size) 1000) nnimap-address (if (not ...) (format " (initial sync of %d group%s; please wait)" ... ...) "")))) (nnheader-accept-process-output process) (goto-char (point-max))) (progn "Access slot \"initial-resync\" of `nnimap' struct CL-X." nil (or (and (memq (aref nnimap-object 0) cl-struct-nnimap-tags)) (signal (quote wrong-type-argument) (list (quote nnimap) nnimap-object))) (let* ((v nnimap-object)) (aset v 12 0))) openp) (quit (if debug-on-quit (progn (debug "Quit"))) (delete-process process) nil))
  (let ((process (get-buffer-process (current-buffer))) openp) (condition-case nil (progn (goto-char (point-max)) (while (and (setq openp (memq (process-status process) (quote ...))) (progn (while (and ... ...)) (not (looking-at ...)))) (if messagep (progn (nnheader-message-maybe 7 "nnimap read %dk from %s%s" (/ ... 1000) nnimap-address (if ... ... "")))) (nnheader-accept-process-output process) (goto-char (point-max))) (progn "Access slot \"initial-resync\" of `nnimap' struct CL-X." nil (or (and (memq (aref nnimap-object 0) cl-struct-nnimap-tags)) (signal (quote wrong-type-argument) (list (quote nnimap) nnimap-object))) (let* ((v nnimap-object)) (aset v 12 0))) openp) (quit (if debug-on-quit (progn (debug "Quit"))) (delete-process process) nil)))
  nnimap-wait-for-response((t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge" "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
  (if (and sync sequence) (nnimap-wait-for-response sequence))
  (let ((sequence (cond ((eq nnimap-expunge (quote immediately)) (if (nnimap-capability "UIDPLUS") (nnimap-command "UID EXPUNGE %s" (nnimap-article-ranges articles)) (nnheader-message 3 (concat "nnimap-expunge set to 'immediately, but " "server doesn't support UIDPLUS")))) ((memq nnimap-expunge (quote (on-exit never))) nil) ((nnimap-capability "UIDPLUS") (nnimap-command "UID EXPUNGE %s" (nnimap-article-ranges articles))) (nnimap-expunge (nnimap-command "EXPUNGE")) (t (nnheader-message 7 "Article marked for deletion, but not expunged."))))) (if (and sync sequence) (nnimap-wait-for-response sequence)))
  (save-current-buffer (set-buffer (nnimap-buffer)) (nnimap-command "UID STORE %s +FLAGS.SILENT (\\Deleted)" (nnimap-article-ranges articles)) (let ((sequence (cond ((eq nnimap-expunge (quote immediately)) (if (nnimap-capability "UIDPLUS") (nnimap-command "UID EXPUNGE %s" ...) (nnheader-message 3 ...))) ((memq nnimap-expunge (quote ...)) nil) ((nnimap-capability "UIDPLUS") (nnimap-command "UID EXPUNGE %s" (nnimap-article-ranges articles))) (nnimap-expunge (nnimap-command "EXPUNGE")) (t (nnheader-message 7 "Article marked for deletion, but not expunged."))))) (if (and sync sequence) (nnimap-wait-for-response sequence))))
  nnimap-delete-article((1825937) t)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no






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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]       ` <87wpdk9em7.fsf@gnus.org>
@ 2017-01-25  0:22         ` Nikolaus Rath
       [not found]         ` <87efzsyonp.fsf@vostro.rath.org>
  2019-09-26 23:41         ` Lars Ingebrigtsen
  2 siblings, 0 replies; 20+ messages in thread
From: Nikolaus Rath @ 2017-01-25  0:22 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 20670, ding

On Jan 25 2017, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> (The reason you call out of the mail headers is because you have a
>
>   Mail-Copies-To: never
>
> in the mails you send out.  So you're never Cc'd.)

Oh. That's intended to avoid Cc's when people are repyling to mailing
list messages. Is debbugs considering itself a mailing list? That would
explain it..

> There was a bug in the patch, so I've reverted it for now.
>
> Here's the backtrace:
>
> Debugger entered--Lisp error: (error "Format specifier doesn’t match argument type")
>   format("%d .*\n" (t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge"
> "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
>   (looking-at (format "%d .*\n" sequence))
>   (not (looking-at (format "%d .*\n" sequence)))
>   (progn (while (and (not (bobp)) (progn (forward-line -1) (looking-at
[...]

Can you tell me how to reproduce it? As I've said, it's been working
fine here for over a year.


Best,
-Nikolaus
-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]         ` <87efzsyonp.fsf@vostro.rath.org>
@ 2017-01-25  0:23           ` Lars Ingebrigtsen
       [not found]           ` <87r33s9edg.fsf@gnus.org>
  1 sibling, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-25  0:23 UTC (permalink / raw)
  To: 20670; +Cc: Nikolaus Rath, ding

Nikolaus Rath <Nikolaus@rath.org> writes:

> On Jan 25 2017, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>> (The reason you call out of the mail headers is because you have a
>>
>>   Mail-Copies-To: never
>>
>> in the mails you send out.  So you're never Cc'd.)
>
> Oh. That's intended to avoid Cc's when people are repyling to mailing
> list messages. Is debbugs considering itself a mailing list? That would
> explain it..
>
>> There was a bug in the patch, so I've reverted it for now.
>>
>> Here's the backtrace:
>>
>> Debugger entered--Lisp error: (error "Format specifier doesn’t match
>> argument type")
>>   format("%d .*\n" (t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge"
>> "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
>>   (looking-at (format "%d .*\n" sequence))
>>   (not (looking-at (format "%d .*\n" sequence)))
>>   (progn (while (and (not (bobp)) (progn (forward-line -1) (looking-at
> [...]
>
> Can you tell me how to reproduce it? As I've said, it's been working
> fine here for over a year.

I just hit `g'.  Whenever there's a new email that's split, it fails.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
  2017-01-24 23:37     ` bug#20670: [PATCH] nnimap: enable additional expunge options (v3) Nikolaus Rath
  2017-01-24 23:46       ` Lars Ingebrigtsen
  2017-01-25  0:18       ` Lars Ingebrigtsen
@ 2017-01-25  0:24       ` npostavs
       [not found]       ` <87lgu0t2ae.fsf@users.sourceforge.net>
       [not found]       ` <87wpdk9em7.fsf@gnus.org>
  4 siblings, 0 replies; 20+ messages in thread
From: npostavs @ 2017-01-25  0:24 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Nikolaus, 20670, ding

Nikolaus Rath <Nikolaus@rath.org> writes:

>
> Btw, is there any way to generate the list of affected functions in the
> commit message automatically? Doing this by hand is rather cumbersome...

See "Generating ChangeLog entries" in CONTRIBUTE.  If you think it's not
good enough, see also https://github.com/magit/magit/issues/2931 and
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16301.





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]       ` <87lgu0t2ae.fsf@users.sourceforge.net>
@ 2017-01-25  0:25         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-25  0:25 UTC (permalink / raw)
  To: npostavs; +Cc: Nikolaus, 20670, ding

npostavs@users.sourceforge.net writes:

> Nikolaus Rath <Nikolaus@rath.org> writes:
>
>>
>> Btw, is there any way to generate the list of affected functions in the
>> commit message automatically? Doing this by hand is rather cumbersome...
>
> See "Generating ChangeLog entries" in CONTRIBUTE. 

Didn't see anything there to put all changed functions into a ChangeLog
automatically?

> If you think it's not
> good enough, see also https://github.com/magit/magit/issues/2931 and
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16301.

So ... the answer is no?  :-)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]           ` <87r33s9edg.fsf@gnus.org>
@ 2017-01-25  0:32             ` Nikolaus Rath
       [not found]             ` <0C68B28B-69C6-4086-AA99-14A7829695FE@rath.org>
  1 sibling, 0 replies; 20+ messages in thread
From: Nikolaus Rath @ 2017-01-25  0:32 UTC (permalink / raw)
  To: Lars Ingebrigtsen, 20670; +Cc: ding



On January 24, 2017 4:23:23 PM PST, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>>> There was a bug in the patch, so I've reverted it for now.
>>>
>>> Here's the backtrace:
>>>
>>> Debugger entered--Lisp error: (error "Format specifier doesn’t match
>>> argument type")
>>>   format("%d .*\n" (t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge"
>>> "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
>>>   (looking-at (format "%d .*\n" sequence))
>>>   (not (looking-at (format "%d .*\n" sequence)))
>>>   (progn (while (and (not (bobp)) (progn (forward-line -1)
>(looking-at
>> [...]
>>
>> Can you tell me how to reproduce it? As I've said, it's been working
>> fine here for over a year.
>
>I just hit `g'.  Whenever there's a new email that's split, it fails.

Uh, OK. That's gonna take me a while to understand and fix. If you or anyone else feels like fixing this up, I will not be offended. I hate the way Gnus represents a "parsed" server response.

Best,
Nikolaus

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]             ` <0C68B28B-69C6-4086-AA99-14A7829695FE@rath.org>
@ 2017-01-25 16:45               ` Lars Ingebrigtsen
  0 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2017-01-25 16:45 UTC (permalink / raw)
  To: Nikolaus Rath; +Cc: 20670, ding

Nikolaus Rath <Nikolaus@rath.org> writes:

> On January 24, 2017 4:23:23 PM PST, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>>>> There was a bug in the patch, so I've reverted it for now.
>>>>
>>>> Here's the backtrace:
>>>>
>>>> Debugger entered--Lisp error: (error "Format specifier doesn\x19t match
>>>> argument type")
>>>>   format("%d .*\n" (t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge"
>>>> "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
>>>>   (looking-at (format "%d .*\n" sequence))
>>>>   (not (looking-at (format "%d .*\n" sequence)))
>>>>   (progn (while (and (not (bobp)) (progn (forward-line -1)
>>(looking-at
>>> [...]
>>>
>>> Can you tell me how to reproduce it? As I've said, it's been working
>>> fine here for over a year.
>>
>>I just hit `g'.  Whenever there's a new email that's split, it fails.
>
> Uh, OK. That's gonna take me a while to understand and fix. If you or
> anyone else feels like fixing this up, I will not be offended. I hate
> the way Gnus represents a "parsed" server response.

Well, I would guess that your change doesn't pass in the right numerical
parameter to the waiting function because my IMAP server (Dovecot)
outputs a different response than you're used to.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#20670: [PATCH] nnimap: enable additional expunge options (v3)
       [not found]       ` <87wpdk9em7.fsf@gnus.org>
  2017-01-25  0:22         ` Nikolaus Rath
       [not found]         ` <87efzsyonp.fsf@vostro.rath.org>
@ 2019-09-26 23:41         ` Lars Ingebrigtsen
  2 siblings, 0 replies; 20+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-26 23:41 UTC (permalink / raw)
  To: 20670; +Cc: Nikolaus Rath, ding

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Here's the backtrace:
>
> Debugger entered--Lisp error: (error "Format specifier doesn’t match
> argument type")
>   format("%d .*\n" (t ("OK" ("HIGHESTMODSEQ" "914696") "Expunge"
> "completed.") ("VANISHED" "1825937") ("0" "RECENT")))
>   (looking-at (format "%d .*\n" sequence))

I've now re-applied the patch and debugged a bit.  It was basically
nnimap-delete-article having some code paths that can't have been
exercised.  The function had an optional SYNC parameter, but
nnimap-command was called (which is not asynchronous and does not return
any sequence numbers), and then these non-sequences were being waited
for.

I've now pushed the patch to the trunk, I've used it and send and
received some messages, and things seem to work fine.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

end of thread, other threads:[~2019-09-26 23:41 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <556538A5.3050302@rath.org>
     [not found] ` <87inp4p7ri.fsf@gnus.org>
2017-01-24 19:50   ` bug#20670: Status: [PATCH] nnimap: enable additional expunge options Lars Ingebrigtsen
2017-01-24 19:55     ` Lars Ingebrigtsen
2017-01-24 23:10       ` Nikolaus Rath
2017-01-24 23:26         ` Glenn Morris
2017-01-24 23:38           ` Nikolaus Rath
2017-01-24 23:21       ` Glenn Morris
2017-01-24 23:26         ` Lars Ingebrigtsen
2017-01-24 23:48           ` Lars Ingebrigtsen
2017-01-24 23:09   ` Nikolaus Rath
2017-01-24 23:27     ` Lars Ingebrigtsen
     [not found] ` <87oajs38kf.fsf@vostro.rath.org>
     [not found]   ` <87pojcp7y7.fsf@gnus.org>
2017-01-24 23:37     ` bug#20670: [PATCH] nnimap: enable additional expunge options (v3) Nikolaus Rath
2017-01-24 23:46       ` Lars Ingebrigtsen
2017-01-25  0:18       ` Lars Ingebrigtsen
2017-01-25  0:24       ` npostavs
     [not found]       ` <87lgu0t2ae.fsf@users.sourceforge.net>
2017-01-25  0:25         ` Lars Ingebrigtsen
     [not found]       ` <87wpdk9em7.fsf@gnus.org>
2017-01-25  0:22         ` Nikolaus Rath
     [not found]         ` <87efzsyonp.fsf@vostro.rath.org>
2017-01-25  0:23           ` Lars Ingebrigtsen
     [not found]           ` <87r33s9edg.fsf@gnus.org>
2017-01-25  0:32             ` Nikolaus Rath
     [not found]             ` <0C68B28B-69C6-4086-AA99-14A7829695FE@rath.org>
2017-01-25 16:45               ` Lars Ingebrigtsen
2019-09-26 23:41         ` Lars Ingebrigtsen

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).