*** 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  <larsi@menja.ifi.uio.no>
+ 
+ 	* gnus.el: Pterodactyl Gnus v0.77 is released.
+ 
+ 1999-02-20 17:32:17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+ 
+ 	* 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  <larsi@gnus.org>
+ 
+ 	* 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  <abraham@dina.kvl.dk>
+ 
+ 	* 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  <larsi@gnus.org>
+ 
+ 	* message.el (message-send-mail): Don't untabify.
+ 
+ 	* nnml.el (nnml-save-mail): Typo fix.
+ 
+ 1999-02-19  Per Abrahamsen  <abraham@dina.kvl.dk>
+ 
+ 	* message.el (message-cite-function): Add
+ 	`message-cite-original-without-signature' customization option.
+ 
+ 1999-02-18  Per Abrahamsen  <abraham@dina.kvl.dk>
+ 
+ 	* nnmail.el (nnmail-fix-eudora-headers): Mark as option to
+ 	`nnmail-prepare-incoming-header-hook'.
+ 
+ 1999-02-19 14:41:43  Justin Sheehy  <justin@linus.mitre.org>
+ 
+ 	* gnus-util.el (gnus-make-sort-function-1): Typo fix.
+ 
+ 1999-02-19 14:40:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+ 
+ 	* gnus-group.el (gnus-group-get-new-news): Require nnmail. 
+ 
+ 1999-02-18  Michael Cook  <cook@sightpath.com>
+ 
+ 	* Recognize Microsoft Outlook's cite attribution conventions.
+ 
+ 1999-02-19 14:33:11  James H. Cloos, Jr.  <cloos@jhcloos.com>
+ 
+ 	* gnus-sum.el: Bind M.
+ 
+ 1999-02-19 14:31:29  Neil Crellin  <neilc@wallaby.cc>
+ 
+ 	* mail-source.el (mail-source-fetch-pop): Bind pop3-port.
+ 
+ 1999-02-15  Didier Verna  <verna@inf.enst.fr>
+ 
+ 	* 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  <larsi@gnus.org>
+ 
+ 	* 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  <larsi@gnus.org>
+ 
+ 	* nnmail.el (nnmail-get-new-mail): Message later.
+ 
+ 	* mm-util.el (mm-find-charset-region): Revert to checking
+ 	multibyte.
+ 
+ 1999-02-11  Matt Pharr  <mmp@graphics.stanford.edu>
+ 
+       * gnus-msg.el (gnus-bug): Encode environment info as a MIME
+       attachment. 
+ 
  Thu Feb 11 04:58:51 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
  
  	* 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  <larsi@gnus.org>
+ 
+ 	* gnus.texi (Mail Source Specifiers): Addition.
+ 
+ 1999-02-11 19:19:02  Carsten Leonhardt  <leo@arioch.oche.de>
+ 
+ 	* gnus.texi (Mail Source Specifiers): Document maildir.
+ 
  1999-02-09 16:21:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
  	* gnus.texi (Charsets): New.
