diff lisp/gnus/gnus-sum.el @ 100993:a16e9f7c2536

Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1513
author Miles Bader <miles@gnu.org>
date Fri, 09 Jan 2009 03:01:50 +0000
parents a9dc0e7c3f2b
children 0ffd7b9d2985
line wrap: on
line diff
--- a/lisp/gnus/gnus-sum.el	Fri Jan 09 02:59:52 2009 +0000
+++ b/lisp/gnus/gnus-sum.el	Fri Jan 09 03:01:50 2009 +0000
@@ -3455,9 +3455,9 @@
 
 (defun gnus-summary-set-article-display-arrow (pos)
   "Update the overlay arrow to point to line at position POS."
-  (when (and gnus-summary-display-arrow
-	     (boundp 'overlay-arrow-position)
-	     (boundp 'overlay-arrow-string))
+  (when gnus-summary-display-arrow
+    (make-local-variable 'overlay-arrow-position)
+    (make-local-variable 'overlay-arrow-string)
     (save-excursion
       (goto-char pos)
       (beginning-of-line)
@@ -3832,10 +3832,15 @@
 	   (consp (cdr elem))		; The cdr has to be a list.
 	   (symbolp (car elem))		; Has to be a symbol in there.
 	   (not (memq (car elem) vars))
-	   (ignore-errors		; So we set it.
+	   (ignore-errors
 	     (push (car elem) vars)
-	     (make-local-variable (car elem))
-	     (set (car elem) (eval (nth 1 elem))))))))
+	     ;; Variables like `gnus-show-threads' that are globally
+	     ;; bound, if used as group parameters, need to get to be
+	     ;; buffer-local, whereas just parameters like `gcc-self',
+	     ;; `timestamp', etc. should not be bound as variables.
+	     (if (boundp (car elem))
+		 (set (make-local-variable (car elem)) (eval (nth 1 elem)))
+	       (eval (nth 1 elem))))))))
 
 (defun gnus-summary-read-group (group &optional show-all no-article
 				      kill-buffer no-display backward