2002-11-26 Kevin Ryde <user42@zip.com.au>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Wed, 27 Nov 2002 01:57:25 +0000 (01:57 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Wed, 27 Nov 2002 01:57:25 +0000 (01:57 +0000)
* gnus-art.el (gnus-mime-copy-part): Look for filename
parameter under content-disposition, not content-type.

* gnus-sum.el (gnus-summary-find-uncancelled): New function.
(gnus-summary-reselect-current-group): Use it.

lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-sum.el

index 96eb867..32dd31c 100644 (file)
@@ -1,3 +1,11 @@
+2002-11-26  Kevin Ryde <user42@zip.com.au>
+       
+       * gnus-art.el (gnus-mime-copy-part): Look for filename
+       parameter under content-disposition, not content-type.
+
+       * gnus-sum.el (gnus-summary-find-uncancelled): New function.
+       (gnus-summary-reselect-current-group): Use it.
+
 2002-11-26  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus-agent.el (gnus-agent-uncached-articles): if
index ce7b214..cdb5546 100644 (file)
@@ -3878,7 +3878,7 @@ General format specifiers can also be used.  See Info node
                    (file-name-nondirectory
                     (or
                      (mail-content-type-get (mm-handle-type handle) 'name)
-                     (mail-content-type-get (mm-handle-type handle)
+                     (mail-content-type-get (mm-handle-disposition handle)
                                             'filename)
                      "*decoded*"))))
         (buffer (and base (generate-new-buffer base))))
index f5c2148..72729d4 100644 (file)
@@ -6155,13 +6155,28 @@ With arg, turn line truncation on iff arg is positive."
          (> (prefix-numeric-value arg) 0)))
   (redraw-display))
 
+(defun gnus-summary-find-uncancelled ()
+  "Return the number of an uncancelled article.
+The current article is considered, then following articles, then previous
+articles.  If all articles are cancelled then return a dummy 0."
+  (let (found)
+    (dolist (rev '(nil t))
+      (unless found      ; don't demand the reverse list if we don't need it
+        (let ((data (gnus-data-find-list
+                     (gnus-summary-article-number) (gnus-data-list rev))))
+          (while (and data (not found))
+            (if (not (eq gnus-canceled-mark (gnus-data-mark (car data))))
+                (setq found (gnus-data-number (car data))))
+            (setq data (cdr data))))))
+    (or found 0)))
+
 (defun gnus-summary-reselect-current-group (&optional all rescan)
   "Exit and then reselect the current newsgroup.
 The prefix argument ALL means to select all articles."
   (interactive "P")
   (when (gnus-ephemeral-group-p gnus-newsgroup-name)
     (error "Ephemeral groups can't be reselected"))
-  (let ((current-subject (gnus-summary-article-number))
+  (let ((current-subject (gnus-summary-find-uncancelled))
        (group gnus-newsgroup-name))
     (setq gnus-newsgroup-begin nil)
     (gnus-summary-exit)