summaryrefslogtreecommitdiff
path: root/lisp/gnus/nnmaildir.el
diff options
context:
space:
mode:
authorPhilip Kaludercic <philipk@posteo.net>2021-09-15 10:58:50 +0200
committerPhilip Kaludercic <philipk@posteo.net>2021-09-23 20:54:40 +0200
commit387af85c4d51dd98267f296bc91cf22d7ecc5374 (patch)
treee315f552474f31ad8a7dbd647efb5fa3dbe8bf95 /lisp/gnus/nnmaildir.el
parente646cb4e7a46132a7717a94fe3632ecb03f080fc (diff)
downloademacs-387af85c4d51dd98267f296bc91cf22d7ecc5374.tar.gz
Handle updates flags when setting flags
* nnmaildir.el (nnmaildir--article-set-flags): Handle updated flags more gracefully
Diffstat (limited to 'lisp/gnus/nnmaildir.el')
-rw-r--r--lisp/gnus/nnmaildir.el10
1 files changed, 9 insertions, 1 deletions
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 171f0813b38..690761a2d6c 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -194,7 +194,15 @@ This variable is set by `nnmaildir-request-article'.")
(article-file (concat curdir prefix suffix))
(new-name (concat curdir prefix new-suffix)))
(unless (file-exists-p article-file)
- (error "Couldn't find article file %s" article-file))
+ (let ((possible (file-expand-wildcards (concat curdir prefix "*"))))
+ (cond ((length= possible 1)
+ (unless (string-match-p "\\`\\(.+\\):2,.*?\\'" (car possible))
+ (error "Couldn't find updated article file %s" article-file))
+ (setq article-file (car possible)))
+ ((length> possible 1)
+ (error "Couldn't determine exact article file %s" article-file))
+ ((null possible)
+ (error "Couldn't find article file %s" article-file)))))
(rename-file article-file new-name 'replace)
(setf (nnmaildir--art-suffix article) new-suffix)))