From 874e8b557e911b10c15acc68ed83001be480a89b Mon Sep 17 00:00:00 2001 From: ichikawa Date: Tue, 4 May 1999 17:20:00 +0000 Subject: [PATCH] Sync up with Pterodactyl Gnus 0.84 --- ChangeLog | 11 ++- lisp/ChangeLog | 72 ++++++++++++++++++- lisp/gnus-art.el | 187 +++++++++++++++++++++++++------------------------- lisp/gnus-msg.el | 11 +-- lisp/gnus-sum.el | 12 ++-- lisp/gnus-win.el | 86 +++++++++++------------ lisp/gnus.el | 6 +- lisp/mail-source.el | 4 +- lisp/message.el | 1 + lisp/mm-bodies.el | 4 +- lisp/mm-decode.el | 16 +---- lisp/mm-util.el | 13 ++++ lisp/nnheader.el | 5 +- lisp/qp.el | 12 +++- texi/ChangeLog | 9 +++ texi/gnus-ja.texi | 8 +-- texi/gnus.texi | 30 ++++---- texi/message-ja.texi | 6 +- texi/message.texi | 6 +- 19 files changed, 301 insertions(+), 198 deletions(-) diff --git a/ChangeLog b/ChangeLog index 380e743..7b1c417 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,9 @@ -1999-04-28 Katsumi Yamaoka +1999-05-04 Tatsuya Ichikawa - * lisp/gnus.el (gnus-revision-number): Increment to 03. + * lisp/gnus.el (gnus-version-number): Update to 6.10.064. + (gnus-revision-number): Fresh start from 00. - * lisp/gnus-vm.el (gnus-summary-save-in-vm): Use - `vm-read-file-name' instead of `read-file-name'. This allows to use - the optional sixth argument HISTORY for the various environments. - (gnus-summary-save-article-vm): Ditto. - (TopLevel): Autoload "vm" for the function `vm-read-file-name'. + * Sync up with Pterodactyl Gnus v0.84. 1999-04-27 Katsumi Yamaoka diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 266fd66..f857607 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,71 @@ +Sat May 1 20:27:43 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.84 is released. + +1999-05-01 22:23:21 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-bug-message): Mime change. + +1999-04-22 Simon Josefsson + + * gnus-sum.el (gnus-update-marks): Process null mark lists. + +1999-04-21 Hrvoje Niksic + + * mm-bodies.el (mm-decode-content-transfer-encoding): Recognize + `x-uue'. + +1999-03-04 Aaron M. Ucko + + * mail-source.el (mail-source-fetch-pop): Only prompt for password + when authentication is 'password. + +1999-05-01 22:17:55 + + * gnus-win.el (gnus-configure-windows): Accept a setting. + +1999-04-21 20:51:13 Lars Magne Ingebrigtsen + + * mm-util.el (mm-quote-arg): Moved here. + + * mm-decode.el (mm-quote-arg): Quote more chars. + +1999-04-18 20:12:49 Lars Magne Ingebrigtsen + + * nnheader.el (nnheader-parse-head): Message-ID in In-Reply-To + with newlines would create buggy .nov files. + + * gnus-art.el (gnus-article-date-lapsed-new-header): Default to nil. + + * qp.el (quoted-printable-encode-region): Encode whitespace at the + end of lines. + + * message.el (message-mode): Doc fix. + + * gnus-art.el (article-hide-headers): Delete the hidden headers. + + * gnus-msg.el (gnus-setup-posting-charset): Default group to "". + + * gnus-art.el (article-date-ut): Rewrite. + + * mm-decode.el (mm-preferred-alternative-precedence): Reverse the + order. + + * gnus-msg.el (gnus-message-insert-stylings): Remove duplicate + headers. + + * gnus-art.el (gnus-article-date-lapsed-new-header): Doc fix. + +1999-04-18 Didier Verna + + * gnus-art.el (gnus-article-date-lapsed-new-header): new variable. + (article-date-ut): use it. + +1999-04-18 20:06:20 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch-pop): Call script + asynchronously. + Sun Apr 18 12:40:04 1999 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.83 is released. @@ -1729,7 +1797,7 @@ Mon Nov 30 23:38:02 1998 Shenghuo ZHU * mm-uu.el (mm-uu-dissect): Use mm-make-handle. -1998-12-01 01:53:49 Fran$BmP(Bis Pinard +1998-12-01 01:53:49 François Pinard * nndoc.el (nndoc-mime-parts-type-p): Do related. @@ -3475,7 +3543,7 @@ Mon Sep 14 18:55:38 1998 Lars Magne Ingebrigtsen * rfc2047.el (rfc2047-q-encode-region): Would bug out. -1998-09-13 Fran$BmP(Bis Pinard +1998-09-13 François Pinard * nndoc.el: Make nndoc-dissection-alist simpler for MIME, adjust all related functions. Handle message/rfc822 parts. Display subject on diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 865fa38..efb336f 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -619,6 +619,14 @@ on parts -- for instance, adding Vcard info to a database." (defcustom gnus-mime-multipart-functions nil "An alist of MIME types to functions to display them.") +(defcustom gnus-article-date-lapsed-new-header nil + "Whether the X-Sent and Date headers can coexist. +When using `gnus-treat-date-lapsed', the \"X-Sent:\" header will +either replace the old \"Date:\" header (if this variable is nil), or +be added below it (otherwise)." + :group 'gnus-article-headers + :type 'boolean) + ;;; ;;; The treatment variables ;;; @@ -884,7 +892,7 @@ See the manual for details." :type gnus-article-treat-custom) (defcustom gnus-treat-play-sounds nil - "Fill long lines. + "Play sounds. Valid values are nil, t, `head', `last', an integer or a predicate. See the manual for details." :group 'gnus-article-treat @@ -1030,81 +1038,59 @@ Initialized from `text-mode-syntax-table.") i)) (defun article-hide-headers (&optional arg delete) - "Toggle whether to hide unwanted headers and possibly sort them as well. -If given a negative prefix, always show; if given a positive prefix, -always hide." - (interactive (gnus-article-hidden-arg)) - (current-buffer) - (if (gnus-article-check-hidden-text 'headers arg) - ;; Show boring headers as well. - (progn - (gnus-article-show-hidden-text 'boring-headers) - (when (eq 1 (point-min)) - (set-window-start (get-buffer-window (current-buffer)) 1))) - ;; This function might be inhibited. - (unless gnus-inhibit-hiding - (save-excursion - (save-restriction - (let ((buffer-read-only nil) - (case-fold-search t) - (props (nconc (list 'article-type 'headers) - gnus-hidden-properties)) - (max (1+ (length gnus-sorted-header-list))) - (ignored (when (not gnus-visible-headers) - (cond ((stringp gnus-ignored-headers) - gnus-ignored-headers) - ((listp gnus-ignored-headers) - (mapconcat 'identity gnus-ignored-headers - "\\|"))))) - (visible - (cond ((stringp gnus-visible-headers) - gnus-visible-headers) - ((and gnus-visible-headers - (listp gnus-visible-headers)) - (mapconcat 'identity gnus-visible-headers "\\|")))) - (inhibit-point-motion-hooks t) - beg) - ;; First we narrow to just the headers. - (goto-char (point-min)) - ;; Hide any "From " lines at the beginning of (mail) articles. - (while (looking-at "From ") - (forward-line 1)) - (unless (bobp) - (if delete - (delete-region (point-min) (point)) - (gnus-article-hide-text (point-min) (point) props))) - ;; Then treat the rest of the header lines. - (narrow-to-region - (point) - (if (search-forward "\n\n" nil t) ; if there's a body - (progn (forward-line -1) (point)) - (point-max))) - ;; Then we use the two regular expressions - ;; `gnus-ignored-headers' and `gnus-visible-headers' to - ;; select which header lines is to remain visible in the - ;; article buffer. - (goto-char (point-min)) - (while (re-search-forward "^[^ \t]*:" nil t) - (beginning-of-line) - ;; Mark the rank of the header. - (put-text-property - (point) (1+ (point)) 'message-rank - (if (or (and visible (looking-at visible)) - (and ignored - (not (looking-at ignored)))) - (gnus-article-header-rank) - (+ 2 max))) - (forward-line 1)) - (message-sort-headers-1) - (when (setq beg (text-property-any - (point-min) (point-max) 'message-rank (+ 2 max))) - ;; We make the unwanted headers invisible. - (if delete - (delete-region beg (point-max)) - ;; Suggested by Sudish Joseph . - (gnus-article-hide-text-type beg (point-max) 'headers)) - ;; Work around XEmacs lossage. - (put-text-property (point-min) beg 'invisible nil)))))))) + "Hide unwanted headers and possibly sort them as well." + (interactive) + ;; This function might be inhibited. + (unless gnus-inhibit-hiding + (save-excursion + (save-restriction + (let ((buffer-read-only nil) + (case-fold-search t) + (max (1+ (length gnus-sorted-header-list))) + (ignored (when (not gnus-visible-headers) + (cond ((stringp gnus-ignored-headers) + gnus-ignored-headers) + ((listp gnus-ignored-headers) + (mapconcat 'identity gnus-ignored-headers + "\\|"))))) + (visible + (cond ((stringp gnus-visible-headers) + gnus-visible-headers) + ((and gnus-visible-headers + (listp gnus-visible-headers)) + (mapconcat 'identity gnus-visible-headers "\\|")))) + (inhibit-point-motion-hooks t) + beg) + ;; First we narrow to just the headers. + (article-narrow-to-head) + ;; Hide any "From " lines at the beginning of (mail) articles. + (while (looking-at "From ") + (forward-line 1)) + (unless (bobp) + (delete-region (point-min) (point))) + ;; Then treat the rest of the header lines. + ;; Then we use the two regular expressions + ;; `gnus-ignored-headers' and `gnus-visible-headers' to + ;; select which header lines is to remain visible in the + ;; article buffer. + (while (re-search-forward "^[^ \t]*:" nil t) + (beginning-of-line) + ;; Mark the rank of the header. + (put-text-property + (point) (1+ (point)) 'message-rank + (if (or (and visible (looking-at visible)) + (and ignored + (not (looking-at ignored)))) + (gnus-article-header-rank) + (+ 2 max))) + (forward-line 1)) + (message-sort-headers-1) + (when (setq beg (text-property-any + (point-min) (point-max) 'message-rank (+ 2 max))) + ;; We delete the unwanted headers. + (add-text-properties (point-min) (+ 5 (point-min)) + '(article-type headers dummy-invisible t)) + (delete-region beg (point-max)))))))) (defun article-hide-boring-headers (&optional arg) "Toggle hiding of headers that aren't very interesting. @@ -1736,7 +1722,8 @@ means show, 0 means toggle." "Say whether the current buffer contains hidden text of type TYPE." (let ((pos (text-property-any (point-min) (point-max) 'article-type type))) (while (and pos - (not (get-text-property pos 'invisible))) + (not (get-text-property pos 'invisible)) + (not (get-text-property pos 'dummy-invisible))) (setq pos (text-property-any (1+ pos) (point-max) 'article-type type))) (if pos @@ -1774,7 +1761,9 @@ If HIDE, hide the text instead." (defun article-date-ut (&optional type highlight header) "Convert DATE date to universal time in the current article. If TYPE is `local', convert to local time; if it is `lapsed', output -how much time has lapsed since DATE." +how much time has lapsed since DATE. For `lapsed', the value of +`gnus-article-date-lapsed-new-header' says whether the \"X-Sent:\" header +should replace the \"Date:\" one, or should be added below it." (interactive (list 'ut t)) (let* ((header (or header (mail-header-date (save-excursion @@ -1782,38 +1771,50 @@ how much time has lapsed since DATE." gnus-current-headers)) (message-fetch-field "date") "")) + (tdate-regexp "^Date:[ \t]\\|^X-Sent:[ \t]") + (date-regexp + (cond + ((not gnus-article-date-lapsed-new-header) + tdate-regexp) + ((eq type 'lapsed) + "^X-Sent:[ \t]") + (t + "^Date:[ \t]"))) (date (if (vectorp header) (mail-header-date header) header)) - (date-regexp "^Date:[ \t]\\|^X-Sent:[ \t]") (inhibit-point-motion-hooks t) - bface eface newline) + (newline t) + bface eface) (when (and date (not (string= date ""))) (save-excursion (save-restriction (article-narrow-to-head) + (when (re-search-forward tdate-regexp nil t) + (setq bface (get-text-property (gnus-point-at-bol) 'face) + eface (get-text-property (1- (gnus-point-at-eol)) + 'face)) + (forward-line 1)) + (goto-char (point-min)) (let ((buffer-read-only nil)) - ;; Delete any old Date headers. - (if (re-search-forward date-regexp nil t) - (progn - (setq bface (get-text-property (gnus-point-at-bol) 'face) - eface (get-text-property (1- (gnus-point-at-eol)) - 'face)) + ;; Delete any old Date headers. + (while (re-search-forward date-regexp nil t) + (if newline (delete-region (progn (beginning-of-line) (point)) (progn (end-of-line) (point))) - (beginning-of-line)) - (goto-char (point-max)) - (setq newline t)) + (delete-region (progn (beginning-of-line) (point)) + (progn (forward-line 1) (point)))) + (setq newline nil)) (insert (article-make-date-line date type)) + (when newline + (insert "\n") + (forward-line -1)) ;; Do highlighting. (beginning-of-line) (when (looking-at "\\([^:]+\\): *\\(.*\\)$") (put-text-property (match-beginning 1) (1+ (match-end 1)) 'face bface) (put-text-property (match-beginning 2) (match-end 2) - 'face eface)) - (when newline - (end-of-line) - (insert "\n")))))))) + 'face eface)))))))) (defun article-make-date-line (date type) "Return a DATE line of TYPE." diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index beb10d7..186810c 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -145,9 +145,10 @@ Developers. (the addresses below are mailing list addresses) The buffer below is a mail buffer. When you press `C-c C-c', it will be sent to the Gnus Bug Exterminators. -At the bottom of the buffer you'll see lots of variable settings. -Please do not delete those. They will tell the Bug People what your -environment is, so that it will be easier to locate the bugs. +The thing near the bottom of the buffer is how the environment +settings will be included in the mail. Please do not delete that. +They will tell the Bug People what your environment is, so that it +will be easier to locate the bugs. If you have found a bug that makes Emacs go \"beep\", set debug-on-error to t (`M-x set-variable RET debug-on-error RET t RET') @@ -238,6 +239,7 @@ Thank you for your help in stamping out bugs. (defun gnus-setup-posting-charset (group) (let ((alist gnus-group-posting-charset-alist) + (group (or group "")) elem) (when group (catch 'found @@ -1274,9 +1276,10 @@ this is a reply." (defun gnus-message-insert-stylings () (let (val) (save-excursion - (message-goto-eoh) (while (setq val (pop gnus-message-style-insertions)) (when (cdr val) + (message-remove-header (car val)) + (message-goto-eoh) (insert (car val) ": " (cdr val) "\n")) (gnus-pull (car val) gnus-message-style-insertions t))))) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 61a01de..4608511 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -1423,6 +1423,7 @@ increase the score of each group you read." "e" gnus-summary-end-of-article "^" gnus-summary-refer-parent-article "r" gnus-summary-refer-parent-article + "D" gnus-summary-enter-digest-group "R" gnus-summary-refer-references "T" gnus-summary-refer-thread "g" gnus-summary-show-article @@ -4226,13 +4227,14 @@ If SELECT-ARTICLES, only select those articles from GROUP." (uncompressed '(score bookmark killed)) type list newmarked symbol delta-marks) (when info - ;; Add all marks lists that are non-nil to the list of marks lists. + ;; Add all marks lists to the list of marks lists. (while (setq type (pop types)) - (when (setq list (symbol-value + (setq list (symbol-value (setq symbol (intern (format "gnus-newsgroup-%s" (car type)))))) + (when list ;; Get rid of the entries of the articles that have the ;; default score. (when (and (eq (cdr type) 'score) @@ -4247,7 +4249,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (setcdr prev (cdr arts)) (setq prev arts)) (setq arts (cdr arts))) - (setq list (cdr all)))) + (setq list (cdr all))))) (when (gnus-check-backend-function 'request-set-mark gnus-newsgroup-name) @@ -4263,11 +4265,13 @@ If SELECT-ARTICLES, only select those articles from GROUP." (if del (push (list del 'del (list (cdr type))) delta-marks))))) + (when list (push (cons (cdr type) (if (memq (cdr type) uncompressed) list (gnus-compress-sequence (set symbol (sort list '<)) t))) newmarked))) + (when delta-marks (unless (gnus-check-group gnus-newsgroup-name) @@ -6994,7 +6998,7 @@ If ARG is a negative number, hide the unwanted header lines." (inhibit-point-motion-hooks t) hidden e) (save-restriction - (message-narrow-to-head) + (article-narrow-to-head) (setq hidden (gnus-article-hidden-text-p 'headers))) (goto-char (point-min)) (when (search-forward "\n\n" nil t) diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index 788e6a7..254b401 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -408,48 +408,50 @@ See the Gnus manual for an explanation of the syntax used.") (defvar gnus-frame-split-p nil) (defun gnus-configure-windows (setting &optional force) - (setq gnus-current-window-configuration setting) - (setq force (or force gnus-always-force-window-configuration)) - (setq setting (gnus-windows-old-to-new setting)) - (let ((split (if (symbolp setting) - (cadr (assq setting gnus-buffer-configuration)) - setting)) - all-visible) - - (setq gnus-frame-split-p nil) - - (unless split - (error "No such setting: %s" setting)) - - (if (and (setq all-visible (gnus-all-windows-visible-p split)) - (not force)) - ;; All the windows mentioned are already visible, so we just - ;; put point in the assigned buffer, and do not touch the - ;; winconf. - (select-window all-visible) - - ;; Either remove all windows or just remove all Gnus windows. - (let ((frame (selected-frame))) - (unwind-protect - (if gnus-use-full-window - ;; We want to remove all other windows. - (if (not gnus-frame-split-p) - ;; This is not a `frame' split, so we ignore the - ;; other frames. - (delete-other-windows) - ;; This is a `frame' split, so we delete all windows - ;; on all frames. - (gnus-delete-windows-in-gnusey-frames)) - ;; Just remove some windows. - (gnus-remove-some-windows) - (switch-to-buffer nntp-server-buffer)) - (select-frame frame))) - - (switch-to-buffer nntp-server-buffer) - (let (gnus-window-frame-focus) - (gnus-configure-frame split (get-buffer-window (current-buffer))) - (when gnus-window-frame-focus - (select-frame (window-frame gnus-window-frame-focus))))))) + (if (window-configuration-p setting) + (set-window-configuration setting) + (setq gnus-current-window-configuration setting) + (setq force (or force gnus-always-force-window-configuration)) + (setq setting (gnus-windows-old-to-new setting)) + (let ((split (if (symbolp setting) + (cadr (assq setting gnus-buffer-configuration)) + setting)) + all-visible) + + (setq gnus-frame-split-p nil) + + (unless split + (error "No such setting: %s" setting)) + + (if (and (setq all-visible (gnus-all-windows-visible-p split)) + (not force)) + ;; All the windows mentioned are already visible, so we just + ;; put point in the assigned buffer, and do not touch the + ;; winconf. + (select-window all-visible) + + ;; Either remove all windows or just remove all Gnus windows. + (let ((frame (selected-frame))) + (unwind-protect + (if gnus-use-full-window + ;; We want to remove all other windows. + (if (not gnus-frame-split-p) + ;; This is not a `frame' split, so we ignore the + ;; other frames. + (delete-other-windows) + ;; This is a `frame' split, so we delete all windows + ;; on all frames. + (gnus-delete-windows-in-gnusey-frames)) + ;; Just remove some windows. + (gnus-remove-some-windows) + (switch-to-buffer nntp-server-buffer)) + (select-frame frame))) + + (switch-to-buffer nntp-server-buffer) + (let (gnus-window-frame-focus) + (gnus-configure-frame split (get-buffer-window (current-buffer))) + (when gnus-window-frame-focus + (select-frame (window-frame gnus-window-frame-focus)))))))) (defun gnus-delete-windows-in-gnusey-frames () "Do a `delete-other-windows' in all frames that have Gnus windows." diff --git a/lisp/gnus.el b/lisp/gnus.el index 3d4e605..199e5a2 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -264,13 +264,13 @@ is restarted, and sometimes reloaded." (defconst gnus-product-name "T-gnus" "Product name of this version of gnus.") -(defconst gnus-version-number "6.10.063" +(defconst gnus-version-number "6.10.064" "Version number for this version of gnus.") -(defconst gnus-revision-number "03" +(defconst gnus-revision-number "00" "Revision number for this version of gnus.") -(defconst gnus-original-version-number "0.83" +(defconst gnus-original-version-number "0.84" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) diff --git a/lisp/mail-source.el b/lisp/mail-source.el index 2429cb4..587cb9e 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -312,7 +312,7 @@ If ARGS, PROMPT is used as an argument to `format'." (when prescript (if (and (symbolp prescript) (fboundp prescript)) (funcall prescript) - (call-process shell-file-name nil nil nil + (call-process shell-file-name nil 0 nil shell-command-switch (format-spec prescript @@ -324,7 +324,7 @@ If ARGS, PROMPT is used as an argument to `format'." (when prescript (if (and (symbolp prescript) (fboundp prescript)) (funcall prescript) - (call-process shell-file-name nil nil nil + (call-process shell-file-name nil 0 nil shell-command-switch (format-spec postscript diff --git a/lisp/message.el b/lisp/message.el index ead854d..a040cc1 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -1560,6 +1560,7 @@ Point is left at the beginning of the narrowed-to region." "Major mode for editing mail and news to be sent. Like Text Mode but with these additional commands: C-c C-s message-send (send the message) C-c C-c message-send-and-exit +C-c C-d Pospone sending the message C-c C-k Kill the message C-c C-f move to a header field (and create it if there isn't): C-c C-f C-t move to To C-c C-f C-s move to Subject C-c C-f C-c move to Cc C-c C-f C-b move to Bcc diff --git a/lisp/mm-bodies.el b/lisp/mm-bodies.el index 298a62d..79afd06 100644 --- a/lisp/mm-bodies.el +++ b/lisp/mm-bodies.el @@ -166,7 +166,7 @@ If no encoding was done, nil is returned." ) ((null encoding) ) - ((eq encoding 'x-uuencode) + ((memq encoding '(x-uuencode x-uue)) (funcall mm-uu-decode-function (point-min) (point-max))) ((eq encoding 'x-binhex) (funcall mm-uu-binhex-decode-function (point-min) (point-max))) @@ -178,7 +178,7 @@ If no encoding was done, nil is returned." (message "Error while decoding: %s" error) nil)) (when (and - (memq encoding '(base64 x-uuencode x-binhex)) + (memq encoding '(base64 x-uuencode x-uue x-binhex)) (equal type "text/plain")) (goto-char (point-min)) (while (search-forward "\r\n" nil t) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index e3578e8..f9b8a60 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -456,19 +456,6 @@ This overrides entries in the mailcap file." "Say whether HANDLE is displayed or not." (mm-handle-undisplayer handle)) -(defun mm-quote-arg (arg) - "Return a version of ARG that is safe to evaluate in a shell." - (let ((pos 0) new-pos accum) - ;; *** bug: we don't handle newline characters properly - (while (setq new-pos (string-match "[;!'`\"$\\& \t{} |()<>]" arg pos)) - (push (substring arg pos new-pos) accum) - (push "\\" accum) - (push (list (aref arg new-pos)) accum) - (setq pos (1+ new-pos))) - (if (= pos 0) - arg - (apply 'concat (nconc (nreverse accum) (list (substring arg pos))))))) - ;;; ;;; Functions for outputting parts ;;; @@ -586,7 +573,8 @@ This overrides entries in the mailcap file." (defun mm-preferred-alternative-precedence (handles) "Return the precedence based on HANDLES and mm-discouraged-alternatives." - (let ((seq (mapcar (lambda (h) (car (mm-handle-type h))) handles))) + (let ((seq (nreverse (mapcar (lambda (h) + (car (mm-handle-type h))) handles)))) (dolist (disc (reverse mm-discouraged-alternatives)) (dolist (elem (copy-sequence seq)) (when (string-match disc elem) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index dfad2a2..2ade070 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -286,6 +286,19 @@ See also `with-temp-file' and `with-output-to-string'." mm-mime-mule-charset-alist) nil t))) +(defun mm-quote-arg (arg) + "Return a version of ARG that is safe to evaluate in a shell." + (let ((pos 0) new-pos accum) + ;; *** bug: we don't handle newline characters properly + (while (setq new-pos (string-match "[]*[;!'`\"$\\& \t{} |()<>]" arg pos)) + (push (substring arg pos new-pos) accum) + (push "\\" accum) + (push (list (aref arg new-pos)) accum) + (setq pos (1+ new-pos))) + (if (= pos 0) + arg + (apply 'concat (nconc (nreverse accum) (list (substring arg pos))))))) + (provide 'mm-util) ;;; mm-util.el ends here diff --git a/lisp/nnheader.el b/lisp/nnheader.el index 64c3bd8..0357be6 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -244,11 +244,12 @@ on your system, you could say something like: ;; promising. (if (and (search-forward "\nin-reply-to: " nil t) (setq in-reply-to (nnheader-header-value)) - (string-match "<[^>]+>" in-reply-to)) + (string-match "<[^\n>]+>" in-reply-to)) (let (ref2) (setq ref (substring in-reply-to (match-beginning 0) (match-end 0))) - (while (string-match "<[^>]+>" in-reply-to (match-end 0)) + (while (string-match "<[^\n>]+>" + in-reply-to (match-end 0)) (setq ref2 (substring in-reply-to (match-beginning 0) (match-end 0))) (when (> (length ref2) (length ref)) diff --git a/lisp/qp.el b/lisp/qp.el index a529868..e50a5a4 100644 --- a/lisp/qp.el +++ b/lisp/qp.el @@ -74,14 +74,24 @@ matched by that regexp." (save-restriction (narrow-to-region from to) (mm-encode-body) + ;; Encode all the non-ascii and control characters. (goto-char (point-min)) (while (and (skip-chars-forward (or class "^\000-\007\013\015-\037\200-\377=")) (not (eobp))) (insert (prog1 - (upcase (format "=%x" (char-after))) + (upcase (format "=%02x" (char-after))) (delete-char 1)))) + ;; Encode white space at the end of lines. + (goto-char (point-min)) + (while (re-search-forward "[ \t]+$" nil t) + (goto-char (match-beginning 0)) + (while (not (eolp)) + (insert + (prog1 + (upcase (format "=%02x" (char-after))) + (delete-char 1))))) (when fold ;; Fold long lines. (goto-char (point-min)) diff --git a/texi/ChangeLog b/texi/ChangeLog index f090506..13df68b 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,12 @@ +1999-04-18 Didier Verna + + * gnus.texi (Article treatment): document the new variable + `gnus-article-date-lapsed-new-header'. + +1999-04-26 Robert Bihlmeyer + + * gnus.texi (Posting Styles): Typo. + 1999-04-18 12:46:33 Lars Magne Ingebrigtsen * gnus.texi (Summary Score Commands): Typo. diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 3fcf5ce..f924d25 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus-ja -@settitle Semi-gnus 6.10.063 Manual +@settitle Semi-gnus 6.10.064 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -345,7 +345,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.10.063 Manual +@title Semi-gnus 6.10.064 Manual @author by Lars Magne Ingebrigtsen @author by members of Semi-gnus mailing-list @@ -399,7 +399,7 @@ Semi-gnus $B$O!"Bg$-$J3($,F~$C$F$$$?$j$5$^$6$^$J7A<0$rMQ$$$?$j$7$F$$$k$A$g$C(B $B$J8@8l7w$r:9JL$7$^$;$s!#$"$"!"%/%j%s%4%s$NJ}$O(B Unicode Next Generation$B$r(B $B$*BT$A$/$@$5$$!#(B -$B$3$N@bL@=q$O(B Semi-gnus 6.10.063 $B$KBP1~$7$^$9!#(B +$B$3$N@bL@=q$O(B Semi-gnus 6.10.064 $B$KBP1~$7$^$9!#(B @end ifinfo @@ -18223,7 +18223,7 @@ Gnus $B$OH"$+$i=P$7$F$9$0$K(B @emph{$BHs>o$K(B} $B$h$/F0:n$7$^$9(B---$B2? @item @kbd{M-x gnus-version} $B$r;n$7$F2<$5$$!#$b$7!"(B -@samp{T-gnus 6.10.063 (based on Pterodactyl Gnus v0.83; for SEMI +@samp{T-gnus 6.10.064 (based on Pterodactyl Gnus v0.84; for SEMI 1.12/1.13, FLIM 1.12)} $B$N$h$&$J$b$N$,=P$F$-$?$J$i!"@5$7$$%U%!%$%k$,(B $BFI$_9~$^$l$F$$$^$9!#(B $B$b$7!"(B@samp{NNTP 3.x} $B$d(B @samp{nntp flee} $B$N$h$&$J$b$N$,=P$F$-$?$H$-$O!"(B diff --git a/texi/gnus.texi b/texi/gnus.texi index b3773ba..3dc5eb0 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Semi-gnus 6.10.063 Manual +@settitle Semi-gnus 6.10.064 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.10.063 Manual +@title Semi-gnus 6.10.064 Manual @author by Lars Magne Ingebrigtsen @page @@ -361,7 +361,7 @@ internationalization/localization and multiscript features based on MULE API. So Semi-gnus does not discriminate various language communities. Oh, if you are a Klingon, please wait Unicode Next Generation. -This manual corresponds to Semi-gnus 6.10.063. +This manual corresponds to Semi-gnus 6.10.064. @end ifinfo @@ -4765,7 +4765,7 @@ Exclude all dormant articles from the limit @item / M @kindex / M (Summary) @findex gnus-summary-limit-exclude-marks -Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}). +Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}). @item / T @kindex / T (Summary) @@ -6933,9 +6933,13 @@ Say how much time has elapsed between the article was posted and now (@code{gnus-article-date-lapsed}). It looks something like: @example -X-Sent: 29 years, 6 weeks, 4 days, 10 hours, 3 minutes, 28 seconds ago +X-Sent: 9 years, 6 weeks, 4 days, 9 hours, 3 minutes, 28 seconds ago @end example +The value of @code{gnus-article-date-lapsed-new-header} determines +whether this header will just be added below the old Date one, or will +replace it. + An advantage of using Gnus to read mail is that it converts simple bugs into wonderful absurdities. @@ -7818,8 +7822,10 @@ Pull all cached articles (for the current group) into the summary buffer @table @kbd -@item C-d +@item A D +@itemx C-d @kindex C-d (Summary) +@kindex A D (Summary) @findex gnus-summary-enter-digest-group If the current article is a collection of other articles (for instance, a digest), you might use this command to enter a group based on the that @@ -8862,7 +8868,7 @@ any case, if this returns a non-@code{nil} value, then the style is said to @dfn{match}. Each style may contain a arbitrary amount of @dfn{attributes}. Each -attribute consists of a @var{(name . value)} pair. The attribute name +attribute consists of a @var{(name value)} pair. The attribute name can be one of @code{signature}, @code{signature-file}, @code{organization}, @code{address}, @code{name} or @code{body}. The attribute name can also be a string. In that case, this will be used as @@ -10169,7 +10175,7 @@ Keywords: @table @code @item :path -The path of the directory where the mails are stored. The default is +The path of the directory where the mails are stored. The default is @samp{~/Maildir/new}. If you sometimes look at your mail through a pop3 daemon before fetching @@ -10823,7 +10829,7 @@ depends on what format you want to store your mail in. There are five different mail backends in the standard Gnus, and more backends are available separately. The mail backend most people use (because it is the fastest and most flexible) is @code{nnml} -(@pxref{Mail Spool}). +(@pxref{Mail Spool}). @menu * Unix Mail Box:: Using the (quite) standard Un*x mbox. @@ -16577,7 +16583,7 @@ Emacsen. Gnus is developed in a two-phased cycle. The first phase involves much discussion on the @samp{ding@@gnus.org} mailing list, where people propose changes and new features, post patches and new backends. This -phase is called the @dfn{alpha} phase, since the Gnusae released in this +phase is called the @dfn{alpha} phase, since the Gnusae released in this phase are @dfn{alpha releases}, or (perhaps more commonly in other circles) @dfn{snapshots}. During this phase, Gnus is assumed to be unstable and should not be used by casual users. Gnus alpha releases @@ -16598,13 +16604,13 @@ lossage of mail if an alpha release hiccups while handling the mail. The division of discussion between the ding mailing list and the Gnus newsgroup is not purely based on publicity concerns. It's true that -having people write about the horrible things that an alpha Gnus release +having people write about the horrible things that an alpha Gnus release can do (sometimes) in a public forum may scare people off, but more importantly, talking about new experimental features that have been introduced may confuse casual users. New features are frequently introduced, fiddled with, and judged to be found wanting, and then either discarded or totally rewritten. People reading the mailing list -usually keep up with these rapid changes, whille people on the newsgroup +usually keep up with these rapid changes, whille people on the newsgroup can't be assumed to do so. diff --git a/texi/message-ja.texi b/texi/message-ja.texi index a521e00..200f297 100644 --- a/texi/message-ja.texi +++ b/texi/message-ja.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message-ja -@settitle Message 6.10.063 Manual +@settitle Message 6.10.064 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -60,7 +60,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 6.10.063 Manual +@title Message 6.10.064 Manual @author by Lars Magne Ingebrigtsen @translated by members of Semi-gnus mailing-list @@ -112,7 +112,7 @@ Gnus $B$NA4$F$N%a%C%;!<%8$N:n@.(B ($B%a!<%k$H%K%e!<%9$NN>J}(B) $B$O%a%C%;!< * Key Index:: $B%a%C%;!<%8%b!<%I%-!<$N0lMw!#(B @end menu -$B$3$N%^%K%e%"%k$O(B Message 6.10.063 $B$KBP1~$7$^$9!#(BMessage $B$O$3$N%^%K%e%"%k$H(B +$B$3$N%^%K%e%"%k$O(B Message 6.10.064 $B$KBP1~$7$^$9!#(BMessage $B$O$3$N%^%K%e%"%k$H(B $BF1$8HGHV9f$N(B Gnus $B$NG[I[$H6&$KG[I[$5$l$^$9!#(B diff --git a/texi/message.texi b/texi/message.texi index 8a4b0c2..8cec6b4 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 6.10.063 Manual +@settitle Message 6.10.064 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 6.10.063 Manual +@title Message 6.10.064 Manual @author by Lars Magne Ingebrigtsen @page @@ -83,7 +83,7 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 6.10.063. Message is +This manual corresponds to Message 6.10.064. Message is distributed with the Gnus distribution bearing the same version number as this manual. -- 1.7.10.4