Allow editing articles in Gnus nnselect groups
authorAndrew G Cohen <cohen@andy.bu.edu>
Thu, 10 Sep 2020 23:31:56 +0000 (07:31 +0800)
committerAndrew G Cohen <cohen@andy.bu.edu>
Thu, 10 Sep 2020 23:31:56 +0000 (07:31 +0800)
* lisp/gnus/nnselect.el (nnselect-request-replace-article): New function.

lisp/gnus/nnselect.el

index 4916286e3771918b1fdcc22c23c58b74b0591cf6..b9769310eacbcde9df430148c463ce7daa234bad 100644 (file)
@@ -418,6 +418,21 @@ If this variable is nil, or if the provided function returns nil,
          to-newsgroup          ; Not respooling
          (gnus-group-real-name to-newsgroup)))))
 
+(deffoo nnselect-request-replace-article
+    (article _group buffer &optional no-encode)
+  (pcase-let ((`[,artgroup ,artnumber ,artrsv]
+              (with-current-buffer gnus-summary-buffer
+                (nnselect-artlist-article gnus-newsgroup-selection article))))
+    (unless (gnus-check-backend-function
+            'request-replace-article artgroup)
+      (user-error "The group %s does not support article editing" artgroup))
+    (let ((newart
+          (gnus-request-replace-article artnumber artgroup buffer no-encode)))
+      (with-current-buffer gnus-summary-buffer
+       (cl-nsubstitute `[,artgroup ,newart ,artrsv]
+                       `[,artgroup ,artnumber ,artrsv]
+                       gnus-newsgroup-selection
+                       :test #'equal :count 1)))))
 
 (deffoo nnselect-request-expire-articles
     (articles _group &optional _server force)