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 c66544cbcf56f439e6fc8c07079c829e7e16d1e0 1 parent ef4ed15
Lars Ingebrigtsen authored March 04, 1997
39  lisp/ChangeLog
... ...
@@ -1,8 +1,47 @@
  1
+Sun Dec 17 16:06:11 1995  Lars Magne Ingebrigtsen  <larsi@hymir.ifi.uio.no>
  2
+
  3
+	* nndoc.el (nndoc-guess-digest-type): Didn't grok MIME digests.
  4
+
  5
+	* gnus.el (gnus-all-windows-visible-p): Would bug out on buffers
  6
+	that didn't exist. 
  7
+	(gnus-all-windows-visible-p): Allow strings in buffer-config.
  8
+	(gnus-configure-frame): Ditto.
  9
+	(gnus-remove-text-with-property): Didn't remove all text.
  10
+
  11
+	* gnus-uu.el (gnus-uu-grab-articles): Would delete files after
  12
+	decoding them. 
  13
+
  14
+Sun Dec 17 00:12:34 1995  Lars Ingebrigtsen  <lars@eyesore.no>
  15
+
  16
+	* gnus-score.el (gnus-score-followup-article): New command.
  17
+	(gnus-score-followup-thread): New command.
  18
+
  19
+	* gnus.el (gnus-compile): New implementation; save in
  20
+	.newsrc.eld. 
  21
+	(gnus-summary-rethread-thread): New command and keystroke.
  22
+
  23
+Sat Dec 16 22:22:58 1995  Lars Ingebrigtsen  <lars@eyesore.no>
  24
+
  25
+	* nnspool.el (nnspool-find-article-by-message-id): Decompose the
  26
+	output; renamed.
  27
+	(nnspool-request-article): Use the function.
  28
+	(nnspool-retrieve-headers): Ditto.
  29
+
  30
+	* gnus.el (gnus-group-catchup): Do the auto-expirable thaang.
  31
+
  32
+	* gnus-cache.el (gnus-cache-possibly-enter-article): Don't enter
  33
+	empty articles into the cache.
  34
+
  35
+	* nnspool.el (nnspool-find-nov-line): Would often not find the
  36
+	right line.
  37
+
1 38
 Sat Dec 16 14:26:27 1995  Lars Magne Ingebrigtsen  <larsi@narfi.ifi.uio.no>
2 39
 
3 40
 	* gnus.el (gnus-summary-exit): Would nix out the group name of
4 41
 	parents to nndoc groups.
5 42
 
  43
+	* gnus.el: 0.23 is released.
  44
+
6 45
 Fri Dec 15 20:55:26 1995  Lars Ingebrigtsen  <lars@eyesore.no>
7 46
 
8 47
 	* gnus.el (gnus-buffer-configuration): New default value.
7  lisp/dgnushack.el
@@ -44,9 +44,12 @@
44 44
 	(setq byte-compile-warnings 
45 45
 	      '(free-vars unresolved callargs redefine obsolete))))
46 46
       (and (or (and (not (string= file "gnus-xmas.el"))
47  
-		    (not (string= file "x-easymenu.el")))
  47
+		    (not (string= file "x-easymenu.el"))
  48
+		    (not (string= file "gnus-picon.el")))
48 49
 	       xemacs)
49  
-	   (byte-compile-file file)))))
  50
+	   (condition-case ()
  51
+	       (byte-compile-file file)
  52
+	     (error nil))))))
50 53
 
51 54
 (defun dgnushack-recompile ()
52 55
   (require 'gnus)
81  lisp/gnus-cache.el
@@ -128,45 +128,44 @@ variable to \"^nnml\".")
128 128
 	    (gnus-summary-select-article))
129 129
 	  (save-excursion
130 130
 	    (set-buffer gnus-original-article-buffer)
131  
-	    (save-restriction
132  
-	      (widen)
133  
-	      (write-region (point-min) (point-max) file nil 'quiet))
134  
-	    (gnus-cache-change-buffer group)
135  
-	    (set-buffer (cdr gnus-cache-buffer))
136  
-	    (goto-char (point-max))
137  
-	    (forward-line -1)
138  
-	    (while (condition-case ()
139  
-		       (and (not (bobp))
140  
-			    (> (read (current-buffer)) number))
141  
-		     (error
142  
-		      ;; The line was malformed, so we just remove it!!
143  
-		      (gnus-delete-line)
144  
-		      t))
145  
-	      (forward-line -1))
146  
-	    (if (bobp) 
147  
-		(if (not (eobp))
148  
-		    (progn
149  
-		      (beginning-of-line)
150  
-		      (if (< (read (current-buffer)) number)
151  
-			  (forward-line 1)))
152  
-		  (beginning-of-line))
153  
-	      (forward-line 1))
154  
-	    (beginning-of-line)
155  
-	    ;; [number subject from date id references chars lines xref]
156  
-	    (insert (format "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n"
157  
-			    (mail-header-number headers)
158  
-			    (mail-header-subject headers)
159  
-			    (mail-header-from headers)
160  
-			    (mail-header-date headers)
161  
-			    (mail-header-id headers)
162  
-			    (or (mail-header-references headers) "")
163  
-			    (or (mail-header-chars headers) "")
164  
-			    (or (mail-header-lines headers) "")
165  
-			    (or (mail-header-xref headers) ""))))
166  
-	  ;; Update the active info.
167  
-	  (gnus-cache-update-active group number)
168  
-	  (push number gnus-newsgroup-cached)
169  
-	  t)))))
  131
+	    (when (> (buffer-size) 0)
  132
+	      (write-region (point-min) (point-max) file nil 'quiet)
  133
+	      (gnus-cache-change-buffer group)
  134
+	      (set-buffer (cdr gnus-cache-buffer))
  135
+	      (goto-char (point-max))
  136
+	      (forward-line -1)
  137
+	      (while (condition-case ()
  138
+			 (and (not (bobp))
  139
+			      (> (read (current-buffer)) number))
  140
+		       (error
  141
+			;; The line was malformed, so we just remove it!!
  142
+			(gnus-delete-line)
  143
+			t))
  144
+		(forward-line -1))
  145
+	      (if (bobp) 
  146
+		  (if (not (eobp))
  147
+		      (progn
  148
+			(beginning-of-line)
  149
+			(if (< (read (current-buffer)) number)
  150
+			    (forward-line 1)))
  151
+		    (beginning-of-line))
  152
+		(forward-line 1))
  153
+	      (beginning-of-line)
  154
+	      ;; [number subject from date id references chars lines xref]
  155
+	      (insert (format "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n"
  156
+			      (mail-header-number headers)
  157
+			      (mail-header-subject headers)
  158
+			      (mail-header-from headers)
  159
+			      (mail-header-date headers)
  160
+			      (mail-header-id headers)
  161
+			      (or (mail-header-references headers) "")
  162
+			      (or (mail-header-chars headers) "")
  163
+			      (or (mail-header-lines headers) "")
  164
+			      (or (mail-header-xref headers) "")))
  165
+	      ;; Update the active info.
  166
+	      (gnus-cache-update-active group number)
  167
+	      (push number gnus-newsgroup-cached))
  168
+	    t))))))
170 169
 
171 170
 (defun gnus-cache-enter-remove-article (article)
172 171
   "Mark ARTICLE for later possible removal."
@@ -503,9 +502,9 @@ If LOW, update the lower bound instead."
503 502
 	    (string-match 
504 503
 	     (concat "^" (file-name-as-directory
505 504
 			  (expand-file-name gnus-cache-directory)))
506  
-	     directory)
  505
+	     (file-name-as-directory directory))
507 506
 	    (gnus-replace-chars-in-string 
508  
-	     (substring directory (match-end 0))
  507
+	     (substring (file-name-as-directory directory) (match-end 0))
509 508
 	     ?/ ?.)))
510 509
 	 nums alphs)
511 510
     (when top
24  lisp/gnus-picon.el
@@ -53,19 +53,19 @@
53 53
 	(beginning-of-buffer)
54 54
 	(open-line 1)
55 55
 	(let* ((iconpoint (point)) (from (mail-fetch-field "from"))
56  
-	  (username 
57  
-	   (progn
58  
-	     (string-match "\\([-_a-zA-Z0-9]+\\)@" from)
59  
-	     (match-string 1 from)))
60  
-	   (hostpath
61  
-	    (gnus-picons-reverse-domain-path
62  
-	     (replace-in-string
63  
-	      (replace-in-string from ".*@\\([_a-zA-Z0-9-.]+\\).*" "\\1") 
64  
-	      "\\." "/"))))
  56
+	       (username 
  57
+		(progn
  58
+		  (string-match "\\([-_a-zA-Z0-9]+\\)@" from)
  59
+		  (match-string 1 from)))
  60
+	       (hostpath
  61
+		(gnus-picons-reverse-domain-path
  62
+		 (replace-in-string
  63
+		  (replace-in-string from ".*@\\([_a-zA-Z0-9-.]+\\).*" "\\1") 
  64
+		  "\\." "/"))))
65 65
 	  (if (equal username from)
66  
-		(setq username (replace-in-string from 
67  
-						  ".*<\\([_a-zA-Z0-9-.]+\\)>.*" 
68  
-						  "\\1")))
  66
+	      (setq username (replace-in-string from 
  67
+						".*<\\([_a-zA-Z0-9-.]+\\)>.*" 
  68
+						"\\1")))
69 69
 	  (insert username)
70 70
 	  (gnus-picons-insert-face-if-exists 
71 71
 	   (concat gnus-picons-database "/" gnus-picons-news-directory)
26  lisp/gnus-score.el
@@ -597,6 +597,32 @@ SCORE is the score to add."
597 597
   (gnus-score-set 'expunge (list score))
598 598
   (gnus-score-set 'touched '(t)))
599 599
 
  600
+(defun gnus-score-followup-article (&optional score)
  601
+  "Add SCORE to all followups to the article in the current buffer."
  602
+  (interactive "P")
  603
+  (setq score (gnus-score-default score))
  604
+  (save-excursion
  605
+    (save-restriction
  606
+      (goto-char (point-min))
  607
+      (let ((id (mail-fetch-field "message-id")))
  608
+	(when id
  609
+	  (gnus-summary-score-entry
  610
+	   "references" (concat id "[ \t]*$") 'r
  611
+	   score (current-time-string)))))))
  612
+
  613
+(defun gnus-score-followup-thread (&optional score)
  614
+  "Add SCORE to all later articles in the thread the current buffer is part of."
  615
+  (interactive "P")
  616
+  (setq score (gnus-score-default score))
  617
+  (save-excursion
  618
+    (save-restriction
  619
+      (goto-char (point-min))
  620
+      (let ((id (mail-fetch-field "message-id")))
  621
+	(when id
  622
+	  (gnus-summary-score-entry
  623
+	   "references" id 's
  624
+	   score (current-time-string)))))))
  625
+
600 626
 (defun gnus-score-set (symbol value &optional alist)
601 627
   ;; Set SYMBOL to VALUE in ALIST.
602 628
   (let* ((alist 
4  lisp/gnus-uu.el
@@ -1164,8 +1164,8 @@ The headers will be included in the sequence they are matched.")
1164 1164
       ;; If this is the last article to be decoded, and
1165 1165
       ;; we still haven't reached the end, then we delete
1166 1166
       ;; the partially decoded file.
1167  
-      (and (or (eq state 'last) (eq state 'first-and-last)
1168  
-	       (not (memq 'end process-state)))
  1167
+      (and (or (eq state 'last) (eq state 'first-and-last))
  1168
+	   (not (memq 'end process-state))
1169 1169
 	   result-file 
1170 1170
 	   (file-exists-p result-file)
1171 1171
 	   (delete-file result-file))
11  lisp/gnus-vis.el
@@ -1486,22 +1486,23 @@ specified by `gnus-button-alist'."
1486 1486
 (defvar gnus-prev-page-map nil)
1487 1487
 (unless gnus-prev-page-map
1488 1488
   (setq gnus-prev-page-map (make-sparse-keymap))
1489  
-  (define-key gnus-prev-page-map "\n" 'gnus-article-prev-page))
  1489
+  (define-key gnus-prev-page-map gnus-mouse-2 'gnus-article-prev-page)
  1490
+  (define-key gnus-prev-page-map "\r" 'gnus-article-prev-page))
1490 1491
 
1491 1492
 (defun gnus-insert-prev-page-button ()
1492 1493
   (let ((buffer-read-only nil))
1493  
-    (gnus-remove-text-with-property 'gnus-prev)
1494 1494
     (gnus-eval-format gnus-prev-page-line-format nil
1495 1495
 		      `(gnus-prev t local-map ,gnus-prev-page-map))))
1496 1496
 
1497 1497
 (defvar gnus-next-page-map nil)
1498 1498
 (unless gnus-next-page-map
1499  
-  (setq gnus-next-page-map (make-sparse-keymap))
1500  
-  (define-key gnus-next-page-map "\n" 'gnus-article-next-page))
  1499
+  (setq gnus-next-page-map (make-keymap))
  1500
+  (suppress-keymap gnus-prev-page-map)
  1501
+  (define-key gnus-next-page-map gnus-mouse-2 'gnus-article-next-page)
  1502
+  (define-key gnus-next-page-map "\r" 'gnus-article-next-page))
1501 1503
 
1502 1504
 (defun gnus-insert-next-page-button ()
1503 1505
   (let ((buffer-read-only nil))
1504  
-    (gnus-remove-text-with-property 'gnus-next)
1505 1506
     (gnus-eval-format gnus-next-page-line-format nil
1506 1507
 		      `(gnus-next t local-map ,gnus-next-page-map))))
1507 1508
 
230  lisp/gnus.el
@@ -775,14 +775,18 @@ beginning of a line.")
775 775
 	       (summary 1.0 point)
776 776
 	       (if gnus-carpal (summary-carpal 4))))
777 777
     (article
778  
-     (vertical 1.0
779  
-	       (if gnus-use-picon
780  
-		   '(horizontal 0.25
781  
-				(summary 1.0 point)
782  
-				(picon 10))
783  
-		 '(summary 0.25 point))
784  
-	       (if gnus-carpal (summary-carpal 4)) 
785  
-	       (article 1.0)))
  778
+     (if gnus-use-picon
  779
+	 '(frame 1.0
  780
+		 (vertical 1.0
  781
+			   (summary 0.25 point)
  782
+			   (if gnus-carpal (summary-carpal 4)) 
  783
+			   (article 1.0))
  784
+		 (vertical 1.0
  785
+			   (picon 1.0)))
  786
+       '(vertical 1.0
  787
+		 (summary 0.25 point)
  788
+		 (if gnus-carpal (summary-carpal 4)) 
  789
+		 (article 1.0))))
786 790
     (server
787 791
      (vertical 1.0
788 792
 	       (server 1.0 point)
@@ -1571,7 +1575,7 @@ variable (string, integer, character, etc).")
1571 1575
   "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
1572 1576
   "The mail address of the Gnus maintainers.")
1573 1577
 
1574  
-(defconst gnus-version "September Gnus v0.23"
  1578
+(defconst gnus-version "September Gnus v0.24"
1575 1579
   "Version number for this version of Gnus.")
1576 1580
 
1577 1581
 (defvar gnus-info-nodes
@@ -1604,7 +1608,8 @@ variable (string, integer, character, etc).")
1604 1608
     gnus-newsrc-last-checked-date 
1605 1609
     gnus-newsrc-alist gnus-server-alist
1606 1610
     gnus-killed-list gnus-zombie-list
1607  
-    gnus-topic-topology gnus-topic-alist)
  1611
+    gnus-topic-topology gnus-topic-alist
  1612
+    gnus-format-specs)
1608 1613
   "Gnus variables saved in the quick startup file.")
1609 1614
 
1610 1615
 (defvar gnus-newsrc-options nil
@@ -1924,7 +1929,7 @@ Thank you for your help in stamping out bugs.
1924 1929
       gnus-summary-reply gnus-summary-reply-with-original
1925 1930
       gnus-summary-mail-forward gnus-summary-mail-other-window
1926 1931
       gnus-bug)
1927  
-     ("gnus-picon" gnus-article-display-picon)
  1932
+     ("gnus-picon" gnus-article-display-picons)
1928 1933
      ("gnus-vm" gnus-vm-mail-setup)
1929 1934
      ("gnus-vm" :interactive t gnus-summary-save-in-vm
1930 1935
       gnus-summary-save-article-vm gnus-yank-article))))
@@ -2195,10 +2200,12 @@ Thank you for your help in stamping out bugs.
2195 2200
 (defvar gnus-group-line-format-spec 
2196 2201
   (gnus-byte-code 'gnus-group-line-format-spec))
2197 2202
 
2198  
-(defvar gnus-old-specs 
2199  
-  '((group . "%M%S%p%5y: %(%g%)\n")
2200  
-    (summary-dummy . "*  :                          : %S\n")
2201  
-    (summary . "%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n")))
  2203
+(defvar gnus-format-specs 
  2204
+  `((version . ,emacs-version)
  2205
+    (group ,gnus-group-line-format ,gnus-group-line-format-spec)
  2206
+    (summary-dummy ,gnus-summary-dummy-line-format
  2207
+		   ,gnus-summary-dummy-line-format-spec)
  2208
+    (summary ,gnus-summary-line-format ,gnus-summary-line-format-spec)))
2202 2209
 
2203 2210
 (defvar gnus-article-mode-line-format-spec nil)
2204 2211
 (defvar gnus-summary-mode-line-format-spec nil)
@@ -2288,32 +2295,44 @@ Thank you for your help in stamping out bugs.
2288 2295
 
2289 2296
 
2290 2297
 (defun gnus-update-format-specifications (&optional force)
  2298
+  "Update all (necessary) format specifications."
  2299
+  ;; Make the indentation array.
2291 2300
   (gnus-make-thread-indent-array)
2292 2301
 
2293  
-  (when force
2294  
-    (setq gnus-old-specs nil))
  2302
+  (when (or force
  2303
+	    (and (assq 'version gnus-format-specs)
  2304
+		 (not (equal emacs-version
  2305
+			     (cdr (assq 'version gnus-format-specs))))))
  2306
+    (setq gnus-format-specs nil))
2295 2307
 
2296  
-  (let ((formats '(summary summary-dummy group 
  2308
+  (let ((types '(summary summary-dummy group 
2297 2309
 			   summary-mode group-mode article-mode))
2298  
-	old-format new-format)
2299  
-    (while formats
  2310
+	old-format new-format entry type val)
  2311
+    (while types
  2312
+      (setq type (pop types))
2300 2313
       (setq new-format (symbol-value
2301  
-			(intern (format "gnus-%s-line-format" (car formats)))))
2302  
-      (or (and (setq old-format (cdr (assq (car formats) gnus-old-specs)))
2303  
-	       (equal old-format new-format))
2304  
-	  (set (intern (format "gnus-%s-line-format-spec" (car formats)))
2305  
-	       (if (not (stringp new-format)) new-format
2306  
-		 (gnus-parse-format
  2314
+			(intern (format "gnus-%s-line-format" type))))
  2315
+      (setq entry (cdr (assq type gnus-format-specs)))
  2316
+      (if (and entry
  2317
+	       (equal (car entry) new-format))
  2318
+	  (set (intern (format "gnus-%s-line-format-spec" type)) 
  2319
+	       (car (cdr entry)))
  2320
+	(setq val
  2321
+	      (if (not (stringp new-format)) 
  2322
+		  ;; This is a function call or something.
2307 2323
 		  new-format
2308  
-		  (symbol-value 
2309  
-		   (intern (format "gnus-%s-line-format-alist"
2310  
-				   (if (eq (car formats) 'article-mode)
2311  
-				       'summary-mode (car formats)))))
2312  
-		  (not (string-match "mode$" (symbol-name (car formats))))))))
2313  
-      (setq gnus-old-specs (cons (cons (car formats) new-format)
2314  
-				 (delq (assq (car formats) gnus-old-specs)
2315  
-				       gnus-old-specs)))
2316  
-      (setq formats (cdr formats))))
  2324
+		;; This is a "real" format.
  2325
+		(gnus-parse-format
  2326
+		 new-format
  2327
+		 (symbol-value 
  2328
+		  (intern (format "gnus-%s-line-format-alist"
  2329
+				  (if (eq type 'article-mode)
  2330
+				      'summary-mode type))))
  2331
+		 (not (string-match "mode$" (symbol-name type))))))
  2332
+	(set (intern (format "gnus-%s-line-format-spec" type)) val)
  2333
+	(if entry 
  2334
+	    (setcar (cdr entry) val)
  2335
+	  (push (list type new-format val) gnus-format-specs)))))
2317 2336
       
2318 2337
   (gnus-update-group-mark-positions)
2319 2338
   (gnus-update-summary-mark-positions)
@@ -2555,7 +2574,7 @@ If INSERT, insert the result."
2555 2574
   (save-excursion
2556 2575
     (goto-char (point-min))
2557 2576
     (while (not (eobp))
2558  
-      (when (get-text-property (point) prop)
  2577
+      (while (get-text-property (point) prop)
2559 2578
 	(delete-char 1))
2560 2579
       (goto-char (next-single-property-change (point) prop nil (point-max))))))
2561 2580
 
@@ -3036,15 +3055,19 @@ If optional argument RE-ONLY is non-nil, strip `Re:' only."
3036 3055
      ((null split))
3037 3056
      ;; This is a buffer to be selected.
3038 3057
      ((not (or (eq type 'horizontal) (eq type 'vertical)))
3039  
-      (let ((buffer (cdr (assq type gnus-window-to-buffer))))
  3058
+      (let ((buffer (cond ((stringp type) type)
  3059
+			  (t (cdr (assq type gnus-window-to-buffer)))))
  3060
+	    buf)
3040 3061
 	(unless buffer
3041 3062
 	  (error "Illegal buffer type: %s" type))
3042  
-	(switch-to-buffer (get-buffer (if (symbolp buffer) 
3043  
-					  (symbol-value buffer)
3044  
-					buffer)))
  3063
+	(unless (setq buf (get-buffer (if (symbolp buffer)
  3064
+					  (symbol-value buffer) buffer)))
  3065
+	  (setq buf (get-buffer-create (if (symbolp buffer)
  3066
+					   (symbol-value buffer) buffer))))
  3067
+	(switch-to-buffer buf)
3045 3068
 	;; We return the window if it has the `point' spec.
3046 3069
 	(and (memq 'point split) window)))
3047  
-     ;; This is a normal split
  3070
+     ;; This is a normal split.
3048 3071
      (t
3049 3072
       (when (> (length subs) 0)
3050 3073
 	;; First we have to compute the sizes of all new windows.
@@ -3141,14 +3164,14 @@ If optional argument RE-ONLY is non-nil, strip `Re:' only."
3141 3164
      ((null split)
3142 3165
       t)
3143 3166
      ((not (or (eq type 'horizontal) (eq type 'vertical)))
3144  
-      (let ((buffer (cdr (assq type gnus-window-to-buffer)))
3145  
-	    win)
  3167
+      (let ((buffer (cond ((stringp type) type)
  3168
+			  (t (cdr (assq type gnus-window-to-buffer)))))
  3169
+	    win buf)
3146 3170
 	(unless buffer
3147 3171
 	  (error "Illegal buffer type: %s" type))
3148  
-	(setq win
3149  
-	      (get-buffer-window (get-buffer (if (symbolp buffer) 
3150  
-						 (symbol-value buffer)
3151  
-					       buffer))))
  3172
+	(when (setq buf (get-buffer (if (symbolp buffer) (symbol-value buffer) 
  3173
+				      buffer)))
  3174
+	  (setq win (get-buffer-window buf)))
3152 3175
 	(when win
3153 3176
 	  (if (memq 'point split)
3154 3177
 	      win
@@ -3995,50 +4018,27 @@ prompt the user for the name of an NNTP server to use."
3995 4018
       (setq history (cdr history)))))
3996 4019
 
3997 4020
 (defun gnus-compile ()
3998  
-  "Byte-compile the Gnus startup file.
3999  
-This will also compile the user-defined format specs."
  4021
+  "Byte-compile the user-defined format specs."
4000 4022
   (interactive)
4001  
-  (let ((file (concat (make-temp-name "/tmp/gnuss") ".el")))
  4023
+  (let ((entries gnus-format-specs)
  4024
+	entry gnus-tmp-func)
4002 4025
     (save-excursion
4003  
-      (gnus-message 7 "Compiling user file...")
4004  
-      (nnheader-set-temp-buffer " *compile gnus*")
4005  
-      (and (file-exists-p gnus-init-file)
4006  
-	   (insert-file gnus-init-file))
4007  
-      (goto-char (point-max))
  4026
+      (gnus-message 7 "Compiling format specs...")
4008 4027
 
4009  
-      (let ((formats '(summary summary-dummy group 
4010  
-			       summary-mode group-mode article-mode))
4011  
-	    format fs)
4012  
-	
4013  
-	(while formats
4014  
-	  (setq format (symbol-name (car formats))
4015  
-		formats (cdr formats)
4016  
-		fs (cons (symbol-value 
4017  
-			  (intern (format "gnus-%s-line-format" format)))
4018  
-			 fs))
4019  
-	  (insert "(defun gnus-" format "-line-format-spec ()\n")
4020  
-	  (insert 
4021  
-	   (prin1-to-string
4022  
-	    (symbol-value 
4023  
-	     (intern (format "gnus-%s-line-format-spec" format)))))
4024  
-	  (insert ")\n")
4025  
-	  (insert "(setq gnus-" format 
4026  
-		  "-line-format-spec (list 'gnus-byte-code 'gnus-"
4027  
-		  format "-line-format-spec))\n"))
4028  
-
4029  
-	(insert "(setq gnus-old-specs '" (prin1-to-string fs) ")\n")
4030  
-
4031  
-	(write-region (point-min) (point-max) file nil 'silent)
4032  
-	(byte-compile-file file)
4033  
-	(rename-file
4034  
-	 (concat file "c") 
4035  
-	 (concat gnus-init-file 
4036  
-		 (if (string-match "\\.el$" gnus-init-file) "c" ".elc"))
4037  
-	 t)
4038  
-	(when (file-exists-p file)
4039  
-	  (delete-file file))
4040  
-	(kill-buffer (current-buffer)))
4041  
-      (gnus-message 7 "Compiling user file...done"))))
  4028
+      (while entries
  4029
+	(setq entry (pop entries))
  4030
+	(if (eq (car entry) 'version)
  4031
+	    (setq gnus-format-specs (delq entry gnus-format-specs))
  4032
+	  (when (and (listp (caddr entry))
  4033
+		     (not (eq 'byte-code (caaddr entry))))
  4034
+	    (fset 'gnus-tmp-func 
  4035
+		  `(lambda () ,(caddr entry)))
  4036
+	    (byte-compile 'gnus-tmp-func)
  4037
+	    (setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))
  4038
+
  4039
+      (push (cons 'version emacs-version) gnus-format-specs)
  4040
+
  4041
+      (gnus-message 7 "Compiling user specs...done"))))
4042 4042
 
4043 4043
 (defun gnus-indent-rigidly (start end arg)
4044 4044
   "Indent rigidly using only spaces and no tabs."
@@ -5520,11 +5520,20 @@ If ALL is non-nil, all articles are marked as read.
5520 5520
 The return value is the number of articles that were marked as read,
5521 5521
 or nil if no action could be taken."
5522 5522
   (let* ((entry (gnus-gethash group gnus-newsrc-hashtb))
5523  
-	 (num (car entry))
5524  
-	 (marked (nth 3 (nth 2 entry))))
  5523
+	 (num (car entry)))
  5524
+    ;; Do the updating only if the newsgroup isn't killed.
5525 5525
     (if (not (numberp (car entry)))
5526 5526
 	(gnus-message 1 "Can't catch up; non-active group")
5527  
-      ;; Do the updating only if the newsgroup isn't killed.
  5527
+      ;; Do auto-expirable marks if that's required.
  5528
+      (when (gnus-group-auto-expirable-p group)
  5529
+	(gnus-add-marked-articles 
  5530
+	 group 'expire (gnus-list-of-unread-articles group))
  5531
+	(when all
  5532
+	  (let ((marks (nth 3 (nth 2 entry))))
  5533
+	    (gnus-add-marked-articles 
  5534
+	     group 'expire (gnus-uncompress-range (cdr (assq 'tick marks))))
  5535
+	    (gnus-add-marked-articles 
  5536
+	     group 'expire (gnus-uncompress-range (cdr (assq 'tick marks)))))))
5528 5537
       (when entry
5529 5538
 	(gnus-update-read-articles group nil)
5530 5539
 	;; Also nix out the lists of marks and dormants. 
@@ -6672,6 +6681,7 @@ buffer.
6672 6681
   (define-key gnus-summary-thread-map "l" 'gnus-summary-lower-thread)
6673 6682
   (define-key gnus-summary-thread-map "i" 'gnus-summary-raise-thread)
6674 6683
   (define-key gnus-summary-thread-map "T" 'gnus-summary-toggle-threads)
  6684
+  (define-key gnus-summary-thread-map "T" 'gnus-summary-rethread-current)
6675 6685
   (define-key gnus-summary-thread-map "s" 'gnus-summary-show-thread)
6676 6686
   (define-key gnus-summary-thread-map "S" 'gnus-summary-show-all-threads)
6677 6687
   (define-key gnus-summary-thread-map "h" 'gnus-summary-hide-thread)
@@ -11638,6 +11648,19 @@ with that article."
11638 11648
       ;; Return the list of articles.
11639 11649
       (nreverse articles))))
11640 11650
 
  11651
+(defun gnus-summary-rethread-current ()
  11652
+  "Rethread the thread the current article is part of."
  11653
+  (interactive)
  11654
+  (gnus-set-global-variables)
  11655
+  (let* ((gnus-show-threads t)
  11656
+	 (article (gnus-summary-article-number))
  11657
+	 (id (mail-header-id (gnus-summary-article-header)))
  11658
+	 (gnus-newsgroup-threads (list (gnus-id-to-thread (gnus-root-id id)))))
  11659
+    (unless id
  11660
+      (error "No article on the current line"))
  11661
+    (gnus-rebuild-thread id)
  11662
+    (gnus-summary-goto-subject article)))
  11663
+
11641 11664
 (defun gnus-summary-toggle-threads (&optional arg)
11642 11665
   "Toggle showing conversation threads.
11643 11666
 If ARG is positive number, turn showing conversation threads on."
@@ -13214,23 +13237,32 @@ If given a numerical ARG, move forward ARG pages."
13214 13237
     (set-buffer gnus-article-buffer)
13215 13238
     (goto-char (point-min))
13216 13239
     (widen)
  13240
+    (when (gnus-visual-p 'page-marker)
  13241
+      (let ((buffer-read-only nil))
  13242
+	(gnus-remove-text-with-property 'gnus-prev)
  13243
+	(gnus-remove-text-with-property 'gnus-next)))
13217 13244
     (when 
13218 13245
 	(cond ((< arg 0)
13219 13246
 	       (re-search-backward page-delimiter nil 'move (1+ (abs arg))))
13220 13247
 	      ((> arg 0)
13221 13248
 	       (re-search-forward page-delimiter nil 'move arg)))
13222 13249
       (goto-char (match-end 0)))
13223  
-    (when (and (gnus-visual-p 'page-marker)
13224  
-	       (not (bolp)))
13225  
-      (gnus-insert-prev-page-button))
13226 13250
     (narrow-to-region
13227 13251
      (point)
13228 13252
      (if (re-search-forward page-delimiter nil 'move)
13229  
-	 (prog1 (match-beginning 0) 
13230  
-	   (when (and (gnus-visual-p 'page-marker)
13231  
-		      (not (bolp)))
13232  
-	     (gnus-insert-next-page-button)))
13233  
-       (point)))))
  13253
+	 (match-beginning 0) 
  13254
+       (point)))
  13255
+    (when (and (gnus-visual-p 'page-marker)
  13256
+	       (not (= (point-min) 1)))
  13257
+      (save-excursion
  13258
+	(goto-char (point-min))
  13259
+	(gnus-insert-prev-page-button)))
  13260
+    (when (and (gnus-visual-p 'page-marker)
  13261
+	       (not (= (1- (point-max)) (buffer-size))))
  13262
+      (save-excursion
  13263
+	(goto-char (point-max))
  13264
+	(gnus-insert-next-page-button)))))
  13265
+
13234 13266
 
13235 13267
 ;; Article mode commands
13236 13268
 
20  lisp/nndoc.el
@@ -29,7 +29,7 @@
29 29
 (require 'rmail)
30 30
 (require 'nnmail)
31 31
 
32  
-(defvar nndoc-article-type 'mbox
  32
+(defvar nndoc-article-type 'guess
33 33
   "*Type of the file.
34 34
 One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
35 35
 `forward', `mime-digest', `standard-digest', `slack-digest', or
@@ -66,6 +66,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
66 66
      (prepare-body . nndoc-prepare-digest-body))
67 67
     (mime-digest
68 68
      (article-begin . "")
  69
+     (head-end . "^ ?$")
69 70
      (body-end . "")
70 71
      (file-end . ""))
71 72
     (standard-digest
@@ -253,6 +254,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
253 254
     (cond 
254 255
      ;; The current buffer is this group's buffer.
255 256
      ((and nndoc-current-buffer
  257
+	   (buffer-name nndoc-current-buffer)
256 258
 	   (eq nndoc-current-buffer 
257 259
 	       (setq buf (cdr (assoc group nndoc-group-alist))))))
258 260
      ;; We change buffers by taking an old from the group alist.
@@ -270,6 +272,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
270 272
 				    (get-buffer-create 
271 273
 				     (concat " *nndoc " group "*"))))
272 274
 		  nndoc-group-alist))
  275
+      (setq nndoc-dissection-alist nil)
273 276
       (save-excursion
274 277
 	(set-buffer nndoc-current-buffer)
275 278
 	(buffer-disable-undo (current-buffer))
@@ -277,7 +280,8 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
277 280
 	(if (stringp nndoc-address)
278 281
 	    (insert-file-contents nndoc-address)
279 282
 	  (insert-buffer-substring nndoc-address)))))
280  
-    (when nndoc-current-buffer
  283
+    (when (and nndoc-current-buffer
  284
+	       (not nndoc-dissection-alist))
281 285
       (save-excursion
282 286
 	(set-buffer nndoc-current-buffer)
283 287
 	(nndoc-set-delims)
@@ -293,7 +297,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
293 297
      ;; MIME digest.
294 298
      ((and
295 299
        (re-search-forward
296  
-	(concat "\n\n\\|^Content-Type: *multipart/digest;[ \t\n]*[ \t]"
  300
+	(concat "^Content-Type: *multipart/digest;[ \t\n]*[ \t]"
297 301
 		"boundary=\"\\([^\"\n]*[^\" \t\n]\\)\"")
298 302
 	nil t)
299 303
        (match-beginning 1))
@@ -302,9 +306,12 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
302 306
       (setq entry (assq 'mime-digest nndoc-type-alist))
303 307
       (setcdr entry
304 308
 	      (list
  309
+	       (cons 'head-end "^ ?$")
  310
+	       (cons 'body-begin "^ \n")
305 311
 	       (cons 'article-begin b-delimiter)
306  
-	       (cons 'body-end 
307  
-		     (concat "\n--" boundary-id "\\(--\\)?[\n \t]+"))
  312
+	       (cons 'body-end-function 'nndoc-digest-body-end)
  313
+;	       (cons 'body-end 
  314
+;		     (concat "\n--" boundary-id "\\(--\\)?[\n \t]+"))
308 315
 	       (cons 'file-end (concat "\n--" boundary-id "--[ \t]*$"))))
309 316
       'mime-digest)
310 317
      ((and (re-search-forward (concat "^" (make-string 70 ?-) "\n\n") nil t)
@@ -395,8 +402,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf',
395 402
 	(setq body-end (point))
396 403
 	(push (list (incf i) head-begin head-end body-begin body-end
397 404
 		    (count-lines body-begin body-end))
398  
-	      nndoc-dissection-alist)
399  
-	))))
  405
+	      nndoc-dissection-alist)))))
400 406
 
401 407
 (defun nndoc-prepare-digest-body ()
402 408
   "Unquote quoted non-separators in digests."
5  lisp/nnml.el
@@ -33,8 +33,6 @@
33 33
 (require 'nnmail)
34 34
 (eval-when-compile (require 'cl))
35 35
 
36  
-(require 'cl)
37  
-
38 36
 (defvar nnml-directory "~/Mail/"
39 37
   "Mail spool directory.")
40 38
 
@@ -721,7 +719,8 @@ all. This may very well take some time.")
721 719
   (let ((group (nnmail-replace-chars-in-string 
722 720
 		(substring dir (length nnml-directory))
723 721
 		?/ ?.)))
724  
-    (setq nnml-group-alist (delq (assoc group nnml-group-alist) nnml-group-alist))
  722
+    (setq nnml-group-alist
  723
+	  (delq (assoc group nnml-group-alist) nnml-group-alist))
725 724
     (push (list group
726 725
 		(cons (car files)
727 726
 		      (let ((f files))
155  lisp/nnspool.el
@@ -114,48 +114,52 @@ there.")
114 114
 
115 115
 ;;; Interface functions.
116 116
 
117  
-(defun nnspool-retrieve-headers (sequence &optional newsgroup server fetch-old)
118  
-  "Retrieve the headers for the articles in SEQUENCE.
119  
-Newsgroup must be selected before calling this function."
  117
+(defun nnspool-retrieve-headers (articles &optional group server fetch-old)
  118
+  "Retrieve the headers of ARTICLES."
120 119
   (save-excursion
121 120
     (set-buffer nntp-server-buffer)
122 121
     (erase-buffer)
123  
-    (let* ((number (length sequence))
124  
-	   (count 0)
125  
-	   (do-message (and (numberp nnspool-large-newsgroup)
126  
-			    (> number nnspool-large-newsgroup)))
127  
-	   file beg article)
128  
-      (if (not (nnspool-possibly-change-directory newsgroup))
129  
-	  ()
130  
-	(if (and (numberp (car sequence))
131  
-		 (nnspool-retrieve-headers-with-nov sequence fetch-old))
  122
+    (when (nnspool-possibly-change-directory group)
  123
+      (let* ((number (length articles))
  124
+	     (count 0)
  125
+	     (do-message (and (numberp nnspool-large-newsgroup)
  126
+			      (> number nnspool-large-newsgroup)))
  127
+	     file beg article ag)
  128
+	(if (and (numberp (car articles))
  129
+		 (nnspool-retrieve-headers-with-nov articles fetch-old))
  130
+	    ;; We successfully retrieved the NOV headers.
132 131
 	    'nov
133  
-	  (while sequence
134  
-	    (setq article (car sequence))
  132
+	  ;; No NOV headers here, so we do it the hard way.
  133
+	  (while articles
  134
+	    (setq article (pop articles))
135 135
 	    (if (stringp article)
136  
-		(progn
137  
-		  (setq file (nnspool-find-article-by-message-id article))
138  
-		  (setq article 0))
139  
-	      (setq file (concat nnspool-current-directory 
140  
-				 (int-to-string article))))
141  
-	    (and file (file-exists-p file)
142  
-		 (progn
143  
-		   (insert (format "221 %d Article retrieved.\n" article))
144  
-		   (setq beg (point))
145  
-		   (nnheader-insert-head file)
146  
-		   (goto-char beg)
147  
-		   (search-forward "\n\n" nil t)
148  
-		   (forward-char -1)
149  
-		   (insert ".\n")
150  
-		   (delete-region (point) (point-max))))
151  
-	    (setq sequence (cdr sequence))
  136
+		;; This is a Message-ID.
  137
+		(setq ag (nnspool-find-id article)
  138
+		      file (and ag (nnspool-article-pathname 
  139
+				    (car ag) (cdr ag)))
  140
+		      article (cdr ag))
  141
+	      ;; This is an article in the current group.
  142
+	      (setq file (nnspool-article-pathname 
  143
+			  nnspool-current-group article)))
  144
+	    ;; Insert the head of the article.
  145
+	    (when (and file
  146
+		       (file-exists-p file))
  147
+	      (insert (format "221 %d Article retrieved.\n" article))
  148
+	      (setq beg (point))
  149
+	      (nnheader-insert-head file)
  150
+	      (goto-char beg)
  151
+	      (search-forward "\n\n" nil t)
  152
+	      (forward-char -1)
  153
+	      (insert ".\n")
  154
+	      (delete-region (point) (point-max)))
152 155
 	    
153 156
 	    (and do-message
154  
-		 (zerop (% (setq count (1+ count)) 20))
155  
-		 (message "NNSPOOL: Receiving headers... %d%%"
  157
+		 (zerop (% (incf count) 20))
  158
+		 (message "nnspool: Receiving headers... %d%%"
156 159
 			  (/ (* count 100) number))))
157 160
 	  
158  
-	  (and do-message (message "NNSPOOL: Receiving headers...done"))
  161
+	  (and do-message
  162
+	       (message "nnspool: Receiving headers...done"))
159 163
 	  
160 164
 	  ;; Fold continuation lines.
161 165
 	  (goto-char (point-min))
@@ -193,26 +197,28 @@ Newsgroup must be selected before calling this function."
193 197
   "Return server status response as string."
194 198
   nnspool-status-string)
195 199
 
196  
-(defun nnspool-request-article (id &optional newsgroup server buffer)
  200
+(defun nnspool-request-article (id &optional group server buffer)
197 201
   "Select article by message ID (or number)."
198  
-  (nnspool-possibly-change-directory newsgroup)
199  
-  (let* ((group (if (stringp id)
200  
-		    (nnspool-find-article-by-message-id id)
201  
-		  nnspool-current-group))
202  
-	 (file (and group (nnspool-article-pathname group id)))
203  
-	 (nntp-server-buffer (or buffer nntp-server-buffer)))
  202
+  (nnspool-possibly-change-directory group)
  203
+  (let ((nntp-server-buffer (or buffer nntp-server-buffer))
  204
+	file ag)
  205
+    (if (stringp id)
  206
+	;; This is a Message-ID.	
  207
+	(when (setq ag (nnspool-find-id id))
  208
+	  (setq file (nnspool-article-pathname (car ag) (cdr ag))))
  209
+      (setq file (nnspool-article-pathname nnspool-current-group id)))
204 210
     (and file
205 211
 	 (file-exists-p file)
206 212
 	 (not (file-directory-p file))
207 213
 	 (save-excursion (nnspool-find-file file))
208  
-	 ;; We return the article number.
  214
+	 ;; We return the article number and group name.
209 215
 	 (if (numberp id)
210  
-	     (cons newsgroup id)
211  
-	   (cons group id)))))
  216
+	     (cons nnspool-current-group id)
  217
+	   ag))))
212 218
 	    
213  
-(defun nnspool-request-body (id &optional newsgroup server)
  219
+(defun nnspool-request-body (id &optional group server)
214 220
   "Select article body by message ID (or number)."
215  
-  (nnspool-possibly-change-directory newsgroup)
  221
+  (nnspool-possibly-change-directory group)
216 222
   (if (nnspool-request-article id)
217 223
       (save-excursion
218 224
 	(set-buffer nntp-server-buffer)
@@ -221,9 +227,9 @@ Newsgroup must be selected before calling this function."
221 227
 	    (delete-region (point-min) (point)))
222 228
 	t)))
223 229
 
224  
-(defun nnspool-request-head (id &optional newsgroup server)
  230
+(defun nnspool-request-head (id &optional group server)
225 231
   "Select article head by message ID (or number)."
226  
-  (nnspool-possibly-change-directory newsgroup)
  232
+  (nnspool-possibly-change-directory group)
227 233
   (if (nnspool-request-article id)
228 234
       (save-excursion
229 235
 	(set-buffer nntp-server-buffer)
@@ -403,24 +409,27 @@ Newsgroup must be selected before calling this function."
403 409
 	(cur (current-buffer))
404 410
 	(prev (point-min))
405 411
 	num found)
406  
-    (if (or (eobp)
407  
-	    (>= (setq num (read cur)) article))
408  
-	(beginning-of-line)
409  
-      (while (not found)
410  
-	(goto-char (/ (+ max min) 2))
411  
-	(forward-line 1)
412  
-	(if (or (= (point) prev)
413  
-		(eobp))
414  
-	    (setq found t)
415  
-	  (setq prev (point))
416  
-	  (cond ((> (setq num (read cur)) article)
417  
-		 (setq max (point)))
418  
-		((< num article)
419  
-		 (setq min (point)))
420  
-		(t
421  
-		 (setq found t))))
422  
-	(beginning-of-line)))
423  
-    (or (not num) (= num article))))
  412
+    (while (not found)
  413
+      (goto-char (/ (+ max min) 2))
  414
+      (beginning-of-line)
  415
+      (if (or (= (point) prev)
  416
+	      (eobp))
  417
+	  (setq found t)
  418
+	(setq prev (point))
  419
+	(cond ((> (setq num (read cur)) article)
  420
+	       (setq max (point)))
  421
+	      ((< num article)
  422
+	       (setq min (point)))
  423
+	      (t
  424
+	       (setq found t)))))
  425
+    (when (not (eq num article))
  426
+      (setq found (point))
  427
+      (forward-line 1)
  428
+      (or (eobp)
  429
+	  (= (setq num (read cur)) article)
  430
+	  (goto-char found)))
  431
+    (beginning-of-line)
  432
+    (eq num article)))
424 433
     
425 434
 
426 435
 (defun nnspool-sift-nov-with-sed (articles file)
@@ -434,7 +443,7 @@ Newsgroup must be selected before calling this function."
434 443
 
435 444
 ;; Fixed by fdc@cliwe.ping.de (Frank D. Cringle). 
436 445
 ;; Find out what group an article identified by a Message-ID is in.
437  
-(defun nnspool-find-article-by-message-id (id)
  446
+(defun nnspool-find-id (id)
438 447
   (save-excursion
439 448
     (set-buffer (get-buffer-create " *nnspool work*"))
440 449
     (buffer-disable-undo (current-buffer))
@@ -442,8 +451,8 @@ Newsgroup must be selected before calling this function."
442 451
     (call-process "grep" nil t nil id nnspool-history-file)
443 452
     (goto-char (point-min))
444 453
     (prog1
445  
-	(if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ \t\n]*\\)")
446  
-	    (buffer-substring (match-beginning 1) (match-end 1)))
  454
+	(if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ /\t\n]+\\)/\\([0-9]+\\)[ \t\n]")
  455
+	    (cons (match-string 1) (string-to-int (match-string 2))))
447 456
       (kill-buffer (current-buffer)))))
448 457
 
449 458
 (defun nnspool-find-file (file)
@@ -454,15 +463,15 @@ Newsgroup must be selected before calling this function."
454 463
       (progn (insert-file-contents file) t)
455 464
     (file-error nil)))
456 465
 
457  
-(defun nnspool-possibly-change-directory (newsgroup)
458  
-  (if newsgroup
459  
-      (let ((pathname (nnspool-article-pathname newsgroup)))
  466
+(defun nnspool-possibly-change-directory (group)
  467
+  (if group
  468
+      (let ((pathname (nnspool-article-pathname group)))
460 469
 	(if (file-directory-p pathname)
461 470
 	    (progn
462 471
 	      (setq nnspool-current-directory pathname)
463  
-	      (setq nnspool-current-group newsgroup))
  472
+	      (setq nnspool-current-group group))
464 473
 	  (setq nnspool-status-string 
465  
-		(format "No such newsgroup: %s" newsgroup))
  474
+		(format "No such newsgroup: %s" group))
466 475
 	  nil))
467 476
     t))
468 477
 
18  texi/ChangeLog
... ...
@@ -1,3 +1,21 @@
  1
+Sun Dec 17 17:38:20 1995  Lars Magne Ingebrigtsen  <larsi@hymir.ifi.uio.no>
  2
+
  3
+	* gnus.texi (Windows Configuration): Addition.
  4
+
  5
+Sun Dec 17 00:50:00 1995  Lars Ingebrigtsen  <lars@eyesore.no>
  6
+
  7
+	* gnus.texi (Thread Commands): Addition.
  8
+	(Post): Addition.
  9
+	(Followups To Yourself): New.
  10
+
  11
+Sat Dec 16 23:33:49 1995  Lars Ingebrigtsen  <lars@eyesore.no>
  12
+
  13
+	* gnus.texi (Group Parameters): Addition.
  14
+
  15
+Sat Dec 16 16:54:42 1995  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
  16
+
  17
+	* gnus.texi (Ranges): Change.
  18
+
1 19
 Fri Dec 15 13:53:02 1995  Lars Ingebrigtsen  <lars@eyesore.no>
2 20
 
3 21
 	* gnus.texi (Windows Configuration): Addition, change.
57  texi/gnus.texi
@@ -3176,6 +3176,15 @@ Elements that look like @samp{(score-file . "file")} will make
3176 3176
 @samp{file} into the current score file for the group in question.  This
3177 3177
 means that all score commands you issue will end up in that file. 
3178 3178
 
  3179
+@item admin-address
  3180
+When unsubscribing to a mailing list you should never send the
  3181
+unsubscription notice to the mailing list itself.  Instead, you'd send
  3182
+messages to the administrative address.  This parameter allows you to
  3183
+put the admin address somewhere convenient.
  3184
+
  3185
+@item comment
  3186
+This parameter allows you to enter a random comment on the group.
  3187
+
3179 3188
 @item @var{(variable form)}
3180 3189
 You can use the group parameters to set variables local to the group you
3181 3190
 are entering.  Say you want to turn threading off in
@@ -4738,7 +4747,9 @@ checking/generation.
4738 4747
 @item gnus-inews-article-hook
4739 4748
 @vindex gnus-inews-article-hook
4740 4749
 This hook is called right before the article is posted.  By default it
4741  
-handles FCC processing (i.e., saving the article to a file.)
  4750
+handles FCC processing (i.e., saving the article to a file.)  You can
  4751
+also have this hook add a score to all followups to the article you've
  4752
+written (@pxref{Followups To Yourself}). 
4742 4753
 
4743 4754
 @item gnus-inews-article-header-hook
4744 4755
 @vindex gnus-inews-article-header-hook
@@ -5788,6 +5799,14 @@ Expose all hidden threads (@code{gnus-summary-show-all-threads}).
5788 5799
 @kindex T H (Summary)
5789 5800
 @findex gnus-summary-hide-all-threads
5790 5801
 Hide all threads (@code{gnus-summary-hide-all-threads}).
  5802
+
  5803
+@item T R
  5804
+@kindex T R (Summary)
  5805
+@findex gnus-summary-rethread-current
  5806
+Re-thread the thread the current article is part of
  5807
+(@code{gnus-summary-rethread-current}).  This works even when the
  5808
+summary buffer is otherwise unthreaded.
  5809
+
5791 5810
 @end table
5792 5811
 
5793 5812
 The following commands are thread movement commands.  They all
@@ -7852,6 +7871,7 @@ silently to help keep the sizes of the score files down.
7852 7871
 * Score File Format::        What a score file may contain.
7853 7872
 * Score File Editing::       You can edit score files by hand as well.
7854 7873
 * Adaptive Scoring::         Big Sister Gnus *knows* what you read.
  7874
+* Followups To Yourself::    Having Gnus notice when people answer you.
7855 7875
 * Scoring Tips::             How to score effectively.
7856 7876
 * Reverse Scoring::          That problem child of old is not problem.
7857 7877
 * Global Score Files::       Earth-spanning, ear-splitting score files.
@@ -8479,6 +8499,34 @@ the length of the match is less than
8479 8499
 this variable is @code{nil}, exact matching will always be used to avoid
8480 8500
 this problem.
8481 8501
 
  8502
+
  8503
+@node Followups To Yourself
  8504
+@section Followups To Yourself
  8505
+
  8506
+Gnus offers two commands for picking out the @code{Message-ID} header in
  8507
+the current buffer.  Gnus will then add a score rule that scores using
  8508
+this @code{Message-ID} on the @code{References} header of other
  8509
+articles.  This will, in effect, increase the score of all articles that
  8510
+respond to the article in the current buffer.  Quite useful if you want
  8511
+to easily note when people answer what you've said.
  8512
+
  8513
+@table @code
  8514
+@item gnus-score-followup-article
  8515
+@findex gnus-score-followup-article
  8516
+This will add a score to articles that directly follow up your own
  8517
+article. 
  8518
+
  8519
+@item gnus-score-followup-thread
  8520
+@findex gnus-score-followup-thread
  8521
+This will add a score to all articles that appear in a thread "below"
  8522
+your own article.
  8523
+@end table
  8524
+
  8525
+@vindex gnus-inews-article-hook
  8526
+These two functions are both primarily meant to be used in hooks like
  8527
+@code{gnus-inews-article-hook}.  
  8528
+
  8529
+
8482 8530
 @node Scoring Tips
8483 8531
 @section Scoring Tips
8484 8532
 @cindex scoring tips
@@ -8970,6 +9018,9 @@ you want to change the @code{article} setting, you could say:
8970 9018
                (article 1.0))))
8971 9019
 @end lisp
8972 9020
 
  9021
+You'd typically stick these @code{gnus-add-configuration} calls in your
  9022
+@file{.gnus} file or in some startup hook -- they should be run after
  9023
+Gnus has been loaded.
8973 9024
 
8974 9025
 
8975 9026
 @node Buttons
@@ -10056,6 +10107,7 @@ one looong line, then that's ok.
10056 10107
 The meaning of the various atoms are explained elsewhere in this
10057 10108
 manual. 
10058 10109
 
  10110
+
10059 10111
 @node Headers
10060 10112
 @subsection Headers
10061 10113
 
@@ -10081,6 +10133,7 @@ they all have predicatable names beginning with @code{mail-header-} and
10081 10133
 The @code{xref} slot is really a @code{misc} slot.  Any extra info will
10082 10134
 be put in there.
10083 10135
 
  10136
+
10084 10137
 @node Ranges
10085 10138
 @subsection Ranges
10086 10139
 
@@ -10116,7 +10169,7 @@ This means that comparing two ranges to find out whether they are equal
10116 10169
 is slightly tricky:
10117 10170
 
10118 10171
 @example
10119  
-((1 . 6) 7 8 (10 . 12))
  10172
+((1 . 5) 7 8 (10 . 12))
10120 10173
 @end example
10121 10174
 
10122 10175
 and

0 notes on commit c66544c

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