*** pub/pgnus/lisp/dgnushack.el Wed Jan 5 17:09:36 2000 --- pgnus/lisp/dgnushack.el Mon Apr 24 21:01:25 2000 *************** *** 1,5 **** ;;; dgnushack.el --- a hack to set the load path for byte-compiling ! ;; Copyright (C) 1994,95,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Version: 4.19 --- 1,6 ---- ;;; dgnushack.el --- a hack to set the load path for byte-compiling ! ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Version: 4.19 *************** *** 29,34 **** --- 30,112 ---- (fset 'facep 'ignore) (require 'cl) + + (push "/usr/share/emacs/site-lisp" load-path) + + (unless (featurep 'xemacs) + (define-compiler-macro last (&whole form x &optional n) + (if (and (fboundp 'last) + (subrp (symbol-function 'last))) + form + (if n + `(let* ((x ,x) + (n ,n) + (m 0) + (p x)) + (while (consp p) + (incf m) + (pop p)) + (if (<= n 0) + p + (if (< n m) + (nthcdr (- m n) x) + x))) + `(let ((x ,x)) + (while (consp (cdr x)) + (pop x)) + x)))) + + (define-compiler-macro mapcon (&whole form fn seq &rest rest) + (if (and (fboundp 'mapcon) + (subrp (symbol-function 'mapcon))) + form + (if rest + `(let (res + (args (list ,seq ,@rest)) + p) + (while (not (memq nil args)) + (push (apply ,fn args) res) + (setq p args) + (while p + (setcar p (cdr (pop p))) + )) + (apply (function nconc) (nreverse res))) + `(let (res + (arg ,seq)) + (while arg + (push (funcall ,fn arg) res) + (setq arg (cdr arg))) + (apply (function nconc) (nreverse res)))))) + + (define-compiler-macro member-if (&whole form pred list) + (if (and (fboundp 'member-if) + (subrp (symbol-function 'member-if))) + form + `(let ((fn ,pred) + (seq ,list)) + (while (and seq + (not (funcall fn (car seq)))) + (pop seq)) + seq))) + + (define-compiler-macro union (&whole form list1 list2) + (if (and (fboundp 'union) + (subrp (symbol-function 'union))) + form + `(let ((a ,list1) + (b ,list2)) + (cond ((null a) b) + ((null b) a) + ((equal a b) a) + (t + (or (>= (length a) (length b)) + (setq a (prog1 b (setq b a)))) + (while b + (or (memq (car b) a) + (push (car b) a)) + (pop b)) + a))))) + ) ;; If we are building w3 in a different directory than the source ;; directory, we must read *.el from source directory and write *.elc *** pub/pgnus/lisp/flow-fill.el Mon Apr 24 21:01:52 2000 --- pgnus/lisp/flow-fill.el Mon Apr 24 21:01:25 2000 *************** *** 0 **** --- 1,94 ---- + ;;; flow-fill.el --- interprete RFC2646 "flowed" text + ;; Copyright (C) 2000 Free Software Foundation, Inc. + + ;; Author: Simon Josefsson + ;; Keywords: mail + + ;; This program is free software; you can redistribute it and/or modify + ;; it under the terms of the GNU General Public License as published by + ;; the Free Software Foundation; either version 2 of the License, or + ;; (at your option) any later version. + ;; + ;; This program is distributed in the hope that it will be useful, + ;; but WITHOUT ANY WARRANTY; without even the implied warranty of + ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ;; GNU General Public License for more details. + ;; + ;; You should have received a copy of the GNU General Public License + ;; along with this program; if not, write to the Free Software + ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ;;; Commentary: + + ;; This implement decoding of RFC2646 formatted text, including the + ;; quoted-depth wins rules. + + ;; Theory of operation: search for lines ending with SPC, save quote + ;; length of line, remove SPC and concatenate line with the following + ;; line if quote length of following line matches current line. + + ;; When no further concatenations are possible, we've found a + ;; paragraph and we let `fill-region' fill the long line into several + ;; lines with the quote prefix as `fill-prefix'. + + ;; Todo: encoding + + ;; History: + + ;; 2000-02-17 posted on ding mailing list + ;; 2000-02-19 use `point-at-{b,e}ol' in XEmacs + ;; 2000-03-11 no compile warnings for point-at-bol stuff + ;; 2000-03-26 commited to gnus cvs + + ;;; Code: + + (eval-and-compile + (fset 'fill-flowed-point-at-bol + (if (fboundp 'point-at-bol) + 'point-at-bol + 'line-beginning-position)) + + (fset 'fill-flowed-point-at-eol + (if (fboundp 'point-at-eol) + 'point-at-eol + 'line-end-position))) + + (defun fill-flowed (&optional buffer) + (save-excursion + (set-buffer (or (current-buffer) buffer)) + (goto-char (point-min)) + (while (re-search-forward " $" nil t) + (when (save-excursion + (beginning-of-line) + (looking-at "^\\(>*\\)\\( ?\\)")) + (let ((quote (match-string 1))) + (if (string= quote "") + (setq quote nil)) + (when (and quote (string= (match-string 2) "")) + (save-excursion + ;; insert SP after quote for pleasant reading of quoted lines + (beginning-of-line) + (when (> (skip-chars-forward ">") 0) + (insert " ")))) + (while (and (save-excursion + (backward-char 3) + (looking-at "[^-][^-] ")) + (save-excursion + (unless (eobp) + (forward-char 1) + (if quote + (looking-at (format "^\\(%s\\)\\([^>]\\)" quote)) + (looking-at "^ ?"))))) + (save-excursion + (replace-match (if (string= (match-string 2) " ") + "" "\\2"))) + (backward-delete-char -1) + (end-of-line)) + (let ((fill-prefix (when quote (concat quote " ")))) + (fill-region (fill-flowed-point-at-bol) + (fill-flowed-point-at-eol) + 'left 'nosqueeze))))))) + + (provide 'flow-fill) + + ;;; flow-fill.el ends here *** pub/pgnus/lisp/format-spec.el Thu Feb 11 06:02:17 1999 --- pgnus/lisp/format-spec.el Mon Apr 24 21:01:25 2000 *************** *** 1,5 **** ;;; format-spec.el --- functions for formatting arbitrary formatting strings ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: tools --- 1,5 ---- ;;; format-spec.el --- functions for formatting arbitrary formatting strings ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: tools *** pub/pgnus/lisp/gnus-agent.el Thu Apr 20 01:31:04 2000 --- pgnus/lisp/gnus-agent.el Mon Apr 24 21:01:25 2000 *************** *** 1,5 **** ;;; gnus-agent.el --- unplugged support for Gnus ! ;; Copyright (C) 1997,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,5 ---- ;;; gnus-agent.el --- unplugged support for Gnus ! ;; Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *************** *** 862,873 **** (let ((articles (gnus-list-of-unread-articles group)) (gnus-decode-encoded-word-function 'identity) (file (gnus-agent-article-name ".overview" group))) ! ;; add article with marks to list of article headers we want to fetch (dolist (arts (gnus-info-marks (gnus-get-info group))) (setq articles (union (gnus-uncompress-sequence (cdr arts)) articles))) (setq articles (sort articles '<)) ! ;; remove known articles (when (gnus-agent-load-alist group) (setq articles (gnus-sorted-intersection articles --- 862,873 ---- (let ((articles (gnus-list-of-unread-articles group)) (gnus-decode-encoded-word-function 'identity) (file (gnus-agent-article-name ".overview" group))) ! ;; Add article with marks to list of article headers we want to fetch. (dolist (arts (gnus-info-marks (gnus-get-info group))) (setq articles (union (gnus-uncompress-sequence (cdr arts)) articles))) (setq articles (sort articles '<)) ! ;; Remove known articles. (when (gnus-agent-load-alist group) (setq articles (gnus-sorted-intersection articles *************** *** 1308,1315 **** (let ((info (assq category gnus-category-alist)) (buffer-read-only nil)) (gnus-delete-line) ! (gnus-category-write) ! (setq gnus-category-alist (delq info gnus-category-alist)))) (defun gnus-category-copy (category to) "Copy the current category." --- 1308,1315 ---- (let ((info (assq category gnus-category-alist)) (buffer-read-only nil)) (gnus-delete-line) ! (setq gnus-category-alist (delq info gnus-category-alist)) ! (gnus-category-write))) (defun gnus-category-copy (category to) "Copy the current category." *** pub/pgnus/lisp/gnus-art.el Thu Apr 20 01:31:05 2000 --- pgnus/lisp/gnus-art.el Mon Apr 24 21:01:26 2000 *************** *** 1,5 **** ;;; gnus-art.el --- article mode commands for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,5 ---- ;;; gnus-art.el --- article mode commands for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 169,176 **** (const :tag "Followup-to identical to newsgroups." followup-to) (const :tag "Reply-to identical to from." reply-to) (const :tag "Date less than four days old." date) ! (const :tag "Very long To header." long-to) ! (const :tag "Multiple To headers." many-to)) :group 'gnus-article-hiding) (defcustom gnus-signature-separator '("^-- $" "^-- *$") --- 169,176 ---- (const :tag "Followup-to identical to newsgroups." followup-to) (const :tag "Reply-to identical to from." reply-to) (const :tag "Date less than four days old." date) ! (const :tag "Very long To and/or Cc header." long-to) ! (const :tag "Multiple To and/or Cc headers." many-to)) :group 'gnus-article-hiding) (defcustom gnus-signature-separator '("^-- $" "^-- *$") *************** *** 1168,1178 **** 4)) (gnus-article-hide-header "date")))) ((eq elem 'long-to) ! (let ((to (message-fetch-field "to"))) (when (> (length to) 1024) ! (gnus-article-hide-header "to")))) ((eq elem 'many-to) ! (let ((to-count 0)) (goto-char (point-min)) (while (re-search-forward "^to:" nil t) (setq to-count (1+ to-count))) --- 1168,1182 ---- 4)) (gnus-article-hide-header "date")))) ((eq elem 'long-to) ! (let ((to (message-fetch-field "to")) ! (cc (message-fetch-field "cc"))) (when (> (length to) 1024) ! (gnus-article-hide-header "to")) ! (when (> (length cc) 1024) ! (gnus-article-hide-header "cc")))) ((eq elem 'many-to) ! (let ((to-count 0) ! (cc-count 0)) (goto-char (point-min)) (while (re-search-forward "^to:" nil t) (setq to-count (1+ to-count))) *************** *** 1184,1190 **** (forward-line -1) (narrow-to-region (point) (point-max)) (gnus-article-hide-header "to")) ! (setq to-count (1- to-count))))))))))))) (defun gnus-article-hide-header (header) (save-excursion --- 1188,1206 ---- (forward-line -1) (narrow-to-region (point) (point-max)) (gnus-article-hide-header "to")) ! (setq to-count (1- to-count)))) ! (goto-char (point-min)) ! (while (re-search-forward "^cc:" nil t) ! (setq cc-count (1+ cc-count))) ! (when (> cc-count 1) ! (while (> cc-count 0) ! (goto-char (point-min)) ! (save-restriction ! (re-search-forward "^cc:" nil nil cc-count) ! (forward-line -1) ! (narrow-to-region (point) (point-max)) ! (gnus-article-hide-header "cc")) ! (setq cc-count (1- cc-count))))))))))))) (defun gnus-article-hide-header (header) (save-excursion *************** *** 2550,2556 **** (make-local-variable 'gnus-article-mime-handles) (make-local-variable 'gnus-article-decoded-p) (make-local-variable 'gnus-article-mime-handle-alist) ! (make-local-variable 'gnus-article-washed-types) (gnus-set-default-directory) (buffer-disable-undo) (setq buffer-read-only t) --- 2566,2572 ---- (make-local-variable 'gnus-article-mime-handles) (make-local-variable 'gnus-article-decoded-p) (make-local-variable 'gnus-article-mime-handle-alist) ! (make-local-variable 'gnus-article-wash-types) (gnus-set-default-directory) (buffer-disable-undo) (setq buffer-read-only t) *************** *** 2586,2594 **** (if (get-buffer name) (save-excursion (set-buffer name) ! (if gnus-article-mime-handles ! (mm-destroy-parts gnus-article-mime-handles)) ! (kill-all-local-variables) (buffer-disable-undo) (setq buffer-read-only t) (unless (eq major-mode 'gnus-article-mode) --- 2602,2609 ---- (if (get-buffer name) (save-excursion (set-buffer name) ! (when gnus-article-mime-handles ! (mm-destroy-parts gnus-article-mime-handles)) (buffer-disable-undo) (setq buffer-read-only t) (unless (eq major-mode 'gnus-article-mode) *************** *** 2655,2662 **** (message "Message marked for downloading")) (gnus-summary-mark-article article gnus-canceled-mark) (unless (memq article gnus-newsgroup-sparse) ! (gnus-error 1 ! "No such article (may have expired or been canceled)"))))) (if (or (eq result 'pseudo) (eq result 'nneething)) (progn --- 2670,2676 ---- (message "Message marked for downloading")) (gnus-summary-mark-article article gnus-canceled-mark) (unless (memq article gnus-newsgroup-sparse) ! (gnus-error 1 "No such article (may have expired or been canceled)"))))) (if (or (eq result 'pseudo) (eq result 'nneething)) (progn *************** *** 2840,2853 **** (let ((data (get-text-property (point) 'gnus-data))) (mm-interactively-view-part data))) ! (defun gnus-mime-view-part-as-type () "Choose a MIME media type, and view the part as such." (interactive ! (list (completing-read "View as MIME type: " ! (mapcar 'list (mailcap-mime-types))))) (gnus-article-check-buffer) (let ((handle (get-text-property (point) 'gnus-data))) ! (gnus-mm-display-part handle))) (defun gnus-mime-copy-part (&optional handle) "Put the the MIME part under point into a new buffer." --- 2854,2886 ---- (let ((data (get-text-property (point) 'gnus-data))) (mm-interactively-view-part data))) ! (defun gnus-mime-view-part-as-type-internal () ! (gnus-article-check-buffer) ! (let* ((name (mail-content-type-get ! (mm-handle-type (get-text-property (point) 'gnus-data)) ! 'name)) ! (def-type (and name (mm-default-file-encoding name)))) ! (and def-type (cons def-type 0)))) ! ! (defun gnus-mime-view-part-as-type (mime-type) "Choose a MIME media type, and view the part as such." (interactive ! (list (completing-read ! "View as MIME type: " ! (mapcar (lambda (i) (list i i)) (mailcap-mime-types)) ! nil nil ! (gnus-mime-view-part-as-type-internal)))) (gnus-article-check-buffer) (let ((handle (get-text-property (point) 'gnus-data))) ! (gnus-mm-display-part ! (mm-make-handle (mm-handle-buffer handle) ! (cons mime-type (cdr (mm-handle-type handle))) ! (mm-handle-encoding handle) ! (mm-handle-undisplayer handle) ! (mm-handle-disposition handle) ! (mm-handle-description handle) ! (mm-handle-cache handle) ! (mm-handle-id handle))))) (defun gnus-mime-copy-part (&optional handle) "Put the the MIME part under point into a new buffer." *************** *** 3583,3589 **** ;; We disable the pick minor mode commands. (let (gnus-pick-mode) (setq func (lookup-key (current-local-map) keys)))) ! (if (not func) (ding) (unless (member keys nosave-in-article) (set-buffer gnus-article-current-summary)) --- 3616,3623 ---- ;; We disable the pick minor mode commands. (let (gnus-pick-mode) (setq func (lookup-key (current-local-map) keys)))) ! (if (or (not func) ! (numberp func)) (ding) (unless (member keys nosave-in-article) (set-buffer gnus-article-current-summary)) *************** *** 3741,3747 **** (gnus-cache-request-article article group)) 'article) ;; Get the article and put into the article buffer. ! ((or (stringp article) (numberp article)) (let ((gnus-override-method gnus-override-method) (methods (and (stringp article) gnus-refer-article-method)) --- 3775,3782 ---- (gnus-cache-request-article article group)) 'article) ;; Get the article and put into the article buffer. ! ((or (stringp article) ! (numberp article)) (let ((gnus-override-method gnus-override-method) (methods (and (stringp article) gnus-refer-article-method)) *************** *** 3749,3759 **** (buffer-read-only nil)) (setq methods (if (listp methods) ! (delq 'current methods) (list methods))) ! (if (and (null gnus-override-method) methods) ! (setq gnus-override-method (pop methods))) (while (not result) (erase-buffer) (gnus-kill-all-overlays) (let ((gnus-newsgroup-name group)) --- 3784,3797 ---- (buffer-read-only nil)) (setq methods (if (listp methods) ! methods (list methods))) ! (when (and (null gnus-override-method) ! methods) ! (setq gnus-override-method (pop methods))) (while (not result) + (when (eq gnus-override-method 'current) + (setq gnus-override-method gnus-current-select-method)) (erase-buffer) (gnus-kill-all-overlays) (let ((gnus-newsgroup-name group)) *************** *** 3966,3972 **** ;;; Internal Variables: ! (defcustom gnus-button-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)" "Regular expression that matches URLs." :group 'gnus-article-buttons :type 'regexp) --- 4004,4010 ---- ;;; Internal Variables: ! (defcustom gnus-button-url-regexp "\\b\\(\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)\\)\\|[-a-zA-Z0-9_]+\\.[-a-zA-Z0-9_]+\\(\\.[-a-zA-Z0-9_]+[-a-zA-Z0-9_/]+\\)+" "Regular expression that matches URLs." :group 'gnus-article-buttons :type 'regexp) *************** *** 4541,4547 **** val elem) (gnus-run-hooks 'gnus-part-display-hook) (while (setq elem (pop alist)) ! (setq val (symbol-value (car elem))) (when (and (or (consp val) treated-type) (gnus-treat-predicate val) --- 4579,4588 ---- val elem) (gnus-run-hooks 'gnus-part-display-hook) (while (setq elem (pop alist)) ! (setq val ! (save-excursion ! (set-buffer gnus-summary-buffer) ! (symbol-value (car elem)))) (when (and (or (consp val) treated-type) (gnus-treat-predicate val) *** pub/pgnus/lisp/gnus-async.el Wed Jan 5 17:09:36 2000 --- pgnus/lisp/gnus-async.el Mon Apr 24 21:01:26 2000 *************** *** 1,5 **** ;;; gnus-async.el --- asynchronous support for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,5 ---- ;;; gnus-async.el --- asynchronous support for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-bcklg.el Wed Jan 5 17:09:37 2000 --- pgnus/lisp/gnus-bcklg.el Mon Apr 24 21:01:26 2000 *************** *** 1,5 **** ;;; gnus-bcklg.el --- backlog functions for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,5 ---- ;;; gnus-bcklg.el --- backlog functions for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-cache.el Wed Jan 5 17:09:37 2000 --- pgnus/lisp/gnus-cache.el Mon Apr 24 21:01:26 2000 *************** *** 1,5 **** ;;; gnus-cache.el --- cache interface for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-cache.el --- cache interface for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 365,371 **** (defun gnus-summary-insert-cached-articles () "Insert all the articles cached for this group into the current buffer." (interactive) ! (let ((cached (sort (copy-sequence gnus-newsgroup-cached) '<)) (gnus-verbose (max 6 gnus-verbose))) (unless cached (gnus-message 3 "No cached articles for this group")) --- 366,372 ---- (defun gnus-summary-insert-cached-articles () "Insert all the articles cached for this group into the current buffer." (interactive) ! (let ((cached (sort (copy-sequence gnus-newsgroup-cached) '>)) (gnus-verbose (max 6 gnus-verbose))) (unless cached (gnus-message 3 "No cached articles for this group")) *** pub/pgnus/lisp/gnus-cite.el Wed Jan 5 17:09:37 2000 --- pgnus/lisp/gnus-cite.el Mon Apr 24 21:01:27 2000 *************** *** 1,5 **** ;;; gnus-cite.el --- parse citations in articles for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Per Abhiddenware; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by --- 1,6 ---- ;;; gnus-cite.el --- parse citations in articles for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Per Abhiddenware; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by *** pub/pgnus/lisp/gnus-draft.el Wed Jan 5 17:09:37 2000 --- pgnus/lisp/gnus-draft.el Mon Apr 24 21:01:27 2000 *************** *** 1,5 **** ;;; gnus-draft.el --- draft message support for Gnus ! ;; Copyright (C) 1997,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-draft.el --- draft message support for Gnus ! ;; Copyright (C) 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 129,134 **** --- 130,136 ---- message-inhibit-body-encoding)) (message-send-hook (and group (not (equal group "nndraft:queue")) message-send-hook)) + (message-setup-hook nil) type method) ;; We read the meta-information that says how and where ;; this message is to be sent. *************** *** 193,198 **** --- 195,202 ---- (if (not (gnus-request-restore-buffer article group)) (error "Couldn't restore the article") ;; Insert the separator. + (if (equal group "nndraft:queue") + (mime-to-mml)) (goto-char (point-min)) (search-forward "\n\n") (forward-char -1) *** pub/pgnus/lisp/gnus-dup.el Fri Jan 15 21:52:10 1999 --- pgnus/lisp/gnus-dup.el Mon Apr 24 21:01:27 2000 *************** *** 1,5 **** ;;; gnus-dup.el --- suppression of duplicate articles in Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-dup.el --- suppression of duplicate articles in Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-eform.el Fri Jan 15 21:52:10 1999 --- pgnus/lisp/gnus-eform.el Mon Apr 24 21:01:27 2000 *************** *** 1,5 **** ;;; gnus-eform.el --- a mode for editing forms for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-eform.el --- a mode for editing forms for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-ems.el Wed Jan 5 17:09:38 2000 --- pgnus/lisp/gnus-ems.el Mon Apr 24 21:01:27 2000 *************** *** 1,5 **** ;;; gnus-ems.el --- functions for making Gnus work under different Emacsen ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-ems.el --- functions for making Gnus work under different Emacsen ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-group.el Thu Apr 20 01:31:07 2000 --- pgnus/lisp/gnus-group.el Mon Apr 24 21:01:27 2000 *************** *** 1,5 **** ;;; gnus-group.el --- group mode commands for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-group.el --- group mode commands for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 161,166 **** --- 162,168 ---- %n Select from where (string) %z A string that look like `<%s:%n>' if a foreign select method is used %d The date the group was last entered. + %E Icon as defined by `gnus-group-icon-list'. %u User defined specifier. The next character in the format string should be a letter. Gnus will call the function gnus-user-format-function-X, where X is the letter following %u. The function will be passed the *************** *** 360,365 **** --- 362,399 ---- :group 'gnus-group-visual :type 'character) + (defgroup gnus-group-icons nil + "Add Icons to your group buffer. " + :group 'gnus-group-visual) + + (defcustom gnus-group-icon-list + nil + "*Controls the insertion of icons into group buffer lines. + + Below is a list of `Form'/`File' pairs. When deciding how a + particular group line should be displayed, each form is evaluated. + The icon from the file field after the first true form is used. You + can change how those group lines are displayed by editing the file + field. The File will either be found in the + `gnus-group-glyph-directory' or by designating absolute path to the + file. + + It is also possible to change and add form fields, but currently that + requires an understanding of Lisp expressions. Hopefully this will + change in a future release. For now, you can use the following + variables in the Lisp expression: + + group: The name of the group. + unread: The number of unread articles in the group. + method: The select method used. + mailp: Whether it's a mail group or not. + newsp: Whether it's a news group or not + level: The level of the group. + score: The score of the group. + ticked: The number of ticked articles." + :group 'gnus-group-icons + :type '(repeat (cons (sexp :tag "Form") file))) + ;;; Internal variables (defvar gnus-group-sort-alist-function 'gnus-group-sort-flat *************** *** 404,409 **** --- 438,444 ---- (?s gnus-tmp-news-server ?s) (?n gnus-tmp-news-method ?s) (?P gnus-group-indentation ?s) + (?E gnus-tmp-group-icon ?s) (?l gnus-tmp-grouplens ?s) (?z gnus-tmp-news-method-string ?s) (?m (gnus-group-new-mail gnus-tmp-group) ?c) *************** *** 426,431 **** --- 461,470 ---- (defvar gnus-group-list-mode nil) + + (defvar gnus-group-icon-cache nil) + (defvar gnus-group-running-xemacs (string-match "XEmacs" emacs-version)) + ;;; ;;; Gnus group mode ;;; *************** *** 565,571 **** "d" gnus-group-description-apropos "m" gnus-group-list-matching "M" gnus-group-list-all-matching ! "l" gnus-group-list-level) (gnus-define-keys (gnus-group-score-map "W" gnus-group-mode-map) "f" gnus-score-flush-cache) --- 604,611 ---- "d" gnus-group-description-apropos "m" gnus-group-list-matching "M" gnus-group-list-all-matching ! "l" gnus-group-list-level ! "c" gnus-group-list-cached) (gnus-define-keys (gnus-group-score-map "W" gnus-group-mode-map) "f" gnus-score-flush-cache) *************** *** 641,647 **** ["Group and description apropos..." gnus-group-description-apropos t] ["List groups matching..." gnus-group-list-matching t] ["List all groups matching..." gnus-group-list-all-matching t] ! ["List active file" gnus-group-list-active t]) ("Sort" ["Default sort" gnus-group-sort-groups t] ["Sort by method" gnus-group-sort-groups-by-method t] --- 681,688 ---- ["Group and description apropos..." gnus-group-description-apropos t] ["List groups matching..." gnus-group-list-matching t] ["List all groups matching..." gnus-group-list-all-matching t] ! ["List active file" gnus-group-list-active t] ! ["List groups with cached" gnus-group-list-cached t]) ("Sort" ["Default sort" gnus-group-sort-groups t] ["Sort by method" gnus-group-sort-groups-by-method t] *************** *** 1065,1070 **** --- 1106,1112 ---- ?m ? )) (gnus-tmp-moderated-string (if (eq gnus-tmp-moderated ?m) "(m)" "")) + (gnus-tmp-group-icon "==&&==") (gnus-tmp-method (gnus-server-get-method gnus-tmp-group gnus-tmp-method)) ; (gnus-tmp-news-server (or (cadr gnus-tmp-method) "")) *************** *** 1100,1107 **** gnus-marked ,gnus-tmp-marked-mark gnus-indentation ,gnus-group-indentation gnus-level ,gnus-tmp-level)) (when (inline (gnus-visual-p 'group-highlight 'highlight)) - (forward-line -1) (gnus-run-hooks 'gnus-group-update-hook) (forward-line)) ;; Allow XEmacs to remove front-sticky text properties. --- 1142,1149 ---- gnus-marked ,gnus-tmp-marked-mark gnus-indentation ,gnus-group-indentation gnus-level ,gnus-tmp-level)) + (forward-line -1) (when (inline (gnus-visual-p 'group-highlight 'highlight)) (gnus-run-hooks 'gnus-group-update-hook) (forward-line)) ;; Allow XEmacs to remove front-sticky text properties. *************** *** 2546,2552 **** ;; Group catching up. (defun gnus-group-catchup-current (&optional n all) ! "Mark all articles not marked as unread in current newsgroup as read. If prefix argument N is numeric, the next N newsgroups will be caught up. If ALL is non-nil, marked articles will also be marked as read. Cross references (Xref: header) of articles are ignored. --- 2588,2594 ---- ;; Group catching up. (defun gnus-group-catchup-current (&optional n all) ! "Mark all unread articles in the current newsgroup as read. If prefix argument N is numeric, the next N newsgroups will be caught up. If ALL is non-nil, marked articles will also be marked as read. Cross references (Xref: header) of articles are ignored. *************** *** 2644,2650 **** (expirable (if (gnus-group-total-expirable-p group) (cons nil (gnus-list-of-read-articles group)) (assq 'expire (gnus-info-marks info)))) ! (expiry-wait (gnus-group-find-parameter group 'expiry-wait))) (when expirable (setcdr expirable --- 2686,2695 ---- (expirable (if (gnus-group-total-expirable-p group) (cons nil (gnus-list-of-read-articles group)) (assq 'expire (gnus-info-marks info)))) ! (expiry-wait (gnus-group-find-parameter group 'expiry-wait)) ! (nnmail-expiry-target ! (or (gnus-group-find-parameter group 'expiry-target) ! nnmail-expiry-target))) (when expirable (setcdr expirable *************** *** 3522,3527 **** --- 3567,3620 ---- (if (not time) "" (gnus-time-iso8601 time)))) + + (defun gnus-group-prepare-flat-predicate (level predicate &optional lowest) + "List all newsgroups with unread articles of level LEVEL or lower. + If LOWEST is non-nil, list all newsgroups of level LOWEST or higher. + If PREDICATE, only list groups which PREDICATE returns non-nil." + (set-buffer gnus-group-buffer) + (let ((buffer-read-only nil) + (newsrc (cdr gnus-newsrc-alist)) + (lowest (or lowest 1)) + info clevel unread group params) + (erase-buffer) + ;; List living groups. + (while newsrc + (setq info (car newsrc) + group (gnus-info-group info) + params (gnus-info-params info) + newsrc (cdr newsrc) + unread (car (gnus-gethash group gnus-newsrc-hashtb))) + (and unread ; This group might be unchecked + (funcall predicate info) + (<= (setq clevel (gnus-info-level info)) level) + (>= clevel lowest) + (gnus-group-insert-group-line + group (gnus-info-level info) + (gnus-info-marks info) unread (gnus-info-method info)))) + + (gnus-group-set-mode-line) + (setq gnus-group-list-mode (cons level t)) + (gnus-run-hooks 'gnus-group-prepare-hook) + t)) + + (defun gnus-group-list-cached (level &optional lowest) + "List all groups with cached articles. + If the prefix LEVEL is non-nil, it should be a number that says which + level to cut off listing groups. + If LOWEST, don't list groups with level lower than LOWEST. + + This command may read the active file." + (interactive "P") + (when level + (setq level (prefix-numeric-value level))) + (gnus-group-prepare-flat-predicate (or level gnus-level-killed) + #'(lambda (info) + (let ((marks (gnus-info-marks info))) + (assq 'cache marks))) + lowest) + (goto-char (point-min)) + (gnus-group-position-point)) (provide 'gnus-group) *** pub/pgnus/lisp/gnus-int.el Fri Dec 3 20:27:19 1999 --- pgnus/lisp/gnus-int.el Mon Apr 24 21:01:28 2000 *************** *** 1,5 **** ;;; gnus-int.el --- backend interface functions for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-int.el --- backend interface functions for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-kill.el Wed Jan 5 17:09:38 2000 --- pgnus/lisp/gnus-kill.el Mon Apr 24 21:01:28 2000 *************** *** 1,5 **** ;;; gnus-kill.el --- kill commands for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; gnus-kill.el --- kill commands for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen *** pub/pgnus/lisp/gnus-logic.el Sat Jan 23 15:30:40 1999 --- pgnus/lisp/gnus-logic.el Mon Apr 24 21:01:28 2000 *************** *** 1,5 **** ;;; gnus-logic.el --- advanced scoring code for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-logic.el --- advanced scoring code for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-mh.el Wed Jan 5 17:09:39 2000 --- pgnus/lisp/gnus-mh.el Mon Apr 24 21:01:28 2000 *************** *** 1,5 **** ;;; gnus-mh.el --- mh-e interface for Gnus ! ;; Copyright (C) 1994,95,96,97,98,99 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; gnus-mh.el --- mh-e interface for Gnus ! ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen *** pub/pgnus/lisp/gnus-mlspl.el Wed Jan 5 17:09:39 2000 --- pgnus/lisp/gnus-mlspl.el Mon Apr 24 21:01:28 2000 *************** *** 1,7 **** ;;; gnus-mlspl.el --- a group params-based mail splitting mechanism ! ;; Copyright (C) 1998,1999 Free Software Foundation, Inc. ! ;; Author: Alexandre Oliva ;; Keywords: news, mail ;; This program is free software; you can redistribute it and/or modify --- 1,8 ---- ;;; gnus-mlspl.el --- a group params-based mail splitting mechanism ! ;; Copyright (C) 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ! ;; Author: Alexandre Oliva ;; Keywords: news, mail ;; This program is free software; you can redistribute it and/or modify *************** *** 134,140 **** (memq group groups)) (and (stringp groups) (string-match groups group))) ! (let ((split-spec (cdr (assoc 'split-spec params))) group-clean) ;; Remove backend from group name (setq group-clean (string-match ":" group)) (setq group-clean --- 135,141 ---- (memq group groups)) (and (stringp groups) (string-match groups group))) ! (let ((split-spec (assoc 'split-spec params)) group-clean) ;; Remove backend from group name (setq group-clean (string-match ":" group)) (setq group-clean *************** *** 142,153 **** (substring group (1+ group-clean)) group)) (if split-spec ! (if (eq split-spec 'catch-all) ! ;; Emit catch-all only when requested ! (when catch-all ! (setq catch-all group-clean)) ! ;; Append split-spec to the main split ! (push split-spec split)) ;; Let's deduce split-spec from other params (let ((to-address (cdr (assoc 'to-address params))) (to-list (cdr (assoc 'to-list params))) --- 143,155 ---- (substring group (1+ group-clean)) group)) (if split-spec ! (when (setq split-spec (cdr split-spec)) ! (if (eq split-spec 'catch-all) ! ;; Emit catch-all only when requested ! (when catch-all ! (setq catch-all group-clean)) ! ;; Append split-spec to the main split ! (push split-spec split))) ;; Let's deduce split-spec from other params (let ((to-address (cdr (assoc 'to-address params))) (to-list (cdr (assoc 'to-list params))) *** pub/pgnus/lisp/gnus-move.el Fri Jan 15 21:52:12 1999 --- pgnus/lisp/gnus-move.el Mon Apr 24 21:01:28 2000 *************** *** 1,5 **** ;;; gnus-move.el --- commands for moving Gnus from one server to another ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-move.el --- commands for moving Gnus from one server to another ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-msg.el Wed Jan 5 17:09:39 2000 --- pgnus/lisp/gnus-msg.el Mon Apr 24 21:01:29 2000 *************** *** 1,5 **** ;;; gnus-msg.el --- mail and post interface for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; gnus-msg.el --- mail and post interface for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen *************** *** 1051,1056 **** --- 1052,1058 ---- (group (or group gnus-newsgroup-name "")) (gcc-self-val (and gnus-newsgroup-name + (not (equal gnus-newsgroup-name "")) (gnus-group-find-parameter gnus-newsgroup-name 'gcc-self))) result *************** *** 1203,1238 **** (setq results (delq name (delq address results))) (make-local-variable 'message-setup-hook) (dolist (result results) ! (when (cdr result) ! (add-hook 'message-setup-hook ! (cond ! ((eq 'eval (car result)) ! 'ignore) ! ((eq 'body (car result)) `(lambda () (save-excursion ! (message-goto-body) ! (insert ,(cdr result))))) ! ((eq 'signature (car result)) ! (set (make-local-variable 'message-signature) nil) ! (set (make-local-variable 'message-signature-file) nil) ! (if (not (cdr result)) ! 'ignore ! `(lambda () ! (save-excursion ! (let ((message-signature ,(cdr result))) ! (when message-signature ! (message-insert-signature))))))) ! (t ! (let ((header ! (if (symbolp (car result)) ! (capitalize (symbol-name (car result))) ! (car result)))) ! `(lambda () ! (save-excursion ! (message-remove-header ,header) ! (message-goto-eoh) ! (insert ,header ": " ,(cdr result) "\n"))))))))) (when (or name address) (add-hook 'message-setup-hook `(lambda () --- 1205,1239 ---- (setq results (delq name (delq address results))) (make-local-variable 'message-setup-hook) (dolist (result results) ! (add-hook 'message-setup-hook ! (cond ! ((eq 'eval (car result)) ! 'ignore) ! ((eq 'body (car result)) ! `(lambda () ! (save-excursion ! (message-goto-body) ! (insert ,(cdr result))))) ! ((eq 'signature (car result)) ! (set (make-local-variable 'message-signature) nil) ! (set (make-local-variable 'message-signature-file) nil) ! (if (not (cdr result)) ! 'ignore ! `(lambda () ! (save-excursion ! (let ((message-signature ,(cdr result))) ! (when message-signature ! (message-insert-signature))))))) ! (t ! (let ((header ! (if (symbolp (car result)) ! (capitalize (symbol-name (car result))) ! (car result)))) `(lambda () (save-excursion ! (message-remove-header ,header) ! (message-goto-eoh) ! (insert ,header ": " ,(cdr result) "\n")))))))) (when (or name address) (add-hook 'message-setup-hook `(lambda () *** pub/pgnus/lisp/gnus-score.el Wed Jan 5 17:09:40 2000 --- pgnus/lisp/gnus-score.el Mon Apr 24 21:01:29 2000 *************** *** 1,5 **** ;;; gnus-score.el --- scoring code for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; gnus-score.el --- scoring code for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Lars Magne Ingebrigtsen *************** *** 2820,2829 **** ;; Function. ((gnus-functionp elem) (funcall elem group)) ! ;; Regexp-file cons ((consp elem) (when (string-match (gnus-globalify-regexp (car elem)) group) ! (replace-match (cadr elem) t nil group )))))) (when found (if (file-name-absolute-p found) found --- 2821,2830 ---- ;; Function. ((gnus-functionp elem) (funcall elem group)) ! ;; Regexp-file cons. ((consp elem) (when (string-match (gnus-globalify-regexp (car elem)) group) ! (replace-match (cadr elem) t nil group)))))) (when found (if (file-name-absolute-p found) found *** pub/pgnus/lisp/gnus-spec.el Wed Jan 5 17:09:41 2000 --- pgnus/lisp/gnus-spec.el Mon Apr 24 21:01:29 2000 *************** *** 1,5 **** ;;; gnus-spec.el --- format spec functions for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-spec.el --- format spec functions for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-srvr.el Thu Apr 20 01:31:08 2000 --- pgnus/lisp/gnus-srvr.el Mon Apr 24 21:01:29 2000 *************** *** 1,5 **** ;;; gnus-srvr.el --- virtual server support for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-srvr.el --- virtual server support for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-start.el Thu Apr 20 01:31:09 2000 --- pgnus/lisp/gnus-start.el Mon Apr 24 21:01:29 2000 *************** *** 1,5 **** ;;; gnus-start.el --- startup functions for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-start.el --- startup functions for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/gnus-sum.el Thu Apr 20 01:31:10 2000 --- pgnus/lisp/gnus-sum.el Mon Apr 24 21:01:31 2000 *************** *** 1,5 **** ;;; gnus-sum.el --- summary mode commands for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-sum.el --- summary mode commands for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 172,180 **** This applies to marking commands as well as other commands that \"naturally\" select the next article, like, for instance, `SPC' at the end of an article. ! If nil, only the marking commands will go to the next (un)read article. ! If `never', commands that usually go to the next unread article, will ! go to the next article, whether it is read or not." :group 'gnus-summary-marks :link '(custom-manual "(gnus)Setting Marks") :type '(choice (const :tag "off" nil) --- 173,183 ---- This applies to marking commands as well as other commands that \"naturally\" select the next article, like, for instance, `SPC' at the end of an article. ! ! If nil, the marking commands do NOT go to the next unread article ! (they go to the next article instead). If `never', commands that ! usually go to the next unread article, will go to the next article, ! whether it is read or not." :group 'gnus-summary-marks :link '(custom-manual "(gnus)Setting Marks") :type '(choice (const :tag "off" nil) *************** *** 871,876 **** --- 874,884 ---- :type 'boolean :group 'gnus-summary-marks) + (defcustom gnus-alter-articles-to-read-function nil + "Function to be called to alter the list of articles to be selected." + :type 'function + :group 'gnus-summary) + ;;; Internal variables (defvar gnus-article-mime-handles nil) *************** *** 1322,1327 **** --- 1330,1337 ---- "\M-\C-h" gnus-summary-hide-thread "\M-\C-f" gnus-summary-next-thread "\M-\C-b" gnus-summary-prev-thread + [(meta down)] gnus-summary-next-thread + [(meta up)] gnus-summary-prev-thread "\M-\C-u" gnus-summary-up-thread "\M-\C-d" gnus-summary-down-thread "&" gnus-summary-execute-command *************** *** 3370,3386 **** (memq article gnus-newsgroup-expirable) ;; Only insert the Subject string when it's different ;; from the previous Subject string. ! (if (gnus-subject-equal ! (condition-case () ! (mail-header-subject ! (gnus-data-header ! (cadr ! (gnus-data-find-list ! article ! (gnus-data-list t))))) ! ;; Error on the side of excessive subjects. ! (error "")) ! (mail-header-subject header)) "" (mail-header-subject header)) nil (cdr (assq article gnus-newsgroup-scored)) --- 3380,3398 ---- (memq article gnus-newsgroup-expirable) ;; Only insert the Subject string when it's different ;; from the previous Subject string. ! (if (and ! gnus-show-threads ! (gnus-subject-equal ! (condition-case () ! (mail-header-subject ! (gnus-data-header ! (cadr ! (gnus-data-find-list ! article ! (gnus-data-list t))))) ! ;; Error on the side of excessive subjects. ! (error "")) ! (mail-header-subject header))) "" (mail-header-subject header)) nil (cdr (assq article gnus-newsgroup-scored)) *************** *** 3594,3600 **** (while thread (gnus-remove-thread-1 (car thread)) (setq thread (cdr thread)))) - (gnus-summary-show-all-threads) (gnus-remove-thread-1 thread)))))))) (defun gnus-remove-thread-1 (thread) --- 3606,3611 ---- *************** *** 3606,3611 **** --- 3617,3623 ---- (gnus-remove-thread-1 (pop thread))) (when (setq d (gnus-data-find number)) (goto-char (gnus-data-pos d)) + (gnus-summary-show-thread) (gnus-data-remove number (- (gnus-point-at-bol) *************** *** 4270,4275 **** --- 4282,4293 ---- (gnus-sorted-intersection gnus-newsgroup-unreads (gnus-sorted-complement gnus-newsgroup-unreads articles))) + (when gnus-alter-articles-to-read-function + (setq gnus-newsgroup-unreads + (sort + (funcall gnus-alter-articles-to-read-function + gnus-newsgroup-name gnus-newsgroup-unreads) + '<))) articles))) (defun gnus-killed-articles (killed articles) *************** *** 5099,5105 **** "Center point in window and redisplay frame. Also do horizontal recentering." (interactive "P") ! (when (and gnus-auto-center-summary (not (eq gnus-auto-center-summary 'vertical))) (gnus-horizontal-recenter)) (recenter n)) --- 5117,5124 ---- "Center point in window and redisplay frame. Also do horizontal recentering." (interactive "P") ! (when (and nil ! gnus-auto-center-summary (not (eq gnus-auto-center-summary 'vertical))) (gnus-horizontal-recenter)) (recenter n)) *************** *** 5110,5115 **** --- 5129,5135 ---- displayed, no centering will be performed." ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle). ;; Recenter only when requested. Suggested by popovich@park.cs.columbia.edu. + (interactive) (let* ((top (cond ((< (window-height) 4) 0) ((< (window-height) 7) 1) (t (if (numberp gnus-auto-center-summary) *************** *** 7329,7335 **** articles prefix)) (set (intern (format "gnus-current-%s-group" action)) to-newsgroup)) (setq to-method (or select-method ! (gnus-group-name-to-method to-newsgroup))) ;; Check the method we are to move this article to... (unless (gnus-check-backend-function 'request-accept-article (car to-method)) --- 7349,7356 ---- articles prefix)) (set (intern (format "gnus-current-%s-group" action)) to-newsgroup)) (setq to-method (or select-method ! (gnus-server-to-method ! (gnus-group-method to-newsgroup)))) ;; Check the method we are to move this article to... (unless (gnus-check-backend-function 'request-accept-article (car to-method)) *************** *** 9026,9032 **** (mapcar (lambda (el) (list el)) (nreverse split-name)) nil nil nil ! 'gnus-group-history))))) (when to-newsgroup (if (or (string= to-newsgroup "") (string= to-newsgroup prefix)) --- 9047,9054 ---- (mapcar (lambda (el) (list el)) (nreverse split-name)) nil nil nil ! 'gnus-group-history)))) ! (to-method (gnus-server-to-method (gnus-group-method to-newsgroup)))) (when to-newsgroup (if (or (string= to-newsgroup "") (string= to-newsgroup prefix)) *************** *** 9034,9047 **** (unless to-newsgroup (error "No group name entered")) (or (gnus-active to-newsgroup) ! (gnus-activate-group to-newsgroup) (if (gnus-y-or-n-p (format "No such group: %s. Create it? " to-newsgroup)) ! (or (and (gnus-request-create-group ! to-newsgroup (gnus-group-name-to-method to-newsgroup)) (gnus-activate-group ! to-newsgroup nil nil ! (gnus-group-name-to-method to-newsgroup)) (gnus-subscribe-group to-newsgroup)) (error "Couldn't create group %s" to-newsgroup))) (error "No such group: %s" to-newsgroup))) --- 9056,9067 ---- (unless to-newsgroup (error "No group name entered")) (or (gnus-active to-newsgroup) ! (gnus-activate-group to-newsgroup nil nil to-method) (if (gnus-y-or-n-p (format "No such group: %s. Create it? " to-newsgroup)) ! (or (and (gnus-request-create-group to-newsgroup to-method) (gnus-activate-group ! to-newsgroup nil nil to-method) (gnus-subscribe-group to-newsgroup)) (error "Couldn't create group %s" to-newsgroup))) (error "No such group: %s" to-newsgroup))) *** pub/pgnus/lisp/gnus-topic.el Thu Apr 20 01:31:11 2000 --- pgnus/lisp/gnus-topic.el Mon Apr 24 21:01:32 2000 *************** *** 1,5 **** ;;; gnus-topic.el --- a folding minor mode for Gnus group buffers ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Ilja Weis ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; gnus-topic.el --- a folding minor mode for Gnus group buffers ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Ilja Weis ;; Lars Magne Ingebrigtsen *** pub/pgnus/lisp/gnus-util.el Wed Jan 5 17:09:42 2000 --- pgnus/lisp/gnus-util.el Mon Apr 24 21:01:32 2000 *************** *** 1,5 **** ;;; gnus-util.el --- utility functions for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-util.el --- utility functions for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 805,811 **** (when (file-exists-p file) (with-temp-buffer (let ((tokens '("machine" "default" "login" ! "password" "account" "macdef" "force")) alist elem result pair) (insert-file-contents file) (goto-char (point-min)) --- 806,813 ---- (when (file-exists-p file) (with-temp-buffer (let ((tokens '("machine" "default" "login" ! "password" "account" "macdef" "force" ! "port")) alist elem result pair) (insert-file-contents file) (goto-char (point-min)) *************** *** 853,868 **** (forward-line 1)) (nreverse result))))) ! (defun gnus-netrc-machine (list machine) "Return the netrc values from LIST for MACHINE or for the default entry." ! (let ((rest list)) ! (while (and list ! (not (equal (cdr (assoc "machine" (car list))) machine))) (pop list)) ! (car (or list ! (progn (while (and rest (not (assoc "default" (car rest)))) ! (pop rest)) ! rest))))) (defun gnus-netrc-get (alist type) "Return the value of token TYPE from ALIST." --- 855,881 ---- (forward-line 1)) (nreverse result))))) ! (defun gnus-netrc-machine (list machine &optional port) "Return the netrc values from LIST for MACHINE or for the default entry." ! (let ((rest list) ! result) ! (while list ! (when (equal (cdr (assoc "machine" (car list))) machine) ! (push (car list) result)) (pop list)) ! (unless result ! ;; No machine name matches, so we look for default entries. ! (while rest ! (when (assoc "default" (car rest)) ! (push (car rest) result)) ! (pop rest))) ! (when result ! (setq result (nreverse result)) ! (while (and result ! (not (equal (or port "nntp") ! (gnus-netrc-get (car result) "port")))) ! (pop result)) ! (car result)))) (defun gnus-netrc-get (alist type) "Return the value of token TYPE from ALIST." *** pub/pgnus/lisp/gnus-uu.el Thu Apr 20 01:31:12 2000 --- pgnus/lisp/gnus-uu.el Mon Apr 24 21:01:33 2000 *************** *** 1,5 **** ;;; gnus-uu.el --- extract (uu)encoded files in Gnus ! ;; Copyright (C) 198,995,86,87,93,94,95,96,97,98 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Created: 2 Oct 1993 --- 1,6 ---- ;;; gnus-uu.el --- extract (uu)encoded files in Gnus ! ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Created: 2 Oct 1993 *** pub/pgnus/lisp/gnus-win.el Thu Apr 20 01:31:12 2000 --- pgnus/lisp/gnus-win.el Mon Apr 24 21:01:33 2000 *************** *** 1,5 **** ;;; gnus-win.el --- window configuration functions for Gnus ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; gnus-win.el --- window configuration functions for Gnus ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 446,456 **** (gnus-delete-windows-in-gnusey-frames)) ;; Just remove some windows. (gnus-remove-some-windows) ! (set-buffer nntp-server-buffer)) (select-frame frame))) (let (gnus-window-frame-focus) ! (set-buffer nntp-server-buffer) (gnus-configure-frame split) (when gnus-window-frame-focus (select-frame (window-frame gnus-window-frame-focus)))))))) --- 447,457 ---- (gnus-delete-windows-in-gnusey-frames)) ;; Just remove some windows. (gnus-remove-some-windows) ! (switch-to-buffer nntp-server-buffer)) (select-frame frame))) (let (gnus-window-frame-focus) ! (switch-to-buffer nntp-server-buffer) (gnus-configure-frame split) (when gnus-window-frame-focus (select-frame (window-frame gnus-window-frame-focus)))))))) *** pub/pgnus/lisp/gnus-xmas.el Wed Jan 5 17:09:43 2000 --- pgnus/lisp/gnus-xmas.el Mon Apr 24 21:01:34 2000 *************** *** 793,798 **** --- 793,868 ---- (goto-char (event-point event)) (funcall (event-function response) (event-object response)))) + (defun gnus-group-add-icon () + "Add an icon to the current line according to `gnus-group-icon-list'." + (let* ((p (point)) + (end (progn (end-of-line) (point))) + ;; now find out where the line starts and leave point there. + (beg (progn (beginning-of-line) (point)))) + (save-restriction + (narrow-to-region beg end) + (goto-char beg) + (when (search-forward "==&&==" nil t) + (let* ((group (gnus-group-group-name)) + (entry (gnus-group-entry group)) + (unread (if (numberp (car entry)) (car entry) 0)) + (active (gnus-active group)) + (total (if active (1+ (- (cdr active) (car active))) 0)) + (info (nth 2 entry)) + (method (gnus-server-get-method group (gnus-info-method info))) + (marked (gnus-info-marks info)) + (mailp (memq 'mail (assoc (symbol-name + (car (or method gnus-select-method))) + gnus-valid-select-methods))) + (level (or (gnus-info-level info) gnus-level-killed)) + (score (or (gnus-info-score info) 0)) + (ticked (gnus-range-length (cdr (assq 'tick marked)))) + (group-age (gnus-group-timestamp-delta group)) + (inhibit-read-only t) + (list gnus-group-icon-list) + (mystart (match-beginning 0)) + (myend (match-end 0))) + (goto-char (point-min)) + (while (and list + (not (eval (caar list)))) + (setq list (cdr list))) + (if list + (let* ((file (cdar list)) + (glyph (gnus-group-icon-create-glyph + (buffer-substring mystart myend) + file))) + (if glyph + (progn + (mapcar 'delete-annotation (annotations-at myend)) + (let ((ext (make-extent mystart myend)) + (ant (make-annotation glyph myend 'text))) + ;; set text extent params + (set-extent-property ext 'end-open t) + (set-extent-property ext 'start-open t) + (set-extent-property ext 'invisible t))) + (delete-region mystart myend))) + (delete-region mystart myend)))) + (widen)) + (goto-char p))) + + (defun gnus-group-icon-create-glyph (substring pixmap) + "Create a glyph for insertion into a group line." + (and + gnus-group-running-xemacs + (or + (cdr-safe (assoc pixmap gnus-group-icon-cache)) + (let* ((glyph (make-glyph + (list + (cons 'x + (expand-file-name pixmap gnus-xmas-glyph-directory)) + (cons 'mswindows + (expand-file-name pixmap gnus-xmas-glyph-directory)) + (cons 'tty substring))))) + (setq gnus-group-icon-cache + (cons (cons pixmap glyph) gnus-group-icon-cache)) + (set-glyph-face glyph 'default) + glyph)))) + (provide 'gnus-xmas) ;;; gnus-xmas.el ends here *** pub/pgnus/lisp/gnus.el Thu Apr 20 01:31:14 2000 --- pgnus/lisp/gnus.el Mon Apr 24 21:01:35 2000 *************** *** 1,6 **** ;;; gnus.el --- a newsreader for GNU Emacs ! ;; Copyright (C) 1987, 88, 89, 90, 93, 94, 95, 96, 97, 98, 99 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen --- 1,7 ---- ;;; gnus.el --- a newsreader for GNU Emacs ! ;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, ! ;; 1997, 1998, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen *************** *** 257,263 **** :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "5.8.4" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) --- 258,264 ---- :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "5.8.5" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) *************** *** 1666,1672 **** gnus-cache-possibly-remove-articles gnus-cache-request-article gnus-cache-retrieve-headers gnus-cache-possibly-alter-active gnus-cache-enter-remove-article gnus-cached-article-p ! gnus-cache-open gnus-cache-close gnus-cache-update-article) ("gnus-cache" :interactive t gnus-jog-cache gnus-cache-enter-article gnus-cache-remove-article gnus-summary-insert-cached-articles) ("gnus-score" :interactive t --- 1667,1674 ---- gnus-cache-possibly-remove-articles gnus-cache-request-article gnus-cache-retrieve-headers gnus-cache-possibly-alter-active gnus-cache-enter-remove-article gnus-cached-article-p ! gnus-cache-open gnus-cache-close gnus-cache-update-article ! gnus-cache-articles-in-group) ("gnus-cache" :interactive t gnus-jog-cache gnus-cache-enter-article gnus-cache-remove-article gnus-summary-insert-cached-articles) ("gnus-score" :interactive t *** pub/pgnus/lisp/ietf-drums.el Thu Apr 20 01:31:14 2000 --- pgnus/lisp/ietf-drums.el Mon Apr 24 21:01:35 2000 *************** *** 1,5 **** ;;; ietf-drums.el --- Functions for parsing RFC822bis headers ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,6 ---- ;;; ietf-drums.el --- Functions for parsing RFC822bis headers ! ;; Copyright (C) 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *** pub/pgnus/lisp/imap.el Thu Apr 20 01:31:15 2000 --- pgnus/lisp/imap.el Mon Apr 24 21:01:36 2000 *************** *** 1,5 **** ;;; imap.el --- imap library ! ;; Copyright (C) 1998,1999 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail --- 1,6 ---- ;;; imap.el --- imap library ! ;; Copyright (C) 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail *** pub/pgnus/lisp/lpath.el Thu Apr 20 01:31:16 2000 --- pgnus/lisp/lpath.el Mon Apr 24 21:01:36 2000 *************** *** 42,48 **** rmail-update-summary url-retrieve temp-directory babel-fetch babel-wash find-coding-systems-for-charsets sc-cite-regexp ! vcard-pretty-print)) (maybe-bind '(global-face-data mark-active transient-mark-mode mouse-selection-click-count mouse-selection-click-count-buffer buffer-display-table --- 42,49 ---- rmail-update-summary url-retrieve temp-directory babel-fetch babel-wash find-coding-systems-for-charsets sc-cite-regexp ! vcard-pretty-print image-type-available-p ! make-overlay overlay-put)) (maybe-bind '(global-face-data mark-active transient-mark-mode mouse-selection-click-count mouse-selection-click-count-buffer buffer-display-table *************** *** 94,100 **** rmail-summary-exists rmail-select-summary rmail-update-summary url-generic-parse-url valid-image-instantiator-format-p babel-fetch babel-wash babel-as-string sc-cite-regexp ! vcard-pretty-print))) (setq load-path (cons "." load-path)) (require 'custom) --- 95,101 ---- rmail-summary-exists rmail-select-summary rmail-update-summary url-generic-parse-url valid-image-instantiator-format-p babel-fetch babel-wash babel-as-string sc-cite-regexp ! vcard-pretty-print image-type-available-p))) (setq load-path (cons "." load-path)) (require 'custom) *** pub/pgnus/lisp/mail-parse.el Thu Apr 20 01:31:16 2000 --- pgnus/lisp/mail-parse.el Mon Apr 24 21:01:37 2000 *************** *** 1,5 **** ;;; mail-parse.el --- Interface functions for parsing mail ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,6 ---- ;;; mail-parse.el --- Interface functions for parsing mail ! ;; Copyright (C) 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *** pub/pgnus/lisp/mail-prsvr.el Wed Jan 5 17:09:44 2000 --- pgnus/lisp/mail-prsvr.el Mon Apr 24 21:01:37 2000 *************** *** 1,5 **** ;;; mail-prsvr.el --- Interface variables for parsing mail ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,5 ---- ;;; mail-prsvr.el --- Interface variables for parsing mail ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *** pub/pgnus/lisp/mail-source.el Thu Apr 20 01:31:17 2000 --- pgnus/lisp/mail-source.el Mon Apr 24 21:01:37 2000 *************** *** 1,5 **** ;;; mail-source.el --- functions for fetching mail ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail --- 1,5 ---- ;;; mail-source.el --- functions for fetching mail ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail *************** *** 62,68 **** :group 'mail-source :type 'integer) ! (defcustom mail-source-delete-incoming t "*If non-nil, delete incoming files after handling." :group 'mail-source :type 'boolean) --- 62,68 ---- :group 'mail-source :type 'integer) ! (defcustom mail-source-delete-incoming nil "*If non-nil, delete incoming files after handling." :group 'mail-source :type 'boolean) *** pub/pgnus/lisp/mailcap.el Thu Apr 20 01:31:18 2000 --- pgnus/lisp/mailcap.el Mon Apr 24 21:01:38 2000 *************** *** 1,5 **** ;;; mailcap.el --- Functions for displaying MIME parts ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: William M. Perry ;; Lars Magne Ingebrigtsen --- 1,5 ---- ;;; mailcap.el --- Functions for displaying MIME parts ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: William M. Perry ;; Lars Magne Ingebrigtsen *************** *** 672,677 **** --- 672,678 ---- (setq viewers (cdr viewers))) (setq passed (sort (nreverse passed) 'mailcap-viewer-lessp)) (setq viewer (car passed)))) + (setq passed (nreverse passed)) (when (and (stringp (cdr (assq 'viewer viewer))) passed) (setq viewer (car passed))) *************** *** 713,718 **** --- 714,720 ---- (".cdf" . "application/x-netcdr") (".cpio" . "application/x-cpio") (".csh" . "application/x-csh") + (".css" . "text/css") (".dvi" . "application/x-dvi") (".diff" . "text/x-patch") (".el" . "application/emacs-lisp") *** pub/pgnus/lisp/message.el Thu Apr 20 01:31:19 2000 --- pgnus/lisp/message.el Mon Apr 24 21:01:39 2000 *************** *** 1,5 **** ;;; message.el --- composing mail and news messages ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news --- 1,6 ---- ;;; message.el --- composing mail and news messages ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news *************** *** 298,303 **** --- 299,309 ---- :group 'message-forwarding :type 'boolean) + (defcustom message-forward-before-signature t + "*If non-nil, put forwarded message before signature, else after." + :group 'message-forwarding + :type 'boolean) + (defcustom message-wash-forwarded-subjects nil "*If non-nil, try to remove as much old cruft as possible from the subject of messages before generating the new subject of a forward." :group 'message-forwarding *************** *** 308,314 **** :group 'message-interface :type 'regexp) ! (defcustom message-forward-ignored-headers nil "*All headers that match this regexp will be deleted when forwarding a message." :group 'message-forwarding :type '(choice (const :tag "None" nil) --- 314,320 ---- :group 'message-interface :type 'regexp) ! (defcustom message-forward-ignored-headers "Content-Transfer-Encoding" "*All headers that match this regexp will be deleted when forwarding a message." :group 'message-forwarding :type '(choice (const :tag "None" nil) *************** *** 319,325 **** :group 'message-insertion :type 'regexp) ! (defcustom message-cancel-message "I am canceling my own article." "Message to be inserted in the cancel message." :group 'message-interface :type 'string) --- 325,331 ---- :group 'message-insertion :type 'regexp) ! (defcustom message-cancel-message "I am canceling my own article.\n" "Message to be inserted in the cancel message." :group 'message-interface :type 'string) *************** *** 1057,1062 **** --- 1063,1069 ---- (defun message-fetch-field (header &optional not-all) "The same as `mail-fetch-field', only remove all newlines." (let* ((inhibit-point-motion-hooks t) + (case-fold-search t) (value (mail-fetch-field header nil (not not-all)))) (when value (while (string-match "\n[\t ]+" value) *************** *** 1462,1467 **** --- 1469,1476 ---- (setq adaptive-fill-first-line-regexp (concat "[ \t]*[-a-z0-9A-Z]*\\(>[ \t]*\\)+[ \t]*\\|" adaptive-fill-first-line-regexp)) + (make-local-variable 'auto-fill-inhibit-regexp) + (setq auto-fill-inhibit-regexp "^[A-Z][^: \n\t]+:") (mm-enable-multibyte) (make-local-variable 'indent-tabs-mode) ;Turn off tabs for indentation. (setq indent-tabs-mode nil) *************** *** 1577,1582 **** --- 1586,1609 ---- (insert (or (message-fetch-reply-field "reply-to") (message-fetch-reply-field "from") ""))) + (defun message-widen-reply () + "Widen the reply to include maximum recipients." + (interactive) + (let ((follow-to + (and message-reply-buffer + (buffer-name message-reply-buffer) + (save-excursion + (set-buffer message-reply-buffer) + (message-get-reply-headers t))))) + (save-excursion + (save-restriction + (message-narrow-to-headers) + (dolist (elem follow-to) + (message-remove-header (symbol-name (car elem))) + (goto-char (point-min)) + (insert (symbol-name (car elem)) ": " + (cdr elem) "\n")))))) + (defun message-insert-newsgroups () "Insert the Newsgroups header from the article being replied to." (interactive) *************** *** 1704,1717 **** (/= (aref message-caesar-translation-table ?a) (+ ?a n))) (setq message-caesar-translation-table (message-make-caesar-translation-table n))) ! ;; Then we translate the region. Do it this way to retain ! ;; text properties. ! (while (< b e) ! (when (< (char-after b) 255) ! (subst-char-in-region ! b (1+ b) (char-after b) ! (aref message-caesar-translation-table (char-after b)))) ! (incf b)))) (defun message-make-caesar-translation-table (n) "Create a rot table with offset N." --- 1731,1737 ---- (/= (aref message-caesar-translation-table ?a) (+ ?a n))) (setq message-caesar-translation-table (message-make-caesar-translation-table n))) ! (translate-region b e message-caesar-translation-table))) (defun message-make-caesar-translation-table (n) "Create a rot table with offset N." *************** *** 1748,1758 **** (save-restriction (when (message-goto-body) (narrow-to-region (point) (point-max))) ! (let ((body (buffer-substring (point-min) (point-max)))) ! (unless (equal 0 (call-process-region ! (point-min) (point-max) program t t)) ! (insert body) ! (message "%s failed" program)))))) (defun message-rename-buffer (&optional enter-string) "Rename the *message* buffer to \"*message* RECIPIENT\". --- 1768,1775 ---- (save-restriction (when (message-goto-body) (narrow-to-region (point) (point-max))) ! (shell-command-on-region ! (point-min) (point-max) program nil t)))) (defun message-rename-buffer (&optional enter-string) "Rename the *message* buffer to \"*message* RECIPIENT\". *************** *** 1885,1890 **** --- 1902,1909 ---- message-indent-citation-function (list message-indent-citation-function))))) (mml-quote-region start end) + ;; Allow undoing. + (undo-boundary) (goto-char end) (when (re-search-backward message-signature-separator start t) ;; Also peel off any blank lines before the signature. *************** *** 3082,3088 **** ;; The element is a symbol. We insert the value ;; of this symbol, if any. (symbol-value header)) ! (t ;; We couldn't generate a value for this header, ;; so we just ask the user. (read-from-minibuffer --- 3101,3107 ---- ;; The element is a symbol. We insert the value ;; of this symbol, if any. (symbol-value header)) ! ((not (message-check-element header)) ;; We couldn't generate a value for this header, ;; so we just ask the user. (read-from-minibuffer *************** *** 3238,3244 **** ;; If folding is disallowed, make sure the total length (including ;; the spaces between) will be less than MAXSIZE characters. ! (when message-cater-to-broken-inn (let ((maxsize 988) (totalsize (+ (apply #'+ (mapcar #'length refs)) (1- count))) --- 3257,3266 ---- ;; If folding is disallowed, make sure the total length (including ;; the spaces between) will be less than MAXSIZE characters. ! ;; ! ;; Only disallow folding for News messages. At this point the headers ! ;; have not been generated, thus we use message-this-is-news directly. ! (when (and message-this-is-news message-cater-to-broken-inn) (let ((maxsize 988) (totalsize (+ (apply #'+ (mapcar #'length refs)) (1- count))) *************** *** 3256,3262 **** ;; Finally, collect the references back into a string and insert ;; it into the buffer. (let ((refstring (mapconcat #'identity refs " "))) ! (if message-cater-to-broken-inn (insert (capitalize (symbol-name header)) ": " refstring "\n") (message-fill-header header refstring))))) --- 3278,3284 ---- ;; Finally, collect the references back into a string and insert ;; it into the buffer. (let ((refstring (mapconcat #'identity refs " "))) ! (if (and message-this-is-news message-cater-to-broken-inn) (insert (capitalize (symbol-name header)) ": " refstring "\n") (message-fill-header header refstring))))) *************** *** 3476,3481 **** --- 3498,3565 ---- (message-setup `((Newsgroups . ,(or newsgroups "")) (Subject . ,(or subject "")))))) + (defun message-get-reply-headers (wide &optional to-address) + (let (follow-to mct never-mct from to cc reply-to ccalist) + ;; Find all relevant headers we need. + (setq from (message-fetch-field "from") + to (message-fetch-field "to") + cc (message-fetch-field "cc") + mct (message-fetch-field "mail-copies-to") + reply-to (message-fetch-field "reply-to")) + + ;; Handle special values of Mail-Copies-To. + (when mct + (cond ((or (equal (downcase mct) "never") + (equal (downcase mct) "nobody")) + (setq never-mct t) + (setq mct nil)) + ((or (equal (downcase mct) "always") + (equal (downcase mct) "poster")) + (setq mct (or reply-to from))))) + + (if (or (not wide) + to-address) + (progn + (setq follow-to (list (cons 'To (or to-address reply-to from)))) + (when (and wide mct) + (push (cons 'Cc mct) follow-to))) + (let (ccalist) + (save-excursion + (message-set-work-buffer) + (unless never-mct + (insert (or reply-to from ""))) + (insert (if to (concat (if (bolp) "" ", ") to "") "")) + (insert (if mct (concat (if (bolp) "" ", ") mct) "")) + (insert (if cc (concat (if (bolp) "" ", ") cc) "")) + (goto-char (point-min)) + (while (re-search-forward "[ \t]+" nil t) + (replace-match " " t t)) + ;; Remove addresses that match `rmail-dont-reply-to-names'. + (let ((rmail-dont-reply-to-names message-dont-reply-to-names)) + (insert (prog1 (rmail-dont-reply-to (buffer-string)) + (erase-buffer)))) + (goto-char (point-min)) + ;; Perhaps "Mail-Copies-To: never" removed the only address? + (when (eobp) + (insert (or reply-to from ""))) + (setq ccalist + (mapcar + (lambda (addr) + (cons (mail-strip-quoted-names addr) addr)) + (message-tokenize-header (buffer-string)))) + (let ((s ccalist)) + (while s + (setq ccalist (delq (assoc (car (pop s)) s) ccalist))))) + (setq follow-to (list (cons 'To (cdr (pop ccalist))))) + (when ccalist + (let ((ccs (cons 'Cc (mapconcat + (lambda (addr) (cdr addr)) ccalist ", ")))) + (when (string-match "^ +" (cdr ccs)) + (setcdr ccs (substring (cdr ccs) (match-end 0)))) + (push ccs follow-to))))) + follow-to)) + + ;;;###autoload (defun message-reply (&optional to-address wide) "Start editing a reply to the article in the current buffer." *************** *** 3485,3491 **** references message-id follow-to (inhibit-point-motion-hooks t) (message-this-is-mail t) ! mct never-mct gnus-warning) (save-restriction (message-narrow-to-head) ;; Allow customizations to have their say. --- 3569,3575 ---- references message-id follow-to (inhibit-point-motion-hooks t) (message-this-is-mail t) ! gnus-warning) (save-restriction (message-narrow-to-head) ;; Allow customizations to have their say. *************** *** 3498,3579 **** (save-excursion (setq follow-to (funcall message-wide-reply-to-function))))) ! ;; Find all relevant headers we need. ! (setq from (message-fetch-field "from") ! date (message-fetch-field "date") ! subject (or (message-fetch-field "subject") "none") ! to (message-fetch-field "to") ! cc (message-fetch-field "cc") ! mct (message-fetch-field "mail-copies-to") ! reply-to (message-fetch-field "reply-to") references (message-fetch-field "references") ! message-id (message-fetch-field "message-id" t)) ! ;; Remove any (buggy) Re:'s that are present and make a ! ;; proper one. ! (when (string-match message-subject-re-regexp subject) ! (setq subject (substring subject (match-end 0)))) ! (setq subject (concat "Re: " subject)) ! ! (when (and (setq gnus-warning (message-fetch-field "gnus-warning")) ! (string-match "<[^>]+>" gnus-warning)) ! (setq message-id (match-string 0 gnus-warning))) ! ! ;; Handle special values of Mail-Copies-To. ! (when mct ! (cond ((or (equal (downcase mct) "never") ! (equal (downcase mct) "nobody")) ! (setq never-mct t) ! (setq mct nil)) ! ((or (equal (downcase mct) "always") ! (equal (downcase mct) "poster")) ! (setq mct (or reply-to from))))) ! ! (unless follow-to ! (if (or (not wide) ! to-address) ! (progn ! (setq follow-to (list (cons 'To (or to-address reply-to from)))) ! (when (and wide mct) ! (push (cons 'Cc mct) follow-to))) ! (let (ccalist) ! (save-excursion ! (message-set-work-buffer) ! (unless never-mct ! (insert (or reply-to from ""))) ! (insert (if to (concat (if (bolp) "" ", ") to "") "")) ! (insert (if mct (concat (if (bolp) "" ", ") mct) "")) ! (insert (if cc (concat (if (bolp) "" ", ") cc) "")) ! (goto-char (point-min)) ! (while (re-search-forward "[ \t]+" nil t) ! (replace-match " " t t)) ! ;; Remove addresses that match `rmail-dont-reply-to-names'. ! (let ((rmail-dont-reply-to-names message-dont-reply-to-names)) ! (insert (prog1 (rmail-dont-reply-to (buffer-string)) ! (erase-buffer)))) ! (goto-char (point-min)) ! ;; Perhaps Mail-Copies-To: never removed the only address? ! (when (eobp) ! (insert (or reply-to from ""))) ! (setq ccalist ! (mapcar ! (lambda (addr) ! (cons (mail-strip-quoted-names addr) addr)) ! (message-tokenize-header (buffer-string)))) ! (let ((s ccalist)) ! (while s ! (setq ccalist (delq (assoc (car (pop s)) s) ccalist))))) ! (setq follow-to (list (cons 'To (cdr (pop ccalist))))) ! (when ccalist ! (let ((ccs (cons 'Cc (mapconcat ! (lambda (addr) (cdr addr)) ccalist ", ")))) ! (when (string-match "^ +" (cdr ccs)) ! (setcdr ccs (substring (cdr ccs) (match-end 0)))) ! (push ccs follow-to)))))) ! (widen)) ! ! (message-pop-to-buffer (message-buffer-name ! (if wide "wide reply" "reply") from ! (if wide to-address nil))) (setq message-reply-headers (vector 0 subject from date message-id references 0 0 "")) --- 3582,3609 ---- (save-excursion (setq follow-to (funcall message-wide-reply-to-function))))) ! (setq message-id (message-fetch-field "message-id" t) references (message-fetch-field "references") ! date (message-fetch-field "date") ! from (message-fetch-field "from") ! subject (or (message-fetch-field "subject") "none")) ! ;; Remove any (buggy) Re:'s that are present and make a ! ;; proper one. ! (when (string-match message-subject-re-regexp subject) ! (setq subject (substring subject (match-end 0)))) ! (setq subject (concat "Re: " subject)) ! ! (when (and (setq gnus-warning (message-fetch-field "gnus-warning")) ! (string-match "<[^>]+>" gnus-warning)) ! (setq message-id (match-string 0 gnus-warning))) ! ! (unless follow-to ! (setq follow-to (message-get-reply-headers wide to-address)))) ! ! (message-pop-to-buffer ! (message-buffer-name ! (if wide "wide reply" "reply") from ! (if wide to-address nil))) (setq message-reply-headers (vector 0 subject from date message-id references 0 0 "")) *************** *** 3707,3715 **** ;;;###autoload ! (defun message-cancel-news () ! "Cancel an article you posted." ! (interactive) (unless (message-news-p) (error "This is not a news article; canceling is impossible")) (when (yes-or-no-p "Do you really want to cancel this article? ") --- 3737,3746 ---- ;;;###autoload ! (defun message-cancel-news (&optional arg) ! "Cancel an article you posted. ! If ARG, allow editing of the cancellation message." ! (interactive "P") (unless (message-news-p) (error "This is not a news article; canceling is impossible")) (when (yes-or-no-p "Do you really want to cancel this article? ") *************** *** 3734,3740 **** (message-make-from)))))) (error "This article is not yours")) ;; Make control message. ! (setq buf (set-buffer (get-buffer-create " *message cancel*"))) (erase-buffer) (insert "Newsgroups: " newsgroups "\n" "From: " (message-make-from) "\n" --- 3765,3773 ---- (message-make-from)))))) (error "This article is not yours")) ;; Make control message. ! (if arg ! (message-news) ! (setq buf (set-buffer (get-buffer-create " *message cancel*")))) (erase-buffer) (insert "Newsgroups: " newsgroups "\n" "From: " (message-make-from) "\n" *************** *** 3746,3757 **** mail-header-separator "\n" message-cancel-message) (run-hooks 'message-cancel-hook) ! (message "Canceling your article...") ! (if (let ((message-syntax-checks ! 'dont-check-for-anything-just-trust-me)) ! (funcall message-send-news-function)) ! (message "Canceling your article...done")) ! (kill-buffer buf))))) ;;;###autoload (defun message-supersede () --- 3779,3791 ---- mail-header-separator "\n" message-cancel-message) (run-hooks 'message-cancel-hook) ! (unless arg ! (message "Canceling your article...") ! (if (let ((message-syntax-checks ! 'dont-check-for-anything-just-trust-me)) ! (funcall message-send-news-function)) ! (message "Canceling your article...done")) ! (kill-buffer buf)))))) ;;;###autoload (defun message-supersede () *************** *** 3895,3910 **** (message-mail nil subject)) ;; Put point where we want it before inserting the forwarded ;; message. ! (message-goto-body) (if message-forward-as-mime (insert "\n\n<#part type=message/rfc822 disposition=inline>\n") ! (insert "\n\n")) (let ((b (point)) e) (mml-insert-buffer cur) (setq e (point)) ! (and message-forward-as-mime ! (insert "<#/part>\n")) (when (and (not current-prefix-arg) message-forward-ignored-headers) (save-restriction --- 3929,3947 ---- (message-mail nil subject)) ;; Put point where we want it before inserting the forwarded ;; message. ! (if message-forward-before-signature ! (message-goto-body) ! (goto-char (point-max))) (if message-forward-as-mime (insert "\n\n<#part type=message/rfc822 disposition=inline>\n") ! (insert "\n-------------------- Start of forwarded message --------------------\n")) (let ((b (point)) e) (mml-insert-buffer cur) (setq e (point)) ! (if message-forward-as-mime ! (insert "<#/part>\n") ! (insert "\n-------------------- End of forwarded message --------------------\n")) (when (and (not current-prefix-arg) message-forward-ignored-headers) (save-restriction *** pub/pgnus/lisp/mm-bodies.el Thu Apr 20 01:31:20 2000 --- pgnus/lisp/mm-bodies.el Mon Apr 24 21:01:39 2000 *************** *** 1,5 **** ;;; mm-bodies.el --- Functions for decoding MIME things ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko --- 1,5 ---- ;;; mm-bodies.el --- Functions for decoding MIME things ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko *************** *** 38,46 **** ;; BS, vertical TAB, form feed, and ^_ (defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f") ! (defvar mm-body-charset-encoding-alist nil "Alist of MIME charsets to encodings. ! Valid encodings are `7bit', `8bit', `quoted-printable' and `base64'.") (defun mm-encode-body () "Encode a body. --- 38,55 ---- ;; BS, vertical TAB, form feed, and ^_ (defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f") ! (defcustom mm-body-charset-encoding-alist ! '((iso-2022-jp . 7bit) ! (iso-2022-jp-2 . 7bit)) "Alist of MIME charsets to encodings. ! Valid encodings are `7bit', `8bit', `quoted-printable' and `base64'." ! :type '(repeat (cons (symbol :tag "charset") ! (choice :tag "encoding" ! (const 7bit) ! (const 8bit) ! (const quoted-printable) ! (const base64)))) ! :group 'mime) (defun mm-encode-body () "Encode a body. *************** *** 155,162 **** ;; Some mailers insert whitespace ;; junk at the end which ;; base64-decode-region dislikes. (save-excursion ! (goto-char (point-max)) (skip-chars-backward "\n\t ") (delete-region (point) (point-max)) (point)))) --- 164,176 ---- ;; Some mailers insert whitespace ;; junk at the end which ;; base64-decode-region dislikes. + ;; Also remove possible junk which could + ;; have been added by mailing list software. (save-excursion ! (goto-char (point-min)) ! (if (re-search-forward "^[\t ]*$" nil t) ! (delete-region (point) (point-max)) ! (goto-char (point-max))) (skip-chars-backward "\n\t ") (delete-region (point) (point-max)) (point)))) *** pub/pgnus/lisp/mm-decode.el Thu Apr 20 01:31:21 2000 --- pgnus/lisp/mm-decode.el Mon Apr 24 21:01:40 2000 *************** *** 1,5 **** ;;; mm-decode.el --- Functions for decoding MIME things ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko --- 1,5 ---- ;;; mm-decode.el --- Functions for decoding MIME things ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko *************** *** 28,33 **** --- 28,35 ---- (require 'mailcap) (require 'mm-bodies) + (defvar mm-xemacs-p (string-match "XEmacs" (emacs-version))) + (defgroup mime-display () "Display of MIME in mail and news articles." :link '(custom-manual "(emacs-mime)Customization") *************** *** 732,738 **** "Return the handle(s) referred to by ID." (cdr (assoc id mm-content-id-alist))) ! (defun mm-get-image (handle) "Return an image instance based on HANDLE." (let ((type (mm-handle-media-subtype handle)) spec) --- 734,770 ---- "Return the handle(s) referred to by ID." (cdr (assoc id mm-content-id-alist))) ! (defun mm-get-image-emacs (handle) ! "Return an image instance based on HANDLE." ! (let ((type (mm-handle-media-subtype handle)) ! spec) ! ;; Allow some common translations. ! (setq type ! (cond ! ((equal type "x-pixmap") ! "xpm") ! ((equal type "x-xbitmap") ! "xbm") ! (t type))) ! (or (mm-handle-cache handle) ! (mm-with-unibyte-buffer ! (mm-insert-part handle) ! (prog1 ! (setq spec ! (ignore-errors ! (cond ! ((equal type "xbm") ! ;; xbm images require special handling, since ! ;; the only way to create glyphs from these ! ;; (without a ton of work) is to write them ! ;; out to a file, and then create a file ! ;; specifier. ! (error "Don't know what to do for XBMs right now.")) ! (t ! (list 'image :type (intern type) :data (buffer-string)))))) ! (mm-handle-set-cache handle spec)))))) ! ! (defun mm-get-image-xemacs (handle) "Return an image instance based on HANDLE." (let ((type (mm-handle-media-subtype handle)) spec) *************** *** 771,787 **** (vector (intern type) :data (buffer-string))))))) (mm-handle-set-cache handle spec)))))) (defun mm-image-fit-p (handle) "Say whether the image in HANDLE will fit the current window." (let ((image (mm-get-image handle))) ! (or mm-inline-large-images ! (and (< (glyph-width image) (window-pixel-width)) ! (< (glyph-height image) (window-pixel-height)))))) (defun mm-valid-image-format-p (format) "Say whether FORMAT can be displayed natively by Emacs." ! (and (fboundp 'valid-image-instantiator-format-p) ! (valid-image-instantiator-format-p format))) (defun mm-valid-and-fit-image-p (format handle) "Say whether FORMAT can be displayed natively and HANDLE fits the window." --- 803,839 ---- (vector (intern type) :data (buffer-string))))))) (mm-handle-set-cache handle spec)))))) + (defun mm-get-image (handle) + (if mm-xemacs-p + (mm-get-image-xemacs handle) + (mm-get-image-emacs handle))) + (defun mm-image-fit-p (handle) "Say whether the image in HANDLE will fit the current window." (let ((image (mm-get-image handle))) ! (if (fboundp 'glyph-width) ! ;; XEmacs' glyphs can actually tell us about their width, so ! ;; lets be nice and smart about them. ! (or mm-inline-large-images ! (and (< (glyph-width image) (window-pixel-width)) ! (< (glyph-height image) (window-pixel-height)))) ! ;; Let's just inline everything under Emacs 21, since the image ! ;; specification there doesn't actually get the width/height ! ;; until you render the image. ! t))) (defun mm-valid-image-format-p (format) "Say whether FORMAT can be displayed natively by Emacs." ! (cond ! ;; Handle XEmacs ! ((fboundp 'valid-image-instantiator-format-p) ! (valid-image-instantiator-format-p format)) ! ;; Handle Emacs 21 ! ((fboundp 'image-type-available-p) ! (image-type-available-p format)) ! ;; Nobody else can do images yet. ! (t ! nil))) (defun mm-valid-and-fit-image-p (format handle) "Say whether FORMAT can be displayed natively and HANDLE fits the window." *** pub/pgnus/lisp/mm-encode.el Wed Jan 5 17:09:46 2000 --- pgnus/lisp/mm-encode.el Mon Apr 24 21:01:40 2000 *************** *** 1,5 **** ;;; mm-encode.el --- Functions for encoding MIME things ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko --- 1,5 ---- ;;; mm-encode.el --- Functions for encoding MIME things ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko *** pub/pgnus/lisp/mm-util.el Thu Apr 20 01:31:22 2000 --- pgnus/lisp/mm-util.el Mon Apr 24 21:01:40 2000 *************** *** 1,5 **** ;;; mm-util.el --- Utility functions for MIME things ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko --- 1,5 ---- ;;; mm-util.el --- Utility functions for MIME things ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko *************** *** 64,70 **** chinese-cns11643-1 chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 chinese-cns11643-6 ! chinese-cns11643-7)) "Alist of MIME-charset/MULE-charsets.") (eval-and-compile --- 64,71 ---- chinese-cns11643-1 chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5 chinese-cns11643-6 ! chinese-cns11643-7) ! (utf-8 unicode-a unicode-b unicode-c unicode-d unicode-e)) "Alist of MIME-charset/MULE-charsets.") (eval-and-compile *** pub/pgnus/lisp/mm-uu.el Wed Jan 5 17:09:47 2000 --- pgnus/lisp/mm-uu.el Mon Apr 24 21:01:40 2000 *************** *** 1,5 **** ;;; mm-uu.el -- Return uu stuffs as mm handles ! ;; Copyright (c) 1998,99 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: postscript uudecode binhex shar forward news --- 1,5 ---- ;;; mm-uu.el -- Return uu stuffs as mm handles ! ;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: postscript uudecode binhex shar forward news *************** *** 165,174 **** (setq end-char-1 (match-beginning 0)) (forward-line) (setq end-char (point)) ! (when (or (not (eq type 'binhex)) ! (setq file-name ! (ignore-errors ! (binhex-decode-region start-char end-char t)))) (if (> start-char text-start) (push (mm-make-handle (mm-uu-copy-to-buffer text-start start-char) --- 165,180 ---- (setq end-char-1 (match-beginning 0)) (forward-line) (setq end-char (point)) ! (when (cond ! ((eq type 'binhex) ! (setq file-name ! (ignore-errors ! (binhex-decode-region start-char end-char t)))) ! ((eq type 'forward) ! (save-excursion ! (goto-char start-char-1) ! (looking-at "[\r\n]*[a-zA-Z][a-zA-Z0-9-]*:"))) ! (t t)) (if (> start-char text-start) (push (mm-make-handle (mm-uu-copy-to-buffer text-start start-char) *** pub/pgnus/lisp/mm-view.el Thu Apr 20 01:31:22 2000 --- pgnus/lisp/mm-view.el Mon Apr 24 21:01:41 2000 *************** *** 1,5 **** ;;; mm-view.el --- Functions for viewing MIME objects ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,5 ---- ;;; mm-view.el --- Functions for viewing MIME objects ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *************** *** 33,46 **** (autoload 'gnus-article-prepare-display "gnus-art") (autoload 'vcard-parse-string "vcard") (autoload 'vcard-format-string "vcard") ! (autoload 'fill-flowed "fill-flowed") (autoload 'diff-mode "diff-mode")) ;;; ;;; Functions for displaying various formats inline ;;; ! (defun mm-inline-image (handle) (let ((b (point)) (annot (make-annotation (mm-get-image handle) nil 'text)) buffer-read-only) --- 33,64 ---- (autoload 'gnus-article-prepare-display "gnus-art") (autoload 'vcard-parse-string "vcard") (autoload 'vcard-format-string "vcard") ! (autoload 'fill-flowed "flow-fill") (autoload 'diff-mode "diff-mode")) ;;; ;;; Functions for displaying various formats inline ;;; + (defun mm-inline-image-emacs (handle) + (let ((b (point)) + (overlay nil) + (string (copy-sequence "[MM-INLINED-IMAGE]")) + buffer-read-only) + (insert "\n") + (buffer-name) + (setq overlay (make-overlay (point) (point) (current-buffer))) + (put-text-property 0 (length string) 'display (mm-get-image handle) string) + (overlay-put overlay 'before-string string) ! (mm-handle-set-undisplayer ! handle ! `(lambda () ! (let (buffer-read-only) ! (delete-overlay ,overlay) ! (delete-region ,(set-marker (make-marker) b) ! ,(set-marker (make-marker) (point)))))))) ! ! (defun mm-inline-image-xemacs (handle) (let ((b (point)) (annot (make-annotation (mm-get-image handle) nil 'text)) buffer-read-only) *************** *** 55,60 **** --- 73,83 ---- (set-extent-property annot 'mm t) (set-extent-property annot 'duplicable t))) + (defun mm-inline-image (handle) + (if mm-xemacs-p + (mm-inline-image-xemacs handle) + (mm-inline-image-emacs handle))) + (defvar mm-w3-setup nil) (defun mm-setup-w3 () (unless mm-w3-setup *************** *** 210,215 **** --- 233,240 ---- (narrow-to-region b b) (mm-insert-part handle) (let (gnus-article-mime-handles + ;; disable prepare hook + gnus-article-prepare-hook (gnus-newsgroup-charset (or charset gnus-newsgroup-charset))) (run-hooks 'gnus-article-decode-hook) *** pub/pgnus/lisp/mml.el Wed Jan 5 17:09:47 2000 --- pgnus/lisp/mml.el Mon Apr 24 21:01:41 2000 *************** *** 1,5 **** ;;; mml.el --- A package for parsing and validating MML documents ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,5 ---- ;;; mml.el --- A package for parsing and validating MML documents ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *************** *** 31,44 **** (eval-and-compile (autoload 'message-make-message-id "message")) ! (defvar mml-generate-multipart-alist ! nil "*Alist of multipart generation functions. - Each entry has the form (NAME . FUNCTION), where ! NAME: is a string containing the name of the part (without the leading \"/multipart/\"), ! FUNCTION: is a Lisp function which is called to generate the part. The Lisp function has to supply the appropriate MIME headers and the contents of this part.") --- 31,42 ---- (eval-and-compile (autoload 'message-make-message-id "message")) ! (defvar mml-generate-multipart-alist nil "*Alist of multipart generation functions. Each entry has the form (NAME . FUNCTION), where ! NAME is a string containing the name of the part (without the leading \"/multipart/\"), ! FUNCTION is a Lisp function which is called to generate the part. The Lisp function has to supply the appropriate MIME headers and the contents of this part.") *************** *** 260,268 **** "<#!+/?\\(part\\|multipart\\|external\\)" nil t) (delete-region (+ (match-beginning 0) 2) (+ (match-beginning 0) 3)))))) (setq charset (mm-encode-body)) ! (setq encoding (mm-body-encoding charset ! (cdr (assq 'encoding cont)))) (setq coded (buffer-string))) (mm-with-unibyte-buffer (cond --- 258,276 ---- "<#!+/?\\(part\\|multipart\\|external\\)" nil t) (delete-region (+ (match-beginning 0) 2) (+ (match-beginning 0) 3)))))) + (when (string= (car (split-string type "/")) "message") + ;; message/rfc822 parts have to have their heads encoded. + (save-restriction + (message-narrow-to-head) + (let ((rfc2047-header-encoding-alist nil)) + (mail-encode-encoded-word-buffer)))) (setq charset (mm-encode-body)) ! (setq encoding (mm-body-encoding ! charset ! (if (string= (car (split-string type "/")) ! "message") ! '8bit ! (cdr (assq 'encoding cont))))) (setq coded (buffer-string))) (mm-with-unibyte-buffer (cond *** pub/pgnus/lisp/nnagent.el Wed Jan 5 17:09:48 2000 --- pgnus/lisp/nnagent.el Mon Apr 24 21:01:41 2000 *************** *** 1,5 **** ;;; nnagent.el --- offline backend for Gnus ! ;; Copyright (C) 1997,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail --- 1,5 ---- ;;; nnagent.el --- offline backend for Gnus ! ;; Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail *** pub/pgnus/lisp/nndoc.el Wed Jan 5 17:09:48 2000 --- pgnus/lisp/nndoc.el Mon Apr 24 21:01:41 2000 *************** *** 1,5 **** ;;; nndoc.el --- single file access for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA --- 1,6 ---- ;;; nndoc.el --- single file access for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA *** pub/pgnus/lisp/nndraft.el Wed Jan 5 17:09:48 2000 --- pgnus/lisp/nndraft.el Mon Apr 24 21:01:42 2000 *************** *** 1,5 **** ;;; nndraft.el --- draft article access for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; nndraft.el --- draft article access for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/nnfolder.el Thu Apr 20 01:31:23 2000 --- pgnus/lisp/nnfolder.el Mon Apr 24 21:01:42 2000 *************** *** 1,5 **** ;;; nnfolder.el --- mail folder access for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Scott Byer ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; nnfolder.el --- mail folder access for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Scott Byer ;; Lars Magne Ingebrigtsen *** pub/pgnus/lisp/nnheader.el Thu Apr 20 01:31:23 2000 --- pgnus/lisp/nnheader.el Mon Apr 24 21:01:43 2000 *************** *** 1,7 **** ;;; nnheader.el --- header access macros for Gnus and its backends ! ;; Copyright (C) 1987, 88, 89, 90, 93, 94, 95, 96, 97, 98, 99 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen --- 1,8 ---- ;;; nnheader.el --- header access macros for Gnus and its backends ! ;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, ! ;; 1997, 1998, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen *************** *** 50,56 **** (autoload 'nnmail-message-id "nnmail") (autoload 'mail-position-on-field "sendmail") (autoload 'message-remove-header "message") - (autoload 'cancel-function-timers "timers") (autoload 'gnus-point-at-eol "gnus-util") (autoload 'gnus-delete-line "gnus-util") (autoload 'gnus-buffer-live-p "gnus-util")) --- 51,56 ---- *** pub/pgnus/lisp/nnimap.el Thu Apr 20 01:31:24 2000 --- pgnus/lisp/nnimap.el Mon Apr 24 21:01:43 2000 *************** *** 1,5 **** ;;; nnimap.el --- imap backend for Gnus ! ;; Copyright (C) 1998,1999 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Jim Radford --- 1,5 ---- ;;; nnimap.el --- imap backend for Gnus ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Jim Radford *** pub/pgnus/lisp/nnmail.el Thu Apr 20 01:31:25 2000 --- pgnus/lisp/nnmail.el Mon Apr 24 21:01:43 2000 *************** *** 1,5 **** ;;; nnmail.el --- mail support functions for the Gnus mail backends ! ;; Copyright (C) 1995,96,97,98,99, 00 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail --- 1,6 ---- ;;; nnmail.el --- mail support functions for the Gnus mail backends ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail *************** *** 166,171 **** --- 167,179 ---- :type '(choice (const :tag "nnmail-expiry-wait" nil) (function :format "%v" nnmail-))) + (defcustom nnmail-expiry-target 'delete + "*Variable that says where expired messages should end up." + :group 'nnmail-expire + :type '(choice (const delete) + (function :format "%v" nnmail-) + string)) + (defcustom nnmail-cache-accepted-message-ids nil "If non-nil, put Message-IDs of Gcc'd articles into the duplicate cache." :group 'nnmail *************** *** 1333,1346 **** (setq nnmail-cache-buffer nil) (kill-buffer (current-buffer))))) (defun nnmail-cache-insert (id) (when nnmail-treat-duplicates ! (unless (gnus-buffer-live-p nnmail-cache-buffer) ! (nnmail-cache-open)) (save-excursion (set-buffer nnmail-cache-buffer) (goto-char (point-max)) ! (insert id "\n")))) (defun nnmail-cache-id-exists-p (id) (when nnmail-treat-duplicates --- 1341,1424 ---- (setq nnmail-cache-buffer nil) (kill-buffer (current-buffer))))) + ;; Compiler directives. + (defvar group) + (defvar group-art-list) + (defvar group-art) (defun nnmail-cache-insert (id) (when nnmail-treat-duplicates ! ;; Store some information about the group this message is written ! ;; to. This function might have been called from various places. ! ;; Sometimes, a function up in the calling sequence has an ! ;; argument GROUP which is bound to a string, the group name. At ! ;; other times, there is a function up in the calling sequence ! ;; which has an argument GROUP-ART which is a list of pairs, and ! ;; the car of a pair is a group name. Should we check that the ! ;; length of the list is equal to 1? -- kai ! (let ((g nil)) ! (cond ((and (boundp 'group) group) ! (setq g group)) ! ((and (boundp 'group-art-list) group-art-list ! (listp group-art-list)) ! (setq g (caar group-art-list))) ! ((and (boundp 'group-art) group-art (listp group-art)) ! (setq g (caar group-art))) ! (t (setq g ""))) ! (unless (gnus-buffer-live-p nnmail-cache-buffer) ! (nnmail-cache-open)) ! (save-excursion ! (set-buffer nnmail-cache-buffer) ! (goto-char (point-max)) ! (if (and g (not (string= "" g)) ! (gnus-methods-equal-p gnus-command-method ! (nnmail-cache-primary-mail-backend))) ! (insert id "\t" g "\n") ! (insert id "\n")))))) ! ! (defun nnmail-cache-primary-mail-backend () ! (let ((be-list (cons gnus-select-method gnus-secondary-select-methods)) ! (be nil) ! (res nil)) ! (while (and (null res) be-list) ! (setq be (car be-list)) ! (setq be-list (cdr be-list)) ! (when (and (gnus-method-option-p be 'respool) ! (eval (intern (format "%s-get-new-mail" (car be))))) ! (setq res be))) ! res)) ! ! ;; Fetch the group name corresponding to the message id stored in the ! ;; cache. ! (defun nnmail-cache-fetch-group (id) ! (when (and nnmail-treat-duplicates nnmail-cache-buffer) (save-excursion (set-buffer nnmail-cache-buffer) (goto-char (point-max)) ! (when (search-backward id nil t) ! (beginning-of-line) ! (skip-chars-forward "^\n\r\t") ! (unless (eolp) ! (forward-char 1) ! (buffer-substring (point) ! (progn (end-of-line) (point)))))))) ! ! ;; Function for nnmail-split-fancy: look up all references in the ! ;; cache and if a match is found, return that group. ! (defun nnmail-split-fancy-with-parent () ! (let* ((refstr (or (message-fetch-field "references") ! (message-fetch-field "in-reply-to"))) ! (references nil) ! (res nil)) ! (when refstr ! (setq references (nreverse (gnus-split-references refstr))) ! (unless (gnus-buffer-live-p nnmail-cache-buffer) ! (nnmail-cache-open)) ! (mapcar (lambda (x) ! (setq res (or (nnmail-cache-fetch-group x) res)) ! (when (string= "drafts" res) ! (setq res nil))) ! references) ! res))) (defun nnmail-cache-id-exists-p (id) (when nnmail-treat-duplicates *************** *** 1520,1525 **** --- 1598,1609 ---- (setq days (days-to-time days)) ;; Compare the time with the current time. (ignore-errors (time-less-p days (time-since time)))))))) + + (defun nnmail-expiry-target-group (target group) + (when (nnheader-functionp target) + (setq target (funcall target group))) + (unless (eq target 'delete) + (gnus-request-accept-article target))) (defun nnmail-check-syntax () "Check (and modify) the syntax of the message in the current buffer." *** pub/pgnus/lisp/nnml.el Thu Apr 20 01:31:26 2000 --- pgnus/lisp/nnml.el Mon Apr 24 21:01:44 2000 *************** *** 1,5 **** ;;; nnml.el --- mail spool access for Gnus ! ;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA --- 1,6 ---- ;;; nnml.el --- mail spool access for Gnus ! ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA *************** *** 285,290 **** --- 286,298 ---- (nnmail-expired-article-p group mod-time force nnml-inhibit-expiry))) (progn + ;; Allow a special target group. + (unless (eq nnmail-expiry-target 'delete) + (with-temp-buffer + (nnml-request-article article group server + (current-buffer)) + (nnmail-expiry-target-group + nnmail-expiry-target group))) (nnheader-message 5 "Deleting article %s in %s" article group) (condition-case () *** pub/pgnus/lisp/nnslashdot.el Thu Apr 20 01:31:27 2000 --- pgnus/lisp/nnslashdot.el Mon Apr 24 21:01:44 2000 *************** *** 1,5 **** ;;; nnslashdot.el --- interfacing with Slashdot ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,5 ---- ;;; nnslashdot.el --- interfacing with Slashdot ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/nnspool.el Wed Jan 5 17:09:51 2000 --- pgnus/lisp/nnspool.el Mon Apr 24 21:01:45 2000 *************** *** 1,5 **** ;;; nnspool.el --- spool access for GNU Emacs ! ;; Copyright (C) 198,998,89,90,93,94,95,96,97,98 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen --- 1,5 ---- ;;; nnspool.el --- spool access for GNU Emacs ! ;; Copyright (C) 1988,89,90,93,94,95,96,97,98 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen *** pub/pgnus/lisp/nntp.el Thu Apr 20 01:31:28 2000 --- pgnus/lisp/nntp.el Mon Apr 24 21:01:45 2000 *************** *** 1,6 **** ;;; nntp.el --- nntp access for Gnus ! ;;; Copyright (C) 1987, 88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99 ! ;;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,7 ---- ;;; nntp.el --- nntp access for Gnus ! ;; Copyright (C) 1987, 1988, 1989, 1990, 1992, 1993, 1994, 1995, 1996, ! ;; 1997, 1998, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 335,351 **** (save-excursion (set-buffer (process-buffer process)) (erase-buffer))) ! (when command ! (nntp-send-string process command)) ! (cond ! ((eq callback 'ignore) ! t) ! ((and callback wait-for) ! (nntp-async-wait process wait-for buffer decode callback) ! t) ! (wait-for ! (nntp-wait-for process wait-for buffer decode)) ! (t t))))) (defsubst nntp-send-command (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." --- 336,358 ---- (save-excursion (set-buffer (process-buffer process)) (erase-buffer))) ! (condition-case err ! (progn ! (when command ! (nntp-send-string process command)) ! (cond ! ((eq callback 'ignore) ! t) ! ((and callback wait-for) ! (nntp-async-wait process wait-for buffer decode callback) ! t) ! (wait-for ! (nntp-wait-for process wait-for buffer decode)) ! (t t))) ! (error ! (nnheader-report 'nntp "Couldn't open connection to %s: %s" ! address err)) ! (quit nil))))) (defsubst nntp-send-command (wait-for &rest strings) "Send STRINGS to server and wait until WAIT-FOR returns." *************** *** 776,782 **** If SEND-IF-FORCE, only send authinfo to the server if the .authinfo file has the FORCE token." (let* ((list (gnus-parse-netrc nntp-authinfo-file)) ! (alist (gnus-netrc-machine list nntp-address)) (force (gnus-netrc-get alist "force")) (user (or (gnus-netrc-get alist "login") nntp-authinfo-user)) (passwd (gnus-netrc-get alist "password"))) --- 783,789 ---- If SEND-IF-FORCE, only send authinfo to the server if the .authinfo file has the FORCE token." (let* ((list (gnus-parse-netrc nntp-authinfo-file)) ! (alist (gnus-netrc-machine list nntp-address "nntp")) (force (gnus-netrc-get alist "force")) (user (or (gnus-netrc-get alist "login") nntp-authinfo-user)) (passwd (gnus-netrc-get alist "password"))) *** pub/pgnus/lisp/nnultimate.el Thu Apr 20 01:31:29 2000 --- pgnus/lisp/nnultimate.el Mon Apr 24 21:01:45 2000 *************** *** 1,5 **** ;;; nnultimate.el --- interfacing with the Ultimate Bulletin Board system ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,5 ---- ;;; nnultimate.el --- interfacing with the Ultimate Bulletin Board system ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *** pub/pgnus/lisp/nnvirtual.el Wed Jan 5 17:09:51 2000 --- pgnus/lisp/nnvirtual.el Mon Apr 24 21:01:46 2000 *************** *** 1,5 **** ;;; nnvirtual.el --- virtual newsgroups access for Gnus ! ;; Copyright (C) 1994,95,96,97,98,99 Free Software Foundation, Inc. ;; Author: David Moore ;; Lars Magne Ingebrigtsen --- 1,6 ---- ;;; nnvirtual.el --- virtual newsgroups access for Gnus ! ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: David Moore ;; Lars Magne Ingebrigtsen *************** *** 197,204 **** (save-excursion (when buffer (set-buffer buffer)) ! (let ((method (gnus-find-method-for-group ! nnvirtual-last-accessed-component-group))) (funcall (gnus-get-function method 'request-article) article nil (nth 1 method) buffer))))) ;; This is a fetch by number. --- 198,206 ---- (save-excursion (when buffer (set-buffer buffer)) ! (let* ((gnus-override-method nil) ! (method (gnus-find-method-for-group ! nnvirtual-last-accessed-component-group))) (funcall (gnus-get-function method 'request-article) article nil (nth 1 method) buffer))))) ;; This is a fetch by number. *************** *** 283,294 **** (deffoo nnvirtual-request-update-mark (group article mark) (let* ((nart (nnvirtual-map-article article)) ! (cgroup (car nart)) ! ;; The component group might be a virtual group. ! (nmark (gnus-request-update-mark cgroup (cdr nart) mark))) (when (and nart (memq mark gnus-auto-expirable-marks) ! (= mark nmark) (gnus-group-auto-expirable-p cgroup)) (setq mark gnus-expirable-mark))) mark) --- 285,295 ---- (deffoo nnvirtual-request-update-mark (group article mark) (let* ((nart (nnvirtual-map-article article)) ! (cgroup (car nart))) (when (and nart (memq mark gnus-auto-expirable-marks) ! ;; The component group might be a virtual group. ! (= mark (gnus-request-update-mark cgroup (cdr nart) mark)) (gnus-group-auto-expirable-p cgroup)) (setq mark gnus-expirable-mark))) mark) *** pub/pgnus/lisp/nnwarchive.el Thu Apr 20 01:31:30 2000 --- pgnus/lisp/nnwarchive.el Mon Apr 24 21:01:46 2000 *************** *** 1,5 **** ;;; nnwarchive.el --- interfacing with web archives ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news egroups mail-archive --- 1,5 ---- ;;; nnwarchive.el --- interfacing with web archives ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news egroups mail-archive *************** *** 489,495 **** (delete-region (point) (point-max))) (goto-char (point-min)) (while (re-search-forward "]+>\\([^<]+\\)" nil t) ! (replace-match "<\\1>")) (nnweb-decode-entities) (buffer-string)) --- 489,495 ---- (delete-region (point) (point-max))) (goto-char (point-min)) (while (re-search-forward "]+>\\([^<]+\\)" nil t) ! (replace-match "\\1")) (nnweb-decode-entities) (buffer-string)) *** pub/pgnus/lisp/nnweb.el Thu Apr 20 01:31:30 2000 --- pgnus/lisp/nnweb.el Mon Apr 24 21:01:46 2000 *************** *** 1,5 **** ;;; nnweb.el --- retrieving articles via web search engines ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news --- 1,6 ---- ;;; nnweb.el --- retrieving articles via web search engines ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news *************** *** 121,127 **** (deffoo nnweb-request-scan (&optional group server) (nnweb-possibly-change-server group server) - (setq nnweb-hashtb (gnus-make-hashtable 4095)) (funcall (nnweb-definition 'map)) (unless nnweb-ephemeral-p (nnweb-write-active) --- 122,127 ---- *************** *** 139,146 **** (setq nnweb-search (nth 3 info)) (unless dont-check (nnweb-read-overview group))))) - (unless dont-check - (nnweb-request-scan group)) (cond ((not nnweb-articles) (nnheader-report 'nnweb "No matching articles")) --- 139,144 ---- *************** *** 293,298 **** --- 291,297 ---- (when group (when (and (not nnweb-ephemeral-p) (not (equal group nnweb-group))) + (setq nnweb-hashtb (gnus-make-hashtable 4095)) (nnweb-request-group group nil t)))) (defun nnweb-init (server) *************** *** 393,398 **** --- 392,399 ---- (setq date "Jan 1 00:00:00 0000")) (incf i) (setq url (concat url "&fmt=text")) + (when (string-match "&context=[^&]+" url) + (setq url (replace-match "" t t url))) (unless (nnweb-get-hashtb url) (push (list *** pub/pgnus/lisp/parse-time.el Thu Apr 20 01:31:31 2000 --- pgnus/lisp/parse-time.el Mon Apr 24 21:01:46 2000 *************** *** 1,6 **** ;;; parse-time.el --- Parsing time strings ! ;; Copyright (C) 1996 by Free Software Foundation, Inc. ;; Author: Erik Naggum ;; Keywords: util --- 1,6 ---- ;;; parse-time.el --- Parsing time strings ! ;; Copyright (C) 1996,2000 by Free Software Foundation, Inc. ;; Author: Erik Naggum ;; Keywords: util *** pub/pgnus/lisp/pop3.el Thu Apr 20 01:31:31 2000 --- pgnus/lisp/pop3.el Mon Apr 24 21:01:47 2000 *************** *** 1,6 **** ;;; pop3.el --- Post Office Protocol (RFC 1460) interface ! ;; Copyright (C) 1996, 97, 98, 1999 Free Software Foundation, Inc. ;; Author: Richard L. Pieri ;; Maintainer: FSF --- 1,7 ---- ;;; pop3.el --- Post Office Protocol (RFC 1460) interface ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Richard L. Pieri ;; Maintainer: FSF *** pub/pgnus/lisp/qp.el Thu Apr 20 01:31:32 2000 --- pgnus/lisp/qp.el Mon Apr 24 21:01:47 2000 *************** *** 1,5 **** ;;; qp.el --- Quoted-Printable functions ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. --- 1,5 ---- ;;; qp.el --- Quoted-Printable functions ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. *** pub/pgnus/lisp/rfc1843.el Wed Jan 5 17:09:52 2000 --- pgnus/lisp/rfc1843.el Mon Apr 24 21:01:47 2000 *************** *** 1,5 **** ;;; rfc1843.el --- HZ (rfc1843) decoding ! ;; Copyright (c) 1998,99 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news HZ HZ+ --- 1,5 ---- ;;; rfc1843.el --- HZ (rfc1843) decoding ! ;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news HZ HZ+ *** pub/pgnus/lisp/rfc2047.el Thu Apr 20 01:31:33 2000 --- pgnus/lisp/rfc2047.el Mon Apr 24 21:01:47 2000 *************** *** 1,5 **** ;;; rfc2047.el --- Functions for encoding and decoding rfc2047 messages ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko --- 1,5 ---- ;;; rfc2047.el --- Functions for encoding and decoding rfc2047 messages ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko *************** *** 46,52 **** 1) nil, in which case no encoding is done; 2) `mime', in which case the header will be encoded according to RFC2047; ! 3) a charset, in which case it will be encoded as that charse; 4) `default', in which case the field will be encoded as the rest of the article.") --- 46,52 ---- 1) nil, in which case no encoding is done; 2) `mime', in which case the header will be encoded according to RFC2047; ! 3) a charset, in which case it will be encoded as that charset; 4) `default', in which case the field will be encoded as the rest of the article.") *************** *** 266,272 **** ((and (not break) (looking-at "=\\?")) (setq break (point))) ! ((and (looking-at "\\?=") (> (- (point) (save-excursion (beginning-of-line) (point))) 76)) (goto-char break) (setq break nil) --- 266,273 ---- ((and (not break) (looking-at "=\\?")) (setq break (point))) ! ((and break ! (looking-at "\\?=") (> (- (point) (save-excursion (beginning-of-line) (point))) 76)) (goto-char break) (setq break nil) *** pub/pgnus/lisp/smiley.el Wed Jan 5 17:09:53 2000 --- pgnus/lisp/smiley.el Mon Apr 24 21:01:47 2000 *************** *** 1,5 **** ;;; smiley.el --- displaying smiley faces ! ;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc. ;; Author: Wes Hardaker ;; Keywords: fun --- 1,6 ---- ;;; smiley.el --- displaying smiley faces ! ;; Copyright (C) 1996, 1997, 1998, 1999, 2000 ! ;; Free Software Foundation, Inc. ;; Author: Wes Hardaker ;; Keywords: fun *** pub/pgnus/lisp/time-date.el Thu Apr 20 01:31:33 2000 --- pgnus/lisp/time-date.el Mon Apr 24 21:01:47 2000 *************** *** 1,5 **** ;;; time-date.el --- Date and time handling functions ! ;; Copyright (C) 1998,99 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu Umeda --- 1,5 ---- ;;; time-date.el --- Date and time handling functions ! ;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu Umeda *** pub/pgnus/lisp/utf7.el Thu Apr 20 01:31:34 2000 --- pgnus/lisp/utf7.el Mon Apr 24 21:01:47 2000 *************** *** 1,5 **** ;;; utf7.el --- UTF-7 encoding/decoding for Emacs ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Jon K Hellan ;; Keywords: mail --- 1,5 ---- ;;; utf7.el --- UTF-7 encoding/decoding for Emacs ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Jon K Hellan ;; Keywords: mail *** pub/pgnus/lisp/webmail.el Thu Apr 20 01:31:34 2000 --- pgnus/lisp/webmail.el Mon Apr 24 21:01:48 2000 *************** *** 1,5 **** ;;; webmail.el --- interfacing with web mail ! ;; Copyright (C) 1999 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: hotmail netaddress my-deja netscape --- 1,5 ---- ;;; webmail.el --- interfacing with web mail ! ;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: hotmail netaddress my-deja netscape *************** *** 74,79 **** --- 74,81 ---- (login-url "http://%s/cgi-bin/dologin?login=%s&passwd=%s&enter=Sign+in&sec=no&curmbox=ACTIVE&_lang=&js=yes&id=2&tw=-10000&beta=" webmail-aux user password) + (login-snarf . webmail-hotmail-login) + (list-url "%s" webmail-aux) (list-snarf . webmail-hotmail-list) (article-snarf . webmail-hotmail-article) (trash-url *************** *** 189,197 **** --- 191,217 ---- (defvar webmail-type nil) + (defvar webmail-error-function nil) + + (defvar webmail-debug-file "~/.emacs-webmail-debug") + ;;; Interface functions + (defun webmail-debug (str) + (with-temp-buffer + (insert "\n---------------- A bug at " str " ------------------\n") + (mapcar #'(lambda (sym) + (if (boundp sym) + (pp `(setq ,sym ',(eval sym)) (current-buffer)))) + '(webmail-type user)) + (insert "---------------- webmail buffer ------------------\n\n") + (insert-buffer-substring webmail-buffer) + (insert "\n---------------- end of buffer ------------------\n\n") + (append-to-file (point-min) (point-max) webmail-debug-file))) + (defun webmail-error (str) + (if webmail-error-function + (funcall webmail-error-function str)) (message "%s HTML has changed; please get a new version of webmail (%s)" webmail-type str) (error "%s HTML has changed; please get a new version of webmail (%s)" *************** *** 374,379 **** --- 394,412 ---- (setq webmail-aux (match-string 1)) (webmail-error "open@1"))) + (defun webmail-hotmail-login () + (let (site) + (goto-char (point-min)) + (if (re-search-forward + "https?://\\([^/]+hotmail\\.msn\\.com\\)/cgi-bin/" nil t) + (setq site (match-string 1)) + (webmail-error "login@1")) + (goto-char (point-min)) + (if (re-search-forward + "\\(/cgi-bin/HoTMaiL\\?[^\"]*curmbox=ACTIVE[^\"]*\\)" nil t) + (setq webmail-aux (concat "http://" site (match-string 1))) + (webmail-error "login@2")))) + (defun webmail-hotmail-list () (let (site url newp) (goto-char (point-min)) *************** *** 382,388 **** (webmail-error "maybe your w3 version is too old")) (goto-char (point-min)) (if (re-search-forward ! "action=\"https?://\\([^/]+\\)/cgi-bin/HoTMaiL" nil t) (setq site (match-string 1)) (webmail-error "list@1")) (goto-char (point-min)) --- 415,421 ---- (webmail-error "maybe your w3 version is too old")) (goto-char (point-min)) (if (re-search-forward ! "https?://\\([^/]+hotmail\\.msn\\.com\\)/cgi-bin/" nil t) (setq site (match-string 1)) (webmail-error "list@1")) (goto-char (point-min)) *** pub/pgnus/lisp/ChangeLog Thu Apr 20 01:31:01 2000 --- pgnus/lisp/ChangeLog Mon Apr 24 21:01:25 2000 *************** *** 1,3 **** --- 1,311 ---- + Mon Apr 24 21:12:06 2000 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.8.5 is released. + + 2000-04-24 16:29:07 Lars Magne Ingebrigtsen + + * rfc2047.el (rfc2047-header-encoding-alist): Doc fix. + + * gnus-util.el (gnus-netrc-machine): Default to nntp. + + * mml.el (mml-generate-mime-1): Force 8bit on message/rfc822. + + 2000-04-23 23:27:25 Shenghuo ZHU + + * mm-view.el (mm-inline-message): Disable prepare-hook. + + 2000-04-23 00:32:32 Lars Magne Ingebrigtsen + + * gnus.el: Fix copyright statements. + + * gnus-sum.el (gnus-alter-articles-to-read-function): New + variable. + (gnus-articles-to-read): Use it. + + * message.el (message-get-reply-headers): Bind free variable. + + 2000-04-23 01:14:28 Shenghuo ZHU + + * message.el (message-get-reply-headers): Fix to-address. + + 2000-04-22 22:51:46 Shenghuo ZHU + + * webmail.el: Hotmail fix. Add a debug function. + + 2000-04-23 00:32:32 Lars Magne Ingebrigtsen + + * gnus-sum.el (t): M-down and M-up. + + 2000-04-22 20:22:03 Kai Großjohann + + * gnus-sum.el: Doc fix. + + 2000-04-22 10:25:56 Shenghuo ZHU + + * nnwarchive.el (nnwarchive-egroups-article): Remove < and >. + + 2000-04-22 14:25:05 Lars Magne Ingebrigtsen + + * nnweb.el (nnweb-dejanews-create-mapping): Remove the context + string. + (nnweb-request-group): Don't scan twice. + (nnweb-request-scan): Don't nix out the hashtb. + + * message.el (message-get-reply-headers): Return a value. + + 2000-04-22 14:12:41 David Aspinwall + + * gnus-art.el (gnus-button-url-regexp): New value to match naked + urls. + + 2000-04-22 01:23:59 Lars Magne Ingebrigtsen + + * gnus-cache.el (gnus-summary-insert-cached-articles): Reverse the + order messages are inserted. + + * mml.el (mml-generate-mime-1): rfc2047-encode the heads of + message/rfc822 parts. + + * gnus-art.el (gnus-article-read-summary-keys): Check for + numerical values. + + * message.el (message-get-headers): Made into own function. + (message-reply): Use it. + (message-get-reply-headers): Renamed. + (message-widen-reply): New command. + + 2000-04-21 20:52:09 Shenghuo ZHU + + * nntp.el (nntp-retrieve-data): Report the error and return nil. + + 2000-04-21 19:38:43 Shenghuo ZHU + + * mm-bodies.el (mm-decode-content-transfer-encoding): Don't remove + non-base64 text at the end if not found. + + 2000-03-01 Simon Josefsson + + * gnus-sum.el (gnus-read-move-group-name): + (gnus-summary-move-article): Use `gnus-group-method' to find out + what method the manually entered group belong to. + `gnus-group-name-to-method' doesn't return any method parameters + and `gnus-find-method-for-group' uses `gnus-group-name-to-method' + for new groups so they wouldn't work. + + 2000-04-21 22:27:15 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-configure-posting-styles): Allow nil values to + override. + + 2000-04-21 21:58:20 Kai Großjohann + + * nnmail.el (nnmail-cache-insert): Does some stuff that is + probably good to do, or something. I dunno. I just write these + ChangeLog entries, and my name is Lars. + + 1999-12-06 Hrvoje Niksic + + * message.el (message-caesar-region): Use translate-region. + + 2000-04-21 21:20:32 Mike Fabian + + * gnus-group.el (gnus-group-catchup-current): Doc fix. + + 2000-04-21 20:36:21 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-setup-buffer): Don't kill local + variables, because that makes Emacs flash. + + * gnus-group.el (gnus-group-insert-group-line): Don't call + gnus-group-add-icon unconditionally. + + * gnus-xmas.el (gnus-group-add-icon): Moved here. + + * gnus-group.el (gnus-group-glyph-directory): Don't depend on + xmas. + (gnus-group-glyph-directory): Removed. + + 2000-04-21 20:26:23 Jaap-Henk Hoepman + + * gnus-msg.el (gnus-inews-insert-archive-gcc): Don't do stuff if + gnus-newsgroup-name is "". + + 2000-04-21 Florian Weimer + + * mm-util.el (mm-mime-mule-charset-alist): Add support for UTF-8 + in conjunction with MULE-UCS. + + 1999-12-13 Per Abrahamsen + + * rfc2047.el (rfc2047-fold-region): Don't use the same break twice. + + 1999-12-14 04:14:44 Katsumi Yamaoka + + * dgnushack.el (last, mapcon, member-if, union): New compiler + macros for emulating cl functions. + + 1999-12-21 Jan Vroonhof + + * message.el (message-shorten-references): Only cater to broken + INN for news. This caters for broken smtpd. + + 2000-04-21 18:20:10 Lars Magne Ingebrigtsen + + * mailcap.el (mailcap-mime-info): Use the first match; not the + last. + + * gnus-agent.el (gnus-category-kill): Save the category list. + + 2000-04-21 16:41:50 Chris Brierley + + * gnus-sum.el (gnus-summary-move-article): Do something or other. + + 2000-04-21 16:07:07 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-add-icon): Fixed indentation. + + 2000-04-21 16:07:07 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-add-icon): Fixed indentation. + + 2000-04-21 10:43:16 Shenghuo ZHU + + * gnus-group.el (gnus-group-prepare-flat-predicate): New function. + (gnus-group-list-cached): Use it. + + 2000-04-21 16:07:07 Lars Magne Ingebrigtsen + + * gnus.el: Update all the copyright notices. + + 2000-04-21 15:38:06 Vladimir Volovich + + * mm-bodies.el (mm-decode-content-transfer-encoding): Remove + non-base64 text at the end. + + 2000-04-21 15:21:30 Katsumi Yamaoka + + * mm-bodies.el (mm-body-charset-encoding-alist): defcustomized. + + 2000-04-21 15:15:41 Lars Magne Ingebrigtsen + + * nnheader.el: Don't autoload cancel-function-timers. + + * message.el (message-fetch-field): Fold case. + + 2000-04-21 15:11:09 + + * message.el (message-forward-before-signature): New variable. + + 2000-04-21 15:10:31 Alexandre Oliva + + * gnus-mlspl.el: Fix stuff. + + 2000-04-21 14:41:09 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-update-article-line): Don't hide + subjects when unthreaded. + + 2000-04-21 14:11:39 David S. Goldberg + + * gnus-art.el (gnus-boring-article-headers): Work on long CCs as + well. + + 2000-04-21 14:06:43 Rui Zhu + + * gnus-art.el (gnus-article-mode): Fix variable name. + + 2000-04-21 13:54:51 Lars Magne Ingebrigtsen + + * mm-view.el: Fix autoload. + + * flow-fill.el (flow-fill): Fix provide. + + * gnus-draft.el (gnus-draft-send): Bind message-setup-hook to + nil. + + 2000-04-20 22:24:04 Shenghuo ZHU + + * gnus-win.el (gnus-configure-windows): Revert to switch-to-buffer. + + 2000-04-21 05:22:18 Katsumi Yamaoka + + * gnus-util.el (gnus-netrc-machine): Didn't work. + + 2000-04-20 21:22:10 Shenghuo ZHU + + * gnus-draft.el (gnus-draft-setup): Restore to mml. + + 2000-04-21 01:24:41 Lars Magne Ingebrigtsen + + * flow-fill.el: Renamed from fill-flowed. + + * message.el (message-forward-ignored-headers): Default to + removing CTE. + + 2000-04-21 00:48:48 + + * message.el (message-mode): Don't fill headers. + + 2000-04-20 23:12:43 Lars Magne Ingebrigtsen + + * message.el (message-pipe-buffer-body): Use shell + + 2000-02-21 Yoshiki Hayashi + + * nnvirtual.el (nnvirtual-request-article): + Bind gnus-override-method to nil. + (nnvirtual-request-update-mark): Don't update mark when + article is not there. + + 2000-04-20 16:35:41 Shenghuo ZHU + + * mm-uu.el (mm-uu-dissect): Check forwarded message. + + 2000-04-20 21:17:48 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-parse-netrc): Allow "port". + (gnus-netrc-machine): Take a port param. + (gnus-netrc-machine): + + * gnus-art.el (gnus-request-article-this-buffer): Allow + re-selecting referenced articles. + + * message.el (message-cancel-news): Allow editing. + (message-cancel-message): Add newline. + + 2000-04-20 21:03:54 William M. Perry + + * mm-view.el (mm-inline-image-emacs): New function. + + 2000-04-20 20:44:55 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-delete-incoming): Change default in + cvs. + + 2000-04-20 20:43:34 Kim-Minh Kaplan + + * gnus-art.el (gnus-mime-view-part-as-type-internal): New + function. + + 2000-04-20 14:45:20 Lars Magne Ingebrigtsen + + * nnml.el (nnml-request-expire-articles): Use it. + + * nnmail.el (nnmail-expiry-target): New variable. + (nnmail-expiry-target-group): New function. + + 2000-04-20 02:36:31 Emerick Rogul + + * message.el (message-forward): Add non-MIME separators. + + 2000-04-20 02:25:39 Lars Magne Ingebrigtsen + + * message.el (message-generate-headers): Respect the syntax check + spec. + + * gnus-sum.el (gnus-remove-thread-1): Show thread. + (gnus-remove-thread): Don't show all threads. + Thu Apr 20 01:39:25 2000 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v5.8.4 is released. *************** *** 286,291 **** --- 594,614 ---- * base64.el: Require cl when compiling. + 2000-01-05 BrYan P. Johnson + + * gnus-group.el (gnus-group-line-format-alist): Added %E for + eyecandy. + (gnus-group-insert-group-line): Now groks %E and inserts icon in + group line using gnus-group-add-icon. + (gnus-group-icons): Added customize group. + (gnus-group-icon-list): Added variable. + (gnus-group-glyph-directory): Added variable. + (gnus-group-icon-cache): Added variable. + (gnus-group-running-xemacs): Added variable. + (gnus-group-add-icon): Added function. Add an icon to the current + line according to gnus-group-icon-list. + (gnus-group-icon-create-glyph): Added function. + 2000-01-05 17:31:52 Lars Magne Ingebrigtsen * gnus-sum.el (gnus-summary-select-article): Return whether we *************** *** 855,860 **** --- 1178,1188 ---- * mm-bodies.el (mm-8bit-char-regexps): Removed. (mm-7bit-chars): New variable. (mm-body-7-or-8): Use it in both cases. + + 1999-12-04 Michael Welsh Duggan + + * gnus-start.el (gnus-site-init-file): Don't use cl macros in + defcustom definitions. 1999-12-04 Simon Josefsson *** pub/pgnus/texi/Makefile.in Wed Dec 1 17:30:59 1999 --- pgnus/texi/Makefile.in Mon Apr 24 21:01:48 2000 *************** *** 6,16 **** VPATH=$(srcdir) TEXI2DVI=texi2dvi ! EMACS=emacs MAKEINFO=@MAKEINFO@ EMACSINFO=$(EMACS) -batch -q -no-site-file INFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer XINFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer LATEX=latex DVIPS=dvips PERL=perl --- 6,17 ---- VPATH=$(srcdir) TEXI2DVI=texi2dvi ! TEXI2PDF=texi2pdf MAKEINFO=@MAKEINFO@ EMACSINFO=$(EMACS) -batch -q -no-site-file INFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer XINFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer + PDFLATEX=pdflatex LATEX=latex DVIPS=dvips PERL=perl *************** *** 23,29 **** most: texi2latex.elc latex latexps ! .SUFFIXES: .texi .dvi .ps .texi: if test -x $(MAKEINFO); then \ --- 24,30 ---- most: texi2latex.elc latex latexps ! .SUFFIXES: .texi .dvi .ps .pdf .texi: if test -x $(MAKEINFO); then \ *************** *** 34,47 **** --- 35,61 ---- dvi: gnus.dvi message.dvi refcard.dvi emacs-mime.dvi + pdf: gnus.pdf message.pdf refcard.pdf emacs-mime.pdf + .texi.dvi : $(PERL) -n -e 'print unless (/\@iflatex/ .. /\@end iflatex/)' $< > gnustmp.texi $(TEXI2DVI) gnustmp.texi cp gnustmp.dvi $*.dvi rm gnustmp.* + .texi.pdf : + $(PERL) -n -e 'print unless (/\@iflatex/ .. /\@end iflatex/)' $< > gnustmp.texi + $(TEXI2PDF) gnustmp.texi + cp gnustmp.pdf $*.pdf + rm gnustmp.* + refcard.dvi: refcard.tex gnuslogo.refcard gnusref.tex $(LATEX) refcard.tex + + + refcard.pdf: refcard.tex gnuslogo.refcard gnusref.tex + epstopdf gnuslogo.refcard --outfile=gnuslogo.refcard.pdf + $(PDFLATEX) refcard.tex clean: rm -f gnus.*.bak *.ky *.cp *.fn *.cps *.kys *.log *.aux *.dvi *.vr \ *** pub/pgnus/texi/gnus.texi Thu Apr 20 01:31:39 2000 --- pgnus/texi/gnus.texi Mon Apr 24 21:01:50 2000 *************** *** 355,361 **** spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Gnus 5.8.4. @end ifinfo --- 355,361 ---- spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Gnus 5.8.5. @end ifinfo *************** *** 2766,2771 **** --- 2766,2776 ---- List all groups that have names or descriptions that match a regexp (@code{gnus-group-description-apropos}). + @item A c + @kindex A c (Group) + @findex gnus-group-list-cached + List all groups with cached articles (@code{gnus-group-list-cached}). + @end table @vindex gnus-permanently-visible-groups *************** *** 3858,3864 **** @item L Number of lines in the article. @item c ! Number of characters in the article. @item I Indentation based on thread level (@pxref{Customizing Threading}). @item T --- 3863,3870 ---- @item L Number of lines in the article. @item c ! Number of characters in the article. This specifier is not supported in some ! methods (like nnfolder). @item I Indentation based on thread level (@pxref{Customizing Threading}). @item T *************** *** 5231,5237 **** @findex gnus-summary-limit-to-extra Limit the summary buffer to articles that match one of the ``extra'' headers (@pxref{To From Newsgroups}) ! (@code{gnus-summary-limit-to-author}). @item / u @itemx x --- 5237,5243 ---- @findex gnus-summary-limit-to-extra Limit the summary buffer to articles that match one of the ``extra'' headers (@pxref{To From Newsgroups}) ! (@code{gnus-summary-limit-to-extra}). @item / u @itemx x *************** *** 5253,5259 **** @kindex / t (Summary) @findex gnus-summary-limit-to-age Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days ! (@code{gnus-summary-limit-to-marks}). If given a prefix, limit to articles younger than that number of days. @item / n --- 5259,5265 ---- @kindex / t (Summary) @findex gnus-summary-limit-to-age Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days ! (@code{gnus-summary-limit-to-age}). If given a prefix, limit to articles younger than that number of days. @item / n *************** *** 5793,5803 **** --- 5799,5817 ---- @item T n @kindex T n (Summary) + @itemx M-C-n + @kindex M-C-n (Summary) + @itemx M-down + @kindex M-down (Summary) @findex gnus-summary-next-thread Go to the next thread (@code{gnus-summary-next-thread}). @item T p @kindex T p (Summary) + @itemx M-C-p + @kindex M-C-p (Summary) + @itemx M-up + @kindex M-up (Summary) @findex gnus-summary-prev-thread Go to the previous thread (@code{gnus-summary-prev-thread}). *************** *** 6743,6749 **** Non-@code{nil} means that @code{gnus-uu}, when asked to save without decoding, will save in digests. If this variable is @code{nil}, @code{gnus-uu} will just save everything in a file without any ! embellishments. The digesting almost conforms to RFC1153---no easy way to specify any meaningful volume and issue numbers were found, so I simply dropped them. --- 6757,6763 ---- Non-@code{nil} means that @code{gnus-uu}, when asked to save without decoding, will save in digests. If this variable is @code{nil}, @code{gnus-uu} will just save everything in a file without any ! embellishments. The digesting almost conforms to RFC 1153---no easy way to specify any meaningful volume and issue numbers were found, so I simply dropped them. *************** *** 7677,7683 **** @table @kbd @item K b @kindex K b (Summary) ! Make all the @sc{mime} parts have buttons in from of them. @item K m @kindex K m (Summary) --- 7691,7699 ---- @table @kbd @item K b @kindex K b (Summary) ! Make all the @sc{mime} parts have buttons in from of them. This is ! mostly useful if you wish to save (or perform other actions) on inlined ! parts. @item K m @kindex K m (Summary) *************** *** 7702,7708 **** @item W M w @kindex W M w (Summary) ! Decode RFC2047-encoded words in the article headers (@code{gnus-article-decode-mime-words}). @item W M c --- 7718,7724 ---- @item W M w @kindex W M w (Summary) ! Decode RFC 2047-encoded words in the article headers (@code{gnus-article-decode-mime-words}). @item W M c *************** *** 7811,7818 **** header body-list}@code{)}, where: @table @var ! @item ! test is either a regular expression matching the newsgroup header or a variable to query, @item header --- 7827,7833 ---- header body-list}@code{)}, where: @table @var ! @item test is either a regular expression matching the newsgroup header or a variable to query, @item header *************** *** 8464,8469 **** --- 8479,8500 ---- any other article. If this variable is @code{t}, it won't display the article---it'll be as if it never existed. + @vindex gnus-alter-articles-to-read-function + @item gnus-alter-articles-to-read-function + This function, which takes two parameters (the group name and the list + of articles to be selected), is called to allow the user to alter the + list of articles to be selected. + + For instance, the following function adds the list of cached articles to + the list in one particular group: + + @lisp + (defun my-add-cached-articles (group articles) + (if (string= group "some.group") + (append gnus-newsgroup-cached articles) + articles)) + @end lisp + @end table *************** *** 10286,10293 **** @item Each line may contain an arbitrary number of token/value pairs. The valid tokens include @samp{machine}, @samp{login}, @samp{password}, ! @samp{default} and @samp{force}. (The latter is not a valid ! @file{.netrc}/@code{ftp} token, which is the only way the @file{.authinfo} file format deviates from the @file{.netrc} file format.) --- 10317,10324 ---- @item Each line may contain an arbitrary number of token/value pairs. The valid tokens include @samp{machine}, @samp{login}, @samp{password}, ! @samp{default}, @samp{port} and @samp{force}. (The latter is not a ! valid @file{.netrc}/@code{ftp} token, which is almost the only way the @file{.authinfo} file format deviates from the @file{.netrc} file format.) *************** *** 11141,11153 **** sometimes peek in your mailbox with a @sc{imap} client and mark some articles as read (or; SEEN) you might want to set this to @samp{nil}. Then all articles in the mailbox is fetched, no matter what. For a ! complete list of predicates, see RFC2060 §6.4.4. @item :fetchflag How to flag fetched articles on the server, the default @samp{Deleted} will mark them as deleted, an alternative would be @samp{Seen} which would simply mark them as read. These are the two most likely choices, ! but more flags are defined in RFC2060 §2.3.2. @item :dontexpunge If non-nil, don't remove all articles marked as deleted in the mailbox --- 11172,11184 ---- sometimes peek in your mailbox with a @sc{imap} client and mark some articles as read (or; SEEN) you might want to set this to @samp{nil}. Then all articles in the mailbox is fetched, no matter what. For a ! complete list of predicates, see RFC 2060 §6.4.4. @item :fetchflag How to flag fetched articles on the server, the default @samp{Deleted} will mark them as deleted, an alternative would be @samp{Seen} which would simply mark them as read. These are the two most likely choices, ! but more flags are defined in RFC 2060 §2.3.2. @item :dontexpunge If non-nil, don't remove all articles marked as deleted in the mailbox *************** *** 11206,11212 **** @table @code @item :plugged ! If non-nil, fetch the mail even when Gnus is unplugged. @end table @end table --- 11237,11254 ---- @table @code @item :plugged ! If non-nil, fetch the mail even when Gnus is unplugged. If you use ! directory source to get mail, you can specify it as in this example: ! ! @lisp ! (setq mail-sources ! '((directory :path "/home/pavel/.Spool/" ! :suffix "" ! :plugged t))) ! @end lisp ! ! Gnus will then fetch your mail even when you are unplugged. This is ! useful when you use local mail and news. @end table @end table *************** *** 11301,11308 **** @vindex nnmail-split-hook @item nnmail-split-hook @findex article-decode-encoded-words ! @findex RFC1522 decoding ! @findex RFC2047 decoding Hook run in the buffer where the mail headers of each message is kept just before the splitting based on these headers is done. The hook is free to modify the buffer contents in any way it sees fit---the buffer --- 11343,11350 ---- @vindex nnmail-split-hook @item nnmail-split-hook @findex article-decode-encoded-words ! @findex RFC 1522 decoding ! @findex RFC 2047 decoding Hook run in the buffer where the mail headers of each message is kept just before the splitting based on these headers is done. The hook is free to modify the buffer contents in any way it sees fit---the buffer *************** *** 11755,11760 **** --- 11797,11814 ---- You can also use the @code{expiry-wait} group parameter to selectively change the expiry period (@pxref{Group Parameters}). + @vindex nnmail-expiry-target + The normal action taken when expiring articles is to delete them. + However, in some circumstances it might make more sense to move them to + other groups instead of deleting them. The @code{nnmail-expiry-target} + (and the @code{expiry-target} group parameter) controls this. The + default value is @code{delete}, but this can also be a string (which + should be the name of the group the message should be moved to), or a + function (which will be called in a buffer narrowed to the message in + question, and with the name of the group being moved from as its + parameter) which should return a target -- either a group name or + @code{delete}. + @vindex nnmail-keep-last-article If @code{nnmail-keep-last-article} is non-@code{nil}, Gnus will never expire the final article in a mail newsgroup. This is to make life *************** *** 11790,11799 **** @cindex incoming mail treatment Mailers and list servers are notorious for doing all sorts of really, ! really stupid things with mail. ``Hey, RFC822 doesn't explicitly prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the end of all lines passing through our server, so let's do that!!!!1!'' ! Yes, but RFC822 wasn't designed to be read by morons. Things that were considered to be self-evident were not discussed. So. Here we are. Case in point: The German version of Microsoft Exchange adds @samp{AW: --- 11844,11853 ---- @cindex incoming mail treatment Mailers and list servers are notorious for doing all sorts of really, ! really stupid things with mail. ``Hey, RFC 822 doesn't explicitly prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the end of all lines passing through our server, so let's do that!!!!1!'' ! Yes, but RFC 822 wasn't designed to be read by morons. Things that were considered to be self-evident were not discussed. So. Here we are. Case in point: The German version of Microsoft Exchange adds @samp{AW: *************** *** 12603,12609 **** The easiest way to get started with @code{nnwarchive} is to say something like the following in the group buffer: @kbd{M-x ! gnus-group-make-nnwarchive-group RET an_egroup RET egroups RET www.egroups.com RET your@@email.address RET}. (Substitute the @sc{an_egroup} with the mailing list you subscribed, the @sc{your@@email.address} with your email address.), or to browse the --- 12657,12663 ---- The easiest way to get started with @code{nnwarchive} is to say something like the following in the group buffer: @kbd{M-x ! gnus-group-make-warchive-group RET an_egroup RET egroups RET www.egroups.com RET your@@email.address RET}. (Substitute the @sc{an_egroup} with the mailing list you subscribed, the @sc{your@@email.address} with your email address.), or to browse the *************** *** 20742,20747 **** --- 20796,20810 ---- turn into a [-] button.) @item + Perhaps there should be a command to "attach" a buffer of comments to + a message? That is, `B WHATEVER', you're popped into a buffer, write + something, end with `C-c C-c', and then the thing you've written gets + to be the child of the message you're commenting. + + @item + Handle external-body parts. + + @item Solve the halting problem. @c TODO *************** *** 21017,21023 **** @item digest @cindex digest A collection of messages in one file. The most common digest format is ! specified by RFC1153. @end table --- 21080,21086 ---- @item digest @cindex digest A collection of messages in one file. The most common digest format is ! specified by RFC 1153. @end table *************** *** 22269,22275 **** just shamelessly @emph{stole} the entire thing, and one would be right. @dfn{Header} is a severely overloaded term. ``Header'' is used in ! RFC1036 to talk about lines in the head of an article (e.g., @code{From}). It is used by many people as a synonym for ``head''---``the header and the body''. (That should be avoided, in my opinion.) And Gnus uses a format internally that it calls ``header'', --- 22332,22338 ---- just shamelessly @emph{stole} the entire thing, and one would be right. @dfn{Header} is a severely overloaded term. ``Header'' is used in ! RFC 1036 to talk about lines in the head of an article (e.g., @code{From}). It is used by many people as a synonym for ``head''---``the header and the body''. (That should be avoided, in my opinion.) And Gnus uses a format internally that it calls ``header'', *** pub/pgnus/texi/message.texi Thu Apr 20 01:31:40 2000 --- pgnus/texi/message.texi Mon Apr 24 21:01:50 2000 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Pterodactyl Pterodactyl Message 5.8.4 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Message 5.8.5 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 42,48 **** @tex @titlepage ! @title Pterodactyl Pterodactyl Message 5.8.4 Manual @author by Lars Magne Ingebrigtsen @page --- 42,48 ---- @tex @titlepage ! @title Message 5.8.5 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 83,91 **** * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Pterodactyl Pterodactyl Message 5.8.4. Message is ! distributed with the Gnus distribution bearing the same version number ! as this manual. @node Interface --- 83,90 ---- * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Message 5.8.5. Message is distributed with ! the Gnus distribution bearing the same version number as this manual. @node Interface *** pub/pgnus/texi/refcard.tex Sat Aug 29 19:54:36 1998 --- pgnus/texi/refcard.tex Mon Apr 24 21:01:50 2000 *************** *** 1,65 **** ! % Reference Card for (ding) Gnus, 3 twocolumn pages. ! % To be processed with latex 2.09 \def\Guide{Card}\def\guide{card} \def\logoscale{0.25} - \def\sec{\section*} - \def\subsec{\subsection*} - \def\subsubsec{\subsubsection*} - \documentstyle{article} \textwidth 7.26in \textheight 10in \topmargin -1.0in % the same settings work for A4, although there is a bit of space at the % top and bottom of the page. \oddsidemargin -0.5in \evensidemargin -0.5in \begin{document} ! \twocolumn\scriptsize\pagestyle{empty} \input{gnusref} - % page 1, left column \Title \par - \vspace{0.5\baselineskip} \Logo{refcard} - \vspace*{\fill} - \GroupLevels - \GroupMode - \pagebreak - - % page 1, right column \Notes ! \vspace*{\fill} ! \GroupCommands ! \pagebreak ! ! % page 2, left column ! \SummaryMode ! \Asubmap ! \Bsubmap ! \Gsubmap ! \Hsubmap ! \Tsubmap ! \pagebreak ! ! % page 2, right column ! \Msubmap ! \Marks ! \pagebreak ! ! % page 3 ! \Osubmap ! \Ssubmap ! \Xsubmap ! \Vsubmap ! \SortSummary ! \Wsubmap ! \Zsubmap ! \ArticleMode \ServerMode ! ! % page 4 \BrowseServer ! \pagebreak ! \onecolumn \vspace*{\fill} ! \CopyRight \end{document} --- 1,167 ---- ! % -*- latex -*- ! % Reference Card for (ding) Gnus: to be processed with LaTeX2e ! \documentclass{article} \def\Guide{Card}\def\guide{card} \def\logoscale{0.25} \textwidth 7.26in \textheight 10in \topmargin -1.0in % the same settings work for A4, although there is a bit of space at the % top and bottom of the page. \oddsidemargin -0.5in \evensidemargin -0.5in + + % TODO: + % - how can you get 'tabular' to wrap around pages ? + % - some things might not be updated: scoring and server modes, maybe more + \begin{document} ! \newlength{\logowidth} ! \setlength{\logowidth}{6.861in} ! \newlength{\logoheight} ! \setlength{\logoheight}{7.013in} ! ! \def\progver{5.8}\def\refver{5.8} % program and refcard versions ! \def\date{26th of March 2000} ! \def\author{Vladimir Alexiev $<$vladimir@cs.ualberta.ca$>$} ! \raggedbottom\raggedright ! % ! % 2000-03-26 Felix Natter : ! % refcard updated for Gnus 5.8.3: please send corrections or suggestions ! % to the above email-address ! ! % changes since 2000-03-26: ! % - Create/Edit Foreign Groups: remove S b and S B (not there in 5.8.3) ! % - Send/Reply etc.: remove w and W (the only bindings are S w and S W) ! % Mon Apr 3 18:41:09 2000: ! % - added C-c C-n and C-c C-t (Article) ! % - C-c C-a as alias for M-m f (Article) + some other M-m *-bindings ! % - added section for ``jumping'' in article-mode ! % - now there's a difference between ``reading'' and ``composition'' ! % article-modes ! ! \twocolumn ! %\tiny ! \scriptsize ! \pagestyle{plain} ! ! % this contains a set of commands containing the actual key-sequences ! % (and some explanations). \input{gnusref} \Title \par \Logo{refcard} \Notes ! % ! % ! \section*{Group-Mode} ! \GroupModeGeneral ! \subsection*{Group Subscribedness-Levels} ! \GroupLevels ! \subsection*{List Groups} ! \ListGroups ! \subsection*{Create/Edit Foreign Groups} ! \CreateEditGroups ! \subsection*{Unsubscribe, Kill and Yank Groups} ! \SubscribeKillYankGroups ! \subsection*{Mark Groups} ! \MarkGroups ! % topics in group-mode ! \subsection*{Group Topics} ! \GroupTopicsGeneral ! \subsubsection*{Topic Sorting} ! \TopicSorting ! % summary-mode ! \section*{Summary-Mode} ! \SummaryModeGeneral ! \subsection*{Select Articles} ! \SelectArticles ! % ! \subsection*{Threading} ! \Threading ! % ! \subsection*{Limiting} ! \Limiting ! \subsection*{Sort the Summary-Buffer} ! \SortSummary ! \subsection*{Score (Value) Commands} ! \Scoring ! % ! \subsection*{MIME operations from the Summary-Buffer} ! \MIMESummary ! \subsection*{Extract Series (Uudecode etc)} ! \ExtractSeries ! \subsection*{Output Articles} ! \OutputArticles ! % ! \subsection*{Post, Followup, Reply, Forward, Cancel} ! \PostReplyetc ! \subsection*{Message-Composition} ! \MsgCompositionGeneral ! \subsubsection*{Jumping in message-buffer} ! \MsgCompositionMovementArticle ! \subsubsection*{Attachments/MML} ! \MsgCompositionMML ! % marking articles ! \subsection*{Mark Articles} ! \MarkArticlesGeneral ! \subsubsection*{Mark Based on Score} ! \MarkByScore ! \subsubsection*{The Process Mark} ! \ProcessMark ! \subsubsection*{Mark Indication-Characters} ! \MarkCharacters ! % ! \subsection*{Mail-Group Commands} ! \MailGroups ! \subsection*{Draft-Group Commands} ! \DraftGroup ! % exiting ! \subsection*{Exit the Summary-Buffer} ! \ExitSummary ! % ! % ! \section*{Article Mode (reading)} ! \ArticleModeGeneral ! \subsection*{Wash the Article-Buffer} ! \WashArticle ! \subsection*{Hide/Highlight Parts of the Article} ! \HideHighlightArticle ! \subsection*{MIME operations from the Article-Buffer (reading)} ! \MIMEArticleMode ! % ! % ! \section*{Server Mode} \ServerMode ! % ! % ! \section*{Browse Server Mode} \BrowseServer ! ! %\pagebreak \vspace*{\fill} ! \Copyright \end{document} + + % \SummaryMode + % \Gsubmap + % \Bsubmap + % \Dsubmap + % \Tsubmap + % %\pagebreak + % % page 2, right column + % \Msubmap + % \Marks + % %\pagebreak + % \Limiting + % % page 3 + % \Osubmap + % \Ssubmap + % \Xsubmap + % \Vsubmap + % \SortSummary + % \Zsubmap + % \ArticleMode + % \ServerMode + % % page 4 + % \BrowseServer + *** pub/pgnus/texi/ChangeLog Thu Apr 20 01:31:41 2000 --- pgnus/texi/ChangeLog Mon Apr 24 21:01:50 2000 *************** *** 1,3 **** --- 1,34 ---- + 2000-04-24 17:09:17 Felix Natter + + * gnusref.tex: New version. + + * refcard.tex: New version. + + 2000-04-23 00:32:23 Lars Magne Ingebrigtsen + + * gnus.texi (Thread Commands): Add keystrokes. + (Various Summary Stuff): Addition. + + 2000-04-22 21:12:25 Alan Shutko + + * Makefile.in: Add pdf support. + + 2000-04-21 12:07:20 Shenghuo ZHU + + * gnus.texi (Listing Groups): Addition. + + 2000-04-21 13:45:52 Pavel Janik + + * gnus.texi (Mail Source Specifiers): Example for :plugged. + + 2000-04-20 20:37:48 Pavel Janik + + * gnus.texi (Limiting): Fix. + + 2000-04-20 20:32:40 Dmitry Yaitskov + + * gnus.texi (Charsets): Typo fix. + 2000-03-19 Simon Josefsson * gnus.texi (IMAP): Addition. *** pub/pgnus/GNUS-NEWS Thu Apr 20 01:31:42 2000 --- pgnus/GNUS-NEWS Mon Apr 24 21:01:50 2000 *************** *** 47,49 **** --- 47,54 ---- *** Gnus can now read IMAP mail via nnimap. + + Local variables: + mode: outline + paragraph-separate: "[ ]*$" + end: