*** pub/pgnus/lisp/gnus-art.el Thu Feb 11 06:02:18 1999 --- pgnus/lisp/gnus-art.el Sat Feb 20 22:35:24 1999 *************** *** 1,3 **** --- 1,4 ---- + ;;; gnus-art.el --- article mode commands for Gnus ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. *************** *** 978,984 **** (inhibit-point-motion-hooks t) beg) ;; First we narrow to just the headers. - (widen) (goto-char (point-min)) ;; Hide any "From " lines at the beginning of (mail) articles. (while (looking-at "From ") --- 979,984 ---- *************** *** 1033,1039 **** (list gnus-boring-article-headers) (inhibit-point-motion-hooks t) elem) ! (nnheader-narrow-to-headers) (while list (setq elem (pop list)) (goto-char (point-min)) --- 1033,1039 ---- (list gnus-boring-article-headers) (inhibit-point-motion-hooks t) elem) ! (article-narrow-to-head) (while list (setq elem (pop list)) (goto-char (point-min)) *************** *** 1120,1126 **** column) (save-excursion (save-restriction ! (message-narrow-to-head) (while (not (eobp)) (cond ((< (setq column (- (gnus-point-at-eol) (point))) --- 1120,1126 ---- column) (save-excursion (save-restriction ! (article-narrow-to-head) (while (not (eobp)) (cond ((< (setq column (- (gnus-point-at-eol) (point))) *************** *** 1210,1216 **** (let ((buffer-read-only nil) (width (window-width (get-buffer-window (current-buffer))))) (save-restriction - (widen) (article-goto-body) (let ((adaptive-fill-mode nil)) (while (not (eobp)) --- 1210,1215 ---- *************** *** 1273,1279 **** (case-fold-search t) from last) (save-restriction ! (message-narrow-to-head) (goto-char (point-min)) (setq from (message-fetch-field "from")) (goto-char (point-min)) --- 1272,1278 ---- (case-fold-search t) from last) (save-restriction ! (article-narrow-to-head) (goto-char (point-min)) (setq from (message-fetch-field "from")) (goto-char (point-min)) *************** *** 1329,1335 **** (interactive "P") (save-excursion (save-restriction ! (message-narrow-to-head) (let* ((inhibit-point-motion-hooks t) (case-fold-search t) (ct (message-fetch-field "Content-Type" t)) --- 1328,1334 ---- (interactive "P") (save-excursion (save-restriction ! (article-narrow-to-head) (let* ((inhibit-point-motion-hooks t) (case-fold-search t) (ct (message-fetch-field "Content-Type" t)) *************** *** 1363,1369 **** (mail-parse-charset gnus-newsgroup-charset) buffer-read-only) (save-restriction ! (message-narrow-to-head) (funcall gnus-decode-header-function (point-min) (point-max))))) (defun article-de-quoted-unreadable (&optional force) --- 1362,1368 ---- (mail-parse-charset gnus-newsgroup-charset) buffer-read-only) (save-restriction ! (article-narrow-to-head) (funcall gnus-decode-header-function (point-min) (point-max))))) (defun article-de-quoted-unreadable (&optional force) *************** *** 1388,1424 **** "Remove any PGP headers and signatures in the current article." (interactive) (save-excursion ! (let ((inhibit-point-motion-hooks t) ! buffer-read-only beg end) ! (widen) ! (goto-char (point-min)) ! ;; Hide the "header". ! (when (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t) ! (push 'pgp gnus-article-wash-types) ! (delete-region (1+ (match-beginning 0)) (match-end 0)) ! ;; PGP 5 and GNU PG add a `Hash: <>' comment, hide that too ! (when (looking-at "Hash:.*$") ! (delete-region (point) (1+ (gnus-point-at-eol)))) ! (setq beg (point)) ! ;; Hide the actual signature. ! (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t) ! (setq end (1+ (match-beginning 0))) ! (delete-region ! end ! (if (search-forward "\n-----END PGP SIGNATURE-----\n" nil t) ! (match-end 0) ! ;; Perhaps we shouldn't hide to the end of the buffer ! ;; if there is no end to the signature? ! (point-max)))) ! ;; Hide "- " PGP quotation markers. ! (when (and beg end) ! (narrow-to-region beg end) ! (goto-char (point-min)) ! (while (re-search-forward "^- " nil t) ! (delete-region ! (match-beginning 0) (match-end 0))) ! (widen)) ! (gnus-run-hooks 'gnus-article-hide-pgp-hook))))) (defun article-hide-pem (&optional arg) "Toggle hiding of any PEM headers and signatures in the current article. --- 1387,1423 ---- "Remove any PGP headers and signatures in the current article." (interactive) (save-excursion ! (save-restriction ! (let ((inhibit-point-motion-hooks t) ! buffer-read-only beg end) ! (article-goto-body) ! ;; Hide the "header". ! (when (re-search-forward "^-----BEGIN PGP SIGNED MESSAGE-----\n" nil t) ! (push 'pgp gnus-article-wash-types) ! (delete-region (match-beginning 0) (match-end 0)) ! ;; PGP 5 and GNU PG add a `Hash: <>' comment, hide that too ! (when (looking-at "Hash:.*$") ! (delete-region (point) (1+ (gnus-point-at-eol)))) ! (setq beg (point)) ! ;; Hide the actual signature. ! (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t) ! (setq end (1+ (match-beginning 0))) ! (delete-region ! end ! (if (search-forward "\n-----END PGP SIGNATURE-----\n" nil t) ! (match-end 0) ! ;; Perhaps we shouldn't hide to the end of the buffer ! ;; if there is no end to the signature? ! (point-max)))) ! ;; Hide "- " PGP quotation markers. ! (when (and beg end) ! (narrow-to-region beg end) ! (goto-char (point-min)) ! (while (re-search-forward "^- " nil t) ! (delete-region ! (match-beginning 0) (match-end 0))) ! (widen)) ! (gnus-run-hooks 'gnus-article-hide-pgp-hook)))))) (defun article-hide-pem (&optional arg) "Toggle hiding of any PEM headers and signatures in the current article. *************** *** 1428,1434 **** (unless (gnus-article-check-hidden-text 'pem arg) (save-excursion (let (buffer-read-only end) - (widen) (goto-char (point-min)) ;; Hide the horrendously ugly "header". (when (and (search-forward --- 1427,1432 ---- *************** *** 1453,1473 **** (interactive) (save-excursion (save-restriction ! (let ((inhibit-point-motion-hooks t) ! (banner (gnus-group-get-parameter gnus-newsgroup-name 'banner)) ! (gnus-signature-limit nil) ! buffer-read-only beg end) ! (when banner ! (article-goto-body) ! (cond ! ((eq banner 'signature) ! (when (gnus-article-narrow-to-signature) ! (widen) ! (forward-line -1) ! (delete-region (point) (point-max)))) ! ((stringp banner) ! (while (re-search-forward banner nil t) ! (delete-region (match-beginning 0) (match-end 0)))))))))) (defun article-hide-signature (&optional arg) "Hide the signature in the current article. --- 1451,1471 ---- (interactive) (save-excursion (save-restriction ! (let ((inhibit-point-motion-hooks t) ! (banner (gnus-group-get-parameter gnus-newsgroup-name 'banner)) ! (gnus-signature-limit nil) ! buffer-read-only beg end) ! (when banner ! (article-goto-body) ! (cond ! ((eq banner 'signature) ! (when (gnus-article-narrow-to-signature) ! (widen) ! (forward-line -1) ! (delete-region (point) (point-max)))) ! ((stringp banner) ! (while (re-search-forward banner nil t) ! (delete-region (match-beginning 0) (match-end 0)))))))))) (defun article-hide-signature (&optional arg) "Hide the signature in the current article. *************** *** 1493,1498 **** --- 1491,1506 ---- (looking-at "[ \t]*$")) (gnus-delete-line)))))) + (defun article-narrow-to-head () + "Narrow the buffer to the head of the message. + Point is left at the beginning of the narrowed-to region." + (narrow-to-region + (goto-char (point-min)) + (if (search-forward "\n\n" nil 1) + (1- (point)) + (point-max))) + (goto-char (point-min))) + (defun article-goto-body () "Place point at the start of the body." (goto-char (point-min)) *************** *** 1565,1571 **** (defun gnus-article-narrow-to-signature () "Narrow to the signature; return t if a signature is found, else nil." - (widen) (let ((inhibit-point-motion-hooks t)) (when (gnus-article-search-signature) (forward-line 1) --- 1573,1578 ---- *************** *** 1606,1643 **** (goto-char cur) nil))) - (eval-and-compile - (autoload 'w3-display "w3-parse") - (autoload 'w3-do-setup "w3" "" t) - (autoload 'w3-region "w3-display" "" t)) - - (defun gnus-article-treat-html () - "Render HTML." - (interactive) - (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) - (setq b (point)) - (point-max)) - (setq e (point-max))) - (with-temp-buffer - (insert-buffer-substring gnus-article-buffer b e) - (require 'url) - (save-window-excursion - (w3-region (point-min) (point-max)) - (setq buf (buffer-substring-no-properties (point-min) (point-max))))) - (when buf - (delete-region (point-min) (point-max)) - (insert buf)) - (widen) - (goto-char (point-min)) - (set-window-start (get-buffer-window (current-buffer)) (point-min)) - (set-buffer cbuf)))) - (defun gnus-article-hidden-arg () "Return the current prefix arg as a number, or 0 if no prefix." (list (if current-prefix-arg --- 1613,1618 ---- *************** *** 1650,1656 **** means show, 0 means toggle." (save-excursion (save-restriction - (widen) (let ((hide (gnus-article-hidden-text-p type))) (cond ((or (null arg) --- 1625,1630 ---- *************** *** 1721,1727 **** (when (and date (not (string= date ""))) (save-excursion (save-restriction ! (nnheader-narrow-to-headers) (let ((buffer-read-only nil)) ;; Delete any old Date headers. (if (re-search-forward date-regexp nil t) --- 1695,1701 ---- (when (and date (not (string= date ""))) (save-excursion (save-restriction ! (article-narrow-to-head) (let ((buffer-read-only nil)) ;; Delete any old Date headers. (if (re-search-forward date-regexp nil t) *************** *** 2865,2870 **** --- 2839,2846 ---- (goto-char (widget-get elems :from)) (gnus-article-press-button)) + (defvar gnus-displaying-mime nil) + (defun gnus-display-mime (&optional ihandles) "Display the MIME parts." (save-excursion *************** *** 2878,2884 **** (set-window-point window point))) (let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect))) buffer-read-only handle name type b e display) ! (unless ihandles ;; Top-level call; we clean up. (mm-destroy-parts gnus-article-mime-handles) (setq gnus-article-mime-handles handles --- 2854,2861 ---- (set-window-point window point))) (let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect))) buffer-read-only handle name type b e display) ! (when (and (not ihandles) ! (not gnus-displaying-mime)) ;; Top-level call; we clean up. (mm-destroy-parts gnus-article-mime-handles) (setq gnus-article-mime-handles handles *************** *** 2890,2904 **** (or (not (stringp (car handles))) (cdr handles))) (progn ! (unless ihandles ;; Clean up for mime parts. (article-goto-body) (delete-region (point) (point-max))) ! (gnus-mime-display-part handles)) (save-restriction (article-goto-body) (narrow-to-region (point) (point-max)) ! (gnus-treat-article nil 1 1))) ;; Highlight the headers. (save-excursion (save-restriction --- 2867,2884 ---- (or (not (stringp (car handles))) (cdr handles))) (progn ! (when (and (not ihandles) ! (not gnus-displaying-mime)) ;; Clean up for mime parts. (article-goto-body) (delete-region (point) (point-max))) ! (let ((gnus-displaying-mime t)) ! (gnus-mime-display-part handles))) (save-restriction (article-goto-body) (narrow-to-region (point) (point-max)) ! (gnus-treat-article nil 1 1) ! (widen))) ;; Highlight the headers. (save-excursion (save-restriction *************** *** 3143,3149 **** (save-excursion (set-buffer gnus-article-buffer) (goto-char (point-min)) - (widen) ;; Remove any old next/prev buttons. (when (gnus-visual-p 'page-marker) (let ((buffer-read-only nil)) --- 3123,3128 ---- *************** *** 3829,3835 **** (case-fold-search t) (inhibit-point-motion-hooks t) entry regexp header-face field-face from hpoints fpoints) ! (message-narrow-to-head) (while (setq entry (pop alist)) (goto-char (point-min)) (setq regexp (concat "^\\(" --- 3808,3814 ---- (case-fold-search t) (inhibit-point-motion-hooks t) entry regexp header-face field-face from hpoints fpoints) ! (article-narrow-to-head) (while (setq entry (pop alist)) (goto-char (point-min)) (setq regexp (concat "^\\(" *************** *** 3930,3967 **** (interactive) (save-excursion (set-buffer gnus-article-buffer) ! (let ((buffer-read-only nil) ! (inhibit-point-motion-hooks t) ! (case-fold-search t) ! (alist gnus-header-button-alist) ! entry beg end) ! (nnheader-narrow-to-headers) ! (while alist ! ;; Each alist entry. ! (setq entry (car alist) ! alist (cdr alist)) ! (goto-char (point-min)) ! (while (re-search-forward (car entry) nil t) ! ;; Each header matching the entry. ! (setq beg (match-beginning 0)) ! (setq end (or (and (re-search-forward "^[^ \t]" nil t) ! (match-beginning 0)) ! (point-max))) ! (goto-char beg) ! (while (re-search-forward (nth 1 entry) end t) ! ;; Each match within a header. ! (let* ((entry (cdr entry)) ! (start (match-beginning (nth 1 entry))) ! (end (match-end (nth 1 entry))) ! (form (nth 2 entry))) ! (goto-char (match-end 0)) ! (when (eval form) ! (gnus-article-add-button ! start end (nth 3 entry) ! (buffer-substring (match-beginning (nth 4 entry)) ! (match-end (nth 4 entry))))))) ! (goto-char end)))) ! (widen))) ;;; External functions: --- 3909,3946 ---- (interactive) (save-excursion (set-buffer gnus-article-buffer) ! (save-restriction ! (let ((buffer-read-only nil) ! (inhibit-point-motion-hooks t) ! (case-fold-search t) ! (alist gnus-header-button-alist) ! entry beg end) ! (article-narrow-to-head) ! (while alist ! ;; Each alist entry. ! (setq entry (car alist) ! alist (cdr alist)) ! (goto-char (point-min)) ! (while (re-search-forward (car entry) nil t) ! ;; Each header matching the entry. ! (setq beg (match-beginning 0)) ! (setq end (or (and (re-search-forward "^[^ \t]" nil t) ! (match-beginning 0)) ! (point-max))) ! (goto-char beg) ! (while (re-search-forward (nth 1 entry) end t) ! ;; Each match within a header. ! (let* ((entry (cdr entry)) ! (start (match-beginning (nth 1 entry))) ! (end (match-end (nth 1 entry))) ! (form (nth 2 entry))) ! (goto-char (match-end 0)) ! (when (eval form) ! (gnus-article-add-button ! start end (nth 3 entry) ! (buffer-substring (match-beginning (nth 4 entry)) ! (match-end (nth 4 entry))))))) ! (goto-char end))))))) ;;; External functions: *************** *** 4275,4281 **** (when (and (or (consp val) treated-type) (gnus-treat-predicate val)) ! (funcall (cadr elem))))))) ;; Dynamic variables. (defvar part-number) --- 4254,4261 ---- (when (and (or (consp val) treated-type) (gnus-treat-predicate val)) ! (save-restriction ! (funcall (cadr elem)))))))) ;; Dynamic variables. (defvar part-number) *** pub/pgnus/lisp/gnus-cite.el Mon Feb 1 22:18:49 1999 --- pgnus/lisp/gnus-cite.el Sat Feb 20 22:35:24 1999 *************** *** 104,116 **** :type 'integer) (defcustom gnus-cite-attribution-prefix ! "In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\)," "*Regexp matching the beginning of an attribution line." :group 'gnus-cite :type 'regexp) (defcustom gnus-cite-attribution-suffix ! "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\)[ \t]*$" "*Regexp matching the end of an attribution line. The text matching the first grouping will be used as a button." :group 'gnus-cite --- 104,116 ---- :type 'integer) (defcustom gnus-cite-attribution-prefix ! "In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),\\| > -----Original Message-----" "*Regexp matching the beginning of an attribution line." :group 'gnus-cite :type 'regexp) (defcustom gnus-cite-attribution-suffix ! "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\|-----Original Message-----\\)[ \t]*$" "*Regexp matching the end of an attribution line. The text matching the first grouping will be used as a button." :group 'gnus-cite *************** *** 343,349 **** skip (gnus-cite-find-prefix number) face (cdr (assoc prefix face-alist))) ;; Add attribution button. ! (goto-line number) (when (re-search-forward gnus-cite-attribution-suffix (save-excursion (end-of-line 1) (point)) t) --- 343,350 ---- skip (gnus-cite-find-prefix number) face (cdr (assoc prefix face-alist))) ;; Add attribution button. ! (goto-char (point-min)) ! (forward-line (1- number)) (when (re-search-forward gnus-cite-attribution-suffix (save-excursion (end-of-line 1) (point)) t) *************** *** 375,381 **** (while numbers (setq number (pop numbers)) (goto-char (point-min)) ! (forward-line number) (push (cons (point-marker) "") marks) (while (and numbers (= (1- number) (car numbers))) --- 376,382 ---- (while numbers (setq number (pop numbers)) (goto-char (point-min)) ! (forward-line (1- number)) (push (cons (point-marker) "") marks) (while (and numbers (= (1- number) (car numbers))) *************** *** 384,391 **** (forward-line (1- number)) (push (cons (point-marker) prefix) marks))) ;; Skip to the beginning of the body. ! (goto-char (point-min)) ! (search-forward "\n\n" nil t) (push (cons (point-marker) "") marks) ;; Find the end of the body. (goto-char (point-max)) --- 385,391 ---- (forward-line (1- number)) (push (cons (point-marker) prefix) marks))) ;; Skip to the beginning of the body. ! (article-goto-body) (push (cons (point-marker) "") marks) ;; Find the end of the body. (goto-char (point-max)) *************** *** 435,441 **** (fill-column (if width (prefix-numeric-value width) fill-column))) (save-restriction (while (cdr marks) - (widen) (narrow-to-region (caar marks) (caadr marks)) (let ((adaptive-fill-regexp (concat "^" (regexp-quote (cdar marks)) " *")) --- 435,440 ---- *************** *** 569,576 **** (save-excursion (set-buffer gnus-article-buffer) (gnus-cite-parse-maybe force) ! (goto-char (point-min)) ! (search-forward "\n\n" nil t) (let ((start (point)) (atts gnus-cite-attribution-alist) (buffer-read-only nil) --- 568,574 ---- (save-excursion (set-buffer gnus-article-buffer) (gnus-cite-parse-maybe force) ! (article-goto-body) (let ((start (point)) (atts gnus-cite-attribution-alist) (buffer-read-only nil) *************** *** 594,600 **** (while total (setq hidden (car total) total (cdr total)) ! (goto-line hidden) (unless (assq hidden gnus-cite-attribution-alist) (gnus-add-text-properties (point) (progn (forward-line 1) (point)) --- 592,599 ---- (while total (setq hidden (car total) total (cdr total)) ! (goto-char (point-min)) ! (forward-line (1- hidden)) (unless (assq hidden gnus-cite-attribution-alist) (gnus-add-text-properties (point) (progn (forward-line 1) (point)) *************** *** 614,619 **** --- 613,619 ---- ;;; Internal functions: + (defun gnus-cite-parse-maybe (&optional force) ;; Parse if the buffer has changes since last time. (if (and (not force) *************** *** 638,646 **** (defun gnus-cite-parse-wrapper () ;; Wrap chopped gnus-cite-parse ! (goto-char (point-min)) ! (unless (search-forward "\n\n" nil t) ! (goto-char (point-max))) (save-excursion (gnus-cite-parse-attributions)) ;; Try to avoid check citation if there is no reason to believe --- 638,644 ---- (defun gnus-cite-parse-wrapper () ;; Wrap chopped gnus-cite-parse ! (article-goto-body) (save-excursion (gnus-cite-parse-attributions)) ;; Try to avoid check citation if there is no reason to believe *************** *** 907,914 **** (when face (let ((inhibit-point-motion-hooks t) from to overlay) ! (goto-line number) ! (unless (eobp) ; Sometimes things become confused. (forward-char (length prefix)) (skip-chars-forward " \t") (setq from (point)) --- 905,912 ---- (when face (let ((inhibit-point-motion-hooks t) from to overlay) ! (goto-char (point-min)) ! (when (zerop (forward-line (1- number))) (forward-char (length prefix)) (skip-chars-forward " \t") (setq from (point)) *************** *** 931,937 **** (while numbers (setq number (car numbers) numbers (cdr numbers)) ! (goto-line number) (cond ((get-text-property (point) 'invisible) (remove-text-properties (point) (progn (forward-line 1) (point)) gnus-hidden-properties)) --- 929,936 ---- (while numbers (setq number (car numbers) numbers (cdr numbers)) ! (goto-char (point-min)) ! (forward-line (1- number)) (cond ((get-text-property (point) 'invisible) (remove-text-properties (point) (progn (forward-line 1) (point)) gnus-hidden-properties)) *** pub/pgnus/lisp/gnus-group.el Thu Feb 11 06:02:19 1999 --- pgnus/lisp/gnus-group.el Sat Feb 20 22:35:25 1999 *************** *** 2901,2906 **** --- 2901,2907 ---- re-scanning. If ARG is non-nil and not a number, this will force \"hard\" re-reading of the active files from all servers." (interactive "P") + (require 'nnmail) (let ((gnus-inhibit-demon t) ;; Binding this variable will inhibit multiple fetchings ;; of the same mail source. *** pub/pgnus/lisp/gnus-msg.el Thu Feb 11 06:02:19 1999 --- pgnus/lisp/gnus-msg.el Sat Feb 20 22:35:25 1999 *************** *** 655,661 **** (save-excursion (set-buffer gnus-original-article-buffer) (setq text (buffer-string))) ! (set-buffer (gnus-get-buffer-create " *Gnus forward*")) (erase-buffer) (insert text) (run-hooks 'gnus-article-decode-hook) --- 655,662 ---- (save-excursion (set-buffer gnus-original-article-buffer) (setq text (buffer-string))) ! (set-buffer (gnus-get-buffer-create ! (generate-new-buffer-name " *Gnus forward*"))) (erase-buffer) (insert text) (run-hooks 'gnus-article-decode-hook) *************** *** 849,855 **** (stringp nntp-server-type)) (insert nntp-server-type)) (insert "\n\n\n\n\n") ! (gnus-debug) (goto-char (point-min)) (search-forward "Subject: " nil t) (message ""))) --- 850,859 ---- (stringp nntp-server-type)) (insert nntp-server-type)) (insert "\n\n\n\n\n") ! (save-excursion ! (set-buffer (gnus-get-buffer-create " *gnus environment info*")) ! (gnus-debug)) ! (insert "<#part type=application/emacs-lisp buffer=\" *gnus environment info*\" disposition=inline><#/part>") (goto-char (point-min)) (search-forward "Subject: " nil t) (message ""))) *** pub/pgnus/lisp/gnus-picon.el Thu Feb 11 06:02:20 1999 --- pgnus/lisp/gnus-picon.el Sat Feb 20 22:35:26 1999 *************** *** 374,380 **** (gnus-put-text-property (match-beginning 0) (match-end 0) 'invisible t) ! (article-goto-body) (unless (bobp) (backward-char 1))))) (if (null gnus-picons-piconsearch-url) --- 374,381 ---- (gnus-put-text-property (match-beginning 0) (match-end 0) 'invisible t) ! (let ((article-goto-body-goes-to-point-min-p nil)) ! (article-goto-body)) (unless (bobp) (backward-char 1))))) (if (null gnus-picons-piconsearch-url) *** pub/pgnus/lisp/gnus-start.el Thu Feb 11 06:02:20 1999 --- pgnus/lisp/gnus-start.el Sat Feb 20 22:35:26 1999 *************** *** 854,859 **** --- 854,860 ---- "Setup news information. If RAWFILE is non-nil, the .newsrc file will also be read. If LEVEL is non-nil, the news will be set up at level LEVEL." + (require 'nnmail) (let ((init (not (and gnus-newsrc-alist gnus-active-hashtb (not rawfile)))) ;; Binding this variable will inhibit multiple fetchings ;; of the same mail source. *** pub/pgnus/lisp/gnus-sum.el Thu Feb 11 06:02:22 1999 --- pgnus/lisp/gnus-sum.el Sat Feb 20 22:35:27 1999 *************** *** 1366,1371 **** --- 1366,1372 ---- "a" gnus-summary-limit-to-author "u" gnus-summary-limit-to-unread "m" gnus-summary-limit-to-marks + "M" gnus-summary-limit-exclude-marks "v" gnus-summary-limit-to-score "*" gnus-summary-limit-include-cached "D" gnus-summary-limit-include-dormant *************** *** 1782,1787 **** --- 1783,1789 ---- ["Hide childless dormant" gnus-summary-limit-exclude-childless-dormant t] ;;["Hide thread" gnus-summary-limit-exclude-thread t] + ["Hide marked" gnus-summary-limit-exclude-marks t] ["Show expunged" gnus-summary-show-all-expunged t]) ("Process Mark" ["Set mark" gnus-summary-mark-as-processable t] *** pub/pgnus/lisp/gnus-util.el Wed Jan 27 06:26:35 1999 --- pgnus/lisp/gnus-util.el Sat Feb 20 22:35:28 1999 *************** *** 506,512 **** ((gnus-functionp function) ) (t ! (error "Invalid sort spec: %s" function))))if (if (cdr funs) `(or (,function ,first ,last) (and (not (,function ,last ,first)) --- 506,512 ---- ((gnus-functionp function) ) (t ! (error "Invalid sort spec: %s" function)))) (if (cdr funs) `(or (,function ,first ,last) (and (not (,function ,last ,first)) *** pub/pgnus/lisp/gnus-uu.el Sat Jan 23 15:30:43 1999 --- pgnus/lisp/gnus-uu.el Sat Feb 20 22:35:28 1999 *************** *** 556,563 **** (delete-region (point) (gnus-point-at-eol)) (insert from)) (message-forward post)) - (delete-file file) - (kill-buffer buf) (setq gnus-uu-digest-from-subject nil))) (defun gnus-uu-digest-post-forward (&optional n) --- 556,561 ---- *** pub/pgnus/lisp/gnus.el Thu Feb 11 06:02:22 1999 --- pgnus/lisp/gnus.el Sat Feb 20 22:35:28 1999 *************** *** 259,265 **** :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "0.76" "Version number for this version of Gnus.") (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) --- 259,265 ---- :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "0.77" "Version number for this version of Gnus.") (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) *** pub/pgnus/lisp/mail-source.el Thu Feb 11 06:02:22 1999 --- pgnus/lisp/mail-source.el Sat Feb 20 22:35:28 1999 *************** *** 69,76 **** (:suffix ".spool") (:predicate identity)) (pop (:server (getenv "MAILHOST")) ! (:port "pop3") (:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER"))) (:program) (:function) --- 69,78 ---- (:suffix ".spool") (:predicate identity)) (pop + (:prescript) + (:postscript) (:server (getenv "MAILHOST")) ! (:port "pop") (:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER"))) (:program) (:function) *************** *** 308,315 **** (defun mail-source-fetch-pop (source callback) "Fetcher for single-file sources." (mail-source-bind (pop source) (let ((from (format "%s:%s:%s" server user port)) ! (mail-source-string (format "pop:%s@%s" user server))) (when (and (not (eq authentication 'apop)) (not program)) (setq password --- 310,327 ---- (defun mail-source-fetch-pop (source callback) "Fetcher for single-file sources." (mail-source-bind (pop source) + (when prescript + (if (fboundp prescript) + (funcall prescript) + (call-process shell-file-name nil nil nil + shell-command-switch + (format-spec + prescript + (format-spec-make ?p password ?t mail-source-crash-box + ?s server ?P port ?u user))))) (let ((from (format "%s:%s:%s" server user port)) ! (mail-source-string (format "pop:%s@%s" user server)) ! result) (when (and (not (eq authentication 'apop)) (not program)) (setq password *************** *** 321,344 **** (push (cons from password) mail-source-password-cache))) (when server (setenv "MAILHOST" server)) ! (if (cond ! (program ! (mail-source-fetch-with-program ! (format-spec ! program ! (format-spec-make ?p password ?t mail-source-crash-box ! ?s server ?P port ?u user)))) ! (function ! (funcall function mail-source-crash-box)) ! ;; The default is to use pop3.el. ! (t ! (let ((pop3-password password) ! (pop3-maildrop user) ! (pop3-mailhost server) ! (pop3-authentication-scheme ! (if (eq authentication 'apop) 'apop 'pass))) ! (save-excursion (pop3-movemail mail-source-crash-box))))) ! (mail-source-callback callback server) ;; We nix out the password in case the error ;; was because of a wrong password being given. (setq mail-source-password-cache --- 333,370 ---- (push (cons from password) mail-source-password-cache))) (when server (setenv "MAILHOST" server)) ! (setq result ! (cond ! (program ! (mail-source-fetch-with-program ! (format-spec ! program ! (format-spec-make ?p password ?t mail-source-crash-box ! ?s server ?P port ?u user)))) ! (function ! (funcall function mail-source-crash-box)) ! ;; The default is to use pop3.el. ! (t ! (let ((pop3-password password) ! (pop3-maildrop user) ! (pop3-mailhost server) ! (pop3-port port) ! (pop3-authentication-scheme ! (if (eq authentication 'apop) 'apop 'pass))) ! (save-excursion (pop3-movemail mail-source-crash-box)))))) ! (if result ! (progn ! (mail-source-callback callback server) ! (when prescript ! (if (fboundp prescript) ! (funcall prescript) ! (call-process shell-file-name nil nil nil ! shell-command-switch ! (format-spec ! postscript ! (format-spec-make ! ?p password ?t mail-source-crash-box ! ?s server ?P port ?u user)))))) ;; We nix out the password in case the error ;; was because of a wrong password being given. (setq mail-source-password-cache *** pub/pgnus/lisp/message.el Thu Feb 11 06:02:23 1999 --- pgnus/lisp/message.el Sat Feb 20 22:35:29 1999 *************** *** 477,482 **** --- 477,483 ---- `message-cite-original-without-signature'. Note that `message-cite-original' uses `mail-citation-hook' if that is non-nil." :type '(radio (function-item message-cite-original) + (function-item message-cite-original-without-signature) (function-item sc-cite-original) (function :tag "Other")) :group 'message-insertion) *************** *** 1218,1223 **** --- 1219,1225 ---- (defun message-sort-headers-1 () "Sort the buffer as headers using `message-rank' text props." (goto-char (point-min)) + (require 'sort) (sort-subr nil 'message-next-header (lambda () *************** *** 1444,1449 **** --- 1446,1453 ---- (concat "[ \t]*[-a-z0-9A-Z]*>+[ \t]*\\|" adaptive-fill-first-line-regexp)) (mm-enable-multibyte) + (make-local-variable 'indent-tabs-mode) ;Turn off tabs for indentation. + (setq indent-tabs-mode nil) (run-hooks 'text-mode-hook 'message-mode-hook)) *************** *** 2093,2099 **** (let ((message-deletable-headers (if news nil message-deletable-headers))) (message-generate-headers message-required-mail-headers)) - (untabify (point-min) (point-max)) (let ((mail-parse-charset message-posting-charset)) (mail-encode-encoded-word-buffer)) ;; Let the user do all of the above. --- 2097,2102 ---- *************** *** 2269,2275 **** (message-narrow-to-headers) ;; Insert some headers. (message-generate-headers message-required-news-headers) - (untabify (point-min) (point-max)) (let ((mail-parse-charset message-posting-charset)) (mail-encode-encoded-word-buffer)) ;; Let the user do all of the above. --- 2272,2277 ---- *** pub/pgnus/lisp/mm-bodies.el Thu Feb 11 06:02:23 1999 --- pgnus/lisp/mm-bodies.el Sat Feb 20 22:35:29 1999 *************** *** 45,51 **** (iso-8859-3 . quoted-printable) (iso-8859-4 . quoted-printable) (iso-8859-5 . base64) ! (koi8-r . base64) (iso-8859-7 . quoted-printable) (iso-8859-8 . quoted-printable) (iso-8859-9 . quoted-printable) --- 45,51 ---- (iso-8859-3 . quoted-printable) (iso-8859-4 . quoted-printable) (iso-8859-5 . base64) ! (koi8-r . 8bit) (iso-8859-7 . quoted-printable) (iso-8859-8 . quoted-printable) (iso-8859-9 . quoted-printable) *************** *** 122,128 **** ((eq charset mail-parse-charset) bits) (t ! (let ((encoding (or (cdr (assq charset mm-body-charset-encoding-alist )) 'quoted-printable))) (mm-encode-content-transfer-encoding encoding "text/plain") encoding))))) --- 122,128 ---- ((eq charset mail-parse-charset) bits) (t ! (let ((encoding (or (cdr (assq charset mm-body-charset-encoding-alist)) 'quoted-printable))) (mm-encode-content-transfer-encoding encoding "text/plain") encoding))))) *** pub/pgnus/lisp/mm-decode.el Mon Feb 1 22:18:53 1999 --- pgnus/lisp/mm-decode.el Sat Feb 20 22:35:29 1999 *************** *** 83,88 **** --- 83,89 ---- ("text/html" mm-inline-text (locate-library "w3")) ("text/x-vcard" mm-inline-text (locate-library "vcard")) ("message/delivery-status" mm-inline-text t) + ("message/rfc822" mm-inline-message t) ("text/.*" mm-inline-text t) ("audio/wav" mm-inline-audio (and (or (featurep 'nas-sound) (featurep 'native-sound)) *************** *** 98,108 **** (defvar mm-user-display-methods '(("image/.*" . inline) ("text/.*" . inline) ! ("message/delivery-status" . inline))) (defvar mm-user-automatic-display '("text/plain" "text/enriched" "text/richtext" "text/html" ! "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*")) (defvar mm-attachment-override-types '("text/plain" "text/x-vcard") --- 99,111 ---- (defvar mm-user-display-methods '(("image/.*" . inline) ("text/.*" . inline) ! ("message/delivery-status" . inline) ! ("message/rfc822" . inline))) (defvar mm-user-automatic-display '("text/plain" "text/enriched" "text/richtext" "text/html" ! "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*" ! "message/rfc822")) (defvar mm-attachment-override-types '("text/plain" "text/x-vcard") *** pub/pgnus/lisp/mm-util.el Thu Feb 11 06:02:23 1999 --- pgnus/lisp/mm-util.el Sat Feb 20 22:35:29 1999 *************** *** 252,258 **** (defun mm-find-charset-region (b e) "Return a list of charsets in the region." (cond ! ((fboundp 'find-charset-region) (find-charset-region b e)) ((not (boundp 'current-language-environment)) (save-excursion --- 252,260 ---- (defun mm-find-charset-region (b e) "Return a list of charsets in the region." (cond ! ((and (boundp 'enable-multibyte-characters) ! enable-multibyte-characters ! (fboundp 'find-charset-region)) (find-charset-region b e)) ((not (boundp 'current-language-environment)) (save-excursion *** pub/pgnus/lisp/mm-view.el Wed Jan 27 06:26:37 1999 --- pgnus/lisp/mm-view.el Sat Feb 20 22:35:29 1999 *************** *** 71,77 **** (save-restriction (narrow-to-region b (point)) (save-window-excursion ! (let ((w3-strict-width width)) (w3-region (point-min) (point-max))))) (mm-handle-set-undisplayer handle --- 71,78 ---- (save-restriction (narrow-to-region b (point)) (save-window-excursion ! (let ((w3-strict-width width) ! (url-standalone-mode t)) (w3-region (point-min) (point-max))))) (mm-handle-set-undisplayer handle *************** *** 133,145 **** (defun mm-w3-prepare-buffer () (require 'w3) ! (w3-prepare-buffer)) (defun mm-view-message () (gnus-article-prepare-display) (run-hooks 'gnus-article-decode-hook) (fundamental-mode) (goto-char (point-min))) (provide 'mm-view) --- 134,166 ---- (defun mm-w3-prepare-buffer () (require 'w3) ! (let ((url-standalone-mode t)) ! (w3-prepare-buffer))) (defun mm-view-message () + (mm-enable-multibyte) (gnus-article-prepare-display) (run-hooks 'gnus-article-decode-hook) (fundamental-mode) (goto-char (point-min))) + + (defun mm-inline-message (handle) + (let ((b (point))) + (save-excursion + (mm-insert-part handle) + (save-restriction + (narrow-to-region b (point)) + (run-hooks 'gnus-article-decode-hook) + (gnus-article-prepare-display) + (mm-handle-set-undisplayer + handle + `(lambda () + (let (buffer-read-only) + (mapc (lambda (prop) + (remove-specifier + (face-property 'default prop) (current-buffer))) + '(background background-pixmap foreground)) + (delete-region ,(point-min-marker) ,(point-max-marker))))))))) (provide 'mm-view) *** pub/pgnus/lisp/nnmail.el Thu Feb 11 06:02:25 1999 --- pgnus/lisp/nnmail.el Sat Feb 20 22:35:29 1999 *************** *** 793,799 **** (goto-char (point-min)) ;; Find the end of the head. (narrow-to-region ! (point-min) (if (search-forward "\n\n" nil t) (1- (point)) ;; This will never happen, but just to be on the safe side -- --- 793,799 ---- (goto-char (point-min)) ;; Find the end of the head. (narrow-to-region ! (point-min) (if (search-forward "\n\n" nil t) (1- (point)) ;; This will never happen, but just to be on the safe side -- *************** *** 1045,1050 **** --- 1045,1053 ---- (beginning-of-line) (insert "X-Gnus-Broken-Eudora-")))) + (custom-add-option 'nnmail-prepare-incoming-header-hook + 'nnmail-fix-eudora-headers) + ;;; Utility functions (defun nnmail-split-fancy () *************** *** 1365,1372 **** ((eq source 'procmail) (message "Invalid value for nnmail-spool-file: `procmail'") nil)) - (nnheader-message 4 "%s: Reading incoming mail from %s..." - method (car source)) ;; Hack to only fetch the contents of a single group's spool file. (when (and (eq (car source) 'directory) group) --- 1368,1373 ---- *************** *** 1379,1393 **** (if (member source nnmail-fetched-sources) (setq source nil) (push source nnmail-fetched-sources))) ! (when (and source ! (mail-source-fetch ! source ! `(lambda (file orig-file) ! (nnmail-split-incoming ! file ',(intern (format "%s-save-mail" method)) ! ',spool-func (nnmail-get-split-group orig-file source) ! ',(intern (format "%s-active-number" method)))))) ! (incf i))) ;; If we did indeed read any incoming spools, we save all info. (unless (zerop i) (nnmail-save-active --- 1380,1396 ---- (if (member source nnmail-fetched-sources) (setq source nil) (push source nnmail-fetched-sources))) ! (when source ! (nnheader-message 4 "%s: Reading incoming mail from %s..." ! method (car source)) ! (when (mail-source-fetch ! source ! `(lambda (file orig-file) ! (nnmail-split-incoming ! file ',(intern (format "%s-save-mail" method)) ! ',spool-func (nnmail-get-split-group orig-file source) ! ',(intern (format "%s-active-number" method))))) ! (incf i)))) ;; If we did indeed read any incoming spools, we save all info. (unless (zerop i) (nnmail-save-active *** pub/pgnus/lisp/nnml.el Thu Feb 11 06:02:25 1999 --- pgnus/lisp/nnml.el Sat Feb 20 22:35:29 1999 *************** *** 591,597 **** (let ((file (concat (nnmail-group-pathname (caar ga) nnml-directory) (int-to-string (cdar ga))))) ! z (if first ;; It was already saved, so we just make a hard link. (funcall nnmail-crosspost-link-function first file t) ;; Save the article. --- 591,597 ---- (let ((file (concat (nnmail-group-pathname (caar ga) nnml-directory) (int-to-string (cdar ga))))) ! (if first ;; It was already saved, so we just make a hard link. (funcall nnmail-crosspost-link-function first file t) ;; Save the article. *** pub/pgnus/lisp/ChangeLog Thu Feb 11 06:02:17 1999 --- pgnus/lisp/ChangeLog Sat Feb 20 22:35:23 1999 *************** *** 1,3 **** --- 1,92 ---- + Sat Feb 20 21:34:28 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.77 is released. + + 1999-02-20 17:32:17 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-displaying-mime): New variable. + (article-narrow-to-head): New function. + + * mail-source.el (mail-source-fetch-pop): Include pre/postscript. + Default to pop instead of pop3. + + 1999-02-19 16:16:04 Lars Magne Ingebrigtsen + + * gnus-art.el (article-hide-pgp): Goto body. + + * gnus-uu.el (gnus-uu-digest-mail-forward): Don't kill buffer. + + * gnus-cite.el: Don't use goto-line. + + * gnus-art.el (gnus-article-treat-html): Removed. + (gnus-treat-article): Save restriction. + + 1999-02-17 Per Abrahamsen + + * message.el (message-send-mail): Don't untabify. + (message-mode): Don't use tabs for indentation. + + 1999-02-19 14:54:13 Lars Magne Ingebrigtsen + + * message.el (message-send-mail): Don't untabify. + + * nnml.el (nnml-save-mail): Typo fix. + + 1999-02-19 Per Abrahamsen + + * message.el (message-cite-function): Add + `message-cite-original-without-signature' customization option. + + 1999-02-18 Per Abrahamsen + + * nnmail.el (nnmail-fix-eudora-headers): Mark as option to + `nnmail-prepare-incoming-header-hook'. + + 1999-02-19 14:41:43 Justin Sheehy + + * gnus-util.el (gnus-make-sort-function-1): Typo fix. + + 1999-02-19 14:40:37 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-get-new-news): Require nnmail. + + 1999-02-18 Michael Cook + + * Recognize Microsoft Outlook's cite attribution conventions. + + 1999-02-19 14:33:11 James H. Cloos, Jr. + + * gnus-sum.el: Bind M. + + 1999-02-19 14:31:29 Neil Crellin + + * mail-source.el (mail-source-fetch-pop): Bind pop3-port. + + 1999-02-15 Didier Verna + + * gnus-picon.el (gnus-group-display-picons): ensures that + `article-goto-body' really goes to the article body. + + 1999-02-19 12:57:19 Lars Magne Ingebrigtsen + + * mm-view.el (mm-inline-text): Bind url-standalone-mode. + + * gnus-msg.el (gnus-summary-mail-forward): Create unique names. + + * mm-view.el (mm-view-message): Enable multibyte. + + 1999-02-11 18:37:15 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-get-new-mail): Message later. + + * mm-util.el (mm-find-charset-region): Revert to checking + multibyte. + + 1999-02-11 Matt Pharr + + * gnus-msg.el (gnus-bug): Encode environment info as a MIME + attachment. + Thu Feb 11 04:58:51 1999 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.76 is released. *** pub/pgnus/texi/gnus.texi Thu Feb 11 06:02:31 1999 --- pgnus/texi/gnus.texi Sat Feb 20 22:35:33 1999 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Pterodactyl Gnus 0.76 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Pterodactyl Gnus 0.77 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 318,324 **** @tex @titlepage ! @title Pterodactyl Gnus 0.76 Manual @author by Lars Magne Ingebrigtsen @page --- 318,324 ---- @tex @titlepage ! @title Pterodactyl Gnus 0.77 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 354,360 **** spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Pterodactyl Gnus 0.76. @end ifinfo --- 354,360 ---- spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Pterodactyl Gnus 0.77. @end ifinfo *************** *** 4710,4715 **** --- 4710,4720 ---- Exclude all dormant articles from the limit (@code{gnus-summary-limit-exclude-dormant}). + @item / M + @kindex / M (Summary) + @findex gnus-summary-limit-exclude-marks + Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}). + @item / T @kindex / T (Summary) @findex gnus-summary-limit-include-thread *************** *** 10058,10063 **** --- 10063,10076 ---- The values used for these specs are taken from the values you give the corresponding keywords. + @item :prescript + A script to be run before fetching the mail. The syntax is the same as + the @code{:program} keyword. This can also be a function to be run. + + @item :postscript + A script to be run after fetching the mail. The syntax is the same as + the @code{:program} keyword. This can also be a function to be run. + @item :function The function to use to fetch mail from the POP server. The function is called with one parameter---the name of the file where the mail should *************** *** 10092,10097 **** --- 10105,10134 ---- @lisp (pop :program "movemail" :args (format "po:%s %s %s" user mail-source-crash-box password)) + @end lisp + + @item maildir + Get mail from a maildir. This is a type of mailbox currently only + supported by qmail, where each file in a special directory contains + exactly one mail. + + Keywords: + + @table @code + @item :path + The path of the directory where the mails are stored. The default is + @samp{~/Maildir/new}. + + If you sometimes look at your mail through a pop3 daemon before fetching + them with Gnus, you may also have to fetch your mails from the + @code{cur} directory inside the maildir, like in the following example. + + @end table + + An example maildir mail source: + + @lisp + (maildir :path "/home/user-name/Maildir/cur") @end lisp @end table *** pub/pgnus/texi/message.texi Thu Feb 11 06:02:32 1999 --- pgnus/texi/message.texi Sat Feb 20 22:35:33 1999 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Pterodactyl Message 0.76 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Pterodactyl Message 0.77 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 42,48 **** @tex @titlepage ! @title Pterodactyl Message 0.76 Manual @author by Lars Magne Ingebrigtsen @page --- 42,48 ---- @tex @titlepage ! @title Pterodactyl Message 0.77 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 83,89 **** * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Pterodactyl Message 0.76. Message is distributed with the Gnus distribution bearing the same version number as this manual. --- 83,89 ---- * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Pterodactyl Message 0.77. Message is distributed with the Gnus distribution bearing the same version number as this manual. *** pub/pgnus/texi/ChangeLog Thu Feb 11 06:02:32 1999 --- pgnus/texi/ChangeLog Sat Feb 20 22:35:33 1999 *************** *** 1,3 **** --- 1,11 ---- + 1999-02-20 17:33:55 Lars Magne Ingebrigtsen + + * gnus.texi (Mail Source Specifiers): Addition. + + 1999-02-11 19:19:02 Carsten Leonhardt + + * gnus.texi (Mail Source Specifiers): Document maildir. + 1999-02-09 16:21:35 Lars Magne Ingebrigtsen * gnus.texi (Charsets): New.