diff lisp/gnus/gnus-sum.el @ 110:fe104dbd9147 r20-1b7

Import from CVS: tag r20-1b7
author cvs
date Mon, 13 Aug 2007 09:19:45 +0200
parents 360340f9fd5f
children 48d667d6f17f
line wrap: on
line diff
--- a/lisp/gnus/gnus-sum.el	Mon Aug 13 09:18:41 2007 +0200
+++ b/lisp/gnus/gnus-sum.el	Mon Aug 13 09:19:45 2007 +0200
@@ -2449,7 +2449,7 @@
 	   (symbolp (car elem))		; Has to be a symbol in there.
 	   (not (memq (car elem)
 		      '(quit-config to-address to-list to-group)))
-	   (progn			; So we set it.
+	   (ignore-errors		; So we set it.
 	     (make-local-variable (car elem))
 	     (set (car elem) (eval (nth 1 elem))))))))
 
@@ -3190,11 +3190,11 @@
    (let ((extract (funcall
 		   gnus-extract-address-components
 		   (mail-header-from h1))))
-     (or (car extract) (cdr extract)))
+     (or (car extract) (cadr extract) ""))
    (let ((extract (funcall
 		   gnus-extract-address-components
 		   (mail-header-from h2))))
-     (or (car extract) (cdr extract)))))
+     (or (car extract) (cadr extract) ""))))
 
 (defun gnus-thread-sort-by-author (h1 h2)
   "Sort threads by root author."
@@ -5387,7 +5387,7 @@
   (gnus-set-global-variables)
   (let ((article (gnus-summary-article-number))
 	(article-window (get-buffer-window gnus-article-buffer t))
-	(endp nil))
+	endp)
     (gnus-configure-windows 'article)
     (if (eq (cdr (assq article gnus-newsgroup-reads)) gnus-canceled-mark)
 	(if (and (eq gnus-summary-goto-unread 'never)
@@ -5416,13 +5416,16 @@
     (gnus-summary-recenter)
     (gnus-summary-position-point)))
 
-(defun gnus-summary-prev-page (&optional lines)
+(defun gnus-summary-prev-page (&optional lines move)
   "Show previous page of selected article.
-Argument LINES specifies lines to be scrolled down."
+Argument LINES specifies lines to be scrolled down.
+If MOVE, move to the previous unread article if point is at
+the beginning of the buffer."
   (interactive "P")
   (gnus-set-global-variables)
   (let ((article (gnus-summary-article-number))
-	(article-window (get-buffer-window gnus-article-buffer t)))
+	(article-window (get-buffer-window gnus-article-buffer t))
+	endp)
     (gnus-configure-windows 'article)
     (if (or (null gnus-current-article)
 	    (null gnus-article-current)
@@ -5433,9 +5436,24 @@
       (gnus-summary-recenter)
       (when article-window
 	(gnus-eval-in-buffer-window gnus-article-buffer
-	  (gnus-article-prev-page lines)))))
+	  (setq endp (gnus-article-prev-page lines)))
+	(when (and move endp)
+	  (cond (lines
+		 (gnus-message 3 "Beginning of message"))
+		((null lines)
+		 (if (and (eq gnus-summary-goto-unread 'never)
+			  (not (gnus-summary-first-article-p article)))
+		     (gnus-summary-prev-article)
+		   (gnus-summary-prev-unread-article))))))))
   (gnus-summary-position-point))
 
+(defun gnus-summary-prev-page-or-article (&optional lines)
+  "Show previous page of selected article.
+Argument LINES specifies lines to be scrolled down.
+If at the beginning of the article, go to the next article."
+  (interactive "P")
+  (gnus-summary-prev-page lines t))
+
 (defun gnus-summary-scroll-up (lines)
   "Scroll up (or down) one line current article.
 Argument LINES specifies lines to be scrolled up (or down if negative)."
@@ -5650,7 +5668,7 @@
 	   gnus-killed-mark gnus-kill-file-mark
 	   gnus-low-score-mark gnus-expirable-mark
 	   gnus-canceled-mark gnus-catchup-mark gnus-sparse-mark
-	   gnus-duplicate-mark)
+	   gnus-duplicate-mark gnus-souped-mark)
      'reverse)))
 
 (defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks)