*** pub/rgnus/lisp/gnus-art.el Sat May 31 15:48:25 1997 --- rgnus/lisp/gnus-art.el Wed Jun 18 00:53:18 1997 *************** *** 762,768 **** (when (search-forward "\n\n" nil t) (let ((buffer-read-only nil)) (while (search-forward "\b" nil t) ! (let ((next (following-char)) (previous (char-after (- (point) 2)))) ;; We do the boldification/underlining by hiding the ;; overstrikes and putting the proper text property --- 762,768 ---- (when (search-forward "\n\n" nil t) (let ((buffer-read-only nil)) (while (search-forward "\b" nil t) ! (let ((next (char-after (point))) (previous (char-after (- (point) 2)))) ;; We do the boldification/underlining by hiding the ;; overstrikes and putting the proper text property *************** *** 795,801 **** (adaptive-fill-mode t)) (while (not (eobp)) (and (>= (current-column) (min fill-column (window-width))) ! (/= (preceding-char) ?:) (fill-paragraph nil)) (end-of-line 2)))))) --- 795,801 ---- (adaptive-fill-mode t)) (while (not (eobp)) (and (>= (current-column) (min fill-column (window-width))) ! (/= (char-before (point)) ?:) (fill-paragraph nil)) (end-of-line 2)))))) *************** *** 932,938 **** (interactive "r") (goto-char from) (while (search-forward "=" to t) ! (cond ((eq (following-char) ?\n) (delete-char -1) (delete-char 1)) ((looking-at "[0-9A-F][0-9A-F]") --- 932,938 ---- (interactive "r") (goto-char from) (while (search-forward "=" to t) ! (cond ((eq (char-after (point)) ?\n) (delete-char -1) (delete-char 1)) ((looking-at "[0-9A-F][0-9A-F]") *************** *** 1124,1130 **** nil))) (eval-and-compile ! (autoload 'w3-parse-buffer "w3-parse")) (defun gnus-article-treat-html () "Render HTML." --- 1124,1131 ---- nil))) (eval-and-compile ! (autoload 'w3-parse-buffer "w3-parse") ! (autoload 'w3-do-setup "w3" "" t)) (defun gnus-article-treat-html () "Render HTML." *************** *** 1132,1137 **** --- 1133,1139 ---- (let ((cbuf (current-buffer))) (set-buffer gnus-article-buffer) (let (buf buffer-read-only b e) + (w3-do-setup) (goto-char (point-min)) (narrow-to-region (if (search-forward "\n\n" nil t) *** pub/rgnus/lisp/gnus-demon.el Sat Apr 19 06:12:49 1997 --- rgnus/lisp/gnus-demon.el Wed Jun 18 00:53:19 1997 *************** *** 240,246 **** (defun gnus-demon-add-nocem () "Add daemonic NoCeM handling to Gnus." ! (gnus-demon-add-handler 'gnus-demon-scan-nocem 60 t)) (defun gnus-demon-scan-nocem () "Scan NoCeM groups for NoCeM messages." --- 240,246 ---- (defun gnus-demon-add-nocem () "Add daemonic NoCeM handling to Gnus." ! (gnus-demon-add-handler 'gnus-demon-scan-nocem 60 30)) (defun gnus-demon-scan-nocem () "Scan NoCeM groups for NoCeM messages." *** pub/rgnus/lisp/gnus-group.el Sun May 25 17:14:08 1997 --- rgnus/lisp/gnus-group.el Wed Jun 18 00:53:19 1997 *************** *** 1274,1297 **** (not (eobp)) (not (setq found ! (and (or all ! (and ! (let ((unread ! (get-text-property (point) 'gnus-unread))) ! (and (numberp unread) (> unread 0))) ! (setq lev (get-text-property (point) 'gnus-level)) ! (<= lev gnus-level-subscribed))) ! (or (not level) ! (and (setq lev (get-text-property (point) ! 'gnus-level)) ! (or (= lev level) ! (and (< lev low) ! (< level lev) ! (progn ! (setq low lev) ! (setq pos (point)) ! nil)))))))) (zerop (forward-line way))))) (if found (progn (gnus-group-position-point) t) --- 1274,1299 ---- (not (eobp)) (not (setq found ! (and ! (get-text-property (point) 'gnus-group) ! (or all ! (and ! (let ((unread ! (get-text-property (point) 'gnus-unread))) ! (and (numberp unread) (> unread 0))) ! (setq lev (get-text-property (point) ! 'gnus-level)) ! (<= lev gnus-level-subscribed))) ! (or (not level) ! (and (setq lev (get-text-property (point) 'gnus-level)) ! (or (= lev level) ! (and (< lev low) ! (< level lev) ! (progn ! (setq low lev) ! (setq pos (point)) ! nil)))))))) (zerop (forward-line way))))) (if found (progn (gnus-group-position-point) t) *************** *** 1314,1320 **** (beginning-of-line) (forward-char (or (cdr (assq 'process gnus-group-mark-positions)) 2)) (subst-char-in-region ! (point) (1+ (point)) (following-char) (if unmark (progn (setq gnus-group-marked (delete group gnus-group-marked)) --- 1316,1322 ---- (beginning-of-line) (forward-char (or (cdr (assq 'process gnus-group-mark-positions)) 2)) (subst-char-in-region ! (point) (1+ (point)) (char-after (point)) (if unmark (progn (setq gnus-group-marked (delete group gnus-group-marked)) *************** *** 2022,2036 **** (let* ((group (if solid (gnus-read-group "Group name: ") (message-unique-id))) (type ! (completing-read ! "Search engine type: " ! (mapcar (lambda (elem) (list (symbol-name (car elem)))) ! nnweb-type-definition) ! nil t (cons (or (car gnus-group-web-type-history) ! (symbol-name (caar nnweb-type-definition))) ! 0) ! 'gnus-group-web-type-history)) (search (read-string "Search string: " --- 2024,2039 ---- (let* ((group (if solid (gnus-read-group "Group name: ") (message-unique-id))) + (default-type (or (car gnus-group-web-type-history) + (symbol-name (caar nnweb-type-definition)))) (type ! (gnus-string-or ! (completing-read ! (format "Search engine type (default %s): " default-type) ! (mapcar (lambda (elem) (list (symbol-name (car elem)))) ! nnweb-type-definition) ! nil t nil 'gnus-group-web-type-history) ! default-type)) (search (read-string "Search string: " *** pub/rgnus/lisp/gnus-msg.el Sat May 10 00:45:56 1997 --- rgnus/lisp/gnus-msg.el Wed Jun 18 00:53:19 1997 *************** *** 512,517 **** --- 512,518 ---- ;; Dummy to avoid byte-compile warning. (defvar nnspool-rejected-article-hook) + (defvar xemacs-codename) ;;; Since the X-Newsreader/X-Mailer are ``vanity'' headers, they might ;;; as well include the Emacs version as well. *************** *** 537,543 **** (substring emacs-version (match-beginning 3) (match-end 3)) ! ""))) (t emacs-version)))) ;; Written by "Mr. Per Persson" . --- 538,546 ---- (substring emacs-version (match-beginning 3) (match-end 3)) ! "") ! (if (boundp 'xemacs-codename) ! (concat " - \"" xemacs-codename "\"")))) (t emacs-version)))) ;; Written by "Mr. Per Persson" . *** pub/rgnus/lisp/gnus-nocem.el Sun May 25 17:14:08 1997 --- rgnus/lisp/gnus-nocem.el Wed Jun 18 00:53:20 1997 *************** *** 225,231 **** (when (gnus-gethash (symbol-name group) gnus-newsrc-hashtb) ;; Valid group. (beginning-of-line) ! (while (= (following-char) ?\t) (forward-line -1)) (setq id (buffer-substring (point) (1- (search-forward "\t")))) (unless (gnus-gethash id gnus-nocem-hashtb) --- 225,231 ---- (when (gnus-gethash (symbol-name group) gnus-newsrc-hashtb) ;; Valid group. (beginning-of-line) ! (while (= (char-after (point)) ?\t) (forward-line -1)) (setq id (buffer-substring (point) (1- (search-forward "\t")))) (unless (gnus-gethash id gnus-nocem-hashtb) *************** *** 233,239 **** (gnus-sethash id t gnus-nocem-hashtb) (push id ncm)) (forward-line 1) ! (while (= (following-char) ?\t) (forward-line 1)))))) (when ncm (setq gnus-nocem-touched-alist t) --- 233,239 ---- (gnus-sethash id t gnus-nocem-hashtb) (push id ncm)) (forward-line 1) ! (while (= (char-after (point)) ?\t) (forward-line 1)))))) (when ncm (setq gnus-nocem-touched-alist t) *** pub/rgnus/lisp/gnus-salt.el Sat May 31 15:48:27 1997 --- rgnus/lisp/gnus-salt.el Wed Jun 18 00:53:20 1997 *************** *** 663,669 **** (while (progn (forward-line -1) (forward-char col) ! (= (following-char) ? )) (delete-char 1) (insert (caddr gnus-tree-parent-child-edges))) (goto-char beg))) --- 663,669 ---- (while (progn (forward-line -1) (forward-char col) ! (= (char-after (point)) ? )) (delete-char 1) (insert (caddr gnus-tree-parent-child-edges))) (goto-char beg))) *************** *** 722,728 **** (while (progn (unless (bolp) (forward-char -2)) ! (= (following-char) ? )) (delete-char 1) (insert (car gnus-tree-parent-child-edges))) (goto-char beg) --- 722,728 ---- (while (progn (unless (bolp) (forward-char -2)) ! (= (char-after (point)) ? )) (delete-char 1) (insert (car gnus-tree-parent-child-edges))) (goto-char beg) *** pub/rgnus/lisp/gnus-score.el Sat May 31 15:48:27 1997 --- rgnus/lisp/gnus-score.el Wed Jun 18 00:53:20 1997 *************** *** 1081,1091 **** (decay (car (gnus-score-get 'decay alist))) (eval (car (gnus-score-get 'eval alist)))) ;; Perform possible decays. ! (when (and gnus-decay-scores ! (gnus-decay-scores ! alist (or decay (gnus-time-to-day (current-time))))) ! (gnus-score-set 'touched '(t) alist) ! (gnus-score-set 'decay (list (gnus-time-to-day (current-time))))) ;; We do not respect eval and files atoms from global score ;; files. (and files (not global) --- 1081,1091 ---- (decay (car (gnus-score-get 'decay alist))) (eval (car (gnus-score-get 'eval alist)))) ;; Perform possible decays. ! (when gnus-decay-scores ! (when (or (not decay) ! (gnus-decay-scores alist (gnus-time-to-day (current-time)))) ! (gnus-score-set 'touched '(t) alist) ! (gnus-score-set 'decay (list (gnus-time-to-day (current-time)))))) ;; We do not respect eval and files atoms from global score ;; files. (and files (not global) *************** *** 2196,2202 **** (gnus-add-current-to-buffer-list) (while trace (insert (format "%S -> %s\n" (cdar trace) ! (file-name-nondirectory (caar trace)))) (setq trace (cdr trace))) (goto-char (point-min)) (gnus-configure-windows 'score-trace))) --- 2196,2204 ---- (gnus-add-current-to-buffer-list) (while trace (insert (format "%S -> %s\n" (cdar trace) ! (if (caar trace) ! (file-name-nondirectory (caar trace)) ! "(non-file rule)"))) (setq trace (cdr trace))) (goto-char (point-min)) (gnus-configure-windows 'score-trace))) *************** *** 2745,2755 **** (while (setq kill (pop entry)) (when (nth 2 kill) (setq updated t) ! (setq score (or (car kill) gnus-score-interactive-default-score) n times) (while (natnump (decf n)) (setq score (funcall gnus-decay-score-function score))) ! (setcar kill score)))))) ;; Return whether this score file needs to be saved. By Je-haysuss! updated)) --- 2747,2759 ---- (while (setq kill (pop entry)) (when (nth 2 kill) (setq updated t) ! (setq score (or (nth 1 kill) ! gnus-score-interactive-default-score) n times) (while (natnump (decf n)) (setq score (funcall gnus-decay-score-function score))) ! (setcdr kill (cons score ! (cdr (cdr kill))))))))) ;; Return whether this score file needs to be saved. By Je-haysuss! updated)) *** pub/rgnus/lisp/gnus-spec.el Sat Mar 8 08:37:26 1997 --- rgnus/lisp/gnus-spec.el Wed Jun 18 00:53:21 1997 *************** *** 388,396 **** (t nil))) ;; User-defined spec -- find the spec name. ! (when (= (setq spec (following-char)) ?u) (forward-char 1) ! (setq user-defined (following-char))) (forward-char 1) (delete-region spec-beg (point)) --- 388,396 ---- (t nil))) ;; User-defined spec -- find the spec name. ! (when (= (setq spec (char-after (point))) ?u) (forward-char 1) ! (setq user-defined (char-after (point)))) (forward-char 1) (delete-region spec-beg (point)) *** pub/rgnus/lisp/gnus-srvr.el Thu Apr 10 22:15:05 1997 --- rgnus/lisp/gnus-srvr.el Wed Jun 18 00:53:21 1997 *************** *** 691,697 **** (save-excursion (beginning-of-line) ;; If this group it killed, then we want to subscribe it. ! (when (= (following-char) ?K) (setq sub t)) (setq group (gnus-browse-group-name)) ;; Make sure the group has been properly removed before we --- 691,697 ---- (save-excursion (beginning-of-line) ;; If this group it killed, then we want to subscribe it. ! (when (= (char-after (point)) ?K) (setq sub t)) (setq group (gnus-browse-group-name)) ;; Make sure the group has been properly removed before we *** pub/rgnus/lisp/gnus-start.el Sat May 24 12:51:12 1997 --- rgnus/lisp/gnus-start.el Wed Jun 18 00:53:21 1997 *************** *** 1690,1702 **** (progn (skip-chars-forward " \t") (not ! (or (= (following-char) ?=) ! (= (following-char) ?x) ! (= (following-char) ?j))))) (progn (set group (cons min max)) ;; if group is moderated, stick in moderation table ! (when (= (following-char) ?m) (unless gnus-moderated-hashtb (setq gnus-moderated-hashtb (gnus-make-hashtable))) (gnus-sethash (symbol-name group) t --- 1690,1702 ---- (progn (skip-chars-forward " \t") (not ! (or (= (char-after (point)) ?=) ! (= (char-after (point)) ?x) ! (= (char-after (point)) ?j))))) (progn (set group (cons min max)) ;; if group is moderated, stick in moderation table ! (when (= (char-after (point)) ?m) (unless gnus-moderated-hashtb (setq gnus-moderated-hashtb (gnus-make-hashtable))) (gnus-sethash (symbol-name group) t *************** *** 1750,1756 **** (let (min max group) (while (not (eobp)) (condition-case () ! (when (= (following-char) ?2) (read cur) (read cur) (setq min (read cur) max (read cur)) --- 1750,1756 ---- (let (min max group) (while (not (eobp)) (condition-case () ! (when (= (char-after (point)) ?2) (read cur) (read cur) (setq min (read cur) max (read cur)) *************** *** 1965,1971 **** (unless (boundp symbol) (set symbol nil)) ;; It was a group name. ! (setq subscribed (= (following-char) ?:) group (symbol-name symbol) reads nil) (if (eolp) --- 1965,1971 ---- (unless (boundp symbol) (set symbol nil)) ;; It was a group name. ! (setq subscribed (= (char-after (point)) ?:) group (symbol-name symbol) reads nil) (if (eolp) *************** *** 1989,1995 **** (read buf))) (widen) ;; If the next character is a dash, then this is a range. ! (if (= (following-char) ?-) (progn ;; We read the upper bound of the range. (forward-char 1) --- 1989,1995 ---- (read buf))) (widen) ;; If the next character is a dash, then this is a range. ! (if (= (char-after (point)) ?-) (progn ;; We read the upper bound of the range. (forward-char 1) *************** *** 2011,2018 **** (push num1 reads)) ;; If the next char in ?\n, then we have reached the end ;; of the line and return nil. ! (/= (following-char) ?\n)) ! ((= (following-char) ?\n) ;; End of line, so we end. nil) (t --- 2011,2018 ---- (push num1 reads)) ;; If the next char in ?\n, then we have reached the end ;; of the line and return nil. ! (/= (char-after (point)) ?\n)) ! ((= (char-after (point)) ?\n) ;; End of line, so we end. nil) (t *** pub/rgnus/lisp/gnus-sum.el Sat May 31 15:48:28 1997 --- rgnus/lisp/gnus-sum.el Wed Jun 18 00:53:22 1997 *************** *** 1193,1199 **** "j" gnus-summary-goto-article "g" gnus-summary-goto-subject "l" gnus-summary-goto-last-article ! "p" gnus-summary-pop-article) (gnus-define-keys (gnus-summary-thread-map "T" gnus-summary-mode-map) "k" gnus-summary-kill-thread --- 1193,1199 ---- "j" gnus-summary-goto-article "g" gnus-summary-goto-subject "l" gnus-summary-goto-last-article ! "o" gnus-summary-pop-article) (gnus-define-keys (gnus-summary-thread-map "T" gnus-summary-mode-map) "k" gnus-summary-kill-thread *************** *** 2176,2182 **** (while (setq point (pop config)) (when (and (< point (point-max)) (goto-char point) ! (= (following-char) ?\n)) (subst-char-in-region point (1+ point) ?\n ?\r))))) ;; Various summary mode internalish functions. --- 2176,2182 ---- (while (setq point (pop config)) (when (and (< point (point-max)) (goto-char point) ! (= (char-after (point)) ?\n)) (subst-char-in-region point (1+ point) ?\n ?\r))))) ;; Various summary mode internalish functions. *************** *** 4250,4256 **** (defmacro gnus-nov-read-integer () '(prog1 ! (if (= (following-char) ?\t) 0 (let ((num (ignore-errors (read buffer)))) (if (numberp num) num 0))) --- 4250,4256 ---- (defmacro gnus-nov-read-integer () '(prog1 ! (if (= (char-after (point)) ?\t) 0 (let ((num (ignore-errors (read buffer)))) (if (numberp num) num 0))) *************** *** 4300,4306 **** (gnus-nov-field)) ; refs (gnus-nov-read-integer) ; chars (gnus-nov-read-integer) ; lines ! (if (= (following-char) ?\n) nil (gnus-nov-field))))) ; misc --- 4300,4306 ---- (gnus-nov-field)) ; refs (gnus-nov-read-integer) ; chars (gnus-nov-read-integer) ; lines ! (if (eq (char-after (point)) ?\n) nil (gnus-nov-field))))) ; misc *************** *** 4409,4415 **** (save-restriction (nnheader-narrow-to-headers) (goto-char (point-min)) ! (when (or (and (eq (downcase (following-char)) ?x) (looking-at "Xref:")) (search-forward "\nXref:" nil t)) (goto-char (1+ (match-end 0))) --- 4409,4415 ---- (save-restriction (nnheader-narrow-to-headers) (goto-char (point-min)) ! (when (or (and (eq (downcase (char-after (point))) ?x) (looking-at "Xref:")) (search-forward "\nXref:" nil t)) (goto-char (1+ (match-end 0))) *************** *** 7498,7504 **** ;; Go to the right position on the line. (goto-char (+ forward (point))) ;; Replace the old mark with the new mark. ! (subst-char-in-region (point) (1+ (point)) (following-char) mark) ;; Optionally update the marks by some user rule. (when (eq type 'unread) (gnus-data-set-mark --- 7498,7504 ---- ;; Go to the right position on the line. (goto-char (+ forward (point))) ;; Replace the old mark with the new mark. ! (subst-char-in-region (point) (1+ (point)) (char-after (point)) mark) ;; Optionally update the marks by some user rule. (when (eq type 'unread) (gnus-data-set-mark *** pub/rgnus/lisp/gnus-xmas.el Sat May 31 15:48:29 1997 --- rgnus/lisp/gnus-xmas.el Wed Jun 18 00:53:22 1997 *************** *** 69,75 **** "Colors used for the Gnus logo.") (defcustom gnus-article-x-face-command ! (if (featurep 'xface) 'gnus-xmas-article-display-xface "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -") "String or function to be executed to display an X-Face header. --- 69,76 ---- "Colors used for the Gnus logo.") (defcustom gnus-article-x-face-command ! (if (or (featurep 'xface) ! (featurep 'xpm)) 'gnus-xmas-article-display-xface "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -") "String or function to be executed to display an X-Face header. *************** *** 133,143 **** (if (stringp buffer) nil (map-extents (lambda (extent ignored) ! (remove-text-properties ! start end ! (list (extent-property extent 'text-prop) nil) ! buffer)) ! buffer start end nil nil 'text-prop) (gnus-add-text-properties start end props buffer))) (defun gnus-xmas-highlight-selected-summary () --- 134,145 ---- (if (stringp buffer) nil (map-extents (lambda (extent ignored) ! (remove-text-properties ! start end ! (list (extent-property extent 'text-prop) nil) ! buffer) ! nil) ! buffer start end nil nil 'text-prop) (gnus-add-text-properties start end props buffer))) (defun gnus-xmas-highlight-selected-summary () *************** *** 526,540 **** (let* ((logo-xpm (expand-file-name "gnus.xpm" gnus-xmas-glyph-directory)) (logo-xbm (expand-file-name "gnus.xbm" gnus-xmas-glyph-directory)) (glyph (make-glyph ! (list ! (vector 'xpm ! ':file logo-xpm ! ':color-symbols ! `(("thing" . ,(car gnus-xmas-logo-colors)) ! ("shadow" . ,(cadr gnus-xmas-logo-colors)) ! ("background" . ,(face-background 'default)))) ! (vector 'xbm :file logo-xbm) ! (vector 'nothing))))) (insert " ") (set-extent-begin-glyph (make-extent (point) (point)) glyph) (goto-char (point-min)) --- 528,543 ---- (let* ((logo-xpm (expand-file-name "gnus.xpm" gnus-xmas-glyph-directory)) (logo-xbm (expand-file-name "gnus.xbm" gnus-xmas-glyph-directory)) (glyph (make-glyph ! `(,@(if (featurep 'xpm) ! (list ! (vector 'xpm ! ':file logo-xpm ! ':color-symbols ! `(("thing" . ,(car gnus-xmas-logo-colors)) ! ("shadow" . ,(cadr gnus-xmas-logo-colors)) ! ("background" . ,(face-background 'default)))))) ! ,(vector 'xbm :file logo-xbm) ! ,(vector 'nothing))))) (insert " ") (set-extent-begin-glyph (make-extent (point) (point)) glyph) (goto-char (point-min)) *************** *** 717,737 **** "Display any XFace headers in the current article." (save-excursion (let ((xface-glyph ! (if (featurep 'xface) ! (make-glyph (vector 'xface :data ! (concat "X-Face: " ! (buffer-substring beg end)))) ! (let ((cur (current-buffer))) ! (save-excursion ! (gnus-set-work-buffer) ! (insert (format "%s" (buffer-substring beg end cur))) ! (gnus-xmas-call-region "uncompface") ! (goto-char (point-min)) ! (insert "/* Width=48, Height=48 */\n") ! (gnus-xmas-call-region "icontopbm") ! (gnus-xmas-call-region "ppmtoxpm") ! (make-glyph ! (vector 'xpm :data (buffer-string)))))))) (set-glyph-face xface-glyph 'gnus-x-face) (goto-char (point-min)) (re-search-forward "^From:" nil t) --- 720,743 ---- "Display any XFace headers in the current article." (save-excursion (let ((xface-glyph ! (cond ((featurep 'xface) ! (make-glyph (vector 'xface :data ! (concat "X-Face: " ! (buffer-substring beg end))))) ! ((featurep 'xpm) ! (let ((cur (current-buffer))) ! (save-excursion ! (gnus-set-work-buffer) ! (insert (format "%s" (buffer-substring beg end cur))) ! (gnus-xmas-call-region "uncompface") ! (goto-char (point-min)) ! (insert "/* Width=48, Height=48 */\n") ! (gnus-xmas-call-region "icontopbm") ! (gnus-xmas-call-region "ppmtoxpm") ! (make-glyph ! (vector 'xpm :data (buffer-string))))) ! (t ! (make-glyph [nothing])))))) (set-glyph-face xface-glyph 'gnus-x-face) (goto-char (point-min)) (re-search-forward "^From:" nil t) *************** *** 768,780 **** (file-xbm (expand-file-name "gnus-pointer.xbm" gnus-xmas-glyph-directory)) (glyph (make-glyph ! (list ! ;; Let's try a nifty XPM ! (vector 'xpm ':file file-xpm) ! ;; Then a not-so-nifty XBM ! (vector 'xbm ':file file-xbm) ! ;; Then the simple string ! (vector 'string ':data "Gnus:"))))) (set-glyph-face glyph 'modeline-buffer-id) glyph))) --- 774,788 ---- (file-xbm (expand-file-name "gnus-pointer.xbm" gnus-xmas-glyph-directory)) (glyph (make-glyph ! ;; Gag gag gag. ! `( ! ,@(if (featurep 'xpm) ! ;; Let's try a nifty XPM ! (list (vector 'xpm ':file file-xpm))) ! ;; Then a not-so-nifty XBM ! ,(vector 'xbm ':file file-xbm) ! ;; Then the simple string ! ,(vector 'string ':data "Gnus:"))))) (set-glyph-face glyph 'modeline-buffer-id) glyph))) *** pub/rgnus/lisp/gnus.el Sat May 31 15:48:30 1997 --- rgnus/lisp/gnus.el Wed Jun 18 00:53:23 1997 *************** *** 226,232 **** :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "5.4.56" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) --- 226,232 ---- :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "5.4.57" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) *************** *** 647,658 **** (save-excursion (save-restriction (narrow-to-region start end) ! (indent-rigidly start end arg) ! ;; We translate tabs into spaces -- not everybody uses ! ;; an 8-character tab. ! (goto-char (point-min)) ! (while (search-forward "\t" nil t) ! (replace-match " " t t))))) (defvar gnus-simple-splash nil) --- 647,659 ---- (save-excursion (save-restriction (narrow-to-region start end) ! (let ((tab-width 8)) ! (indent-rigidly start end arg) ! ;; We translate tabs into spaces -- not everybody uses ! ;; an 8-character tab. ! (goto-char (point-min)) ! (while (search-forward "\t" nil t) ! (replace-match " " t t)))))) (defvar gnus-simple-splash nil) *************** *** 1906,1911 **** --- 1907,1926 ---- ;;; ;;; Gnus Utility Functions ;;; + + (defmacro gnus-string-or (&rest strings) + "Return the first element of STRINGS that is a non-blank string. + STRINGS will be evaluated in normal `or' order." + `(gnus-string-or-1 ',strings)) + + (defun gnus-string-or-1 (strings) + (let (string) + (while strings + (setq string (eval (pop strings))) + (if (string-match "^[ \t]*$" string) + (setq string nil) + (setq strings nil))) + string)) ;; Add the current buffer to the list of buffers to be killed on exit. (defun gnus-add-current-to-buffer-list () *** pub/rgnus/lisp/mailheader.el Fri Mar 7 23:51:27 1997 --- rgnus/lisp/mailheader.el Wed Jun 18 00:53:23 1997 *************** *** 60,66 **** start end) (while (and (setq start (point)) (> (skip-chars-forward "^\0- :") 0) ! (= (following-char) ?:) (setq end (point)) (progn (forward-char) (> (skip-chars-forward " \t") 0))) --- 60,66 ---- start end) (while (and (setq start (point)) (> (skip-chars-forward "^\0- :") 0) ! (= (char-after (point)) ?:) (setq end (point)) (progn (forward-char) (> (skip-chars-forward " \t") 0))) *** pub/rgnus/lisp/message.el Sat May 31 15:48:30 1997 --- rgnus/lisp/message.el Wed Jun 18 00:53:24 1997 *************** *** 921,932 **** (not paren)))) (push (buffer-substring beg (point)) elems) (setq beg (match-end 0))) ! ((= (following-char) ?\") (setq quoted (not quoted))) ! ((and (= (following-char) ?\() (not quoted)) (setq paren t)) ! ((and (= (following-char) ?\)) (not quoted)) (setq paren nil)))) (nreverse elems))))) --- 921,932 ---- (not paren)))) (push (buffer-substring beg (point)) elems) (setq beg (match-end 0))) ! ((= (char-after (point)) ?\") (setq quoted (not quoted))) ! ((and (= (char-after (point)) ?\() (not quoted)) (setq paren t)) ! ((and (= (char-after (point)) ?\)) (not quoted)) (setq paren nil)))) (nreverse elems))))) *************** *** 1832,1838 **** (message-remove-header message-ignored-mail-headers t)) (goto-char (point-max)) ;; require one newline at the end. ! (or (= (preceding-char) ?\n) (insert ?\n)) (when (and news (or (message-fetch-field "cc") --- 1832,1838 ---- (message-remove-header message-ignored-mail-headers t)) (goto-char (point-max)) ;; require one newline at the end. ! (or (= (char-before (point)) ?\n) (insert ?\n)) (when (and news (or (message-fetch-field "cc") *************** *** 2009,2015 **** (message-remove-header message-ignored-news-headers t)) (goto-char (point-max)) ;; require one newline at the end. ! (or (= (preceding-char) ?\n) (insert ?\n)) (let ((case-fold-search t)) ;; Remove the delimiter. --- 2009,2015 ---- (message-remove-header message-ignored-news-headers t)) (goto-char (point-max)) ;; require one newline at the end. ! (or (= (char-before (point)) ?\n) (insert ?\n)) (let ((case-fold-search t)) ;; Remove the delimiter. *************** *** 2298,2304 **** (concat "^" (regexp-quote mail-header-separator) "$")) (while (not (eobp)) (when (not (looking-at "[ \t\n]")) ! (setq sum (logxor (ash sum 1) (following-char)))) (forward-char 1))) sum)) --- 2298,2305 ---- (concat "^" (regexp-quote mail-header-separator) "$")) (while (not (eobp)) (when (not (looking-at "[ \t\n]")) ! (setq sum (logxor (ash sum 1) (if (natnump sum) 0 1) ! (following-char)))) (forward-char 1))) sum)) *************** *** 2675,2681 **** (progn ;; The header was found. We insert a space after the ;; colon, if there is none. ! (if (/= (following-char) ? ) (insert " ") (forward-char 1)) ;; Find out whether the header is empty... (looking-at "[ \t]*$"))) ;; So we find out what value we should insert. --- 2676,2682 ---- (progn ;; The header was found. We insert a space after the ;; colon, if there is none. ! (if (/= (char-after (point)) ? ) (insert " ") (forward-char 1)) ;; Find out whether the header is empty... (looking-at "[ \t]*$"))) ;; So we find out what value we should insert. *************** *** 2783,2789 **** (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward "^,\"" (point-max)) ! (if (or (= (following-char) ?,) (eobp)) (when (not quoted) (if (and (> (current-column) 78) --- 2784,2790 ---- (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward "^,\"" (point-max)) ! (if (or (= (char-after (point)) ?,) (eobp)) (when (not quoted) (if (and (> (current-column) 78) *************** *** 2830,2836 **** (search-backward ":" ) (widen) (forward-char 1) ! (if (= (following-char) ? ) (forward-char 1) (insert " "))) (t --- 2831,2837 ---- (search-backward ":" ) (widen) (forward-char 1) ! (if (= (char-after (point)) ? ) (forward-char 1) (insert " "))) (t *************** *** 3527,3533 **** (goto-char (min start end)) (while (< (point) end1) (or (looking-at "[_\^@- ]") ! (insert (following-char) "\b")) (forward-char 1))))) ;;;###autoload --- 3528,3534 ---- (goto-char (min start end)) (while (< (point) end1) (or (looking-at "[_\^@- ]") ! (insert (char-after (point)) "\b")) (forward-char 1))))) ;;;###autoload *************** *** 3541,3547 **** (move-marker end1 (max start end)) (goto-char (min start end)) (while (re-search-forward "\b" end1 t) ! (if (eq (following-char) (char-after (- (point) 2))) (delete-char -2)))))) (defalias 'message-exchange-point-and-mark 'exchange-point-and-mark) --- 3542,3548 ---- (move-marker end1 (max start end)) (goto-char (min start end)) (while (re-search-forward "\b" end1 t) ! (if (eq (char-after (point)) (char-after (- (point) 2))) (delete-char -2)))))) (defalias 'message-exchange-point-and-mark 'exchange-point-and-mark) *** pub/rgnus/lisp/nnheader.el Mon Mar 24 17:02:53 1997 --- rgnus/lisp/nnheader.el Wed Jun 18 00:53:24 1997 *************** *** 257,263 **** (defmacro nnheader-nov-read-integer () '(prog1 ! (if (= (following-char) ?\t) 0 (let ((num (ignore-errors (read (current-buffer))))) (if (numberp num) num 0))) --- 257,263 ---- (defmacro nnheader-nov-read-integer () '(prog1 ! (if (= (char-after (point)) ?\t) 0 (let ((num (ignore-errors (read (current-buffer))))) (if (numberp num) num 0))) *************** *** 277,283 **** (nnheader-nov-field) ; refs (nnheader-nov-read-integer) ; chars (nnheader-nov-read-integer) ; lines ! (if (= (following-char) ?\n) nil (nnheader-nov-field)) ; misc ))) --- 277,283 ---- (nnheader-nov-field) ; refs (nnheader-nov-read-integer) ; chars (nnheader-nov-read-integer) ; lines ! (if (= (char-after (point)) ?\n) nil (nnheader-nov-field)) ; misc ))) *** pub/rgnus/lisp/nnmail.el Sat May 31 15:48:31 1997 --- rgnus/lisp/nnmail.el Wed Jun 18 00:53:24 1997 *************** *** 803,812 **** (when (and (or (bobp) (save-excursion (forward-line -1) ! (= (following-char) ?\n))) (save-excursion (forward-line 1) ! (while (looking-at ">From ") (forward-line 1)) (looking-at "[^ \n\t:]+[ \n\t]*:"))) (setq found 'yes))))) --- 803,812 ---- (when (and (or (bobp) (save-excursion (forward-line -1) ! (= (char-after (point)) ?\n))) (save-excursion (forward-line 1) ! (while (looking-at ">From \\|From ") (forward-line 1)) (looking-at "[^ \n\t:]+[ \n\t]*:"))) (setq found 'yes))))) *************** *** 832,841 **** (when (and (or (bobp) (save-excursion (forward-line -1) ! (= (following-char) ?\n))) (save-excursion (forward-line 1) ! (while (looking-at ">From ") (forward-line 1)) (looking-at "[^ \n\t:]+[ \n\t]*:"))) (setq found 'yes))))) --- 832,841 ---- (when (and (or (bobp) (save-excursion (forward-line -1) ! (= (char-after (point)) ?\n))) (save-excursion (forward-line 1) ! (while (looking-at ">From \\|From ") (forward-line 1)) (looking-at "[^ \n\t:]+[ \n\t]*:"))) (setq found 'yes))))) *************** *** 1653,1663 **** (goto-char (point-min)) (while (re-search-forward "[^ \t=]+" nil t) (setq name (match-string 0)) ! (if (not (= (following-char) ?=)) ;; Implied "yes". (setq value "yes") (forward-char 1) ! (if (not (= (following-char) ?\")) (if (not (looking-at "[^ \t]")) ;; Implied "no". (setq value "no") --- 1653,1663 ---- (goto-char (point-min)) (while (re-search-forward "[^ \t=]+" nil t) (setq name (match-string 0)) ! (if (not (= (char-after (point)) ?=)) ;; Implied "yes". (setq value "yes") (forward-char 1) ! (if (not (= (char-after (point)) ?\")) (if (not (looking-at "[^ \t]")) ;; Implied "no". (setq value "no") *** pub/rgnus/lisp/nnsoup.el Fri Mar 7 23:51:33 1997 --- rgnus/lisp/nnsoup.el Wed Jun 18 00:53:24 1997 *************** *** 681,687 **** (message-remove-header message-ignored-mail-headers t)) (goto-char (point-max)) ;; require one newline at the end. ! (or (= (preceding-char) ?\n) (insert ?\n)) (let ((case-fold-search t)) ;; Change header-delimiter to be what sendmail expects. --- 681,687 ---- (message-remove-header message-ignored-mail-headers t)) (goto-char (point-max)) ;; require one newline at the end. ! (or (= (char-before (point)) ?\n) (insert ?\n)) (let ((case-fold-search t)) ;; Change header-delimiter to be what sendmail expects. *** pub/rgnus/lisp/nntp.el Sun Apr 27 12:40:57 1997 --- rgnus/lisp/nntp.el Wed Jun 18 00:53:25 1997 *************** *** 73,82 **** Two pre-made functions are `nntp-open-network-stream', which is the default, and simply connects to some port or other on the remote ! system (see nntp-port-number). The other are `nntp-open-rlogin', which ! does an rlogin on the remote system, and then does a telnet to the ! NNTP server available there (see nntp-rlogin-parameters) and `nntp-open-telnet' which ! telnets to a remote system, logs in and does the same") (defvoo nntp-rlogin-parameters '("telnet" "-8" "${NNTPSERVER:=news}" "nntp") "*Parameters to `nntp-open-login'. --- 73,83 ---- Two pre-made functions are `nntp-open-network-stream', which is the default, and simply connects to some port or other on the remote ! system (see nntp-port-number). The other are `nntp-open-rlogin', ! which does an rlogin on the remote system, and then does a telnet to ! the NNTP server available there (see nntp-rlogin-parameters) and ! `nntp-open-telnet' which telnets to a remote system, logs in and does ! the same.") (defvoo nntp-rlogin-parameters '("telnet" "-8" "${NNTPSERVER:=news}" "nntp") "*Parameters to `nntp-open-login'. *************** *** 189,195 **** (save-excursion (set-buffer (process-buffer process)) (goto-char (point-min)) ! (while (or (not (memq (following-char) '(?2 ?3 ?4 ?5))) (looking-at "480")) (when (looking-at "480") (erase-buffer) --- 190,196 ---- (save-excursion (set-buffer (process-buffer process)) (goto-char (point-min)) ! (while (or (not (memq (char-after (point)) '(?2 ?3 ?4 ?5))) (looking-at "480")) (when (looking-at "480") (erase-buffer) *************** *** 570,589 **** (when (nntp-send-command-and-decode "\r?\n\\.\r?\n" "ARTICLE" (if (numberp article) (int-to-string article) article)) ! (when (and buffer ! (not (equal buffer nntp-server-buffer))) ! (save-excursion ! (set-buffer nntp-server-buffer) ! (copy-to-buffer buffer (point-min) (point-max)) ! (nntp-find-group-and-number))) ! (nntp-find-group-and-number))) (deffoo nntp-request-head (article &optional group server) (nntp-possibly-change-group group server) ! (when (nntp-send-command-and-decode "\r?\n\\.\r?\n" "HEAD" (if (numberp article) (int-to-string article) article)) ! (nntp-find-group-and-number))) (deffoo nntp-request-body (article &optional group server) (nntp-possibly-change-group group server) --- 571,592 ---- (when (nntp-send-command-and-decode "\r?\n\\.\r?\n" "ARTICLE" (if (numberp article) (int-to-string article) article)) ! (if (and buffer ! (not (equal buffer nntp-server-buffer))) ! (save-excursion ! (set-buffer nntp-server-buffer) ! (copy-to-buffer buffer (point-min) (point-max)) ! (nntp-find-group-and-number)) ! (nntp-find-group-and-number)))) (deffoo nntp-request-head (article &optional group server) (nntp-possibly-change-group group server) ! (when (nntp-send-command "\r?\n\\.\r?\n" "HEAD" (if (numberp article) (int-to-string article) article)) ! (prog1 ! (nntp-find-group-and-number) ! (nntp-decode-text)))) (deffoo nntp-request-body (article &optional group server) (nntp-possibly-change-group group server) *** pub/rgnus/lisp/smiley.el Sat Apr 19 06:12:56 1997 --- rgnus/lisp/smiley.el Wed Jun 18 00:53:25 1997 *************** *** 242,248 **** (save-excursion (goto-char start) (when (and (re-search-backward "[()]" nil t) ! (= (following-char) ?\() (goto-char end) (or (not (re-search-forward "[()]" nil t)) (= (char-after (1- (point))) ?\())) --- 242,248 ---- (save-excursion (goto-char start) (when (and (re-search-backward "[()]" nil t) ! (= (char-after (point)) ?\() (goto-char end) (or (not (re-search-forward "[()]" nil t)) (= (char-after (1- (point))) ?\())) *** pub/rgnus/lisp/ChangeLog Sat May 31 15:48:25 1997 --- rgnus/lisp/ChangeLog Wed Jun 18 00:53:18 1997 *************** *** 1,3 **** --- 1,84 ---- + Wed Jun 18 00:33:41 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.57 is released. + + Wed Jun 18 00:09:35 1997 Lars Magne Ingebrigtsen + + * gnus-demon.el (gnus-demon-add-nocem): Use a numerical idle. + + 1997-06-10 Steven L Baur + + * nntp.el (nntp-wait-for): Replace following-char with char-after. + + 1997-06-09 Steven L Baur + + * gnus-msg.el (gnus-extended-version): Put XEmacs codename in + default X-Mailer/X-Newsreader if the symbol exists. + + Tue Jun 10 20:24:35 1997 Christoph Wedler + + * message.el (message-checksum): Do not only inspect the last + 32/64 characters; technical: `ash' is no bit-rotate. + + Tue Jun 17 23:45:00 1997 Guy Geens + + * gnus-score.el (gnus-decay-scores): Use the right index. + + Tue Jun 17 23:22:24 1997 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-load-file): Set the decay when not + set. + + * gnus-art.el (gnus-article-treat-html): Do w3 setup. + + * gnus.el (gnus-indent-rigidly): Be useful on odd tab widths. + + * gnus-xmas.el (gnus-article-x-face-command): Allow just using + xpm. + + Thu Jun 5 18:33:31 1997 Robert Bihlmeyer + + * gnus-score.el (gnus-score-find-trace): Would bug out for + file-less rules. + + Tue Jun 17 22:57:14 1997 Hrvoje Niksic + + * gnus-xmas.el (gnus-xmas-group-startup-message): Cleanup. + + Tue Jun 17 22:55:14 1997 Lars Magne Ingebrigtsen + + * nntp.el (nntp-request-head): Guess at article number. + + Tue Jun 17 22:40:49 1997 David Moore + + * gnus-xmas.el (gnus-xmas-set-text-properties): New version. + + Tue Jun 17 21:30:37 1997 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-search-forward): Ignore topic lines. + + Tue Jun 17 18:06:09 1997 "Karl M. Hegbloom" + + * gnus.el: ebola fixes. + + Wed Jun 11 19:23:09 1997 Lars Magne Ingebrigtsen + + * gnus-sum.el (t): Moved pop article keystroke. + + Tue Jun 10 06:32:52 1997 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-search-unix-mail-delim-backward): Allow + several "From "'s. + (nnmail-search-unix-mail-delim): Ditto. + + Fri Jun 6 19:31:10 1997 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-make-web-group): Use default prompt + instead of string. + + * gnus.el (gnus-string-or): New macro. + (gnus-string-or-1): New function. + Sat May 31 15:41:09 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.56 is released. *** pub/rgnus/texi/Makefile Mon Mar 17 17:40:29 1997 --- rgnus/texi/Makefile Mon Jun 9 05:09:44 1997 *************** *** 10,16 **** all: gnus message custom widget ! most: texi2latexi.elc latex latexps gnus: gnus.texi $(MAKEINFO) -eval '(find-file "gnus.texi")' $(XINFOSWI) --- 10,16 ---- all: gnus message custom widget ! most: texi2latex.elc latex latexps gnus: gnus.texi $(MAKEINFO) -eval '(find-file "gnus.texi")' $(XINFOSWI) *************** *** 46,51 **** --- 46,52 ---- clean: make sclean rm -f *.latexi + rm tmp/*.ps makeinfo: makeinfo -o gnus gnus.texi *************** *** 53,76 **** makeinfo -o widget widget.texi makeinfo -o custom custom.texi ! texi2latexi.elc: $(EMACS) -batch -l bytecomp -f batch-byte-recompile-directory latex: gnus.texi $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate latexps: egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1 $(LATEX) gnus.tmplatexi1 splitindex makeindex -o gnus.kind gnus.kidx makeindex -o gnus.cind gnus.cidx makeindex -o gnus.gind gnus.gidx egrep -v "end{document}" gnus.tmplatexi1 > gnus.tmplatexi cat postamble.tex >> gnus.tmplatexi $(LATEX) gnus.tmplatexi $(LATEX) gnus.tmplatexi ! $(DVIPS) -f gnus.dvi > gnus.ps pss: make latex --- 54,80 ---- makeinfo -o widget widget.texi makeinfo -o custom custom.texi ! texi2latex.elc: texi2latex.el $(EMACS) -batch -l bytecomp -f batch-byte-recompile-directory latex: gnus.texi $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate latexps: + make texi2latex.elc egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1 $(LATEX) gnus.tmplatexi1 splitindex makeindex -o gnus.kind gnus.kidx makeindex -o gnus.cind gnus.cidx makeindex -o gnus.gind gnus.gidx + sed 's/\\char 5E\\relax {}/\\symbol{"5E}/' < gnus.kind > gnus.tmpkind + mv gnus.tmpkind gnus.kind egrep -v "end{document}" gnus.tmplatexi1 > gnus.tmplatexi cat postamble.tex >> gnus.tmplatexi $(LATEX) gnus.tmplatexi $(LATEX) gnus.tmplatexi ! $(DVIPS) -f gnus.dvi > /local/tmp/larsi/gnus.ps pss: make latex *************** *** 84,101 **** latexboth: rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz make latexps ! mv gnus.ps gnus-manual-a4.ps ! gzip gnus-manual-a4.ps sed 's/,a4paper//' gnus.latexi > gnus-standard.latexi make latexps ! mv gnus.ps gnus-manual-standard.ps ! gzip gnus-manual-standard.ps out: ! cp gnus-manual-standard.ps.gz gnus-manual-a4.ps.gz \ /local/ftp/pub/emacs/gnus/manual ! mv gnus-manual-standard.ps.gz gnus-manual-a4.ps.gz \ ! /hom/larsi/www_docs/gnus/manual veryclean: make clean --- 88,108 ---- latexboth: rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz make latexps ! mv /local/tmp/larsi/gnus.ps /local/tmp/larsi/gnus-manual-a4.ps ! gzip /local/tmp/larsi/gnus-manual-a4.ps sed 's/,a4paper//' gnus.latexi > gnus-standard.latexi + mv gnus-standard.latexi gnus.latexi make latexps ! mv /local/tmp/larsi/gnus.ps /local/tmp/larsi/gnus-manual-standard.ps ! gzip /local/tmp/larsi/gnus-manual-standard.ps out: ! cp /local/tmp/larsi/gnus-manual-standard.ps.gz \ ! /local/tmp/larsi/gnus-manual-a4.ps.gz \ /local/ftp/pub/emacs/gnus/manual ! mv /local/tmp/larsi/gnus-manual-standard.ps.gz \ ! /local/tmp/larsi/gnus-manual-a4.ps.gz \ ! /hom/larsi/www_docs/www.gnus.org/documents veryclean: make clean *************** *** 111,113 **** --- 118,148 ---- cp message $(INFODIR) cp widget $(INFODIR) cp custom $(INFODIR) + + tmps: + if [ ! -d /local/tmp/larsi ]; then mkdir /local/tmp/larsi; fi + make screens + make herds + make etc + make piconss + make xfaces + + herds: + cd ps ; for i in new-herd-[0-9]*.gif; do echo $$i; giftoppm $$i | pnmcrop -white | pnmmargin -white 9 | pnmscale 2 | pnmsmooth -size 5 5 | ppmtopgm | pgmtops > ../tmp/`basename $$i .gif`.ps; done + cd ps ; giftoppm new-herd-section.gif | pnmscale 4 | pnmsmooth -size 11 11 | ppmtopgm | pgmtops > ../tmp/new-herd-section.ps + + screens: + cd screen ; for i in *.gif; do echo $$i; giftoppm $$i | pnmmargin -black 1 | ppmtopgm | pgmtops > ../tmp/`basename $$i .gif`.ps; done + giftoppm ps/larsi.gif | ppmtopgm | pgmtops > tmp/larsi.ps + + etc: + cd ../etc/gnus; for i in gnus-*.xpm; do echo $$i; xpmtoppm $$i | ppmtopgm | pgmtops > ../../texi/tmp/`basename $$i .xpm`.ps; done + + piconss: + cd picons; for i in *.xbm; do echo $$i; xbmtopbm $$i | pgmtops > ../tmp/picons-`basename $$i .xbm`.ps; done + cd picons; for i in *.gif; do echo $$i; giftoppm $$i | ppmtopgm | pgmtops > ../tmp/picons-`basename $$i .gif`.ps; done + for i in tmp/picons-*.ps; do echo "\\gnuspicon{$$i}"; done > picons.tmplatexi + + xfaces: + cd xface; for i in *.gif; do echo $$i; giftoppm $$i | ppmtopgm | pgmtops > ../tmp/xface-`basename $$i .gif`.ps; done + for i in tmp/xface-*.ps; do echo "\\gnusxface{$$i}"; done > xface.tmplatexi *** pub/rgnus/texi/gnus.texi Sat May 31 15:48:33 1997 --- rgnus/texi/gnus.texi Wed Jun 18 00:49:16 1997 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Gnus 5.4.56 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Gnus 5.4.57 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 12,22 **** @iftex @iflatex ! \documentclass[twoside,a4paper,openright]{book} \usepackage[latin1]{inputenc} \usepackage{pagestyle} \usepackage{epsfig} ! \fontfamily{bembo}\selectfont \makeindex \begin{document} --- 12,22 ---- @iftex @iflatex ! \documentclass[twoside,a4paper,openright,11pt]{book} \usepackage[latin1]{inputenc} \usepackage{pagestyle} \usepackage{epsfig} ! \usepackage{bembo} \makeindex \begin{document} *************** *** 32,40 **** \newcommand{\gnuskindex}[1]{\index{#1}} \newcommand{\gnusindex}[1]{\index{#1}} ! \newcommand{\gnustt}[1]{{\textbf{\textsf{#1}}}} \newcommand{\gnuscode}[1]{\gnustt{#1}} ! \newcommand{\gnussamp}[1]{``\gnustt{#1}''} \newcommand{\gnuslisp}[1]{\gnustt{#1}} \newcommand{\gnuskbd}[1]{`\gnustt{#1}'} \newcommand{\gnusfile}[1]{`\gnustt{#1}'} --- 32,40 ---- \newcommand{\gnuskindex}[1]{\index{#1}} \newcommand{\gnusindex}[1]{\index{#1}} ! \newcommand{\gnustt}[1]{{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}} \newcommand{\gnuscode}[1]{\gnustt{#1}} ! \newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pcr}\fontsize{10pt}{10}\selectfont #1}''} \newcommand{\gnuslisp}[1]{\gnustt{#1}} \newcommand{\gnuskbd}[1]{`\gnustt{#1}'} \newcommand{\gnusfile}[1]{`\gnustt{#1}'} *************** *** 42,48 **** \newcommand{\gnusi}[1]{\textit{#1}} \newcommand{\gnusstrong}[1]{\textbf{#1}} \newcommand{\gnusemph}[1]{\textit{#1}} ! \newcommand{\gnusvar}[1]{\textsl{\textsf{#1}}} \newcommand{\gnussc}[1]{\textsc{#1}} \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}} \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} --- 42,48 ---- \newcommand{\gnusi}[1]{\textit{#1}} \newcommand{\gnusstrong}[1]{\textbf{#1}} \newcommand{\gnusemph}[1]{\textit{#1}} ! \newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}} \newcommand{\gnussc}[1]{\textsc{#1}} \newcommand{\gnustitle}[1]{{\huge\textbf{#1}}} \newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} *************** *** 61,67 **** \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} \newcommand{\gnusinteresting}{ ! \marginpar[\hspace{2.5cm}\gnushead]{\gnushead} } \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi} --- 61,67 ---- \newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} \newcommand{\gnusinteresting}{ ! \marginpar[\mbox{}\hfill\gnushead]{\gnushead} } \newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi} *************** *** 82,93 **** \thispagestyle{empty} \hspace*{-2cm} \begin{picture}(500,500)(0,0) ! \put(0,0){\makebox(480,350)[tr]{#1}} \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}} \end{picture} \clearpage } \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1} \newcommand{\gnussection}[1]{ --- 82,115 ---- \thispagestyle{empty} \hspace*{-2cm} \begin{picture}(500,500)(0,0) ! \put(480,350){\makebox(0,0)[tr]{#1}} \put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}} \end{picture} \clearpage } + \newcommand{\gnusfigure}[3]{ + \begin{figure} + \mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2) + #3 + \end{picture} + \caption{#1} + \end{figure} + } + + \newcommand{\gnusicon}[1]{ + \marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=tmp/#1-up.ps,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=tmp/#1-up.ps,height=1cm}}} + } + + \newcommand{\gnuspicon}[1]{ + \marginpar[\mbox{}\hfill\epsfig{figure=#1,height=1.5cm}]{\epsfig{figure=#1,height=1.5cm}} + } + + \newcommand{\gnusxface}[1]{ + \marginpar[\mbox{}\hfill\epsfig{figure=#1,height=1cm}]{\epsfig{figure=#1,height=1cm}} + } + + \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1} \newcommand{\gnussection}[1]{ *************** *** 189,199 **** { \ifodd\count0 { ! \hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}} } \else { ! \hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}} } \fi } --- 211,221 ---- { \ifodd\count0 { ! \makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}} } \else { ! \makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}} } \fi } *************** *** 227,233 **** \gnustitle{\gnustitlename}\\ \rule{15cm}{1mm}\\ \vfill ! \hspace*{-1cm}\epsfig{figure=gnus-big-logo.eps,height=15cm} \vfill \rule{15cm}{1mm}\\ \gnusauthor{by Lars Magne Ingebrigtsen} --- 249,255 ---- \gnustitle{\gnustitlename}\\ \rule{15cm}{1mm}\\ \vfill ! \hspace*{0cm}\epsfig{figure=gnus-big-logo.eps,height=15cm} \vfill \rule{15cm}{1mm}\\ \gnusauthor{by Lars Magne Ingebrigtsen} *************** *** 287,293 **** @tex @titlepage ! @title Gnus 5.4.56 Manual @author by Lars Magne Ingebrigtsen @page --- 309,315 ---- @tex @titlepage ! @title Gnus 5.4.57 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 323,329 **** spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Gnus 5.4.56. @end ifinfo --- 345,351 ---- spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Gnus 5.4.57. @end ifinfo *************** *** 438,444 **** @code{NNTPSERVER} environment variable. If that variable isn't set, Gnus will see whether @code{gnus-nntpserver-file} (@file{/etc/nntpserver} by default) has any opinions on the matter. If ! that fails as well, Gnus will will try to use the machine that is running Emacs as an @sc{nntp} server. That's a long shot, though. @vindex gnus-nntp-server --- 460,466 ---- @code{NNTPSERVER} environment variable. If that variable isn't set, Gnus will see whether @code{gnus-nntpserver-file} (@file{/etc/nntpserver} by default) has any opinions on the matter. If ! that fails as well, Gnus will try to use the machine that is running Emacs as an @sc{nntp} server. That's a long shot, though. @vindex gnus-nntp-server *************** *** 494,501 **** something useful. Since she hasn't, Gnus will just subscribe you to a few arbitrarily ! picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is here ! defined as @dfn{whatever Lars thinks you should read}.) You'll also be subscribed to the Gnus documentation group, which should help you with most common problems. --- 516,523 ---- something useful. Since she hasn't, Gnus will just subscribe you to a few arbitrarily ! picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined ! here as @dfn{whatever Lars thinks you should read}.) You'll also be subscribed to the Gnus documentation group, which should help you with most common problems. *************** *** 571,577 **** @cindex fetching a group @findex gnus-fetch-group ! It it sometimes convenient to be able to just say ``I want to read this group and I don't care whether Gnus has been started or not''. This is perhaps more useful for people who write code than for users, but the command @code{gnus-fetch-group} provides this functionality in any case. --- 593,599 ---- @cindex fetching a group @findex gnus-fetch-group ! It is sometimes convenient to be able to just say ``I want to read this group and I don't care whether Gnus has been started or not''. This is perhaps more useful for people who write code than for users, but the command @code{gnus-fetch-group} provides this functionality in any case. *************** *** 691,697 **** will ask you for each sub-hierarchy whether you want to descend the hierarchy or not. ! One common mistake is to set the variable a few paragraphs above to @code{gnus-subscribe-hierarchical-interactive}. This is an error. This will not work. This is ga-ga. So don't do it. --- 713,720 ---- will ask you for each sub-hierarchy whether you want to descend the hierarchy or not. ! One common mistake is to set the variable a few paragraphs above ! (@code{gnus-subscribe-newsgroup-method}) to @code{gnus-subscribe-hierarchical-interactive}. This is an error. This will not work. This is ga-ga. So don't do it. *************** *** 723,729 **** set the two variables @code{gnus-options-subscribe} and @code{gnus-options-not-subscribe}. These two variables do exactly the same as the @file{.newsrc} @samp{options -n} trick. Both are regexps, ! and if the the new group matches the former, it will be unconditionally subscribed, and if it matches the latter, it will be ignored. @vindex gnus-auto-subscribed-groups --- 746,752 ---- set the two variables @code{gnus-options-subscribe} and @code{gnus-options-not-subscribe}. These two variables do exactly the same as the @file{.newsrc} @samp{options -n} trick. Both are regexps, ! and if the new group matches the former, it will be unconditionally subscribed, and if it matches the latter, it will be ignored. @vindex gnus-auto-subscribed-groups *************** *** 833,839 **** @vindex gnus-startup-file The @code{gnus-startup-file} variable says where the startup files are. The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup ! file being whatever that one is with a @samp{.eld} appended. @vindex gnus-save-newsrc-hook @vindex gnus-save-quick-newsrc-hook --- 856,862 ---- @vindex gnus-startup-file The @code{gnus-startup-file} variable says where the startup files are. The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup ! file being whatever that one is, with a @samp{.eld} appended. @vindex gnus-save-newsrc-hook @vindex gnus-save-quick-newsrc-hook *************** *** 1011,1016 **** --- 1034,1053 ---- is the first buffer shown when Gnus starts, and will never be killed as long as Gnus is active. + @iftex + @iflatex + \gnusfigure{The Group Buffer}{320}{ + \put(75,50){\epsfig{figure=tmp/group.ps,height=9cm}} + \put(120,37){\makebox(0,0)[t]{Buffer name}} + \put(120,38){\vector(1,2){10}} + \put(40,60){\makebox(0,0)[r]{Mode line}} + \put(40,58){\vector(1,0){30}} + \put(200,28){\makebox(0,0)[t]{Native select method}} + \put(200,26){\vector(-1,2){15}} + } + @end iflatex + @end iftex + @menu * Group Buffer Format:: Information listed and how you can change it. * Group Maneuvering:: Commands for moving in the group buffer. *************** *** 1061,1067 **** You can see that there are 25 unread articles in @samp{news.announce.newusers}. There are no unread articles, but some ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little ! asterisk at the beginning of the line?) @vindex gnus-group-line-format You can change that format to whatever you want by fiddling with the --- 1098,1104 ---- You can see that there are 25 unread articles in @samp{news.announce.newusers}. There are no unread articles, but some ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little ! asterisk at the beginning of the line?). @vindex gnus-group-line-format You can change that format to whatever you want by fiddling with the *************** *** 1164,1170 **** @item u User defined specifier. The next character in the format string should ! be a letter. @sc{gnus} will call the function @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter following @samp{%u}. The function will be passed a single dummy parameter as argument. The function should return a string, which will --- 1201,1207 ---- @item u User defined specifier. The next character in the format string should ! be a letter. Gnus will call the function @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter following @samp{%u}. The function will be passed a single dummy parameter as argument. The function should return a string, which will *************** *** 1243,1249 **** The number of ticked articles in the group. @item total The total number of articles in the group. Or rather, MAX-NUMBER minus ! MIN-NUMBER. @item topic When using the topic minor mode, this variable is bound to the current topic being inserted. --- 1280,1286 ---- The number of ticked articles in the group. @item total The total number of articles in the group. Or rather, MAX-NUMBER minus ! MIN-NUMBER plus one. @item topic When using the topic minor mode, this variable is bound to the current topic being inserted. *************** *** 1440,1445 **** --- 1477,1483 ---- @kindex S t (Group) @kindex u (Group) @findex gnus-group-unsubscribe-current-group + @c @icon{gnus-group-unsubscribe} Toggle subscription to the current group (@code{gnus-group-unsubscribe-current-group}). *************** *** 1457,1462 **** --- 1495,1501 ---- @kindex S k (Group) @kindex C-k (Group) @findex gnus-group-kill-group + @c @icon{gnus-group-kill-group} Kill the current group (@code{gnus-group-kill-group}). @item S y *************** *** 1510,1515 **** --- 1549,1555 ---- @kindex c (Group) @findex gnus-group-catchup-current @vindex gnus-group-catchup-group-hook + @c @icon{gnus-group-catchup-current} Mark all unticked articles in this group as read (@code{gnus-group-catchup-current}). @code{gnus-group-catchup-group-hook} is called when catching up a group from *************** *** 1565,1581 **** @vindex gnus-level-zombie @vindex gnus-level-unsubscribed @vindex gnus-level-subscribed ! Gnus considers groups on between levels 1 and @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed, @code{gnus-level-subscribed} (exclusive) and @code{gnus-level-unsubscribed} (inclusive) (default 7) to be unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead) ! (default 8) and @code{gnus-level-killed} to be killed (default 9), ! completely dead. Gnus treats subscribed and unsubscribed groups exactly ! the same, but zombie and killed groups have no information on what ! articles you have read, etc, stored. This distinction between dead and ! living groups isn't done because it is nice or clever, it is done purely ! for reasons of efficiency. It is recommended that you keep all your mail groups (if any) on quite low levels (e.g. 1 or 2). --- 1605,1621 ---- @vindex gnus-level-zombie @vindex gnus-level-unsubscribed @vindex gnus-level-subscribed ! Gnus considers groups from levels 1 to @code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed, @code{gnus-level-subscribed} (exclusive) and @code{gnus-level-unsubscribed} (inclusive) (default 7) to be unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead) ! (default 8) and @code{gnus-level-killed} to be killed (completely dead) ! (default 9). Gnus treats subscribed and unsubscribed groups exactly the ! same, but zombie and killed groups have no information on what articles ! you have read, etc, stored. This distinction between dead and living ! groups isn't done because it is nice or clever, it is done purely for ! reasons of efficiency. It is recommended that you keep all your mail groups (if any) on quite low levels (e.g. 1 or 2). *************** *** 1804,1810 **** @kindex G D (Group) @findex gnus-group-enter-directory @cindex nneething ! Read an arbitrary directory as if with were a newsgroup with the @code{nneething} backend (@code{gnus-group-enter-directory}). @xref{Anything Groups}. --- 1844,1850 ---- @kindex G D (Group) @findex gnus-group-enter-directory @cindex nneething ! Read an arbitrary directory as if it were a newsgroup with the @code{nneething} backend (@code{gnus-group-enter-directory}). @xref{Anything Groups}. *************** *** 1897,1903 **** @cindex to-list If the group parameter list has an element that looks like @code{(to-list . "some@@where.com")}, that address will be used when ! doing a @kbd{a} in any group. It is totally ignored when doing a followup---except that if it is present in a news group, you'll get mail group semantics when doing @kbd{f}. --- 1937,1943 ---- @cindex to-list If the group parameter list has an element that looks like @code{(to-list . "some@@where.com")}, that address will be used when ! doing a @kbd{a} in that group. It is totally ignored when doing a followup---except that if it is present in a news group, you'll get mail group semantics when doing @kbd{f}. *************** *** 1905,1910 **** --- 1945,1956 ---- @code{to-list} group parameter, one will be added automatically upon sending the message. + @item visible + @cindex visible + If the group parameter list has the element @code{(visible . t)}, + that group will always be visible in the Group buffer, regardless + of whether it has any unread articles. + @item broken-reply-to @cindex broken-reply-to Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To} *************** *** 1927,1933 **** @item gcc-self @cindex gcc-self If this symbol is present in the group parameter list and set to ! @code{t}, new composed messages will be @code{Gcc}'d to the current group. If it is present and set to @code{none}, no @code{Gcc:} header will be generated, if it is present and a string, this string will be inserted literally as a @code{gcc} header (this symbol takes precedence over --- 1973,1979 ---- @item gcc-self @cindex gcc-self If this symbol is present in the group parameter list and set to ! @code{t}, newly composed messages will be @code{Gcc}'d to the current group. If it is present and set to @code{none}, no @code{Gcc:} header will be generated, if it is present and a string, this string will be inserted literally as a @code{gcc} header (this symbol takes precedence over *************** *** 1936,1942 **** @item auto-expire @cindex auto-expire If the group parameter has an element that looks like @code{(auto-expire ! . t)}, , all articles that are read will be marked as expirable. For an alternative approach, @pxref{Expiring Mail}. @item total-expire --- 1982,1988 ---- @item auto-expire @cindex auto-expire If the group parameter has an element that looks like @code{(auto-expire ! . t)}, all articles that are read will be marked as expirable. For an alternative approach, @pxref{Expiring Mail}. @item total-expire *************** *** 1965,1981 **** @item adapt-file @cindex adapt file group parameter Elements that look like @code{(adapt-file . "file")} will make ! @file{file} into the current adaptive file for the group in question. ! All adaptive score entries will be put into this file. @item admin-address ! When unsubscribing to a mailing list you should never send the unsubscription notice to the mailing list itself. Instead, you'd send messages to the administrative address. This parameter allows you to put the admin address somewhere convenient. @item display ! Elements that look like @code{(display . MODE)} says which articles to display on entering the group. Legal values are: @table @code --- 2011,2027 ---- @item adapt-file @cindex adapt file group parameter Elements that look like @code{(adapt-file . "file")} will make ! @file{file} into the current adaptive score file for the group in ! question. All adaptive score entries will be put into this file. @item admin-address ! When unsubscribing from a mailing list you should never send the unsubscription notice to the mailing list itself. Instead, you'd send messages to the administrative address. This parameter allows you to put the admin address somewhere convenient. @item display ! Elements that look like @code{(display . MODE)} say which articles to display on entering the group. Legal values are: @table @code *************** *** 2011,2017 **** Use the @kbd{G p} command to edit group parameters of a group. ! Also @pxref{Topic Parameters}. Here's an example group parameter list: --- 2057,2063 ---- Use the @kbd{G p} command to edit group parameters of a group. ! @pxref{Topic Parameters}. Here's an example group parameter list: *************** *** 2090,2097 **** server(s) you are connected to (@code{gnus-group-list-active}). This might very well take quite a while. It might actually be a better idea to do a @kbd{A M} to list all matching, and just give @samp{.} as the ! thing to match on. Also note that this command may list group that ! don't exist (yet)---these will be listed as if they are killed groups. Take the output with some grains of salt. @item A a --- 2136,2143 ---- server(s) you are connected to (@code{gnus-group-list-active}). This might very well take quite a while. It might actually be a better idea to do a @kbd{A M} to list all matching, and just give @samp{.} as the ! thing to match on. Also note that this command may list groups that ! don't exist (yet)---these will be listed as if they were killed groups. Take the output with some grains of salt. @item A a *************** *** 2309,2315 **** @findex gnus-browse-mode A new buffer with a list of available groups will appear. This buffer ! will be use the @code{gnus-browse-mode}. This buffer looks a bit (well, a lot) like a normal group buffer. Here's a list of keystrokes available in the browse mode: --- 2355,2361 ---- @findex gnus-browse-mode A new buffer with a list of available groups will appear. This buffer ! will use the @code{gnus-browse-mode}. This buffer looks a bit (well, a lot) like a normal group buffer. Here's a list of keystrokes available in the browse mode: *************** *** 2374,2379 **** --- 2420,2426 ---- @item q @kindex q (Group) @findex gnus-group-exit + @c @icon{gnus-group-exit} Quit Gnus (@code{gnus-group-exit}). @item Q *************** *** 2417,2422 **** --- 2464,2477 ---- even group the Emacs sex groups as a sub-topic to either the Emacs groups or the sex groups---or both! Go wild! + @iftex + @iflatex + \gnusfigure{Group Topics}{400}{ + \put(75,50){\epsfig{figure=tmp/group-topic.ps,height=9cm}} + } + @end iflatex + @end iftex + Here's an example: @example *************** *** 2464,2470 **** @subsection Topic Variables @cindex topic variables ! Now, if you select a topic, if will fold/unfold that topic, which is really neat, I think. @vindex gnus-topic-line-format --- 2519,2525 ---- @subsection Topic Variables @cindex topic variables ! Now, if you select a topic, it will fold/unfold that topic, which is really neat, I think. @vindex gnus-topic-line-format *************** *** 2810,2821 **** @item gnus-group-mode-hook @vindex gnus-group-mode-hook ! @code{gnus-group-mode-hook} is called after the group buffer has been created. @item gnus-group-prepare-hook @vindex gnus-group-prepare-hook ! @code{gnus-group-prepare-hook} is called after the group buffer is generated. It may be used to modify the buffer in some strange, unnatural way. --- 2865,2876 ---- @item gnus-group-mode-hook @vindex gnus-group-mode-hook ! is called after the group buffer has been created. @item gnus-group-prepare-hook @vindex gnus-group-prepare-hook ! is called after the group buffer is generated. It may be used to modify the buffer in some strange, unnatural way. *************** *** 2837,2852 **** @item g @kindex g (Group) @findex gnus-group-get-new-news Check the server(s) for new articles. If the numerical prefix is used, this command will check only groups of level @var{arg} and lower (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this ! command will force a total rereading of the active file(s) from the backend(s). @item M-g @kindex M-g (Group) @findex gnus-group-get-new-news-this-group @vindex gnus-goto-next-group-when-activating Check whether new articles have arrived in the current group (@code{gnus-group-get-new-news-this-group}). @code{gnus-goto-next-group-when-activating} says whether this command is --- 2892,2909 ---- @item g @kindex g (Group) @findex gnus-group-get-new-news + @c @icon{gnus-group-get-new-news} Check the server(s) for new articles. If the numerical prefix is used, this command will check only groups of level @var{arg} and lower (@code{gnus-group-get-new-news}). If given a non-numerical prefix, this ! command will force a total re-reading of the active file(s) from the backend(s). @item M-g @kindex M-g (Group) @findex gnus-group-get-new-news-this-group @vindex gnus-goto-next-group-when-activating + @c @icon{gnus-group-get-new-news-this-group} Check whether new articles have arrived in the current group (@code{gnus-group-get-new-news-this-group}). @code{gnus-goto-next-group-when-activating} says whether this command is *************** *** 2903,2908 **** --- 2960,2966 ---- @item H d @itemx C-c C-d + @c @icon{gnus-group-describe-group} @kindex H d (Group) @kindex C-c C-d (Group) @cindex describing groups *************** *** 3056,3061 **** --- 3114,3128 ---- @section Summary Buffer Format @cindex summary buffer format + @iftex + @iflatex + \gnusfigure{The Summary Buffer}{180}{ + \put(0,0){\epsfig{figure=tmp/summary.ps,width=7.5cm}} + \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-article.ps,width=7.5cm}}} + } + @end iflatex + @end iftex + @menu * Summary Buffer Lines:: You can specify how summary lines should look. * Summary Buffer Mode Line:: You can say how the mode line should look. *************** *** 3067,3073 **** @vindex gnus-extract-address-components Gnus will use the value of the @code{gnus-extract-address-components} variable as a function for getting the name and address parts of a ! @code{From} header. Two pre-defined function exist: @code{gnus-extract-address-components}, which is the default, quite fast, and too simplistic solution; and @code{mail-extract-address-components}, which works very nicely, but is --- 3134,3140 ---- @vindex gnus-extract-address-components Gnus will use the value of the @code{gnus-extract-address-components} variable as a function for getting the name and address parts of a ! @code{From} header. Two pre-defined functions exist: @code{gnus-extract-address-components}, which is the default, quite fast, and too simplistic solution; and @code{mail-extract-address-components}, which works very nicely, but is *************** *** 3086,3092 **** @vindex gnus-summary-line-format You can change the format of the lines in the summary buffer by changing the @code{gnus-summary-line-format} variable. It works along the same ! lines a a normal @code{format} string, with some extensions (@pxref{Formatting Variables}). The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. --- 3153,3159 ---- @vindex gnus-summary-line-format You can change the format of the lines in the summary buffer by changing the @code{gnus-summary-line-format} variable. It works along the same ! lines as a normal @code{format} string, with some extensions (@pxref{Formatting Variables}). The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}. *************** *** 3154,3160 **** @item d The @code{Date} in @code{DD-MMM} format. @item o ! The @code{Date} in @code{YYYYMMDDTHHMMSS} format. @item M @code{Message-ID}. @item r --- 3221,3227 ---- @item d The @code{Date} in @code{DD-MMM} format. @item o ! The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format. @item M @code{Message-ID}. @item r *************** *** 3169,3175 **** The line number. @item u User defined specifier. The next character in the format string should ! be a letter. @sc{gnus} will call the function @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter following @samp{%u}. The function will be passed the current header as argument. The function should return a string, which will be inserted --- 3236,3242 ---- The line number. @item u User defined specifier. The next character in the format string should ! be a letter. Gnus will call the function @code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter following @samp{%u}. The function will be passed the current header as argument. The function should return a string, which will be inserted *************** *** 3261,3267 **** @item gnus-summary-highlight @vindex gnus-summary-highlight Summary lines are highlighted according to this variable, which is a ! list where the elements are on the format @var{(FORM . FACE)}. If you would, for instance, like ticked articles to be italic and high-scored articles to be bold, you could set this variable to something like @lisp --- 3328,3334 ---- @item gnus-summary-highlight @vindex gnus-summary-highlight Summary lines are highlighted according to this variable, which is a ! list where the elements are of the format @var{(FORM . FACE)}. If you would, for instance, like ticked articles to be italic and high-scored articles to be bold, you could set this variable to something like @lisp *************** *** 3310,3316 **** @item G g @kindex G g (Summary) @findex gnus-summary-goto-subject ! Ask for an article number and then go the summary line of that article without displaying the article (@code{gnus-summary-goto-subject}). @end table --- 3377,3383 ---- @item G g @kindex G g (Summary) @findex gnus-summary-goto-subject ! Ask for an article number and then go to the summary line of that article without displaying the article (@code{gnus-summary-goto-subject}). @end table *************** *** 3393,3404 **** --- 3460,3473 ---- @kindex n (Summary) @kindex G n (Summary) @findex gnus-summary-next-unread-article + @c @icon{gnus-summary-next-unread} Go to next unread article (@code{gnus-summary-next-unread-article}). @item G p @itemx p @kindex p (Summary) @findex gnus-summary-prev-unread-article + @c @icon{gnus-summary-prev-unread} Go to previous unread article (@code{gnus-summary-prev-unread-article}). @item G N *************** *** 3579,3584 **** --- 3648,3655 ---- @kindex S r (Summary) @kindex r (Summary) @findex gnus-summary-reply + @c @icon{gnus-summary-mail-reply} + @c @icon{gnus-summary-reply} Mail a reply to the author of the current article (@code{gnus-summary-reply}). *************** *** 3587,3592 **** --- 3658,3664 ---- @kindex R (Summary) @kindex S R (Summary) @findex gnus-summary-reply-with-original + @c @icon{gnus-summary-reply-with-original} Mail a reply to the author of the current article and include the original message (@code{gnus-summary-reply-with-original}). This command uses the process/prefix convention. *************** *** 3595,3601 **** @kindex S w (Summary) @findex gnus-summary-wide-reply Mail a wide reply to the author of the current article ! (@code{gnus-summary-wide-reply}). @item S W @kindex S W (Summary) --- 3667,3675 ---- @kindex S w (Summary) @findex gnus-summary-wide-reply Mail a wide reply to the author of the current article ! (@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that ! goes out to all people listed in the @code{To}, @code{From} (or ! @code{Reply-to}) and @code{Cc} headers. @item S W @kindex S W (Summary) *************** *** 3607,3612 **** --- 3681,3687 ---- @item S o m @kindex S o m (Summary) @findex gnus-summary-mail-forward + @c @icon{gnus-summary-mail-forward} Forward the current article to some other person (@code{gnus-summary-mail-forward}). If given a prefix, include the full headers of the forwarded article. *************** *** 3616,3621 **** --- 3691,3697 ---- @kindex m (Summary) @kindex S m (Summary) @findex gnus-summary-mail-other-window + @c @icon{gnus-summary-mail-originate} Send a mail to some other person (@code{gnus-summary-mail-other-window}). *************** *** 3691,3696 **** --- 3767,3773 ---- @kindex a (Summary) @kindex S p (Summary) @findex gnus-summary-post-news + @c @icon{gnus-summary-post-news} Post an article to the current group (@code{gnus-summary-post-news}). *************** *** 3699,3710 **** --- 3776,3789 ---- @kindex f (Summary) @kindex S f (Summary) @findex gnus-summary-followup + @c @icon{gnus-summary-followup} Post a followup to the current article (@code{gnus-summary-followup}). @item S F @itemx F @kindex S F (Summary) @kindex F (Summary) + @c @icon{gnus-summary-followup-with-original} @findex gnus-summary-followup-with-original Post a followup to the current article and include the original message (@code{gnus-summary-followup-with-original}). This command uses the *************** *** 3743,3748 **** --- 3822,3828 ---- @item S u @kindex S u (Summary) @findex gnus-uu-post-news + @c @icon{gnus-uu-post-news} Uuencode a file, split it into parts, and post it as a series (@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). @end table *************** *** 3760,3765 **** --- 3840,3846 ---- @findex gnus-summary-cancel-article @kindex C (Summary) + @c @icon{gnus-summary-cancel-article} Find the article you wish to cancel (you can only cancel your own articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S c} (@code{gnus-summary-cancel-article}). Your article will be *************** *** 3893,3899 **** @item Y @vindex gnus-low-score-mark ! Marked as read by having a too low score (@code{gnus-low-score-mark}). @item C @vindex gnus-catchup-mark --- 3974,3980 ---- @item Y @vindex gnus-low-score-mark ! Marked as read by having too low a score (@code{gnus-low-score-mark}). @item C @vindex gnus-catchup-mark *************** *** 3931,3937 **** Marking articles as @dfn{expirable} (or have them marked as such automatically) doesn't make much sense in normal groups---a user doesn't ! control the expiring of news articles, but in mail groups, for instance, articles that are marked as @dfn{expirable} can be deleted by Gnus at any time. @end table --- 4012,4018 ---- Marking articles as @dfn{expirable} (or have them marked as such automatically) doesn't make much sense in normal groups---a user doesn't ! control expiring of news articles, but in mail groups, for instance, articles that are marked as @dfn{expirable} can be deleted by Gnus at any time. @end table *************** *** 3969,3986 **** @vindex gnus-saved-mark Articles that are ``saved'' (in some manner or other; not necessarily religiously) are marked with an @samp{S} in the second column ! (@code{gnus-saved-mark}. @item @vindex gnus-not-empty-thread-mark @vindex gnus-empty-thread-mark ! It the @samp{%e} spec is used, the presence of threads or not will be marked with @code{gnus-not-empty-thread-mark} and @code{gnus-empty-thread-mark} in the third column, respectively. @item @vindex gnus-process-mark ! Finally we have the @dfn{process mark} (@code{gnus-process-mark}. A variety of commands react to the presence of the process mark. For instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view all articles that have been marked with the process mark. Articles --- 4050,4067 ---- @vindex gnus-saved-mark Articles that are ``saved'' (in some manner or other; not necessarily religiously) are marked with an @samp{S} in the second column ! (@code{gnus-saved-mark}). @item @vindex gnus-not-empty-thread-mark @vindex gnus-empty-thread-mark ! If the @samp{%e} spec is used, the presence of threads or not will be marked with @code{gnus-not-empty-thread-mark} and @code{gnus-empty-thread-mark} in the third column, respectively. @item @vindex gnus-process-mark ! Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A variety of commands react to the presence of the process mark. For instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view all articles that have been marked with the process mark. Articles *************** *** 4053,4058 **** --- 4134,4140 ---- @item M C @kindex M C (Summary) @findex gnus-summary-catchup + @c @icon{gnus-summary-catchup} Mark all unread articles as read (@code{gnus-summary-catchup}). @item M C-c *************** *** 4392,4398 **** Fetching old headers can be slow. A low-rent similar effect can be gotten by setting this variable to @code{some}. Gnus will then look at the complete @code{References} headers of all articles and try to string ! articles that belong in the same thread together. This will leave @dfn{gaps} in the threading display where Gnus guesses that an article is missing from the thread. (These gaps appear like normal summary lines. If you select a gap, Gnus will try to fetch the article in --- 4474,4480 ---- Fetching old headers can be slow. A low-rent similar effect can be gotten by setting this variable to @code{some}. Gnus will then look at the complete @code{References} headers of all articles and try to string ! together articles that belong in the same thread. This will leave @dfn{gaps} in the threading display where Gnus guesses that an article is missing from the thread. (These gaps appear like normal summary lines. If you select a gap, Gnus will try to fetch the article in *************** *** 4408,4414 **** variable is @code{nil}, Gnus requires an exact match between the subjects of the loose threads before gathering them into one big super-thread. This might be too strict a requirement, what with the ! presence of stupid newsreaders that chop off long subjects lines. If you think so, set this variable to, say, 20 to require that only the first 20 characters of the subjects have to match. If you set this variable to a really low number, you'll find that Gnus will gather --- 4490,4496 ---- variable is @code{nil}, Gnus requires an exact match between the subjects of the loose threads before gathering them into one big super-thread. This might be too strict a requirement, what with the ! presence of stupid newsreaders that chop off long subject lines. If you think so, set this variable to, say, 20 to require that only the first 20 characters of the subjects have to match. If you set this variable to a really low number, you'll find that Gnus will gather *************** *** 4461,4468 **** to many false hits, especially with certain common subjects like @samp{} and @samp{(none)}. To make the situation slightly better, you can use the regexp @code{gnus-summary-gather-exclude-subject} to say ! what subjects should be excluded from the gathering process. The ! default is @samp{^ *$\\|^(none)$}. @item gnus-summary-thread-gathering-function @vindex gnus-summary-thread-gathering-function --- 4543,4550 ---- to many false hits, especially with certain common subjects like @samp{} and @samp{(none)}. To make the situation slightly better, you can use the regexp @code{gnus-summary-gather-exclude-subject} to say ! what subjects should be excluded from the gathering process.@* ! The default is @samp{^ *$\\|^(none)$}. @item gnus-summary-thread-gathering-function @vindex gnus-summary-thread-gathering-function *************** *** 4470,4477 **** that totally unrelated articles may end up in the same ``thread'', which is confusing. An alternate approach is to look at all the @code{Message-ID}s in all the @code{References} headers to find matches. ! This will ensure that no gathered threads ever includes unrelated ! articles, but it's also means that people who have posted with broken newsreaders won't be gathered properly. The choice is yours---plague or cholera: --- 4552,4559 ---- that totally unrelated articles may end up in the same ``thread'', which is confusing. An alternate approach is to look at all the @code{Message-ID}s in all the @code{References} headers to find matches. ! This will ensure that no gathered threads ever include unrelated ! articles, but it also means that people who have posted with broken newsreaders won't be gathered properly. The choice is yours---plague or cholera: *************** *** 4505,4510 **** --- 4587,4603 ---- something. This variable says what fudging method Gnus should use. There are four possible values: + @iftex + @iflatex + \gnusfigure{The Summary Buffer}{390}{ + \put(0,0){\epsfig{figure=tmp/summary-adopt.ps,width=7.5cm}} + \put(445,0){\makebox(0,0)[br]{\epsfig{figure=tmp/summary-empty.ps,width=7.5cm}}} + \put(0,400){\makebox(0,0)[tl]{\epsfig{figure=tmp/summary-none.ps,width=7.5cm}}} + \put(445,400){\makebox(0,0)[tr]{\epsfig{figure=tmp/summary-dummy.ps,width=7.5cm}}} + } + @end iflatex + @end iftex + @cindex adopting articles @table @code *************** *** 4648,4654 **** @item T t @kindex T t (Summary) @findex gnus-summary-rethread-current ! Re-thread the thread the current article is part of (@code{gnus-summary-rethread-current}). This works even when the summary buffer is otherwise unthreaded. --- 4741,4747 ---- @item T t @kindex T t (Summary) @findex gnus-summary-rethread-current ! Re-thread the current article's thread (@code{gnus-summary-rethread-current}). This works even when the summary buffer is otherwise unthreaded. *************** *** 4656,4662 **** @kindex T ^ (Summary) @findex gnus-summary-reparent-thread Make the current article the child of the marked (or previous) article ! (@code{gnus-summary-reparent-thread}. @end table --- 4749,4755 ---- @kindex T ^ (Summary) @findex gnus-summary-reparent-thread Make the current article the child of the marked (or previous) article ! (@code{gnus-summary-reparent-thread}). @end table *************** *** 4697,4703 **** a command like `T k' (@code{gnus-summary-kill-thread}) you might not wish to kill the entire thread, but just those parts of the thread that have the same subject as the current article. If you like this idea, ! you can fiddle with @code{gnus-thread-operation-ignore-subject}. If is is non-@code{nil} (which it is by default), subjects will be ignored when doing thread commands. If this variable is @code{nil}, articles in the same thread with different subjects will not be included in the --- 4790,4796 ---- a command like `T k' (@code{gnus-summary-kill-thread}) you might not wish to kill the entire thread, but just those parts of the thread that have the same subject as the current article. If you like this idea, ! you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it is non-@code{nil} (which it is by default), subjects will be ignored when doing thread commands. If this variable is @code{nil}, articles in the same thread with different subjects will not be included in the *************** *** 4724,4730 **** @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and @code{gnus-thread-sort-by-total-score}. ! Each function takes two threads and return non-@code{nil} if the first thread should be sorted before the other. Note that sorting really is normally done by looking only at the roots of each thread. If you use more than one function, the primary sort key should be the last function --- 4817,4823 ---- @code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, and @code{gnus-thread-sort-by-total-score}. ! Each function takes two threads and returns non-@code{nil} if the first thread should be sorted before the other. Note that sorting really is normally done by looking only at the roots of each thread. If you use more than one function, the primary sort key should be the last function *************** *** 4756,4762 **** @lisp (setq gnus-thread-sort-functions '((lambda (t1 t2) ! (not (gnus-thread-sort-by-number t1 t2))) gnus-thread-sort-by-score)) @end lisp --- 4849,4855 ---- @lisp (setq gnus-thread-sort-functions '((lambda (t1 t2) ! (not (gnus-thread-sort-by-number t2 t1))) gnus-thread-sort-by-score)) @end lisp *************** *** 4831,4848 **** happen automatically. @vindex gnus-use-article-prefetch ! You can control how many articles that are to be pre-fetched by setting @code{gnus-use-article-prefetch}. This is 30 by default, which means that when you read an article in the group, the backend will pre-fetch the next 30 articles. If this variable is @code{t}, the backend will ! pre-fetch all the articles that it can without bound. If it is ! @code{nil}, no pre-fetching will be made. @vindex gnus-async-prefetch-article-p @findex gnus-async-read-p There are probably some articles that you don't want to pre-fetch---read ! articles, for instance. Which articles to pre-fetch is controlled by ! the @code{gnus-async-prefetch-article-p} variable. This function should return non-@code{nil} when the article in question is to be pre-fetched. The default is @code{gnus-async-read-p}, which returns @code{nil} on read articles. The function is called with an article --- 4924,4940 ---- happen automatically. @vindex gnus-use-article-prefetch ! You can control how many articles are to be pre-fetched by setting @code{gnus-use-article-prefetch}. This is 30 by default, which means that when you read an article in the group, the backend will pre-fetch the next 30 articles. If this variable is @code{t}, the backend will ! pre-fetch all the articles it can without bound. If it is ! @code{nil}, no pre-fetching will be done. @vindex gnus-async-prefetch-article-p @findex gnus-async-read-p There are probably some articles that you don't want to pre-fetch---read ! articles, for instance. The @code{gnus-async-prefetch-article-p} variable controls whether an article is to be pre-fetched. This function should return non-@code{nil} when the article in question is to be pre-fetched. The default is @code{gnus-async-read-p}, which returns @code{nil} on read articles. The function is called with an article *************** *** 4862,4869 **** @end lisp These functions will be called many, many times, so they should ! preferrably be short and sweet to avoid slowing down Gnus too much. ! It's also probably a good idea to byte-compile things like this. @vindex gnus-prefetched-article-deletion-strategy Articles have to be removed from the asynch buffer sooner or later. The --- 4954,4961 ---- @end lisp These functions will be called many, many times, so they should ! preferably be short and sweet to avoid slowing down Gnus too much. ! It's probably a good idea to byte-compile things like this. @vindex gnus-prefetched-article-deletion-strategy Articles have to be removed from the asynch buffer sooner or later. The *************** *** 4907,4913 **** cache is flat or hierarchal is controlled by the @code{gnus-use-long-file-name} variable, as usual. ! When re-select a ticked or dormant article, it will be fetched from the cache instead of from the server. As articles in your cache will never expire, this might serve as a method of saving articles while still keeping them where they belong. Just mark all articles you want to save --- 4999,5005 ---- cache is flat or hierarchal is controlled by the @code{gnus-use-long-file-name} variable, as usual. ! When re-selecting a ticked or dormant article, it will be fetched from the cache instead of from the server. As articles in your cache will never expire, this might serve as a method of saving articles while still keeping them where they belong. Just mark all articles you want to save *************** *** 5051,5056 **** --- 5143,5149 ---- @kindex O o (Summary) @kindex o (Summary) @findex gnus-summary-save-article + @c @icon{gnus-summary-save-article} Save the current article using the default article saver (@code{gnus-summary-save-article}). *************** *** 5069,5074 **** --- 5162,5168 ---- @item O f @kindex O f (Summary) @findex gnus-summary-save-article-file + @c @icon{gnus-summary-save-article-file} Save the current article in plain file format (@code{gnus-summary-save-article-file}). *************** *** 5165,5172 **** library. Uses the function in the @code{gnus-folder-save-name} variable to get a file name to save the article in. The default is @code{gnus-folder-save-name}, but you can also use ! @code{gnus-Folder-save-name}. The former creates capitalized names, and ! the latter does not. @item gnus-summary-save-in-vm @findex gnus-summary-save-in-vm --- 5259,5265 ---- library. Uses the function in the @code{gnus-folder-save-name} variable to get a file name to save the article in. The default is @code{gnus-folder-save-name}, but you can also use ! @code{gnus-Folder-save-name}, which creates capitalized names. @item gnus-summary-save-in-vm @findex gnus-summary-save-in-vm *************** *** 5315,5321 **** will find all the articles that match the regexp @samp{^cat.gif ([0-9]+/[0-9]+).*$}. ! Subjects that are nonstandard, like @samp{cat.gif (2/3) Part 6 of a series}, will not be properly recognized by any of the automatic viewing commands, and you have to mark the articles manually with @kbd{#}. --- 5408,5414 ---- will find all the articles that match the regexp @samp{^cat.gif ([0-9]+/[0-9]+).*$}. ! Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a series}, will not be properly recognized by any of the automatic viewing commands, and you have to mark the articles manually with @kbd{#}. *************** *** 5330,5335 **** --- 5423,5429 ---- @item X u @kindex X u (Summary) @findex gnus-uu-decode-uu + @c @icon{gnus-uu-decode-uu} Uudecodes the current series (@code{gnus-uu-decode-uu}). @item X U *************** *** 5449,5455 **** @cindex rule variables Gnus uses @dfn{rule variables} to decide how to view a file. All these ! variables are on the form @lisp (list '(regexp1 command2) --- 5543,5549 ---- @cindex rule variables Gnus uses @dfn{rule variables} to decide how to view a file. All these ! variables are of the form @lisp (list '(regexp1 command2) *************** *** 5489,5495 **** @vindex gnus-uu-grabbed-file-functions @item gnus-uu-grabbed-file-functions ! All functions in this list will be called right each file has been successfully decoded---so that you can move or view files right away, and don't have to wait for all files to be decoded before you can do anything. Ready-made functions you can put in this list are: --- 5583,5589 ---- @vindex gnus-uu-grabbed-file-functions @item gnus-uu-grabbed-file-functions ! All functions in this list will be called right after each file has been successfully decoded---so that you can move or view files right away, and don't have to wait for all files to be decoded before you can do anything. Ready-made functions you can put in this list are: *************** *** 5554,5561 **** @item gnus-uu-unmark-articles-not-decoded @vindex gnus-uu-unmark-articles-not-decoded ! Non-@code{nil} means that @code{gnus-uu} will mark articles that were ! unsuccessfully decoded as unread. @item gnus-uu-correct-stripped-uucode @vindex gnus-uu-correct-stripped-uucode --- 5648,5655 ---- @item gnus-uu-unmark-articles-not-decoded @vindex gnus-uu-unmark-articles-not-decoded ! Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully ! decoded articles as unread. @item gnus-uu-correct-stripped-uucode @vindex gnus-uu-correct-stripped-uucode *************** *** 5602,5608 **** @item gnus-uu-post-threaded @vindex gnus-uu-post-threaded Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a ! thread. This may not be smart, as no other decoder I have seen are able to follow threads when collecting uuencoded articles. (Well, I have seen one package that does that---@code{gnus-uu}, but somehow, I don't think that counts...) Default is @code{nil}. --- 5696,5702 ---- @item gnus-uu-post-threaded @vindex gnus-uu-post-threaded Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a ! thread. This may not be smart, as no other decoder I have seen is able to follow threads when collecting uuencoded articles. (Well, I have seen one package that does that---@code{gnus-uu}, but somehow, I don't think that counts...) Default is @code{nil}. *************** *** 5665,5671 **** @section Article Treatment Reading through this huge manual, you may have quite forgotten that the ! object of newsreaders are to actually, like, read what people have written. Reading articles. Unfortunately, people are quite bad at writing, so there are tons of functions and variables to make reading these articles easier. --- 5759,5765 ---- @section Article Treatment Reading through this huge manual, you may have quite forgotten that the ! object of newsreaders is to actually, like, read what people have written. Reading articles. Unfortunately, people are quite bad at writing, so there are tons of functions and variables to make reading these articles easier. *************** *** 5796,5802 **** How the emphasis is computed is controlled by the @code{gnus-article-emphasis} variable. This is an alist where the first element is a regular expression to be matched. The second is a number ! that says what regular expression grouping used to find the entire emphasized word. The third is a number that says what regexp grouping should be displayed and highlighted. (The text between these two groupings will be hidden.) The fourth is the face used for --- 5890,5896 ---- How the emphasis is computed is controlled by the @code{gnus-article-emphasis} variable. This is an alist where the first element is a regular expression to be matched. The second is a number ! that says what regular expression grouping is used to find the entire emphasized word. The third is a number that says what regexp grouping should be displayed and highlighted. (The text between these two groupings will be hidden.) The fourth is the face used for *************** *** 5819,5825 **** @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, @code{gnus-emphasis-underline-italic}, ! @code{gnus-emphasis-undeline-bold}, and @code{gnus-emphasis-underline-bold-italic}. If you want to change these faces, you can either use @kbd{M-x --- 5913,5919 ---- @code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, @code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, @code{gnus-emphasis-underline-italic}, ! @code{gnus-emphasis-underline-bold}, and @code{gnus-emphasis-underline-bold-italic}. If you want to change these faces, you can either use @kbd{M-x *************** *** 5875,5881 **** @item W W P @kindex W W P (Summary) @findex gnus-article-hide-pem ! Hide @sc{pem} (privacy enhanced messages) gruft (@code{gnus-article-hide-pem}). @item W W c --- 5969,5975 ---- @item W W P @kindex W W P (Summary) @findex gnus-article-hide-pem ! Hide @sc{pem} (privacy enhanced messages) cruft (@code{gnus-article-hide-pem}). @item W W c *************** *** 5893,5904 **** @item gnus-cite-hide-absolute @vindex gnus-cite-hide-absolute ! The cited text must be have at least this length (default 10) before it is hidden. @item gnus-cited-text-button-line-format @vindex gnus-cited-text-button-line-format ! Gnus adds buttons show where the cited text has been hidden, and to allow toggle hiding the text. The format of the variable is specified by this format-like variable (@pxref{Formatting Variables}). These specs are legal: --- 5987,5998 ---- @item gnus-cite-hide-absolute @vindex gnus-cite-hide-absolute ! The cited text must have at least this length (default 10) before it is hidden. @item gnus-cited-text-button-line-format @vindex gnus-cited-text-button-line-format ! Gnus adds buttons to show where the cited text has been hidden, and to allow toggle hiding the text. The format of the variable is specified by this format-like variable (@pxref{Formatting Variables}). These specs are legal: *************** *** 5959,5964 **** --- 6053,6059 ---- @item W r @kindex W r (Summary) @findex gnus-summary-caesar-message + @c @icon{gnus-summary-caesar-message} Do a Caesar rotate (rot13) on the article buffer (@code{gnus-summary-caesar-message}). *************** *** 6012,6017 **** --- 6107,6119 ---- @findex gnus-article-x-face-command @vindex gnus-article-x-face-command @vindex gnus-article-x-face-too-ugly + @iftex + @iflatex + \gnusxface{tmp/xface-karlheg.ps} + \gnusxface{tmp/xface-kyle.ps} + \gnusxface{tmp/xface-smb.ps} + @end iflatex + @end iftex Look for and display any X-Face headers (@code{gnus-article-display-x-face}). The command executed by this function is given by the @code{gnus-article-x-face-command} variable. *************** *** 6100,6111 **** @item regexp All text that match this regular expression will be considered an ! external reference. Here's a typical regexp that match embedded URLs: @samp{]*\\)>}. @item button-par ! Gnus has to know which parts of the match is to be highlighted. This is ! a number that says what sub-expression of the regexp that is to be highlighted. If you want it all highlighted, you use 0 here. @item use-p --- 6202,6213 ---- @item regexp All text that match this regular expression will be considered an ! external reference. Here's a typical regexp that matches embedded URLs: @samp{]*\\)>}. @item button-par ! Gnus has to know which parts of the matches is to be highlighted. This ! is a number that says what sub-expression of the regexp is to be highlighted. If you want it all highlighted, you use 0 here. @item use-p *************** *** 6138,6144 **** (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) @end lisp ! @var{header} is a regular expression. @item gnus-button-url-regexp @vindex gnus-button-url-regexp --- 6240,6246 ---- (HEADER REGEXP BUTTON-PAR USE-P FUNCTION DATA-PAR) @end lisp ! @var{HEADER} is a regular expression. @item gnus-button-url-regexp @vindex gnus-button-url-regexp *************** *** 6151,6157 **** @item gnus-article-mouse-face @vindex gnus-article-mouse-face ! Face is used when the mouse cursor is over a button. @end table --- 6253,6259 ---- @item gnus-article-mouse-face @vindex gnus-article-mouse-face ! Face used when the mouse cursor is over a button. @end table *************** *** 6185,6203 **** (@code{gnus-article-date-user}). The format is specified by the @code{gnus-article-time-format} variable, and is a string that's passed to @code{format-time-string}. See the documentation of that variable ! for a list possible format specs. @item W T e @kindex W T e (Summary) @findex gnus-article-date-lapsed ! Say how much time has (e)lapsed between the article was posted and now (@code{gnus-article-date-lapsed}). @item W T o @kindex W T o (Summary) @findex gnus-article-date-original Display the original date (@code{gnus-article-date-original}). This can ! be useful if you normally use some other conversion function and is worried that it might be doing something totally wrong. Say, claiming that the article was posted in 1854. Although something like that is @emph{totally} impossible. Don't you trust me? *titter* --- 6287,6305 ---- (@code{gnus-article-date-user}). The format is specified by the @code{gnus-article-time-format} variable, and is a string that's passed to @code{format-time-string}. See the documentation of that variable ! for a list of possible format specs. @item W T e @kindex W T e (Summary) @findex gnus-article-date-lapsed ! Say how much time has elapsed between the article was posted and now (@code{gnus-article-date-lapsed}). @item W T o @kindex W T o (Summary) @findex gnus-article-date-original Display the original date (@code{gnus-article-date-original}). This can ! be useful if you normally use some other conversion function and are worried that it might be doing something totally wrong. Say, claiming that the article was posted in 1854. Although something like that is @emph{totally} impossible. Don't you trust me? *titter* *************** *** 6371,6382 **** If the group you are reading is located on a backend that does not support fetching by @code{Message-ID} very well (like @code{nnspool}), you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It ! would, perhaps, be best if the @sc{nntp} server you consult is the same ! as the one that keeps the spool you are reading from updated, but that's ! not really necessary. Most of the mail backends support fetching by @code{Message-ID}, but do ! not do a particularly excellent job of it. That is, @code{nnmbox} and @code{nnbabyl} are able to locate articles from any groups, while @code{nnml} and @code{nnfolder} are only able to locate articles that have been posted to the current group. (Anything else would be too time --- 6473,6484 ---- If the group you are reading is located on a backend that does not support fetching by @code{Message-ID} very well (like @code{nnspool}), you can set @code{gnus-refer-article-method} to an @sc{nntp} method. It ! would, perhaps, be best if the @sc{nntp} server you consult is the one ! updating the spool you are reading from, but that's not really ! necessary. Most of the mail backends support fetching by @code{Message-ID}, but do ! not do a particularly excellent job at it. That is, @code{nnmbox} and @code{nnbabyl} are able to locate articles from any groups, while @code{nnml} and @code{nnfolder} are only able to locate articles that have been posted to the current group. (Anything else would be too time *************** *** 6400,6407 **** @cindex pick and read Some newsreaders (like @code{nn} and, uhm, @code{Netnews} on VM/CMS) use ! a two-phased reading interface. The user first marks the articles she ! wants to read from a summary buffer. Then she starts reading the articles with just an article buffer displayed. @findex gnus-pick-mode --- 6502,6509 ---- @cindex pick and read Some newsreaders (like @code{nn} and, uhm, @code{Netnews} on VM/CMS) use ! a two-phased reading interface. The user first marks in a summary ! buffer the articles she wants to read. Then she starts reading the articles with just an article buffer displayed. @findex gnus-pick-mode *************** *** 6409,6416 **** Gnus provides a summary buffer minor mode that allows this---@code{gnus-pick-mode}. This basically means that a few process mark commands become one-keystroke commands to allow easy marking, and ! it makes one additional command for switching to the summary buffer ! available. Here are the available keystrokes when using pick mode: --- 6511,6517 ---- Gnus provides a summary buffer minor mode that allows this---@code{gnus-pick-mode}. This basically means that a few process mark commands become one-keystroke commands to allow easy marking, and ! it provides one additional command for switching to the summary buffer. Here are the available keystrokes when using pick mode: *************** *** 6420,6427 **** @findex gnus-summary-mark-as-processable Pick the article on the current line (@code{gnus-summary-mark-as-processable}). If given a numerical prefix, ! go to the article on that line and pick that article. (The line number ! is normally displayed on the beginning of the summary pick lines.) @item SPACE @kindex SPACE (Pick) --- 6521,6528 ---- @findex gnus-summary-mark-as-processable Pick the article on the current line (@code{gnus-summary-mark-as-processable}). If given a numerical prefix, ! go to that article and pick it. (The line number is normally displayed ! at the beginning of the summary pick lines.) @item SPACE @kindex SPACE (Pick) *************** *** 6504,6510 **** all unpicked articles as read. The default is @code{nil}. @vindex gnus-summary-pick-line-format ! The summary line format in pick mode is slightly different than the standard format. At the beginning of each line the line number is displayed. The pick mode line format is controlled by the @code{gnus-summary-pick-line-format} variable (@pxref{Formatting --- 6605,6611 ---- all unpicked articles as read. The default is @code{nil}. @vindex gnus-summary-pick-line-format ! The summary line format in pick mode is slightly different from the standard format. At the beginning of each line the line number is displayed. The pick mode line format is controlled by the @code{gnus-summary-pick-line-format} variable (@pxref{Formatting *************** *** 6526,6533 **** @kindex g (Binary) @findex gnus-binary-show-article ! In fact, the only way to see the actual articles if you have turned this ! mode on is the @kbd{g} command (@code{gnus-binary-show-article}). @vindex gnus-binary-mode-hook @code{gnus-binary-mode-hook} is called in binary minor mode buffers. --- 6627,6635 ---- @kindex g (Binary) @findex gnus-binary-show-article ! The only way, in fact, to see the actual articles is the @kbd{g} ! command, when you have turned on this mode ! (@code{gnus-binary-show-article}). @vindex gnus-binary-mode-hook @code{gnus-binary-mode-hook} is called in binary minor mode buffers. *************** *** 6613,6619 **** higher than that number. The default is @code{t}. Note that if you have several windows displayed side-by-side in a frame and the tree buffer is one of these, minimizing the tree window will also resize all ! other windows that are displayed next to it. @item gnus-generate-tree-function @vindex gnus-generate-tree-function --- 6715,6721 ---- higher than that number. The default is @code{t}. Note that if you have several windows displayed side-by-side in a frame and the tree buffer is one of these, minimizing the tree window will also resize all ! other windows displayed next to it. @item gnus-generate-tree-function @vindex gnus-generate-tree-function *************** *** 6625,6631 **** @end table ! Here's and example from a horizontal tree buffer: @example @{***@}-(***)-[odd]-[Gun] --- 6727,6733 ---- @end table ! Here's an example from a horizontal tree buffer: @example @{***@}-(***)-[odd]-[Gun] *************** *** 6658,6664 **** @cindex mail group commands Some commands only make sense in mail groups. If these commands are ! illegal in the current group, they will raise a hell and let you know. All these commands (except the expiry and edit commands) use the process/prefix convention (@pxref{Process/Prefix}). --- 6760,6766 ---- @cindex mail group commands Some commands only make sense in mail groups. If these commands are ! illegal in the current group, they will raise hell and let you know. All these commands (except the expiry and edit commands) use the process/prefix convention (@pxref{Process/Prefix}). *************** *** 6682,6687 **** --- 6784,6790 ---- @item B DEL @kindex B DEL (Summary) @findex gnus-summary-delete-article + @c @icon{gnus-summary-mail-delete} Delete the mail article. This is ``delete'' as in ``delete it from your disk forever and ever, never to return again.'' Use with caution. (@code{gnus-summary-delete-article}). *************** *** 6697,6702 **** --- 6800,6806 ---- @kindex B c (Summary) @cindex copy mail @findex gnus-summary-copy-article + @c @icon{gnus-summary-mail-copy} Copy the article from one group (mail group or not) to a mail group (@code{gnus-summary-copy-article}). *************** *** 6794,6804 **** generation of the summary buffer. It's quite convenient for customizing the threading variables based on what data the newsgroup has. This hook is called from the summary buffer after most summary buffer variables ! has been set. @vindex gnus-summary-prepare-hook @item gnus-summary-prepare-hook ! Is is called after the summary buffer has been generated. You might use it to, for instance, highlight lines or modify the look of the buffer in some other ungodly manner. I don't care. --- 6898,6908 ---- generation of the summary buffer. It's quite convenient for customizing the threading variables based on what data the newsgroup has. This hook is called from the summary buffer after most summary buffer variables ! have been set. @vindex gnus-summary-prepare-hook @item gnus-summary-prepare-hook ! It is called after the summary buffer has been generated. You might use it to, for instance, highlight lines or modify the look of the buffer in some other ungodly manner. I don't care. *************** *** 6830,6837 **** FAQ from @code{gnus-group-faq-directory}, which is usually a directory on a remote machine. This variable can also be a list of directories. In that case, giving a prefix to this command will allow you to choose ! between the various sites. @code{ange-ftp} probably will be used for ! fetching the file. @item H d @kindex H d (Summary) --- 6934,6941 ---- FAQ from @code{gnus-group-faq-directory}, which is usually a directory on a remote machine. This variable can also be a list of directories. In that case, giving a prefix to this command will allow you to choose ! between the various sites. @code{ange-ftp} or @code{efs} will probably ! be used for fetching the file. @item H d @kindex H d (Summary) *************** *** 6875,6881 **** @findex gnus-summary-execute-command This command will prompt you for a header field, a regular expression to match on this field, and a command to be executed if the match is made ! (@code{gnus-summary-execute-command}). @item M-& @kindex M-& (Summary) --- 6979,6986 ---- @findex gnus-summary-execute-command This command will prompt you for a header field, a regular expression to match on this field, and a command to be executed if the match is made ! (@code{gnus-summary-execute-command}). If given a prefix, search ! backward instead. @item M-& @kindex M-& (Summary) *************** *** 6916,6922 **** article (@code{gnus-summary-enter-digest-group}). Gnus will try to guess what article type is currently displayed unless you give a prefix to this command, which forces a ``digest'' interpretation. Basically, ! whenever you see a message that is a collection of other messages on some format, you @kbd{C-d} and read these messages in a more convenient fashion. --- 7021,7027 ---- article (@code{gnus-summary-enter-digest-group}). Gnus will try to guess what article type is currently displayed unless you give a prefix to this command, which forces a ``digest'' interpretation. Basically, ! whenever you see a message that is a collection of other messages of some format, you @kbd{C-d} and read these messages in a more convenient fashion. *************** *** 6965,6975 **** @findex gnus-summary-exit @vindex gnus-summary-exit-hook @vindex gnus-summary-prepare-exit-hook Exit the current group and update all information on the group (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is ! called before doing much of the exiting, and calls @code{gnus-summary-expire-articles} by default. ! @code{gnus-summary-exit-hook} is called after finishing the exiting process. @code{gnus-group-no-more-groups-hook} is run when returning to group mode having no more (unread) groups. --- 7070,7081 ---- @findex gnus-summary-exit @vindex gnus-summary-exit-hook @vindex gnus-summary-prepare-exit-hook + @c @icon{gnus-summary-exit} Exit the current group and update all information on the group (@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is ! called before doing much of the exiting, which calls @code{gnus-summary-expire-articles} by default. ! @code{gnus-summary-exit-hook} is called after finishing the exit process. @code{gnus-group-no-more-groups-hook} is run when returning to group mode having no more (unread) groups. *************** *** 6986,6991 **** --- 7092,7098 ---- @kindex Z c (Summary) @kindex c (Summary) @findex gnus-summary-catchup-and-exit + @c @icon{gnus-summary-catchup-and-exit} Mark all unticked articles in the group as read and then exit (@code{gnus-summary-catchup-and-exit}). *************** *** 7013,7018 **** --- 7120,7126 ---- @kindex Z G (Summary) @kindex M-g (Summary) @findex gnus-summary-rescan-group + @c @icon{gnus-summary-mail-get} Exit the group, check for new articles in the group, and select the group (@code{gnus-summary-rescan-group}). If given a prefix, select all articles, both read and unread. *************** *** 7127,7133 **** By default, Gnus tries to make sure that you don't have to read the same article more than once by utilizing the crossposting mechanism (@pxref{Crosspost Handling}). However, that simple and efficient ! approach may not work satisfactorily for some users for various reasons. @enumerate --- 7235,7241 ---- By default, Gnus tries to make sure that you don't have to read the same article more than once by utilizing the crossposting mechanism (@pxref{Crosspost Handling}). However, that simple and efficient ! approach may not work satisfactory for some users for various reasons. @enumerate *************** *** 7147,7153 **** You may be getting mail that duplicates articles posted to groups. @end enumerate ! I'm sure there are other situations that @code{Xref} handling fails as well, but these four are the most common situations. If, and only if, @code{Xref} handling fails for you, then you may --- 7255,7261 ---- You may be getting mail that duplicates articles posted to groups. @end enumerate ! I'm sure there are other situations where @code{Xref} handling fails as well, but these four are the most common situations. If, and only if, @code{Xref} handling fails for you, then you may *************** *** 7163,7169 **** sledge hammer than anything else. It works in a very simple fashion---if you have marked an article as read, it adds this Message-ID to a cache. The next time it sees this Message-ID, it will mark the ! article as read the the @samp{M} mark. It doesn't care what group it saw the article in. @table @code --- 7271,7277 ---- sledge hammer than anything else. It works in a very simple fashion---if you have marked an article as read, it adds this Message-ID to a cache. The next time it sees this Message-ID, it will mark the ! article as read with the @samp{M} mark. It doesn't care what group it saw the article in. @table @code *************** *** 7175,7191 **** @vindex gnus-save-duplicate-list If non-@code{nil}, save the list of duplicates to a file. This will make startup and shutdown take longer, so the default is @code{nil}. ! However, this means that only duplicate articles that is read in a ! single Gnus session are suppressed. @item gnus-duplicate-list-length @vindex gnus-duplicate-list-length ! This variables says how many @code{Message-ID}s to keep in the duplicate suppression list. The default is 10000. @item gnus-duplicate-file @vindex gnus-duplicate-file ! The name of the file to store the duplicate suppression list. The default is @file{~/News/suppression}. @end table --- 7283,7299 ---- @vindex gnus-save-duplicate-list If non-@code{nil}, save the list of duplicates to a file. This will make startup and shutdown take longer, so the default is @code{nil}. ! However, this means that only duplicate articles read in a single Gnus ! session are suppressed. @item gnus-duplicate-list-length @vindex gnus-duplicate-list-length ! This variable says how many @code{Message-ID}s to keep in the duplicate suppression list. The default is 10000. @item gnus-duplicate-file @vindex gnus-duplicate-file ! The name of the file to store the duplicate suppression list in. The default is @file{~/News/suppression}. @end table *************** *** 7361,7367 **** buffer to avoid getting nasty surprises. (For instance, you enter the group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has decoded the sound file in the article and some horrible sing-a-long song ! comes streaming out out your speakers, and you can't find the volume button, because there isn't one, and people are starting to look at you, and you try to stop the program, but you can't, and you can't find the program to control the volume, and everybody else in the room suddenly --- 7469,7475 ---- buffer to avoid getting nasty surprises. (For instance, you enter the group @samp{alt.sing-a-long} and, before you know it, @sc{mime} has decoded the sound file in the article and some horrible sing-a-long song ! comes screaming out your speakers, and you can't find the volume button, because there isn't one, and people are starting to look at you, and you try to stop the program, but you can't, and you can't find the program to control the volume, and everybody else in the room suddenly *************** *** 7447,7459 **** @item TAB @kindex TAB (Article) @findex gnus-article-next-button ! Go to the next button, if any (@code{gnus-article-next-button}. This only makes sense if you have buttonizing turned on. @item M-TAB @kindex M-TAB (Article) @findex gnus-article-prev-button ! Go to the previous button, if any (@code{gnus-article-prev-button}. @end table --- 7555,7567 ---- @item TAB @kindex TAB (Article) @findex gnus-article-next-button ! Go to the next button, if any (@code{gnus-article-next-button}). This only makes sense if you have buttonizing turned on. @item M-TAB @kindex M-TAB (Article) @findex gnus-article-prev-button ! Go to the previous button, if any (@code{gnus-article-prev-button}). @end table *************** *** 7515,7521 **** @item gnus-page-delimiter @vindex gnus-page-delimiter This is the delimiter mentioned above. By default, it is @samp{^L} ! (form linefeed). @end table --- 7623,7629 ---- @item gnus-page-delimiter @vindex gnus-page-delimiter This is the delimiter mentioned above. By default, it is @samp{^L} ! (formfeed). @end table *************** *** 7578,7584 **** Gnus will keep a @code{Message-ID} history file of all the mails it has sent. If it discovers that it has already sent a mail, it will ask the user whether to re-send the mail. (This is primarily useful when ! dealing with @sc{soup} packets and the like where one is apt to sent the same packet multiple times.) This variable says what the name of this history file is. It is @file{~/News/Sent-Message-IDs} by default. Set this variable to @code{nil} if you don't want Gnus to keep a history --- 7686,7692 ---- Gnus will keep a @code{Message-ID} history file of all the mails it has sent. If it discovers that it has already sent a mail, it will ask the user whether to re-send the mail. (This is primarily useful when ! dealing with @sc{soup} packets and the like where one is apt to send the same packet multiple times.) This variable says what the name of this history file is. It is @file{~/News/Sent-Message-IDs} by default. Set this variable to @code{nil} if you don't want Gnus to keep a history *************** *** 7636,7647 **** @findex gnus-mailing-list-groups @cindex mailing lists ! If your news server offers groups that are really mailing lists that are gatewayed to the @sc{nntp} server, you can read those groups without problems, but you can't post/followup to them without some difficulty. One solution is to add a @code{to-address} to the group parameters (@pxref{Group Parameters}). An easier thing to do is set the ! @code{gnus-mailing-list-groups} to a regexp that match the groups that really are mailing lists. Then, at least, followups to the mailing lists will work most of the time. Posting to these groups (@kbd{a}) is still a pain, though. --- 7744,7755 ---- @findex gnus-mailing-list-groups @cindex mailing lists ! If your news server offers groups that are really mailing lists gatewayed to the @sc{nntp} server, you can read those groups without problems, but you can't post/followup to them without some difficulty. One solution is to add a @code{to-address} to the group parameters (@pxref{Group Parameters}). An easier thing to do is set the ! @code{gnus-mailing-list-groups} to a regexp that matches the groups that really are mailing lists. Then, at least, followups to the mailing lists will work most of the time. Posting to these groups (@kbd{a}) is still a pain, though. *************** *** 7698,7704 **** to one or more group(s) on that server. Which group to use is determined by the @code{gnus-message-archive-group} variable. ! This variable can be: @itemize @bullet @item a string --- 7806,7812 ---- to one or more group(s) on that server. Which group to use is determined by the @code{gnus-message-archive-group} variable. ! This variable can be used to do the following: @itemize @bullet @item a string *************** *** 7750,7755 **** --- 7858,7866 ---- "%Y-%m" (current-time)))))) @end lisp + (XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to + use a different value for @code{gnus-message-archive-group} there.) + Now, when you send a message off, it will be stored in the appropriate group. (If you want to disable storing for just one particular message, you can just remove the @code{Gcc} header that has been inserted.) The *************** *** 7761,7774 **** nice---@samp{misc-mail-september-1995}, or whatever. New messages will continue to be stored in the old (now empty) group. ! That's the default method of archiving sent messages. Gnus also a different way for the people who don't like the default method. In that case you should set @code{gnus-message-archive-group} to @code{nil}; this will disable archiving. - XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to - use a different value for @code{gnus-message-archive-group} there. - @table @code @item gnus-outgoing-message-group @vindex gnus-outgoing-message-group --- 7872,7882 ---- nice---@samp{misc-mail-september-1995}, or whatever. New messages will continue to be stored in the old (now empty) group. ! That's the default method of archiving sent messages. Gnus offers a different way for the people who don't like the default method. In that case you should set @code{gnus-message-archive-group} to @code{nil}; this will disable archiving. @table @code @item gnus-outgoing-message-group @vindex gnus-outgoing-message-group *************** *** 8005,8011 **** on the same actual @sc{nntp} server. You tell Gnus which backend to use, and what parameters to set by specifying a @dfn{select method}. ! These select methods specifications can sometimes become quite complicated---say, for instance, that you want to read from the @sc{nntp} server @samp{news.funet.fi} on port number 13, which hangs if queried for @sc{nov} headers and has a buggy select. Ahem. --- 8113,8119 ---- on the same actual @sc{nntp} server. You tell Gnus which backend to use, and what parameters to set by specifying a @dfn{select method}. ! These select method specifications can sometimes become quite complicated---say, for instance, that you want to read from the @sc{nntp} server @samp{news.funet.fi} on port number 13, which hangs if queried for @sc{nov} headers and has a buggy select. Ahem. *************** *** 8152,8162 **** backend, and the second is the @dfn{address}, or @dfn{name}, if you will. ! After these two elements, there may be a arbitrary number of @var{(variable form)} pairs. To go back to the first example---imagine that you want to read from ! port 15 from that machine. This is what the select method should look like then: @lisp --- 8260,8270 ---- backend, and the second is the @dfn{address}, or @dfn{name}, if you will. ! After these two elements, there may be an arbitrary number of @var{(variable form)} pairs. To go back to the first example---imagine that you want to read from ! port 15 on that machine. This is what the select method should look like then: @lisp *************** *** 8164,8170 **** @end lisp You should read the documentation to each backend to find out what ! variables are relevant, but here's an @code{nnmh} example. @code{nnmh} is a mail backend that reads a spool-like structure. Say you have two structures that you wish to access: One is your private --- 8272,8278 ---- @end lisp You should read the documentation to each backend to find out what ! variables are relevant, but here's an @code{nnmh} example: @code{nnmh} is a mail backend that reads a spool-like structure. Say you have two structures that you wish to access: One is your private *************** *** 8285,8294 **** actually the case or not. That might seem quite naughty, but it does make sense most of the time. ! Let's say you have 10 groups subscribed to the server @samp{nephelococcygia.com}. This server is located somewhere quite far away from you and the machine is quite slow, so it takes 1 minute just ! to find out that it refuses connection from you today. If Gnus were to attempt to do that 10 times, you'd be quite annoyed, so Gnus won't attempt to do that. Once it has gotten a single ``connection refused'', it will regard that server as ``down''. --- 8393,8402 ---- actually the case or not. That might seem quite naughty, but it does make sense most of the time. ! Let's say you have 10 groups subscribed to on server @samp{nephelococcygia.com}. This server is located somewhere quite far away from you and the machine is quite slow, so it takes 1 minute just ! to find out that it refuses connection to you today. If Gnus were to attempt to do that 10 times, you'd be quite annoyed, so Gnus won't attempt to do that. Once it has gotten a single ``connection refused'', it will regard that server as ``down''. *************** *** 8334,8340 **** @item R @kindex R (Server) @findex gnus-server-remove-denials ! Remove all marks to whether Gnus was denied connection from all servers (@code{gnus-server-remove-denials}). @end table --- 8442,8448 ---- @item R @kindex R (Server) @findex gnus-server-remove-denials ! Remove all marks to whether Gnus was denied connection from any servers (@code{gnus-server-remove-denials}). @end table *************** *** 8385,8394 **** @cindex nntp authentification @findex nntp-send-authinfo @findex nntp-send-mode-reader ! @code{nntp-server-opened-hook} is run after a connection has been made. ! It can be used to send commands to the @sc{nntp} server after it has ! been contacted. By default is sends the command @code{MODE READER} to ! the server with the @code{nntp-send-mode-reader} function. @item nntp-authinfo-function @vindex nntp-authinfo-function --- 8493,8502 ---- @cindex nntp authentification @findex nntp-send-authinfo @findex nntp-send-mode-reader ! is run after a connection has been made. It can be used to send ! commands to the @sc{nntp} server after it has been contacted. By ! default it sends the command @code{MODE READER} to the server with the ! @code{nntp-send-mode-reader} function. @item nntp-authinfo-function @vindex nntp-authinfo-function *************** *** 8398,8404 **** @table @code @item nntp-send-authinfo @findex nntp-send-authinfo ! This function will used you current login name as the user name and will prompt you for the password. This is the default. @item nntp-send-nosy-authinfo --- 8506,8512 ---- @table @code @item nntp-send-authinfo @findex nntp-send-authinfo ! This function will use your current login name as the user name and will prompt you for the password. This is the default. @item nntp-send-nosy-authinfo *************** *** 8413,8419 **** @item nntp-server-action-alist @vindex nntp-server-action-alist ! This is an list of regexps to match on server types and actions to be taken when matches are made. For instance, if you want Gnus to beep every time you connect to innd, you could say something like: --- 8521,8527 ---- @item nntp-server-action-alist @vindex nntp-server-action-alist ! This is a list of regexps to match on server types and actions to be taken when matches are made. For instance, if you want Gnus to beep every time you connect to innd, you could say something like: *************** *** 8463,8472 **** changes after connecting to the @sc{nntp} server, Gnus will simply sit waiting forever for replies from the server. To help with this unfortunate problem, you can set this command to a number. Gnus will ! then, if it sits waiting longer than that number of seconds for a reply ! from the server, shut down the connection, start a new one, and resend the command. This should hopefully be transparent to the user. A ! likely number is 30 seconds. @item nntp-retry-on-break @vindex nntp-retry-on-break --- 8571,8580 ---- changes after connecting to the @sc{nntp} server, Gnus will simply sit waiting forever for replies from the server. To help with this unfortunate problem, you can set this command to a number. Gnus will ! then, if it sits waiting for a reply from the server longer than that ! number of seconds, shut down the connection, start a new one, and resend the command. This should hopefully be transparent to the user. A ! likely number is 30 seconds. @item nntp-retry-on-break @vindex nntp-retry-on-break *************** *** 8512,8526 **** @table @code @item nntp-telnet-command @vindex nntp-telnet-command ! Command used to start @samp{telnet}. @item nntp-telnet-switches @vindex nntp-telnet-switches ! List of strings to be used as the switches to the telnet command. @item nntp-telnet-user-name @vindex nntp-telnet-user-name ! User name to log in on the remote system as. @item nntp-telnet-passwd @vindex nntp-telnet-passwd --- 8620,8634 ---- @table @code @item nntp-telnet-command @vindex nntp-telnet-command ! Command used to start @code{telnet}. @item nntp-telnet-switches @vindex nntp-telnet-switches ! List of strings to be used as the switches to the @code{telnet} command. @item nntp-telnet-user-name @vindex nntp-telnet-user-name ! User name for log in on the remote system. @item nntp-telnet-passwd @vindex nntp-telnet-passwd *************** *** 8528,8541 **** @item nntp-telnet-parameters @vindex nntp-telnet-parameters ! A list of strings that will be executed as a command after logging in ! via telnet. @end table @item nntp-end-of-line @vindex nntp-end-of-line ! String to use as end-of-line markers when talking to the @sc{nntp} server. This is @samp{\r\n} by default, but should be @samp{\n} when using @code{rlogin} to talk to the server. --- 8636,8649 ---- @item nntp-telnet-parameters @vindex nntp-telnet-parameters ! A list of strings executed as a command after logging in ! via @code{telnet}. @end table @item nntp-end-of-line @vindex nntp-end-of-line ! String to use as end-of-line marker when talking to the @sc{nntp} server. This is @samp{\r\n} by default, but should be @samp{\n} when using @code{rlogin} to talk to the server. *************** *** 8560,8567 **** @item nntp-nov-is-evil @vindex nntp-nov-is-evil If the @sc{nntp} server does not support @sc{nov}, you could set this ! variable to @code{t}, but @code{nntp} usually checks whether @sc{nov} ! can be used automatically. @item nntp-xover-commands @vindex nntp-xover-commands --- 8668,8675 ---- @item nntp-nov-is-evil @vindex nntp-nov-is-evil If the @sc{nntp} server does not support @sc{nov}, you could set this ! variable to @code{t}, but @code{nntp} usually checks automatically whether @sc{nov} ! can be used. @item nntp-xover-commands @vindex nntp-xover-commands *************** *** 8577,8583 **** the server. The server responds with one huge list of lines. However, if you have read articles 2-5000 in the group, and only want to read article 1 and 5001, that means that @code{nntp} will fetch 4999 @sc{nov} ! lines that you do not want, and will not use. This variable says how big a gap between two consecutive articles is allowed to be before the @code{XOVER} request is split into several request. Note that if your network is fast, setting this variable to a really small number means --- 8685,8691 ---- the server. The server responds with one huge list of lines. However, if you have read articles 2-5000 in the group, and only want to read article 1 and 5001, that means that @code{nntp} will fetch 4999 @sc{nov} ! lines that you will not need. This variable says how big a gap between two consecutive articles is allowed to be before the @code{XOVER} request is split into several request. Note that if your network is fast, setting this variable to a really small number means *************** *** 8640,8658 **** @item nnspool-active-file @vindex nnspool-active-file ! The path of the active file. @item nnspool-newsgroups-file @vindex nnspool-newsgroups-file ! The path of the group descriptions file. @item nnspool-history-file @vindex nnspool-history-file ! The path of the news history file. @item nnspool-active-times-file @vindex nnspool-active-times-file ! The path of the active date file. @item nnspool-nov-is-evil @vindex nnspool-nov-is-evil --- 8748,8766 ---- @item nnspool-active-file @vindex nnspool-active-file ! The path to the active file. @item nnspool-newsgroups-file @vindex nnspool-newsgroups-file ! The path to the group descriptions file. @item nnspool-history-file @vindex nnspool-history-file ! The path to the news history file. @item nnspool-active-times-file @vindex nnspool-active-times-file ! The path to the active date file. @item nnspool-nov-is-evil @vindex nnspool-nov-is-evil *************** *** 8699,8706 **** mail backend of your choice into @code{gnus-secondary-select-methods}, and things will happen automatically. ! For instance, if you want to use @code{nnml} (which is a one file per ! mail backend), you could put the following in your @file{.gnus} file: @lisp (setq gnus-secondary-select-methods --- 8807,8814 ---- mail backend of your choice into @code{gnus-secondary-select-methods}, and things will happen automatically. ! For instance, if you want to use @code{nnml} (which is a "one file per ! mail" backend), you could put the following in your @file{.gnus} file: @lisp (setq gnus-secondary-select-methods *************** *** 8725,8735 **** This will result in three new @code{nnml} mail groups being created: @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the mail that doesn't fit into the first two groups will be placed in the ! latter group. This should be sufficient for reading mail with Gnus. You might want to ! give the other sections in this part of the manual a perusal, though, ! especially @pxref{Choosing a Mail Backend} and @pxref{Expiring Mail}. @node Splitting Mail --- 8833,8843 ---- This will result in three new @code{nnml} mail groups being created: @samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the mail that doesn't fit into the first two groups will be placed in the ! last group. This should be sufficient for reading mail with Gnus. You might want to ! give the other sections in this part of the manual a perusal, though. ! Especially @pxref{Choosing a Mail Backend} and @pxref{Expiring Mail}. @node Splitting Mail *************** *** 8773,8782 **** If you like to tinker with this yourself, you can set this variable to a function of your choice. This function will be called without any arguments in a buffer narrowed to the headers of an incoming mail ! message. The function should return a list of groups names that it thinks should carry this mail message. ! Note that the mail backends are free to maul the poor, innocent incoming headers all they want to. They all add @code{Lines} headers; some add @code{X-Gnus-Group} headers; most rename the Unix mbox @code{From} line to something else. --- 8881,8890 ---- If you like to tinker with this yourself, you can set this variable to a function of your choice. This function will be called without any arguments in a buffer narrowed to the headers of an incoming mail ! message. The function should return a list of group names that it thinks should carry this mail message. ! Note that the mail backends are free to maul the poor, innocent, incoming headers all they want to. They all add @code{Lines} headers; some add @code{X-Gnus-Group} headers; most rename the Unix mbox @code{From} line to something else. *************** *** 8791,8797 **** @cindex crosspost @cindex links @code{nnmh} and @code{nnml} makes crossposts by creating hard links to ! the crossposted articles. However, not all files systems support hard links. If that's the case for you, set @code{nnmail-crosspost-link-function} to @code{copy-file}. (This variable is @code{add-name-to-file} by default.) --- 8899,8905 ---- @cindex crosspost @cindex links @code{nnmh} and @code{nnml} makes crossposts by creating hard links to ! the crossposted articles. However, not all file systems support hard links. If that's the case for you, set @code{nnmail-crosspost-link-function} to @code{copy-file}. (This variable is @code{add-name-to-file} by default.) *************** *** 8869,8875 **** @vindex nnmail-crash-box @item nnmail-crash-box ! When the mail backends read a spool file, it is first moved to this file, which is @file{~/.gnus-crash-box} by default. If this file already exists, it will always be read (and incorporated) before any other spool files. --- 8977,8983 ---- @vindex nnmail-crash-box @item nnmail-crash-box ! When a mail backend reads a spool file, mail is first moved to this file, which is @file{~/.gnus-crash-box} by default. If this file already exists, it will always be read (and incorporated) before any other spool files. *************** *** 8911,8919 **** @item nnmail-tmp-directory @vindex nnmail-tmp-directory ! This variable says where to move the incoming mail to while processing it. This is usually done in the same directory that the mail backend ! inhabits (i.e., @file{~/Mail/}), but if this variable is non-@code{nil}, it will be used instead. @item nnmail-movemail-program --- 9019,9027 ---- @item nnmail-tmp-directory @vindex nnmail-tmp-directory ! This variable says where to move incoming mail to -- while processing it. This is usually done in the same directory that the mail backend ! inhabits (e.g., @file{~/Mail/}), but if this variable is non-@code{nil}, it will be used instead. @item nnmail-movemail-program *************** *** 8939,8956 **** @c Since Red Gnus is an alpha release, it is to be expected to lose mail. (No Gnus release since (ding) Gnus 0.10 (or something like that) have lost mail, I think, but that's not the point. (Except certain versions ! of Red Gnus.)) By not deleting the Incoming* files, one can be sure to ! not lose mail -- if Gnus totally whacks out, one can always recover what was lost. ! Delete the @file{Incoming*} files at will. @item nnmail-use-long-file-names @vindex nnmail-use-long-file-names If non-@code{nil}, the mail backends will use long file and directory ! names. Groups like @samp{mail.misc} will end up in directories like ! @file{mail.misc/}. If it is @code{nil}, the same group will end up in ! @file{mail/misc/}. @item nnmail-delete-file-function @vindex nnmail-delete-file-function --- 9047,9065 ---- @c Since Red Gnus is an alpha release, it is to be expected to lose mail. (No Gnus release since (ding) Gnus 0.10 (or something like that) have lost mail, I think, but that's not the point. (Except certain versions ! of Red Gnus.)) By not deleting the Incoming* files, one can be sure not ! to lose mail -- if Gnus totally whacks out, one can always recover what was lost. ! You may delete the @file{Incoming*} files at will. @item nnmail-use-long-file-names @vindex nnmail-use-long-file-names If non-@code{nil}, the mail backends will use long file and directory ! names. Groups like @samp{mail.misc} will end up in directories ! (assuming use of @code{nnml} backend) or files (assuming use of ! @code{nnfolder} backend) like @file{mail.misc}. If it is @code{nil}, ! the same group will end up in @file{mail/misc}. @item nnmail-delete-file-function @vindex nnmail-delete-file-function *************** *** 9010,9019 **** @samp{group}: If the split is a string, that will be taken as a group name. @item ! @var{(FIELD VALUE SPLIT)}: If the split is a list, and the first ! element is a string, then that means that if header FIELD (a regexp) ! contains VALUE (also a regexp), then store the message as specified by ! SPLIT. @item @var{(| SPLIT...)}: If the split is a list, and the first element is --- 9119,9127 ---- @samp{group}: If the split is a string, that will be taken as a group name. @item ! @var{(FIELD VALUE SPLIT)}: If the split is a list, the first element of ! which is a string, then store the message as specified by SPLIT, if ! header FIELD (a regexp) contains VALUE (also a regexp). @item @var{(| SPLIT...)}: If the split is a list, and the first element is *************** *** 9047,9068 **** @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they are expanded as specified by the variable @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where ! the car of the cells contains the key, and the cdr contains a string. @vindex nnmail-split-fancy-syntax-table @code{nnmail-split-fancy-syntax-table} is the syntax table in effect when all this splitting is performed. If you want to have Gnus create groups dynamically based on some ! information in the headers, you can say things like: @example (any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1") @end example - That is, do @code{replace-match}-like substitions in the group names. - - @node Mail and Procmail @subsection Mail and Procmail @cindex procmail --- 9155,9175 ---- @var{FIELD} and @var{VALUE} can also be lisp symbols, in that case they are expanded as specified by the variable @code{nnmail-split-abbrev-alist}. This is an alist of cons cells, where ! the car of a cell contains the key, and the cdr contains the associated ! value. @vindex nnmail-split-fancy-syntax-table @code{nnmail-split-fancy-syntax-table} is the syntax table in effect when all this splitting is performed. If you want to have Gnus create groups dynamically based on some ! information in the headers (i.e., do @code{replace-match}-like ! substitions in the group names), you can say things like: @example (any "debian-\(\\w*\\)@@lists.debian.org" "mail.debian.\\1") @end example @node Mail and Procmail @subsection Mail and Procmail @cindex procmail *************** *** 9081,9095 **** When a mail backend is queried for what groups it carries, it replies with the contents of that variable, along with any groups it has figured ! out that it carries by other means. None of the backends (except ! @code{nnmh}) actually go out to the disk and check what groups actually exist. (It's not trivial to distinguish between what the user thinks is a basis for a newsgroup and what is just a plain old file or directory.) ! This means that you have to tell Gnus (and the backends) what groups ! exist by hand. ! Let's take the @code{nnmh} backend as an example. The folders are located in @code{nnmh-directory}, say, @file{~/Mail/}. There are three folders, @file{foo}, @file{bar} and @file{mail.baz}. --- 9188,9202 ---- When a mail backend is queried for what groups it carries, it replies with the contents of that variable, along with any groups it has figured ! out that it carries by other means. None of the backends, except ! @code{nnmh}, actually go out to the disk and check what groups actually exist. (It's not trivial to distinguish between what the user thinks is a basis for a newsgroup and what is just a plain old file or directory.) ! This means that you have to tell Gnus (and the backends) by hand what ! groups exist. ! Let's take the @code{nnmh} backend as an example: The folders are located in @code{nnmh-directory}, say, @file{~/Mail/}. There are three folders, @file{foo}, @file{bar} and @file{mail.baz}. *************** *** 9118,9131 **** @code{nnmail-resplit-incoming} to @code{t}. @vindex nnmail-keep-last-article ! If you use @code{procmail} to split things directory into an @code{nnmh} directory (which you shouldn't do), you should set @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from ! ever expiring the final article (i. e., the article with the highest article number) in a mail newsgroup. This is quite, quite important. Here's an example setup: The incoming spools are located in ! @file{~/incoming/} and have @samp{""} as suffixes (i. e., the incoming spool files have the same names as the equivalent groups). The @code{nnfolder} backend is to be used as the mail interface, and the @code{nnfolder} directory is @file{~/fMail/}. --- 9225,9238 ---- @code{nnmail-resplit-incoming} to @code{t}. @vindex nnmail-keep-last-article ! If you use @code{procmail} to split things directly into an @code{nnmh} directory (which you shouldn't do), you should set @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from ! ever expiring the final article (i.e., the article with the highest article number) in a mail newsgroup. This is quite, quite important. Here's an example setup: The incoming spools are located in ! @file{~/incoming/} and have @samp{""} as suffixes (i.e., the incoming spool files have the same names as the equivalent groups). The @code{nnfolder} backend is to be used as the mail interface, and the @code{nnfolder} directory is @file{~/fMail/}. *************** *** 9162,9176 **** Go to the group buffer. @item ! Type `G f' and give the path of the mbox file when prompted to create an @code{nndoc} group from the mbox file (@pxref{Foreign Groups}). @item Type `SPACE' to enter the newly created group. @item ! Type `M P b' to process-mark all articles in this group (@pxref{Setting ! Process Marks}). @item Type `B r' to respool all the process-marked articles, and answer --- 9269,9283 ---- Go to the group buffer. @item ! Type `G f' and give the path to the mbox file when prompted to create an @code{nndoc} group from the mbox file (@pxref{Foreign Groups}). @item Type `SPACE' to enter the newly created group. @item ! Type `M P b' to process-mark all articles in this group's buffer ! (@pxref{Setting Process Marks}). @item Type `B r' to respool all the process-marked articles, and answer *************** *** 9233,9241 **** (add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read) @end lisp ! Note that making a group auto-expirable don't mean that all read articles are expired---only the articles that are marked as expirable ! will be expired. Also note the using the @kbd{d} command won't make groups expirable---only semi-automatic marking of articles as read will mark the articles as expirable in auto-expirable groups. --- 9340,9348 ---- (add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read) @end lisp ! Note that making a group auto-expirable doesn't mean that all read articles are expired---only the articles that are marked as expirable ! will be expired. Also note that using the @kbd{d} command won't make groups expirable---only semi-automatic marking of articles as read will mark the articles as expirable in auto-expirable groups. *************** *** 9252,9258 **** If you use adaptive scoring (@pxref{Adaptive Scoring}) and auto-expiring, you'll have problems. Auto-expiring and adaptive scoring ! doesn't really mix very well. @vindex nnmail-expiry-wait The @code{nnmail-expiry-wait} variable supplies the default time an --- 9359,9365 ---- If you use adaptive scoring (@pxref{Adaptive Scoring}) and auto-expiring, you'll have problems. Auto-expiring and adaptive scoring ! don't really mix very well. @vindex nnmail-expiry-wait The @code{nnmail-expiry-wait} variable supplies the default time an *************** *** 9280,9292 **** 6)))) @end lisp ! The group names that this function is fed are ``unadorned'' group names---no @samp{nnml:} prefixes and the like. The @code{nnmail-expiry-wait} variable and ! @code{nnmail-expiry-wait-function} function can be either a number (not ! necessarily an integer) or the symbols @code{immediate} or ! @code{never}. You can also use the @code{expiry-wait} group parameter to selectively change the expiry period (@pxref{Group Parameters}). --- 9387,9399 ---- 6)))) @end lisp ! The group names this function is fed are ``unadorned'' group names---no @samp{nnml:} prefixes and the like. The @code{nnmail-expiry-wait} variable and ! @code{nnmail-expiry-wait-function} function can either be a number (not ! necessarily an integer) or one of the symbols @code{immediate} or ! @code{never}. You can also use the @code{expiry-wait} group parameter to selectively change the expiry period (@pxref{Group Parameters}). *************** *** 9297,9304 **** easier for procmail users. @vindex gnus-total-expirable-newsgroups ! By the way, that line up there about Gnus never expiring non-expirable ! articles is a lie. If you put @code{total-expire} in the group parameters, articles will not be marked as expirable, but all read articles will be put through the expiry process. Use with extreme caution. Even more dangerous is the --- 9404,9411 ---- easier for procmail users. @vindex gnus-total-expirable-newsgroups ! By the way: That line up there, about Gnus never expiring non-expirable ! articles, is a lie. If you put @code{total-expire} in the group parameters, articles will not be marked as expirable, but all read articles will be put through the expiry process. Use with extreme caution. Even more dangerous is the *************** *** 9360,9366 **** @item nnmail-remove-leading-whitespace @findex nnmail-remove-leading-whitespace Clear leading white space that ``helpful'' listservs have added to the ! headers too make them look nice. Aaah. @item nnmail-remove-list-identifiers @findex nnmail-remove-list-identifiers --- 9467,9473 ---- @item nnmail-remove-leading-whitespace @findex nnmail-remove-leading-whitespace Clear leading white space that ``helpful'' listservs have added to the ! headers to make them look nice. Aaah. @item nnmail-remove-list-identifiers @findex nnmail-remove-list-identifiers *************** *** 9405,9411 **** @vindex nnmail-message-id-cache-length @vindex nnmail-message-id-cache-file @cindex duplicate mails ! If you are a member of a couple of mailing list, you will sometime receive two copies of the same mail. This can be quite annoying, so @code{nnmail} checks for and treats any duplicates it might find. To do this, it keeps a cache of old @code{Message-ID}s--- --- 9512,9518 ---- @vindex nnmail-message-id-cache-length @vindex nnmail-message-id-cache-file @cindex duplicate mails ! If you are a member of a couple of mailing lists, you will sometimes receive two copies of the same mail. This can be quite annoying, so @code{nnmail} checks for and treats any duplicates it might find. To do this, it keeps a cache of old @code{Message-ID}s--- *************** *** 9565,9572 **** format. It should be used with some caution. @vindex nnml-directory ! If you use this backend, Gnus will split all incoming mail into files; ! one file for each mail, and put the articles into the correct directories under the directory specified by the @code{nnml-directory} variable. The default value is @file{~/Mail/}. --- 9672,9679 ---- format. It should be used with some caution. @vindex nnml-directory ! If you use this backend, Gnus will split all incoming mail into files, ! one file for each mail, and put the articles into the corresponding directories under the directory specified by the @code{nnml-directory} variable. The default value is @file{~/Mail/}. *************** *** 9584,9590 **** @code{nnml} is probably the slowest backend when it comes to article splitting. It has to create lots of files, and it also generates ! @sc{nov} databases for the incoming mails. This makes is the fastest backend when it comes to reading mail. Virtual server settings: --- 9691,9697 ---- @code{nnml} is probably the slowest backend when it comes to article splitting. It has to create lots of files, and it also generates ! @sc{nov} databases for the incoming mails. This makes it the fastest backend when it comes to reading mail. Virtual server settings: *************** *** 9734,9741 **** @code{ange-ftp} changes that picture dramatically. For instance, if you enter the @code{ange-ftp} file name ! @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the the directory name, ! @code{ange-ftp} will actually allow you to read this directory over at @samp{sina} as a newsgroup. Distributed news ahoy! @code{nndir} will use @sc{nov} files if they are present. --- 9841,9848 ---- @code{ange-ftp} changes that picture dramatically. For instance, if you enter the @code{ange-ftp} file name ! @file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name, ! @code{ange-ftp} or @code{efs} will actually allow you to read this directory over at @samp{sina} as a newsgroup. Distributed news ahoy! @code{nndir} will use @sc{nov} files if they are present. *************** *** 9882,9890 **** @item nndoc-article-type @vindex nndoc-article-type This should be one of @code{mbox}, @code{babyl}, @code{digest}, ! @code{mmdf}, @code{forward}, @code{rfc934}, @code{rfc822-forward}, ! @code{news}, @code{rnews}, @code{mime-digest}, @code{clari-briefs}, or ! @code{guess}. @item nndoc-post-type @vindex nndoc-post-type --- 9989,9997 ---- @item nndoc-article-type @vindex nndoc-article-type This should be one of @code{mbox}, @code{babyl}, @code{digest}, ! @code{news}, @code{rnews}, @code{mmdf}, @code{forward}, @code{rfc934}, ! @code{rfc822-forward}, @code{mime-digest}, @code{standard-digest}, ! @code{slack-digest}, @code{clari-briefs} or @code{guess}. @item nndoc-post-type @vindex nndoc-post-type *************** *** 9976,9982 **** @item article-transform-function If present, this function is called when requesting an article. It's ! meant to be used how more wide-ranging transformation of both head and body of the article. @item generate-head-function --- 10083,10089 ---- @item article-transform-function If present, this function is called when requesting an article. It's ! meant to be used for more wide-ranging transformation of both head and body of the article. @item generate-head-function *************** *** 10012,10019 **** @code{nndoc-add-type} function. It takes two parameters---the first is the definition itself and the second (optional) parameter says where in the document type definition alist to put this definition. The alist is ! traversed sequentially, and @code{nndoc-TYPE-type-p} is called for each ! type. So @code{nndoc-mmdf-type-p} is called to see whether a document is of @code{mmdf} type, and so on. These type predicates should return @code{nil} if the document is not of the correct type; @code{t} if it is of the correct type; and a number if the document might be of the --- 10119,10125 ---- @code{nndoc-add-type} function. It takes two parameters---the first is the definition itself and the second (optional) parameter says where in the document type definition alist to put this definition. The alist is ! traversed sequentially, and @code{nndoc-TYPE-type-p} is called for a given type @code{TYPE}. So @code{nndoc-mmdf-type-p} is called to see whether a document is of @code{mmdf} type, and so on. These type predicates should return @code{nil} if the document is not of the correct type; @code{t} if it is of the correct type; and a number if the document might be of the *************** *** 10061,10067 **** @table @dfn @item message packets ! These are packets made at the server, and typically contains lots of messages for you to read. These are called @file{SoupoutX.tgz} by default, where @var{X} is a number. --- 10167,10173 ---- @table @dfn @item message packets ! These are packets made at the server, and typically contain lots of messages for you to read. These are called @file{SoupoutX.tgz} by default, where @var{X} is a number. *************** *** 10232,10238 **** @item nnsoup-replies-directory @vindex nnsoup-replies-directory ! All replies will stored in this directory before being packed into a reply packet. The default is @file{~/SOUP/replies/"}. @item nnsoup-replies-format-type --- 10338,10344 ---- @item nnsoup-replies-directory @vindex nnsoup-replies-directory ! All replies will be stored in this directory before being packed into a reply packet. The default is @file{~/SOUP/replies/"}. @item nnsoup-replies-format-type *************** *** 10243,10250 **** @item nnsoup-replies-index-type @vindex nnsoup-replies-index-type ! The index type of the replies packet. The is @samp{?n}, which means ! ``none''. Don't fiddle with this one either! @item nnsoup-active-file @vindex nnsoup-active-file --- 10349,10356 ---- @item nnsoup-replies-index-type @vindex nnsoup-replies-index-type ! The index type of the replies packet. The default is @samp{?n}, which ! means ``none''. Don't fiddle with this one either! @item nnsoup-active-file @vindex nnsoup-active-file *************** *** 10325,10337 **** groups---they have a very fleeting idea of article numbers. In fact, each time you enter an @code{nnweb} group (not even changing the search pattern), you are likely to get the articles ordered in a different ! manner. Not even using duplicate suppression (@code{Duplicate Suppression}) will help, since @code{nnweb} doesn't even know the @code{Message-ID} of the articles before reading them using some search engines (DejaNews, for instance). The only possible way to keep track of which articles you've read is by scoring on the @code{Date} ! header---mark all articles that were posted before the last date you ! read the group as read. If the search engine changes its output substantially, @code{nnweb} won't be able to parse it and will fail. One could hardly fault the Web --- 10431,10443 ---- groups---they have a very fleeting idea of article numbers. In fact, each time you enter an @code{nnweb} group (not even changing the search pattern), you are likely to get the articles ordered in a different ! manner. Not even using duplicate suppression (@pxref{Duplicate Suppression}) will help, since @code{nnweb} doesn't even know the @code{Message-ID} of the articles before reading them using some search engines (DejaNews, for instance). The only possible way to keep track of which articles you've read is by scoring on the @code{Date} ! header---mark all articles posted before the last date you read the ! group as read. If the search engine changes its output substantially, @code{nnweb} won't be able to parse it and will fail. One could hardly fault the Web *************** *** 10410,10416 **** @item nngateway-header-transformation @vindex nngateway-header-transformation ! News headers have often have to be transformed in some odd way or other for the mail-to-news gateway to accept it. This variable says what transformation should be called, and defaults to @code{nngateway-simple-header-transformation}. The function is called --- 10516,10522 ---- @item nngateway-header-transformation @vindex nngateway-header-transformation ! News headers often have to be transformed in some odd way or other for the mail-to-news gateway to accept it. This variable says what transformation should be called, and defaults to @code{nngateway-simple-header-transformation}. The function is called *************** *** 10418,10425 **** gateway address. This default function just inserts a new @code{To} header based on the ! @code{Newsgroups} header and the gateway address---an article with this ! @code{Newsgroups} header: @example Newsgroups: alt.religion.emacs --- 10524,10531 ---- gateway address. This default function just inserts a new @code{To} header based on the ! @code{Newsgroups} header and the gateway address. ! For instance, an article with this @code{Newsgroups} header: @example Newsgroups: alt.religion.emacs *************** *** 10460,10466 **** An @dfn{nnvirtual group} is really nothing more than a collection of other groups. ! For instance, if you are tired of reading many small group, you can put them all in one big group, and then grow tired of reading one big, unwieldy group. The joys of computing! --- 10566,10572 ---- An @dfn{nnvirtual group} is really nothing more than a collection of other groups. ! For instance, if you are tired of reading many small groups, you can put them all in one big group, and then grow tired of reading one big, unwieldy group. The joys of computing! *************** *** 10496,10505 **** end up in this one, and there should be no duplicates. Threading (and the rest) will still work as usual, but there might be problems with the sequence of articles. Sorting on date might be an option here ! (@pxref{Selecting a Group}. One limitation, however---all groups that are included in a virtual ! group has to be alive (i.e., subscribed or unsubscribed). Killed or zombie groups can't be component groups for @code{nnvirtual} groups. @vindex nnvirtual-always-rescan --- 10602,10611 ---- end up in this one, and there should be no duplicates. Threading (and the rest) will still work as usual, but there might be problems with the sequence of articles. Sorting on date might be an option here ! (@pxref{Selecting a Group}). One limitation, however---all groups that are included in a virtual ! group have to be alive (i.e., subscribed or unsubscribed). Killed or zombie groups can't be component groups for @code{nnvirtual} groups. @vindex nnvirtual-always-rescan *************** *** 10509,10516 **** default) and you read articles in a component group after the virtual group has been activated, the read articles from the component group will show up when you enter the virtual group. You'll also see this ! effect if you have two virtual groups that contain the same component ! group. If that's the case, you should set this variable to @code{t}. Or you can just tap @code{M-g} on the virtual group every time before you enter it---it'll have much the same effect. --- 10615,10622 ---- default) and you read articles in a component group after the virtual group has been activated, the read articles from the component group will show up when you enter the virtual group. You'll also see this ! effect if you have two virtual groups that have a component group in ! common. If that's the case, you should set this variable to @code{t}. Or you can just tap @code{M-g} on the virtual group every time before you enter it---it'll have much the same effect. *************** *** 10531,10541 **** The address field of the @code{nnkiboze} method is, as with @code{nnvirtual}, a regexp to match groups to be ``included'' in the ! @code{nnkiboze} group. There most similarities between @code{nnkiboze} ! and @code{nnvirtual} ends. In addition to this regexp detailing component groups, an @code{nnkiboze} group ! must have a score file to say what articles that are to be included in the group (@pxref{Scoring}). @kindex M-x nnkiboze-generate-groups --- 10637,10647 ---- The address field of the @code{nnkiboze} method is, as with @code{nnvirtual}, a regexp to match groups to be ``included'' in the ! @code{nnkiboze} group. That's where most similarities between @code{nnkiboze} ! and @code{nnvirtual} end. In addition to this regexp detailing component groups, an @code{nnkiboze} group ! must have a score file to say what articles are to be included in the group (@pxref{Scoring}). @kindex M-x nnkiboze-generate-groups *************** *** 10543,10549 **** You must run @kbd{M-x nnkiboze-generate-groups} after creating the @code{nnkiboze} groups you want to have. This command will take time. Lots of time. Oodles and oodles of time. Gnus has to fetch the headers from ! all the articles in all the components groups and run them through the scoring process to determine if there are any articles in the groups that are to be part of the @code{nnkiboze} groups. --- 10649,10655 ---- You must run @kbd{M-x nnkiboze-generate-groups} after creating the @code{nnkiboze} groups you want to have. This command will take time. Lots of time. Oodles and oodles of time. Gnus has to fetch the headers from ! all the articles in all the component groups and run them through the scoring process to determine if there are any articles in the groups that are to be part of the @code{nnkiboze} groups. *************** *** 10560,10570 **** @code{nnkiboze-directory}, which is @file{~/News/} by default. One contains the @sc{nov} header lines for all the articles in the group, and the other is an additional @file{.newsrc} file to store information ! on what groups that have been searched through to find component ! articles. ! Articles that are marked as read in the @code{nnkiboze} group will have their ! @sc{nov} lines removed from the @sc{nov} file. @node Scoring --- 10666,10675 ---- @code{nnkiboze-directory}, which is @file{~/News/} by default. One contains the @sc{nov} header lines for all the articles in the group, and the other is an additional @file{.newsrc} file to store information ! on what groups have been searched through to find component articles. ! Articles that are marked as read in the @code{nnkiboze} group will have ! their @sc{nov} lines removed from the @sc{nov} file. @node Scoring *************** *** 13030,13036 **** (gnus-demon-scan-pgp 60 t) @end lisp ! This @var{time} parameter and than @var{idle} parameter works together in a strange, but wonderful fashion. Basically, if @var{idle} is @code{nil}, then the function will be called every @var{time} minutes. --- 13135,13141 ---- (gnus-demon-scan-pgp 60 t) @end lisp ! This @var{time} parameter and than @var{idle} parameter work together in a strange, but wonderful fashion. Basically, if @var{idle} is @code{nil}, then the function will be called every @var{time} minutes. *************** *** 13207,13212 **** --- 13312,13334 ---- @node Picons @section Picons + @iftex + @iflatex + \gnuspicon{tmp/picons-att.ps} + \gnuspicon{tmp/picons-berkeley.ps} + \gnuspicon{tmp/picons-caltech.ps} + \gnuspicon{tmp/picons-canada.ps} + \gnuspicon{tmp/picons-cr.ps} + \gnuspicon{tmp/picons-cygnus.ps} + \gnuspicon{tmp/picons-gov.ps} + \gnuspicon{tmp/picons-mit.ps} + \gnuspicon{tmp/picons-nasa.ps} + \gnuspicon{tmp/picons-qmw.ps} + \gnuspicon{tmp/picons-rms.ps} + \gnuspicon{tmp/picons-ruu.ps} + @end iflatex + @end iftex + So... You want to slow down your news reader even more! This is a good way to do so. Its also a great way to impress people staring over your shoulder as you read news. *************** *** 13294,13299 **** --- 13416,13435 ---- routines---@pxref{Windows Configuration}. @end table + + @iftex + @iflatex + \gnuspicon{tmp/picons-seuu.ps} + \gnuspicon{tmp/picons-stanford.ps} + \gnuspicon{tmp/picons-sun.ps} + \gnuspicon{tmp/picons-ubc.ps} + \gnuspicon{tmp/picons-ufl.ps} + \gnuspicon{tmp/picons-uio.ps} + \gnuspicon{tmp/picons-unit.ps} + \gnuspicon{tmp/picons-upenn.ps} + \gnuspicon{tmp/picons-wesleyan.ps} + @end iflatex + @end iftex Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your window configuration for you to include the @code{picons} buffer. *** pub/rgnus/texi/message.texi Sat May 31 15:48:34 1997 --- rgnus/texi/message.texi Wed Jun 18 00:53:44 1997 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Message 5.4.56 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Message 5.4.57 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 39,45 **** @tex @titlepage ! @title Message 5.4.56 Manual @author by Lars Magne Ingebrigtsen @page --- 39,45 ---- @tex @titlepage ! @title Message 5.4.57 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 79,85 **** * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Message 5.4.56. Message is distributed with the Gnus distribution bearing the same version number as this manual has. --- 79,85 ---- * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Message 5.4.57. Message is distributed with the Gnus distribution bearing the same version number as this manual has. *************** *** 176,182 **** The @code{message-wide-reply} pops up a message buffer that's a wide reply to the message in the current buffer. A @dfn{wide reply} is a reply that goes out to all people listed in the @code{To}, @code{From} ! and @code{Cc} headers. @vindex message-wide-reply-to-function Message uses the normal methods to determine where wide replies are to go, --- 176,182 ---- The @code{message-wide-reply} pops up a message buffer that's a wide reply to the message in the current buffer. A @dfn{wide reply} is a reply that goes out to all people listed in the @code{To}, @code{From} ! (or @code{Reply-to}) and @code{Cc} headers. @vindex message-wide-reply-to-function Message uses the normal methods to determine where wide replies are to go, *** pub/rgnus/texi/ChangeLog Sun May 25 17:14:13 1997 --- rgnus/texi/ChangeLog Wed Jun 18 00:53:44 1997 *************** *** 1,3 **** --- 1,7 ---- + Tue Jun 17 23:52:17 1997 Justin Sheehy + + * gnus.texi (Group Parameters): Addition. + Sun May 25 14:40:17 1997 Lars Magne Ingebrigtsen * gnus.texi (Expiring Mail): Addition. *** pub/rgnus/texi/dir Wed Jun 18 00:54:19 1997 --- rgnus/texi/dir Wed Jun 18 00:53:44 1997 *************** *** 0 **** --- 1,22 ---- + -*- Text -*- + The Gnus-realated top node. +  + File: dir Node: Top This is the Gnus Info tree + + * Menu: + + * Gnus: (gnus). The news reader Gnus. + * Message: (message). The Message sending thingamabob. + * Widget: (widget). The Widget library. + * Custom: (custom). The Custom library. + -*- Text -*- + The Gnus-realated top node. +  + File: dir Node: Top This is the Gnus Info tree + + * Menu: + + * Gnus: (gnus). The news reader Gnus. + * Message: (message). The Message sending thingamabob. + * Widget: (widget). The Widget library. + * Custom: (custom). The Custom library.