Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

*** empty log message ***

  • Loading branch information...
commit 0fc12dda0db988b86441c8692d4688ec08b887ab 1 parent f32eac5
Lars Ingebrigtsen authored March 04, 1997
77  lisp/ChangeLog
... ...
@@ -1,5 +1,82 @@
  1
+Sat Jul  8 16:57:03 1995  Lars Magne Ingebrigtsen  <lingebri@sunscipw.cern.ch>
  2
+
  3
+	* gnus.el (gnus-summary-fetch-faq): Get the real name.
  4
+	(gnus-summary-fetch-faq): Don't do the config thing unless the
  5
+	fetch is successful. 
  6
+	(gnus-group-group-unread): New function. 
  7
+
  8
+	* gnus-score.el (gnus-summary-header): Beep on pseudo-articles. 
  9
+
  10
+	* gnus.el (gnus-group-expire-all-groups): Don't move the cursor. 
  11
+	(gnus-group-remove-mark): Don't be so verbose.
  12
+	(gnus-summary-read-group): Return the the server buffer if
  13
+	quitting a group entry from the server buffer. 
  14
+
  15
+	* gnus-score.el (gnus-score-add-followups): Local variable shadows
  16
+	parameter. 
  17
+
  18
+	* gnus.el (gnus-summary-exit): Didn't update cache when proceeding
  19
+	to the next group. 
  20
+	(gnus-summary-next-group): Didn't respect `gnus-keep-same-level'. 
  21
+	(gnus-summary-remove-lines-marked-as-read): Also remove canceled
  22
+	articles. 
  23
+
  24
+	* gnus-score.el (gnus-score-insert-help): Make the summary buffer
  25
+	the selected window. 
  26
+
  27
+	* gnus-vis.el (gnus-visual-score-map): New function to create a
  28
+	gazillion menu bar entries. 
  29
+
  30
+	* gnus.el (gnus-summary-next-group): New implementation. 
  31
+
  32
+Fri Jul  7 12:55:47 1995  Lars Magne Ingebrigtsen  <lingebri@sunscipw.cern.ch>
  33
+
  34
+	* gnus-cache.el (gnus-cache-possibly-remove-article): Don't barf
  35
+	on corrupted .overview files. 
  36
+
  37
+	* gnus.el (gnus-summary-copy-article): Make sure to open
  38
+	connection. 
  39
+	(gnus-summary-move-article): Ditto.
  40
+	(gnus-group-make-group): Initialized active entry with wrong data.
  41
+	(gnus-summary-mark-article): Don't mark ancients as expirable. 
  42
+
  43
+	* nnbabyl.el (nnbabyl-request-create-group): New function. 
  44
+
  45
+	* gnus.el (gnus-group-make-group): Did not check to see whether
  46
+	the backend was loaded. 
  47
+
  48
+	* gnus-vis.el (gnus-header-face-alist): New colours.
  49
+
  50
+Thu Jul  6 15:30:00 1995  Per Abrahamsen  <abraham@dina.kvl.dk>
  51
+ 
  52
+        * gnus-vis.el: Use `custom-face-lookup' to create faces for
  53
+        concistency. 
  54
+ 
  55
+Thu Jul  6 14:17:34 1995  Lars Magne Ingebrigtsen  <lingebri@sunscipw.cern.ch>
  56
+
  57
+	* nntp.el (nntp-async-request-group): New function to save async
  58
+	state between groups that are open at the same time. 
  59
+
  60
+	* nnbabyl.el (nnbabyl-retrieve-headers): Possible removal of
  61
+	newlines. 
  62
+
  63
+	* nnmbox.el (nnmbox-retrieve-headers): Ditto.
  64
+
  65
+Wed Jul  5 18:21:26 1995  Lars Magne Ingebrigtsen  <lingebri@sunscipw.cern.ch>
  66
+
  67
+	* gnus.el (gnus-summary-mode): Set the name of the group here. 
  68
+
  69
+	* gnus-ems.el: `set-text-properties' doesn't work on strings. 
  70
+	(gnus-ems-redefine): Require gnus-msg on startup.
  71
+
  72
+Mon Jul  3 12:04:43 1995  Lars Magne Ingebrigtsen  <lingebri@sunscipw.cern.ch>
  73
+
  74
+	* gnus.el (gnus-group-startup-message): Tweaked message.
  75
+
1 76
 Sun Jul  2 14:11:14 1995  Lars Magne Ingebrigtsen  <lingebri@sunscipw.cern.ch>
2 77
 
  78
+	* gnus.el: 0.91 and 0.91.1 is released.
  79
+
3 80
 	* nnvirtual.el (nnvirtual-catchup-group): Would kill the group
4 81
 	buffer. 
5 82
 
2  lisp/Makefile
... ...
@@ -1,5 +1,5 @@
1 1
 EMACS=emacs
2  
-FLAGS=-batch -l ./dgnushack.el
  2
+FLAGS=-batch -q -no-site-file -l ./dgnushack.el
3 3
 
4 4
 all:
5 5
 	$(EMACS) $(FLAGS) -f batch-byte-compile *.el
2  lisp/custom.el
@@ -1527,7 +1527,7 @@ If the optional argument GET is non-nil, use that to get external data."
1527 1527
 (if custom-mode-map
1528 1528
     nil
1529 1529
   (setq custom-mode-map (make-sparse-keymap))
1530  
-  (define-key custom-mode-map [ mouse-2 ] 'custom-push-button)
  1530
+  (define-key custom-mode-map (if (string-match "XEmacs" emacs-version) [button2] [mouse-2]) 'custom-push-button)
1531 1531
   (define-key custom-mode-map "\t" 'custom-forward-field)
1532 1532
   (define-key custom-mode-map "\r" 'custom-enter-value)
1533 1533
   (define-key custom-mode-map "\C-k" 'custom-kill-line)
3  lisp/gnus-cache.el
@@ -174,7 +174,8 @@
174 174
 	(set-buffer (cdr gnus-cache-buffer))
175 175
 	(goto-char (point-min))
176 176
 	(if (or (looking-at (concat (int-to-string article) "\t"))
177  
-		(search-forward (concat "\n" (int-to-string article) "\t")))
  177
+		(search-forward (concat "\n" (int-to-string article) "\t")
  178
+				(point-max) t))
178 179
 	    (delete-region (progn (beginning-of-line) (point))
179 180
 			   (progn (forward-line 1) (point))))))))
180 181
 
8  lisp/gnus-cite.el
@@ -53,7 +53,10 @@ The first regexp group should match the SuperCite attribution.")
53 53
 (defvar gnus-cite-minimum-match-count 2
54 54
   "Minimal number of identical prefix'es before we believe it is a citation.")
55 55
 
56  
-(defvar gnus-cite-face-list '(italic)
  56
+(defvar gnus-cite-face-list 
  57
+  (if (eq gnus-display-type 'color)
  58
+      (if (eq gnus-background-mode 'dark) 'light 'dark)
  59
+    '(italic))
57 60
   "Faces used for displaying different citations.
58 61
 It is either a list of face names, or one of the following special
59 62
 values:
@@ -89,7 +92,8 @@ It is merged with the face for the cited text belonging to the attribution.")
89 92
   "Names of light colors.")
90 93
 
91 94
 (defvar gnus-face-dark-name-list
92  
-  '("blue" "dark salmon" "firebrick"
  95
+  '("violetred3" "violetred2" "violetred1" "violetred3" "deepskyblue3" "deepskyblue2" "deepskyblue1" "deepskyblue"
  96
+    "dark salmon" "firebrick"
93 97
     "dark green" "dark orange" "dark khaki" "dark violet"
94 98
     "dark turquoise")
95 99
   "Names of dark colors.")
10  lisp/gnus-ems.el
@@ -50,9 +50,10 @@
50 50
   	(funcall 'set-face-underline-p 'underline t))
51 51
     (or (fboundp 'set-text-properties)
52 52
 	(defun set-text-properties (start end props &optional buffer)
53  
-	  (if props
54  
-	      (put-text-property start end (car props) (cdr props) buffer)
55  
-	    (remove-text-properties start end ()))))
  53
+	  (if (or (null buffer) (bufferp buffer))
  54
+	      (if props
  55
+		  (put-text-property start end (car props) (cdr props) buffer)
  56
+		(remove-text-properties start end ())))))
56 57
     
57 58
     (or (fboundp 'make-overlay) (fset 'make-overlay 'make-extent))
58 59
     (or (fboundp 'overlay-put) (fset 'overlay-put 'set-extent-property))
@@ -135,9 +136,6 @@
135 136
 
136 137
     (fset 'gnus-summary-make-display-table (lambda () nil))
137 138
 
138  
-    (provide 'gnus)
139  
-    (require 'gnus-vis)
140  
-
141 139
     (defun gnus-highlight-selected-summary ()
142 140
       ;; Added by Per Abrahamsen <amanda@iesd.auc.dk>.
143 141
       ;; Highlight selected article in summary buffer
1  lisp/gnus-mh.el
@@ -173,7 +173,6 @@ The command \\[mh-yank-cur-msg] yank the original message into current buffer."
173 173
       (setq mail-buf (eval (cdr (assq 'mail gnus-window-to-buffer))))
174 174
       (pop-to-buffer mail-buf) ;; always in the display, so won't have window probs
175 175
       (switch-to-buffer draft)
176  
-      (kill-buffer mail-buf) ;; mh-e don't use it!
177 176
       )
178 177
     (save-excursion
179 178
       (goto-char (point-max))
5  lisp/gnus-msg.el
@@ -27,6 +27,7 @@
27 27
 
28 28
 (require 'gnus)
29 29
 (require 'sendmail)
  30
+(require 'gnus-ems)
30 31
 
31 32
 (defvar gnus-organization-file "/usr/lib/news/organization"
32 33
   "*Local news organization file.")
@@ -1602,7 +1603,7 @@ If YANK is non-nil, include the original article."
1602 1603
   (interactive)
1603 1604
   (let ((winconf (current-window-configuration)))
1604 1605
     (delete-other-windows)
1605  
-    (switch-to-buffer "*Gnus Bug Help*")
  1606
+    (switch-to-buffer "*Gnus Help Bug*")
1606 1607
     (erase-buffer)
1607 1608
     (insert gnus-bug-message)
1608 1609
     (goto-char (point-min))
@@ -1670,6 +1671,8 @@ The source file has to be in the Emacs load path."
1670 1671
       (setq olist (cdr olist)))
1671 1672
     (insert "\n\n")))
1672 1673
 
  1674
+(gnus-ems-redefine)
  1675
+
1673 1676
 (provide 'gnus-msg)
1674 1677
 
1675 1678
 ;;; gnus-msg.el ends here
14  lisp/gnus-score.el
@@ -276,14 +276,17 @@ of the last successful match.")
276 276
     (insert string ":\n\n")
277 277
     (while alist
278 278
       (insert (format " %c: %s\n" (car (car alist)) (nth idx (car alist))))
279  
-      (setq alist (cdr alist)))))
  279
+      (setq alist (cdr alist)))
  280
+    (select-window (get-buffer-window gnus-summary-buffer))))
280 281
 
281 282
 (defun gnus-summary-header (header)
282 283
   ;; Return HEADER for current articles, or error.
283  
-  (let ((article (gnus-summary-article-number)))
  284
+  (let ((article (gnus-summary-article-number))
  285
+	header)
284 286
     (if article
285  
-	(aref (gnus-get-header-by-number article)
286  
-	      (nth 1 (assoc header gnus-header-index)))
  287
+	(if (setq header (gnus-get-header-by-number article))
  288
+	    (aref header (nth 1 (assoc header gnus-header-index)))
  289
+	  (error "Pseudo-articles can't be scored"))
287 290
       (error "No article on current line"))))
288 291
 
289 292
 (defun gnus-summary-score-entry 
@@ -1170,7 +1173,6 @@ SCORE is the score to add."
1170 1173
   (save-excursion
1171 1174
     (set-buffer gnus-summary-buffer)
1172 1175
     (let ((id (header-id header))
1173  
-	  (score gnus-score-alist)
1174 1176
 	  dont)
1175 1177
       ;; Don't enter a score if there already is one.
1176 1178
       (while score
@@ -1178,7 +1180,7 @@ SCORE is the score to add."
1178 1180
 	     (or (null (nth 3 (car score)))
1179 1181
 		 (eq 's (nth 3 (car score))))
1180 1182
 	     (progn
1181  
-	       (or (assoc id (car score))
  1183
+	       (if (assoc id (car score))
1182 1184
 		   (setq dont t))
1183 1185
 	       (setq score nil)))
1184 1186
 	(setq score (cdr score)))
257  lisp/gnus-vis.el
@@ -27,16 +27,81 @@
27 27
 
28 28
 (require 'gnus)
29 29
 (require gnus-easymenu)
30  
-
31  
-;;; summary highligts
  30
+(require 'custom)
  31
+(require 'gnus-ems)
  32
+  
  33
+;;; Summary highlights.
32 34
 
33 35
 (defvar gnus-summary-selected-face 'underline
34 36
   "*Face used for highlighting the current article in the summary buffer.")
35 37
 
36 38
 (defvar gnus-summary-highlight
37  
-  '(((> score default) . bold)
38  
-    ((< score default) . italic))
39  
-  "*Alist of `(FORM . FACE)'.
  39
+  (cond ((not (eq gnus-display-type 'color))
  40
+	 '(((> score default) . bold)
  41
+	   ((< score default) . italic)))
  42
+	((eq gnus-background-mode 'dark)
  43
+	 (list (cons '(= mark gnus-canceled-mark)
  44
+		     (custom-face-lookup "yellow" "black" nil nil nil nil))
  45
+	       (cons '(and (> score default) 
  46
+			   (or (= mark gnus-dormant-mark)
  47
+			       (= mark gnus-ticked-mark)))
  48
+	       (custom-face-lookup "red" nil nil t nil nil))
  49
+	       (cons '(and (< score default) 
  50
+			   (or (= mark gnus-dormant-mark)
  51
+			       (= mark gnus-ticked-mark)))
  52
+	       (custom-face-lookup "red" nil nil nil t nil))
  53
+	       (cons '(or (= mark gnus-dormant-mark)
  54
+			  (= mark gnus-ticked-mark))
  55
+	       (custom-face-lookup "red" nil nil nil nil nil))
  56
+
  57
+	       (cons '(and (> score default) (= mark gnus-ancient-mark))
  58
+	       (custom-face-lookup "blue" nil nil t nil nil))
  59
+	       (cons '(and (< score default) (= mark gnus-ancient-mark))
  60
+	       (custom-face-lookup "blue" nil nil nil t nil))
  61
+	       (cons '(= mark gnus-ancient-mark)
  62
+	       (custom-face-lookup "blue" nil nil nil nil nil))
  63
+
  64
+	       (cons '(and (> score default) (= mark gnus-unread-mark))
  65
+	       (custom-face-lookup "green" nil nil t nil nil))
  66
+	       (cons '(and (< score default) (= mark gnus-unread-mark))
  67
+	       (custom-face-lookup "green" nil nil nil t nil))
  68
+	       (cons '(= mark gnus-unread-mark)
  69
+	       (custom-face-lookup "green" nil nil nil nil nil))
  70
+
  71
+	       (cons '(> score default) 'bold)
  72
+	       (cons '(< score default) 'italic)))
  73
+	(t
  74
+	 (list (cons '(= mark gnus-canceled-mark)
  75
+		     (custom-face-lookup "yellow" "black" nil nil nil nil))
  76
+	       (cons '(and (> score default) 
  77
+			   (or (= mark gnus-dormant-mark)
  78
+			       (= mark gnus-ticked-mark)))
  79
+	       (custom-face-lookup "firebrick" nil nil t nil nil))
  80
+	       (cons '(and (< score default) 
  81
+			   (or (= mark gnus-dormant-mark)
  82
+			       (= mark gnus-ticked-mark)))
  83
+	       (custom-face-lookup "firebrick" nil nil nil t nil))
  84
+	       (cons '(or (= mark gnus-dormant-mark)
  85
+			  (= mark gnus-ticked-mark))
  86
+	       (custom-face-lookup "firebrick" nil nil nil nil nil))
  87
+
  88
+	       (cons '(and (> score default) (= mark gnus-ancient-mark))
  89
+	       (custom-face-lookup "RoyalBlue" nil nil t nil nil))
  90
+	       (cons '(and (< score default) (= mark gnus-ancient-mark))
  91
+	       (custom-face-lookup "RoyalBlue" nil nil nil t nil))
  92
+	       (cons '(= mark gnus-ancient-mark)
  93
+	       (custom-face-lookup "RoyalBlue" nil nil nil nil nil))
  94
+
  95
+	       (cons '(and (> score default) (= mark gnus-unread-mark))
  96
+	       (custom-face-lookup "DarkGreen" nil nil t nil nil))
  97
+	       (cons '(and (< score default) (= mark gnus-unread-mark))
  98
+	       (custom-face-lookup "DarkGreen" nil nil nil t nil))
  99
+	       (cons '(= mark gnus-unread-mark)
  100
+	       (custom-face-lookup "DarkGreen" nil nil nil nil nil))
  101
+
  102
+	       (cons '(> score default) 'bold)
  103
+	       (cons '(< score default) 'italic))))
  104
+	"*Alist of `(FORM . FACE)'.
40 105
 Summary lines are highlighted with the FACE for the first FORM which
41 106
 evaluate to a non-nil value.  
42 107
 
@@ -46,14 +111,44 @@ The following can be used for convenience:
46 111
 score:   (gnus-summary-article-score)
47 112
 default: gnus-summary-default-score
48 113
 below:   gnus-summary-mark-below
  114
+mark:    (gnus-summary-article-mark)
49 115
 
50  
-To check for marks, e.g. to underline replied articles, use
51  
-`gnus-summary-article-mark': 
52  
-
53  
-   ((= (gnus-summary-article-mark) gnus-replied-mark) . underline)")
  116
+The latter can be used like this:
  117
+   ((= mark gnus-replied-mark) . underline)")
54 118
 
55 119
 ;;; article highlights
56 120
 
  121
+(defvar gnus-header-face-alist 
  122
+  (cond ((not (eq gnus-display-type 'color))
  123
+	 '(("" bold italic)))
  124
+	((eq gnus-background-mode 'dark)
  125
+	 (list (list "From" nil 
  126
+		       (custom-face-lookup "blue" nil nil t t nil))
  127
+		 (list "Subject" nil 
  128
+		       (custom-face-lookup "red" nil nil t t nil))
  129
+		 (list "Newsgroups:.*," nil
  130
+		       (custom-face-lookup "firebrick" nil nil t t nil))
  131
+		 (list "" 'bold
  132
+		       (custom-face-lookup "green" nil nil nil t nil))))
  133
+	(t
  134
+	 (list (list "From" nil 
  135
+		       (custom-face-lookup "red" nil nil t t nil))
  136
+		 (list "Subject" nil 
  137
+		       (custom-face-lookup "firebrick" nil nil t t nil))
  138
+		 (list "Newsgroups:.*," nil
  139
+		       (custom-face-lookup "firebrick" nil nil t t nil))
  140
+		 (list "" 'bold
  141
+		       (custom-face-lookup "DarkGreen" nil nil nil t nil)))))
  142
+  "Alist of headers and faces used for highlighting them.
  143
+The entries in the list has the form `(REGEXP NAME CONTENT)', where
  144
+REGEXP is a regular expression matching the beginning of the header,
  145
+NAME is the face used for highlighting the header name and CONTENT is
  146
+the face used for highlighting the header content. 
  147
+
  148
+The first non-nil NAME or CONTENT with a matching REGEXP in the list
  149
+will be used.")
  150
+
  151
+
57 152
 (defvar gnus-make-foreground t
58 153
   "Non nil means foreground color to highlight citations.")
59 154
 
@@ -65,15 +160,24 @@ To check for marks, e.g. to underline replied articles, use
65 160
 				  'highlight)
66 161
   "Face used when the mouse is over the button.")
67 162
 
68  
-(defvar gnus-header-face-alist '(("" bold italic))
69  
-  "Alist of headers and faces used for highlighting them.
70  
-The entries in the list has the form `(REGEXP NAME CONTENT)', where
71  
-REGEXP is a regular expression matching the beginning of the header,
72  
-NAME is the face used for highlighting the header name and CONTENT is
73  
-the face used for highlighting the header content. 
  163
+(defvar gnus-summary-highlight
  164
+  '(((> score default) . bold)
  165
+    ((< score default) . italic))
  166
+  "*Alist of `(FORM . FACE)'.
  167
+Summary lines are highlighted with the FACE for the first FORM which
  168
+evaluate to a non-nil value.  
74 169
 
75  
-The first non-nil NAME or CONTENT with a matching REGEXP in the list
76  
-will be used.") 
  170
+Point will be at the beginning of the line when FORM is evaluated.
  171
+The following can be used for convenience:
  172
+
  173
+score:   (gnus-summary-article-score)
  174
+default: gnus-summary-default-score
  175
+below:   gnus-summary-mark-below
  176
+
  177
+To check for marks, e.g. to underline replied articles, use
  178
+`gnus-summary-article-mark': 
  179
+
  180
+   ((= (gnus-summary-article-mark) gnus-replied-mark) . underline)")
77 181
 
78 182
 (defvar gnus-signature-face 'italic
79 183
   "Face used for signature.")
@@ -429,22 +533,98 @@ highlight-headers-follow-url-netscape:
429 533
    gnus-summary-kill-menu
430 534
    gnus-summary-mode-map
431 535
    ""
432  
-   '("Score"
433  
-     ["Enter score" gnus-summary-score-entry t]
434  
-     ["Raise score" gnus-summary-increase-score t]
435  
-     ["Lower score" gnus-summary-lower-score t]
436  
-     ["Current score" gnus-summary-current-score t]
437  
-     ["Set score" gnus-summary-set-score t]
438  
-     ("Score file"
439  
-      ["Customize score file" gnus-score-customize t]
440  
-      ["Switch current score file" gnus-score-change-score-file t]
441  
-      ["Set mark below" gnus-score-set-mark-below t]
442  
-      ["Set expunge below" gnus-score-set-expunge-below t]
443  
-      ["Edit current score file" gnus-score-edit-alist t]
444  
-      ["Edit score file" gnus-score-edit-file t]
445  
-      ["Trace score" gnus-score-find-trace t])
446  
-     ))
  536
+   (cons
  537
+    "Score"
  538
+    (nconc
  539
+     (list
  540
+      ["Enter score" gnus-summary-score-entry t])
  541
+     (gnus-visual-score-map 'increase)
  542
+     (gnus-visual-score-map 'lower)
  543
+     '(["Current score" gnus-summary-current-score t]
  544
+       ["Set score" gnus-summary-set-score t]
  545
+       ("Score file"
  546
+	 ["Customize score file" gnus-score-customize t]
  547
+	 ["Switch current score file" gnus-score-change-score-file t]
  548
+	 ["Set mark below" gnus-score-set-mark-below t]
  549
+	 ["Set expunge below" gnus-score-set-expunge-below t]
  550
+	 ["Edit current score file" gnus-score-edit-alist t]
  551
+	 ["Edit score file" gnus-score-edit-file t]
  552
+	 ["Trace score" gnus-score-find-trace t])
  553
+       ))))
  554
+
447 555
   )
  556
+
  557
+(defun gnus-visual-score-map (type)
  558
+  (let ((headers '(("author" "from" string)
  559
+		   ("subject" "subject" string)
  560
+		   ("article body" "body" string)
  561
+		   ("article head" "head" string)
  562
+		   ("xref" "xref" string)
  563
+		   ("lines" "lines" number)
  564
+		   ("followups to author" "followup" string)))
  565
+	(types '((number ("less than" <)
  566
+			 ("greater than" >)
  567
+			 ("equal" =))
  568
+		 (string ("substring" s)
  569
+			 ("exact string" e)
  570
+			 ("fuzzy string" f)
  571
+			 ("regexp" r))))
  572
+	(perms '(("temporary" (current-time-string))
  573
+		 ("permanent" nil)
  574
+		 ("immediate" now)))
  575
+	header)
  576
+    (list 
  577
+    (apply 
  578
+     'nconc
  579
+     (list
  580
+      (if (eq type 'lower)
  581
+	  "Lower score"
  582
+	"Increase score"))
  583
+     (let (outh)
  584
+       (while headers
  585
+	 (setq header (car headers))
  586
+	 (setq outh 
  587
+	       (cons 
  588
+		(apply 
  589
+		 'nconc
  590
+		 (list (car header))
  591
+		 (let ((ts (cdr (assoc (nth 2 header) types)))
  592
+		       outt)
  593
+		   (while ts
  594
+		     (setq outt
  595
+			   (cons 
  596
+			     (apply 
  597
+			      'nconc
  598
+			      (list (car (car ts)))
  599
+			      (let ((ps perms)
  600
+				    outp)
  601
+				(while ps
  602
+				  (setq outp
  603
+					(cons
  604
+					 (vector
  605
+					  (car (car ps)) 
  606
+					  (list
  607
+					   'gnus-summary-score-entry
  608
+					   (nth 1 header)
  609
+					   (if (or (string= (nth 1 header) "head")
  610
+						   (string= (nth 1 header) "body"))
  611
+					       ""
  612
+					     (list 'gnus-summary-header 
  613
+						   (nth 1 header)))
  614
+					   (list 'quote (nth 1 (car ts)))
  615
+					   (list 'gnus-score-default nil)
  616
+					   (nth 1 (car ps))
  617
+					   t)
  618
+					  t)
  619
+					 outp))
  620
+				  (setq ps (cdr ps)))
  621
+				(list (nreverse outp))))
  622
+			     outt))
  623
+		     (setq ts (cdr ts)))
  624
+		   (list (nreverse outt))))
  625
+		outh))
  626
+	 (setq headers (cdr headers)))
  627
+       (list (nreverse outh)))))))
448 628
  
449 629
 ;; Article buffer
450 630
 (defun gnus-article-make-menu-bar ()
@@ -911,13 +1091,10 @@ External references are things like message-ids and URLs, as specified by
911 1091
 	(add-text-properties end (point-max) gnus-hidden-properties)))))
912 1092
 
913 1093
 (defun gnus-make-face (color)
914  
-  ;; Create entry for face with background COLOR.
915  
-  (let ((name (intern (concat "gnus " color))))
916  
-    (make-face name)
917  
-    (if gnus-make-foreground
918  
-	(set-face-foreground name color)
919  
-      (set-face-background name color))
920  
-    name))
  1094
+  ;; Create entry for face with COLOR.
  1095
+  (if gnus-make-foreground
  1096
+      (custom-face-lookup color nil nil nil nil nil)
  1097
+    (custom-face-lookup nil color nil nil nil nil)))
921 1098
 
922 1099
 (defun gnus-button-entry ()
923 1100
   ;; Return the first entry in `gnus-button-alist' matching this place.
@@ -977,6 +1154,8 @@ The value is actually the element of LIST whose cdr is ELT."
977 1154
 		  list (cdr list))))
978 1155
 	result)))
979 1156
 
  1157
+(gnus-ems-redefine)
  1158
+
980 1159
 (provide 'gnus-vis)
981 1160
 
982 1161
 ;;; gnus-vis.el ends here
200  lisp/gnus.el
@@ -548,13 +548,13 @@ fuzzy subject simplification is selected.")
548 548
 
549 549
 (defvar gnus-group-default-list-level gnus-level-subscribed
550 550
   "*Default listing level. 
551  
-Ignored if `gnus-group-use-permanent-levels' is nil.")
  551
+Ignored if `gnus-group-use-permanent-levels' is non-nil.")
552 552
 
553 553
 (defvar gnus-group-use-permanent-levels nil
554 554
   "*If non-nil, once you set a level, Gnus will use this level.")
555 555
 
556 556
 (defvar gnus-show-mime nil
557  
-  "*If non-ni, do mime processing of articles.
  557
+  "*If non-nil, do mime processing of articles.
558 558
 The articles will simply be fed to the function given by
559 559
 `gnus-show-mime-method'.")
560 560
 
@@ -682,7 +682,7 @@ beginning of a line.")
682 682
 		    [mail 1.0 point]))
683 683
     (info ([nil 1.0 point]))
684 684
     (summary-faq ([summary 0.25]
685  
-		  [article 1.0 point]))
  685
+		  [faq 1.0 point]))
686 686
     (edit-group ([group 0.5]
687 687
 		 [edit-group 1.0 point]))
688 688
     (edit-server ([server 0.5]
@@ -727,7 +727,8 @@ buffer configuration.")
727 727
     (browse-carpal . gnus-carpal-browse-buffer)
728 728
     (edit-score . gnus-score-edit-buffer)
729 729
     (mail . gnus-mail-buffer)
730  
-    (post . gnus-post-news-buffer))
  730
+    (post . gnus-post-news-buffer)
  731
+    (faq . gnus-faq-buffer))
731 732
   "Mapping from short symbols to buffer names or buffer variables.")
732 733
 
733 734
 (defvar gnus-carpal nil
@@ -981,6 +982,39 @@ If this is nil, Gnus will take space as is needed, leaving the rest
981 982
 of the modeline intact.")
982 983
 
983 984
 ;; Added by Per Abrahamsen <amanda@iesd.auc.dk>.
  985
+(defvar gnus-display-type 
  986
+  (condition-case nil
  987
+      (let ((display-resource (x-get-resource ".displayType" "DisplayType")))
  988
+	(cond (display-resource (intern (downcase display-resource)))
  989
+	      ((x-display-color-p) 'color)
  990
+	      ((x-display-grayscale-p) 'grayscale)
  991
+	      (t 'mono)))
  992
+    (error 'mono))
  993
+  "A symbol indicating the display Emacs is running under.
  994
+The symbol should be one of `color', `grayscale' or `mono'. If Emacs
  995
+guesses this display attribute wrongly, either set this variable in
  996
+your `~/.emacs' or set the resource `Emacs.displayType' in your
  997
+`~/.Xdefaults'. See also `gnus-background-mode'.")
  998
+
  999
+(defvar gnus-background-mode 
  1000
+  (condition-case nil
  1001
+      (let ((bg-resource (x-get-resource ".backgroundMode"
  1002
+					 "BackgroundMode"))
  1003
+	    (params (frame-parameters)))
  1004
+	(cond (bg-resource (intern (downcase bg-resource)))
  1005
+	      ((< (apply '+ (x-color-values
  1006
+			     (cdr (assq 'background-color params))))
  1007
+		  (/ (apply '+ (x-color-values "white")) 3))
  1008
+	       'dark)
  1009
+	      (t 'light)))
  1010
+    (error 'light))
  1011
+  "A symbol indicating the Emacs background brightness.
  1012
+The symbol should be one of `light' or `dark'.
  1013
+If Emacs guesses this frame attribute wrongly, either set this variable in
  1014
+your `~/.emacs' or set the resource `Emacs.backgroundMode' in your
  1015
+`~/.Xdefaults'.
  1016
+See also `gnus-display-type'.")
  1017
+
984 1018
 (defvar gnus-mouse-face 'highlight
985 1019
   "*Face used for mouse highlighting in Gnus.
986 1020
 No mouse highlights will be done if `gnus-visual' is nil.")
@@ -1291,7 +1325,7 @@ variable (string, integer, character, etc).")
1291 1325
 (defconst gnus-maintainer "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls & Boys)"
1292 1326
   "The mail address of the Gnus maintainers.")
1293 1327
 
1294  
-(defconst gnus-version "(ding) Gnus v0.91.1"
  1328
+(defconst gnus-version "(ding) Gnus v0.92"
1295 1329
   "Version number for this version of Gnus.")
1296 1330
 
1297 1331
 (defvar gnus-info-nodes
@@ -3122,7 +3156,7 @@ prompt the user for the name of an NNTP server to use."
3122 3156
   (erase-buffer)
3123 3157
   (insert
3124 3158
    (format "
3125  
-    %s
  3159
+     %s
3126 3160
            A newsreader 
3127 3161
       for GNU Emacs
3128 3162
 
@@ -3130,8 +3164,7 @@ prompt the user for the name of an NNTP server to use."
3130 3164
              written by 
3131 3165
      Masanobu UMEDA
3132 3166
 
3133  
-    Lars Magne 
3134  
-         Ingebrigtsen 
  3167
+      A Praxis Release
3135 3168
       larsi@ifi.uio.no
3136 3169
 " 
3137 3170
 	   gnus-version))
@@ -3141,7 +3174,13 @@ prompt the user for the name of an NNTP server to use."
3141 3174
 		  (/ (max (- (window-width) (or x 28)) 0) 2))
3142 3175
   (goto-char (point-min))
3143 3176
   ;; +4 is fuzzy factor.
3144  
-  (insert-char ?\n (/ (max (- (window-height) (or y 12)) 0) 2)))
  3177
+  (insert-char ?\n (/ (max (- (window-height) (or y 12)) 0) 2))
  3178
+
  3179
+  ;; Fontify some.
  3180
+  (goto-char (point-min))
  3181
+  (search-forward "Praxis")
  3182
+  (put-text-property (match-beginning 0) (match-end 0) 'face 'bold)
  3183
+  (goto-char (point-min)))
3145 3184
 
3146 3185
 (defun gnus-group-setup-buffer ()
3147 3186
   (or (get-buffer gnus-group-buffer)
@@ -3392,8 +3431,8 @@ moves the point to the colon."
3392 3431
 	   nil group (nth 1 info) (nth 3 info) (car entry) (nth 4 info)))
3393 3432
       (setq active (gnus-gethash group gnus-active-hashtb))
3394 3433
       (gnus-group-insert-group-line 
3395  
-       nil group (if (member group gnus-zombie-list) gnus-level-zombie
3396  
-		   gnus-level-killed)
  3434
+       nil group 
  3435
+       (if (member group gnus-zombie-list) gnus-level-zombie gnus-level-killed)
3397 3436
        nil (if active (- (1+ (cdr active)) (car active)) 0) nil))))
3398 3437
 
3399 3438
 (defun gnus-group-insert-group-line (gformat group level marked number method)
@@ -3527,6 +3566,10 @@ If VISIBLE-ONLY is non-nil, the group won't be displayed if it isn't already."
3527 3566
   "Get the level of the newsgroup on the current line."
3528 3567
   (get-text-property (gnus-point-at-bol) 'gnus-level))
3529 3568
 
  3569
+(defun gnus-group-group-unread ()
  3570
+  "Get the number of unread articles of the newsgroup on the current line."
  3571
+  (get-text-property (gnus-point-at-bol) 'gnus-unread))
  3572
+
3530 3573
 (defun gnus-group-search-forward (&optional backward all level first-too)
3531 3574
   "Find the next newsgroup with unread articles.
3532 3575
 If BACKWARD is non-nil, find the previous newsgroup instead.
@@ -3574,7 +3617,7 @@ If FIRST-TOO, the current line is also eligible as a target."
3574 3617
 
3575 3618
 ;; Group marking.
3576 3619
 
3577  
-(defun gnus-group-mark-group (n &optional unmark)
  3620
+(defun gnus-group-mark-group (n &optional unmark no-advance)
3578 3621
   "Mark the current group."
3579 3622
   (interactive "p")
3580 3623
   (let ((buffer-read-only nil)
@@ -3594,7 +3637,7 @@ If FIRST-TOO, the current line is also eligible as a target."
3594 3637
 		 (setq gnus-group-marked
3595 3638
 		       (cons group (delete group gnus-group-marked))))
3596 3639
 	       t)
3597  
-	     (zerop (gnus-group-next-group 1)))
  3640
+	     (or no-advance (zerop (gnus-group-next-group 1))))
3598 3641
       (setq n (1- n)))
3599 3642
     (gnus-summary-position-cursor)
3600 3643
     n))
@@ -3616,7 +3659,7 @@ If UNMARK, remove the mark instead."
3616 3659
 (defun gnus-group-remove-mark (group)
3617 3660
   (and (gnus-group-goto-group group)
3618 3661
        (save-excursion
3619  
-	 (gnus-group-mark-group 1 'unmark))))
  3662
+	 (gnus-group-mark-group 1 'unmark t))))
3620 3663
 
3621 3664
 ;; Return a list of groups to work on.  Take into consideration N (the
3622 3665
 ;; prefix) and the list of marked groups.
@@ -3859,11 +3902,12 @@ ADDRESS."
3859 3902
 	  (gnus-gethash (gnus-group-group-name)
3860 3903
 			gnus-newsrc-hashtb))
3861 3904
      t)
3862  
-    (gnus-sethash nname '(0 . 0) gnus-active-hashtb)
  3905
+    (gnus-sethash nname (cons 1 0) gnus-active-hashtb)
3863 3906
     (gnus-dribble-enter 
3864 3907
      (concat "(gnus-group-set-info '" (prin1-to-string (cdr info)) ")"))
3865 3908
     (gnus-group-insert-group-line-info nname)
3866 3909
 
  3910
+    (require (intern method))
3867 3911
     (and (gnus-check-backend-function 'request-create-group nname)
3868 3912
 	 (gnus-request-create-group nname))))
3869 3913
 
@@ -4205,10 +4249,12 @@ or nil if no action could be taken."
4205 4249
 (defun gnus-group-expire-all-groups ()
4206 4250
   "Expire all expirable articles in all newsgroups."
4207 4251
   (interactive)
4208  
-  (gnus-message 5 "Expiring...")
4209  
-  (let ((gnus-group-marked (mapcar (lambda (info) (car info))
4210  
-				   (cdr gnus-newsrc-alist))))
4211  
-    (gnus-group-expire-articles nil))
  4252
+  (save-excursion
  4253
+    (gnus-message 5 "Expiring...")
  4254
+    (let ((gnus-group-marked (mapcar (lambda (info) (car info))
  4255
+				     (cdr gnus-newsrc-alist))))
  4256
+      (gnus-group-expire-articles nil)))
  4257
+  (gnus-group-position-cursor)
4212 4258
   (gnus-message 5 "Expiring...done"))
4213 4259
 
4214 4260
 (defun gnus-group-set-current-level (n level)
@@ -5272,7 +5318,7 @@ buffer.
5272 5318
 
5273 5319
 
5274 5320
 
5275  
-(defun gnus-summary-mode ()
  5321
+(defun gnus-summary-mode (&optional group)
5276 5322
   "Major mode for reading articles.
5277 5323
 
5278 5324
 All normal editing commands are switched off.
@@ -5321,6 +5367,7 @@ The following commands are available:
5321 5367
   (setq selective-display t)
5322 5368
   (setq selective-display-ellipses t)	;Display `...'
5323 5369
   (setq buffer-display-table gnus-summary-display-table)
  5370
+  (setq gnus-newsgroup-name group)
5324 5371
   (run-hooks 'gnus-summary-mode-hook))
5325 5372
 
5326 5373
 (defun gnus-summary-make-display-table ()
@@ -5372,7 +5419,7 @@ The following commands are available:
5372 5419
       ;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>
5373 5420
       (setq gnus-summary-buffer (set-buffer (get-buffer-create buffer)))
5374 5421
       (gnus-add-current-to-buffer-list)
5375  
-      (gnus-summary-mode)
  5422
+      (gnus-summary-mode group)
5376 5423
       (and gnus-carpal (gnus-carpal-setup-buffer 'summary))
5377 5424
       (setq gnus-newsgroup-name group)
5378 5425
       t)))
@@ -5504,6 +5551,8 @@ If SHOW-ALL is non-nil, already read articles are also listed.
5504 5551
 If NO-ARTICLE is non-nil, no article is selected initially."
5505 5552
   (gnus-message 5 "Retrieving newsgroup: %s..." group)
5506 5553
   (let* ((new-group (gnus-summary-setup-buffer group))
  5554
+	 (quit-config (nth 1 (assoc 'quit-config (gnus-find-method-for-group
  5555
+						  group))))
5507 5556
 	 (did-select (and new-group (gnus-select-newsgroup group show-all))))
5508 5557
     (cond 
5509 5558
      ((not new-group)
@@ -5519,8 +5568,17 @@ If NO-ARTICLE is non-nil, no article is selected initially."
5519 5568
 	   (not (equal (current-buffer) kill-buffer))
5520 5569
 	   (progn
5521 5570
 	     (kill-buffer (current-buffer))
5522  
-	     (set-buffer gnus-group-buffer)
5523  
-	     (gnus-group-next-unread-group 1)))
  5571
+	     (if (not quit-config)
  5572
+		 (progn
  5573
+		   (set-buffer gnus-group-buffer)
  5574
+		   (gnus-group-jump-to-group group)
  5575
+		   (gnus-group-next-unread-group 1))
  5576
+	       (if (not (buffer-name (car quit-config)))
  5577
+		   (gnus-configure-windows 'group)
  5578
+		 (set-buffer (car quit-config))
  5579
+		 (and (eq major-mode 'gnus-summary-mode)
  5580
+		      (gnus-set-global-variables))
  5581
+		 (gnus-configure-windows (cdr quit-config))))))
5524 5582
       (message "Can't select group")
5525 5583
       nil)
5526 5584
      ((eq did-select 'quit)
@@ -5528,8 +5586,17 @@ If NO-ARTICLE is non-nil, no article is selected initially."
5528 5586
 	   (not (equal (current-buffer) kill-buffer))
5529 5587
 	   (kill-buffer (current-buffer)))
5530 5588
       (gnus-kill-buffer kill-buffer)
5531  
-      (gnus-configure-windows 'group)
5532  
-      (gnus-group-next-unread-group 1)
  5589
+      (if (not quit-config)
  5590
+	  (progn
  5591
+	    (set-buffer gnus-group-buffer)
  5592
+	    (gnus-group-jump-to-group group)
  5593
+	    (gnus-group-next-unread-group 1))
  5594
+	(if (not (buffer-name (car quit-config)))
  5595
+	    (gnus-configure-windows 'group)
  5596
+	  (set-buffer (car quit-config))
  5597
+	  (and (eq major-mode 'gnus-summary-mode)
  5598
+	       (gnus-set-global-variables))
  5599
+	  (gnus-configure-windows (cdr quit-config))))
5533 5600
       (signal 'quit nil))
5534 5601
      (t
5535 5602
       (gnus-set-global-variables)
@@ -7259,9 +7326,9 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
7259 7326
 	(progn
7260 7327
 	  (gnus-group-jump-to-group group)
7261 7328
 	  (gnus-group-next-unread-group 1)))
  7329
+    (and gnus-use-cache (gnus-cache-possibly-remove-articles))
7262 7330
     (if temporary
7263 7331
 	nil				;Nothing to do.
7264  
-      (and gnus-use-cache (gnus-cache-possibly-remove-articles))
7265 7332
       ;; We set all buffer-local variables to nil. It is unclear why
7266 7333
       ;; this is needed, but if we don't, buffer-local variables are
7267 7334
       ;; not garbage-collected, it seems. This would the lead to en
@@ -7294,6 +7361,7 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
7294 7361
 (defun gnus-summary-exit-no-update (&optional no-questions)
7295 7362
   "Quit reading current newsgroup without updating read article info."
7296 7363
   (interactive)
  7364
+  (gnus-set-global-variables)
7297 7365
   (let* ((group gnus-newsgroup-name)
7298 7366
 	 (quit-config (nth 1 (assoc 'quit-config 
7299 7367
 				    (gnus-find-method-for-group group)))))
@@ -7327,8 +7395,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
7327 7395
 (defun gnus-summary-fetch-faq (group)
7328 7396
   "Fetch the FAQ for the current group."
7329 7397
   (interactive (list gnus-newsgroup-name))
7330  
-  (gnus-configure-windows 'summary-faq)
7331  
-  (find-file (concat gnus-group-faq-directory group)))
  7398
+  (let ((gnus-faq-buffer 
  7399
+	 (find-file (concat gnus-group-faq-directory 
  7400
+			    (gnus-group-real-name group)))))
  7401
+  (and gnus-faq-buffer (gnus-configure-windows 'summary-faq))))
7332 7402
 
7333 7403
 ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
7334 7404
 (defun gnus-summary-describe-group (force)
@@ -7344,7 +7414,48 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
7344 7414
 
7345 7415
 ;; Walking around group mode buffer from summary mode.
7346 7416
 
7347  
-(defun gnus-summary-next-group (&optional no-article group backward)
  7417
+(defun gnus-summary-next-group (&optional no-article target-group backward)
  7418
+  "Exit current newsgroup and then select next unread newsgroup.
  7419
+If prefix argument NO-ARTICLE is non-nil, no article is selected
  7420
+initially. If NEXT-GROUP, go to this group. If BACKWARD, go to
  7421
+previous group instead."
  7422
+  (interactive "P")
  7423
+  (gnus-set-global-variables)
  7424
+  (let ((current-group gnus-newsgroup-name)
  7425
+	(current-buffer (current-buffer))
  7426
+	entered)
  7427
+    ;; First we semi-exit this group to update Xrefs and all variables.
  7428
+    ;; We can't do a real exit, because the window conf must remain
  7429
+    ;; the same in case the user is prompted for info, and we don't
  7430
+    ;; want the window conf to change before that...
  7431
+    (gnus-summary-exit t)
  7432
+    (while (not entered)
  7433
+      ;; Then we find what group we are supposed to enter.
  7434
+      (set-buffer gnus-group-buffer)
  7435
+      (gnus-group-jump-to-group current-group)
  7436
+      (setq target-group 
  7437
+	    (or target-group 	    
  7438
+		(if (eq gnus-keep-same-level 'best) 
  7439
+		    (gnus-summary-best-group gnus-newsgroup-name)
  7440
+		  (gnus-summary-search-group backward gnus-keep-same-level))))
  7441
+      (if (not target-group)
  7442
+	  ;; There are no further groups, so we return to the group
  7443
+	  ;; buffer.
  7444
+	  (progn
  7445
+	    (gnus-message 5 "Returning to the group buffer")
  7446
+	    (setq entered t)
  7447
+	    (set-buffer current-buffer)
  7448
+	    (gnus-summary-exit))
  7449
+	;; We try to enter the target group.
  7450
+	(gnus-group-jump-to-group target-group)
  7451
+	(if (and (not (zerop (gnus-group-group-unread)))
  7452
+		 (gnus-summary-read-group
  7453
+		  target-group nil no-article current-buffer))
  7454
+	    (setq entered t)
  7455
+	  (setq current-group target-group
  7456
+		target-group nil))))))
  7457
+
  7458
+(defun gnus-summary-next-group-old (&optional no-article group backward)
7348 7459
   "Exit current newsgroup and then select next unread newsgroup.
7349 7460
 If prefix argument NO-ARTICLE is non-nil, no article is selected initially.
7350 7461
 If BACKWARD, go to previous group instead."
@@ -8071,7 +8182,7 @@ article. If BACKWARD (the prefix) is non-nil, search backward instead."
8071 8182
   (gnus-set-global-variables)
8072 8183
   (gnus-summary-select-article gnus-have-all-headers t))
8073 8184
 
8074  
-(defun gnus-summary-verbose-header (arg)
  8185
+(defun gnus-summary-verbose-headers (arg)
8075 8186
   "Toggle permanent full header display.
8076 8187
 If ARG is a positive number, turn header display on.
8077 8188
 If ARG is a negative number, turn header display off."
@@ -8169,7 +8280,7 @@ and `request-accept' functions. (Ie. mail newsgroups at present.)"
8169 8280
       (error "The current newsgroup does not support article moving"))
8170 8281
   (let ((articles (gnus-summary-work-articles n))
8171 8282
 	(prefix (gnus-group-real-prefix gnus-newsgroup-name))
8172  
-	art-group)
  8283
+	art-group to-method)
8173 8284
     (if (and (not to-newsgroup) (not select-method))
8174 8285
 	(setq to-newsgroup
8175 8286
 	      (completing-read 
@@ -8189,9 +8300,13 @@ and `request-accept' functions. (Ie. mail newsgroups at present.)"
8189 8300
 	      (gnus-activate-newsgroup to-newsgroup)
8190 8301
               (error "No such group: %s" to-newsgroup))
8191 8302
           (setq gnus-current-move-group to-newsgroup)))
8192  
-    (or (gnus-check-backend-function 'request-accept-article 
8193  
-				     (or select-method to-newsgroup))
8194  
-	(error "%s does not support article moving" to-newsgroup))
  8303
+    (setq to-method (or select-method (gnus-find-method-for-group
  8304
+				       to-newsgroup)))
  8305
+    (or (gnus-check-backend-function 'request-accept-article (car to-method))
  8306
+	(error "%s does not support article copying" (car to-method)))
  8307
+    (or (gnus-server-opened to-method)
  8308
+	(gnus-open-server to-method)
  8309
+	(error "Can't open server %s" (car to-method)))
8195 8310
     (gnus-message 6 "Moving to %s: %s..." 
8196 8311
 		  (or select-method to-newsgroup) articles)
8197 8312
     (while articles
@@ -8297,7 +8412,7 @@ functions. (Ie. mail newsgroups at present.)"
8297 8412
   (let ((articles (gnus-summary-work-articles n))
8298 8413
 	(copy-buf (get-buffer-create "*copy work*"))
8299 8414
 	(prefix (gnus-group-real-prefix gnus-newsgroup-name))
8300  
-	art-group)
  8415
+	art-group to-method)
8301 8416
     (buffer-disable-undo copy-buf)
8302 8417
     (if (and (not to-newsgroup) (not select-method))
8303 8418
 	(setq to-newsgroup
@@ -8318,9 +8433,13 @@ functions. (Ie. mail newsgroups at present.)"
8318 8433
 	      (gnus-activate-newsgroup to-newsgroup)
8319 8434
               (error "No such group: %s" to-newsgroup))
8320 8435
           (setq gnus-current-move-group to-newsgroup)))
8321  
-    (or (gnus-check-backend-function 'request-accept-article 
8322  
-				     (or select-method to-newsgroup))
8323  
-	(error "%s does not support article copying" to-newsgroup))
  8436
+    (setq to-method (or select-method (gnus-find-method-for-group
  8437
+				       to-newsgroup)))
  8438
+    (or (gnus-check-backend-function 'request-accept-article (car to-method))
  8439
+	(error "%s does not support article copying" (car to-method)))
  8440
+    (or (gnus-server-opened to-method)
  8441
+	(gnus-open-server to-method)
  8442
+	(error "Can't open server %s" (car to-method)))
8324 8443
     (gnus-message 6 "Copying to %s: %s..." 
8325 8444
 		  (or select-method to-newsgroup) articles)
8326 8445
     (while articles
@@ -8811,7 +8930,7 @@ marked."
8811 8930
 	   (and (numberp mark) 
8812 8931
 		(or (= mark gnus-killed-mark) (= mark gnus-del-mark)
8813 8932
 		    (= mark gnus-catchup-mark) (= mark gnus-low-score-mark)
8814  
-		    (= mark gnus-read-mark) (= mark gnus-ancient-mark))))
  8933
+		    (= mark gnus-read-mark))))
8815 8934
        (setq mark gnus-expirable-mark))
8816 8935
   (let* ((mark (or (and (stringp mark) (aref mark 0)) mark gnus-del-mark))
8817 8936
 	 (article (or article (gnus-summary-article-number))))
@@ -8992,7 +9111,8 @@ even ticked and dormant ones."
8992 9111
 	    (lambda (char) (char-to-string (symbol-value char)))
8993 9112
 	    '(gnus-del-mark gnus-read-mark gnus-ancient-mark
8994 9113
 	      gnus-killed-mark gnus-kill-file-mark
8995  
-	      gnus-low-score-mark gnus-expirable-mark)
  9114
+	      gnus-low-score-mark gnus-expirable-mark
  9115
+	      gnus-canceled-mark)
8996 9116
 	    ""))))
8997 9117
 
8998 9118
 (defalias 'gnus-summary-delete-marked-with 
11  lisp/nnbabyl.el
@@ -116,6 +116,7 @@
116 116
 	     (message "nnbabyl: Receiving headers...done"))
117 117
 
118 118
 	;; Fold continuation lines.
  119
+	(set-buffer nntp-server-buffer)
119 120
 	(goto-char (point-min))
120 121
 	(while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
121 122
 	  (replace-match " " t t))
@@ -202,6 +203,16 @@
202 203
 (defun nnbabyl-close-group (group &optional server)
203 204
   t)
204 205
 
  206
+(defun nnbabyl-request-create-group (group &optional server) 
  207
+  (nnbabyl-request-list)
  208
+  (setq nnbabyl-group-alist (nnmail-get-active))
  209
+  (or (assoc group nnbabyl-group-alist)
  210
+      (let (active)
  211
+	(setq nnbabyl-group-alist (cons (list group (setq active (cons 1 0)))
  212
+					nnbabyl-group-alist))
  213
+	(nnmail-save-active nnbabyl-group-alist nnbabyl-active-file)))
  214
+  t)
  215
+
205 216
 (defun nnbabyl-request-list (&optional server)
206 217
   (if server (nnbabyl-get-new-mail))
207 218
   (save-excursion
1  lisp/nnmbox.el
@@ -120,6 +120,7 @@
120 120
 	     (message "nnmbox: Receiving headers...done"))
121 121
 
122 122
 	;; Fold continuation lines.
  123
+	(set-buffer nntp-server-buffer)
123 124
 	(goto-char (point-min))
124 125
 	(while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
125 126
 	  (replace-match " " t t))
21  lisp/nntp.el
@@ -168,6 +168,8 @@ instead call function `nntp-status-message' to get status message.")
168 168
 (defvar nntp-async-buffer nil)
169 169
 (defvar nntp-async-articles nil)
170 170
 (defvar nntp-async-fetched nil)
  171
+(defvar nntp-async-group-alist nil)
  172
+
171 173
 
172 174
 
173 175
 (defvar nntp-current-server nil)
@@ -192,6 +194,7 @@ instead call function `nntp-status-message' to get status message.")
192 194
    '(nntp-async-buffer nil)
193 195
    '(nntp-async-articles nil)
194 196
    '(nntp-async-fetched nil)
  197
+   '(nntp-async-group-alist nil)
195 198
    '(nntp-server-process nil)
196 199
    '(nntp-status-string nil)
197 200
    '(nntp-server-xover try)
@@ -393,7 +396,8 @@ instead call function `nntp-status-message' to get status message.")
393 396
 	   (buffer-name proc)
394 397
 	   (kill-buffer proc))
395 398
       (setq nntp-server-alist (cdr nntp-server-alist)))
396  
-    (setq nntp-current-server nil)))
  399
+    (setq nntp-current-server nil
  400
+	  nntp-async-group-alist nil)))
397 401
 
398 402
 (defun nntp-server-opened (&optional server)
399 403
   "Say whether a connection to SERVER has been opened."
@@ -489,6 +493,7 @@ instead call function `nntp-status-message' to get status message.")
489 493
 
490 494
 (defun nntp-request-group (group &optional server dont-check)
491 495
   "Select GROUP."
  496
+  (and nntp-async-articles (nntp-async-request-group group))
492 497
   (nntp-send-command "^.*\r?\n" "GROUP" group)
493 498
   (save-excursion
494 499
     (set-buffer nntp-server-buffer)
@@ -1195,6 +1200,20 @@ defining this function as macro."
1195 1200
 	(error (nntp-status-message)))
1196 1201
     (process-send-string nntp-async-process cmd)))
1197 1202
 
  1203
+(defun nntp-async-request-group (group)
  1204
+  (if (string= group nntp-current-group)
  1205
+      ()
  1206
+    (let ((asyncs (assoc group nntp-async-group-alist)))
  1207
+      (if (not asyncs)
  1208
+	  ()
  1209
+	;; A new group has been selected, so we push the current state
  1210
+	;; of async articles on an alist, and pull the old state off.
  1211
+	(setq nntp-async-group-alist 
  1212
+	      (cons (list group nntp-async-articles nntp-async-fetched)
  1213
+		    (delq asyncs nntp-async-group-alist)))
  1214
+	(setq nntp-async-articles (nth 1 asyncs))
  1215
+	(setq nntp-async-fetched (nth 2 asyncs))))))
  1216
+
1198 1217
 (provide 'nntp)
1199 1218
 
1200 1219
 ;;; nntp.el ends here
2  texi/gnus.texi
... ...
@@ -1,6 +1,6 @@
1 1
 \input texinfo                  @c -*-texinfo-*-
2 2
 @comment %**start of header (This is for running Texinfo on a region.)
3  
-@setfilename gnus
  3
+@setfilename gnus.info
4 4
 @settitle (ding) Gnus 0.84 Manual
5 5
 @synindex fn cp
6 6
 @synindex vr cp

0 notes on commit 0fc12dd

Please sign in to comment.
Something went wrong with that request. Please try again.