From: yamaoka Date: Sun, 11 Jul 1999 23:25:02 +0000 (+0000) Subject: Sync up with Pterodactyl Gnus v0.95. X-Git-Tag: t-gnus-6_10_072-00 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed5859e1e7c85dee6841ff01b44bdd132a265de9;p=elisp%2Fgnus.git- Sync up with Pterodactyl Gnus v0.95. --- diff --git a/ChangeLog b/ChangeLog index 40a0abd..cc7b61b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +1999-07-11 Katsumi Yamaoka + + * lisp/gnus.el (gnus-version-number): Update to 6.10.072. + + * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi, + ChangeLog}: Update for T-gnus 6.10.072. + + * lisp/{pop3.el,nnmh.el,nnfolder.el,mm-util.el,mm-encode.el, + mm-decode.el,message.el,mail-source.el,gnus-util.el,gnus-topic.el, + gnus-sum.el,gnus-mlspl.el,gnus-mailcap.el,gnus-group.el, + gnus-cus.el,gnus-art.el,ChangeLog}: Sync up with Pterodactyl Gnus + v0.95. + + * README.T-gnus: Update for T-gnus 6.10.072. + 1999-07-07 Katsumi Yamaoka * lisp/gnus.el (gnus-version-number): Update to 6.10.071. diff --git a/README.T-gnus b/README.T-gnus index 23600c7..1dcaf86 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -27,6 +27,6 @@ NEWS: * T-gnus 6.10 - this is based on Pterodactyl Gnus. - The latest T-gnus is T-gnus 6.10.071 (Based on pgnus-0.93). + The latest T-gnus is T-gnus 6.10.072 (Based on pgnus-0.95). It requires SEMI/WEMI-1.12/1.13, the latest FLIM-1.12, and the latest APEL (9.13 or later). diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 826fa9f..09a7cf5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,125 @@ +Fri Jul 9 22:21:16 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.95 is released. + +1999-07-09 21:46:05 Lars Magne Ingebrigtsen + + * mm-decode.el (mm-mailcap-command): New function. + (mm-display-external): Use it. + + * gnus-art.el (article-make-date-line): Work for India. + + * mm-encode.el (mm-qp-or-base64): Typo. + + * gnus-topic.el (gnus-topic-goto-topic): Made into command. + +Fri Jul 9 19:28:29 1999 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.94 is released. + +1999-07-09 21:19:23 Stainless Steel Rat + + * pop3.el: New version. + +1999-07-09 20:01:44 Lars Magne Ingebrigtsen + + * mm-encode.el (mm-qp-or-base64): New function. + (mm-content-transfer-encoding): Use it. + + * gnus-util.el (gnus-parse-netrc): Allow quoted names. + +1999-07-08 Shenghuo ZHU + + * mm-decode.el (mm-display-external): Fix typo and use 'non-viewer. + + * mailcap.el (mailcap-mailcap-entry-passes-test): Add needsterminal. + +1999-07-09 18:52:22 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-mime-view-part-as-media): New command and + keystroke. + + * mailcap.el (mailcap-mime-types): New function. + + * nnmh.el (nnmh-request-group): Update nnmh-group-alist. + + * message.el (message-goto-eoh): Really go to the end. + +1999-07-09 18:40:23 Puneet Goel + + * message.el (message-make-date): Do the right thing in with + sub-hour time zones. + +1999-07-09 18:36:21 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-make-menu-bar): Removed double bug + report. + +1999-07-08 Shenghuo ZHU + + * nnfolder.el (nnfolder-request-rename-group): Create directory. + +1999-07-08 Shenghuo ZHU + + * mailcap.el (mailcap-parse-mailcap): Skip \;. + (mailcap-parse-mailcap-extras): Fix "nonterminal;" and empty name, + and use t as default value. + +Wed Jul 7 18:40:30 1999 Shenghuo ZHU + + * gnus-sum.el (gnus-get-newsgroup-headers): Don't assume + gnus-summary-buffer is live. + +1999-07-09 17:44:03 Robert Pluim + + * mm-util.el (mm-enable-multibyte): Check whether var bound. + +1999-07-09 17:31:39 Lars Magne Ingebrigtsen + + * message.el (message-bounce): Do MIME bounces MIMEy. + + * gnus-sum.el (gnus-summary-read-group-1): Update mark positions. + +1999-07-08 08:41:10 Lars Magne Ingebrigtsen + + * mailcap.el (mailcap-mime-extensions): Changed patch to + text/x-patch. + + * mm-decode.el (mm-display-external): Wrong placement of paren. + Wed Jul 7 13:09:51 1999 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.93 is released. +1999-07-08 Alexandre Oliva + + * gnus-cus.el (gnus-group-parameters): New entries for + gnus-group-split. + + * gnus-mlspl.el: Renamed functions and variables so as to + start with gnus-group-split. + * gnus.el: Adjust autoload entries. + +1999-07-07 ??:??:?? Alexandre Oliva + + * gnus-mlspl.el: Removed trailing t from comment and provide. + Renamed functions and variables to start with gnus-mlsplit. + Added autoload comments. + * gnus.el: Added autoload entries. + +1999-07-06 05:37:46 Alexandre Oliva + + * nnmail.el (nnmail-split-it): Search the regexp multiple times, + so that matches excluded by RESTRICTs do not cause the whole split + to be ignored. This also fixes a long-standing bug in which a + split with \N substitutions wouldn't cause cross-posting as + expected. + + * nnmail.el (nnmail-split-fancy): Document RESTRICT clauses. + (nnmail-split-it): Implement them. + + * nnmail.el (nnmail-split-fancy): Document ! splits. + 1999-07-07 10:41:11 Stainless Steel Rat * pop3.el: New version. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 20814fe..b7f048c 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -1987,8 +1987,8 @@ should replace the \"Date:\" one, or should be added below it." ;; buggy dates. ((eq type 'local) (let ((tz (car (current-time-zone)))) - (format "Date: %s %s%04d" (current-time-string time) - (if (> tz 0) "+" "-") (abs (/ tz 36))))) + (format "Date: %s %s%02d%02d" (current-time-string time) + (if (> tz 0) "+" "-") (/ tz 3600) (/ (% tz 3600) 60)))) ;; Convert to Universal Time. ((eq type 'ut) (concat "Date: " @@ -3037,14 +3037,15 @@ Type any key: " (?e gnus-tmp-dots ?s))) (defvar gnus-mime-button-commands - '((gnus-article-press-button "\r" "Toggle Display") - (gnus-mime-view-part "v" "View Interactively...") - (gnus-mime-save-part "o" "Save...") - (gnus-mime-copy-part "c" "View As Text, In Other Buffer") - (gnus-mime-inline-part "i" "View As Text, In This Buffer") - (gnus-mime-internalize-part "E" "View Internally") - (gnus-mime-externalize-part "e" "View Externally") - (gnus-mime-pipe-part "|" "Pipe To Command..."))) + '((gnus-article-press-button "\r" "Toggle Display") + (gnus-mime-view-part "v" "View Interactively...") + (gnus-mime-view-part-as-type "t" "View As Type...") + (gnus-mime-save-part "o" "Save...") + (gnus-mime-copy-part "c" "View As Text, In Other Buffer") + (gnus-mime-inline-part "i" "View As Text, In This Buffer") + (gnus-mime-internalize-part "E" "View Internally") + (gnus-mime-externalize-part "e" "View Externally") + (gnus-mime-pipe-part "|" "Pipe To Command..."))) (defun gnus-article-mime-part-status () (if gnus-article-mime-handle-alist-1 @@ -3112,6 +3113,14 @@ Type any key: " (let ((data (get-text-property (point) 'gnus-data))) (mm-interactively-view-part data))) +(defun gnus-mime-view-part-as-media () + "Choose a MIME media type, and view the part as such." + (interactive + (list (completing-read "View as MIME type: " 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." (interactive) diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 71c36af..8127d65 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -1,6 +1,6 @@ ;;; gnus-cus.el --- customization commands for Gnus ;; -;; Copyright (C) 1996 Free Software Foundation, Inc. +;; Copyright (C) 1996,1999 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: news @@ -56,7 +56,7 @@ if that value is non-nil." ;;; Group Customization: -(defconst gnus-group-parameters +(defcustom gnus-group-parameters '((to-address (gnus-email-address :tag "To Address") "\ This will be used when doing followups and posts. @@ -71,14 +71,63 @@ not. Let's say there's a group on the server that is called `fa.4ad-l'. This is a real newsgroup, but the server has gotten the articles from a mail-to-news gateway. Posting directly to this group is therefore impossible--you have to send mail to the mailing list -address instead.") +address instead. + +The gnus-group-split mail splitting mechanism will behave as if this +address was listed in gnus-group-split Addresses (see below).") (to-list (gnus-email-address :tag "To List") "\ This address will be used when doing a `a' in the group. It is totally ignored when doing a followup--except that if it is present in a news group, you'll get mail group semantics when doing -`f'.") +`f'. + +The gnus-group-split mail splitting mechanism will behave as if this +address was listed in gnus-group-split Addresses (see below).") + + (extra-aliases (choice + :tag "Extra Aliases" + (list + :tag "List" + (editable-list + :inline t + (gnus-email-address :tag "Address"))) + (gnus-email-address :tag "Address")) "\ +Store messages posted from or to this address in this group. + +You must be using gnus-group-split for this to work. The VALUE of the +nnmail-split-fancy SPLIT generated for this group will match these +addresses.") + + (split-regexp (regexp :tag "gnus-group-split Regular Expression") "\ +Like gnus-group-split Address, but expects a regular expression.") + + (split-exclude (list :tag "gnus-group-split Restricts" + (editable-list + :inline t (regexp :tag "Restrict"))) "\ +Regular expression that cancels gnus-group-split matches. + +Each entry is added to the nnmail-split-fancy SPLIT as a separate +RESTRICT clause.") + + (split-spec (choice :tag "gnus-group-split Overrider" + (sexp :tag "Fancy Split") + (const :tag "Catch All" catch-all) + (const :tag "Ignore" nil)) "\ +Override all other gnus-group-split fields. + +In `Fancy Split', you can enter any nnmail-split-fancy SPLIT. Note +that the name of this group won't be automatically assumed, you have +to add it to the SPLITs yourself. This means you can use such splits +to split messages to other groups too. + +If you select `Catch All', this group will get postings for any +messages not matched in any other group. It overrides the variable +gnus-group-split-default-catch-all-group. + +Selecting `Ignore' forces no SPLIT to be generated for this group, +disabling all other gnus-group-split fields.") (broken-reply-to (const :tag "Broken Reply To" t) "\ Ignore `Reply-To' headers in this group. diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 4e8f15f..5cd3cd8 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -725,7 +725,6 @@ ticked: The number of ticked articles." ["Pack packet" gnus-soup-pack-packet (fboundp 'gnus-soup-pack-packet)] ["Save areas" gnus-soup-save-areas (fboundp 'gnus-soup-pack-packet)] ["Brew SOUP" gnus-group-brew-soup (fboundp 'gnus-soup-pack-packet)]) - ["Send a bug report" gnus-bug t] ["Send a mail" gnus-group-mail t] ["Post an article..." gnus-group-post-news t] ["Check for new news" gnus-group-get-new-news t] diff --git a/lisp/gnus-mailcap.el b/lisp/gnus-mailcap.el index 4c1fab9..0e0f44f 100644 --- a/lisp/gnus-mailcap.el +++ b/lisp/gnus-mailcap.el @@ -384,6 +384,11 @@ If FORCE, re-parse even if already parsed." (skip-chars-forward "; \t\n") (setq save-pos (point)) (skip-chars-forward "^;\n") + ;;; skip \; + (while (eq (char-before) ?\\) + (backward-delete-char 1) + (skip-chars-forward ";") + (skip-chars-forward "^;\n")) (if (eq (or (char-after save-pos) 0) ?') (setq viewer (progn (narrow-to-region (1+ save-pos) (point)) @@ -419,14 +424,13 @@ If FORCE, re-parse even if already parsed." (skip-chars-forward " \n\t;") (while (not (eobp)) (setq done nil) - (skip-chars-forward " \";\n\t") (setq name-pos (point)) - (skip-chars-forward "^ \n\t=") + (skip-chars-forward "^ \n\t=;") (downcase-region name-pos (point)) (setq name (buffer-substring name-pos (point))) (skip-chars-forward " \t\n") (if (not (eq (char-after (point)) ?=)) ; There is no value - (setq value nil) + (setq value t) (skip-chars-forward " \t\n=") (setq val-pos (point)) (if (memq (char-after val-pos) '(?\" ?')) @@ -445,7 +449,8 @@ If FORCE, re-parse even if already parsed." (skip-chars-forward ";")) (setq done t)))) (setq value (buffer-substring val-pos (point)))) - (setq results (cons (cons name value) results))) + (setq results (cons (cons name value) results)) + (skip-chars-forward " \";\n\t")) results))) (defun mailcap-mailcap-entry-passes-test (info) @@ -456,6 +461,7 @@ If FORCE, re-parse even if already parsed." ) (setq status (and test (split-string (cdr test) " "))) (if (and (or (assoc "needsterm" info) + (assoc "needsterminal" info) (assoc "needsx11" info)) (not (getenv "DISPLAY"))) (setq status nil) @@ -740,7 +746,7 @@ this type is returned." (".nc" . "application/x-netcdf") (".nc" . "application/x-netcdf") (".oda" . "application/oda") - (".patch" . "application/x-patch") + (".patch" . "text/x-patch") (".pbm" . "image/x-portable-bitmap") (".pdf" . "application/pdf") (".pgm" . "image/portable-graymap") @@ -872,6 +878,10 @@ The path of COMMAND will be returned iff COMMAND is a command." (not (file-directory-p file))) (throw 'found file)))))))) +(defun mailcap-mime-types () + "Return a list of MIME media types." + (delete-duplicates (mapcar 'cdr mailcap-mime-extensions))) + (provide 'gnus-mailcap) ;;; mailcap.el ends here diff --git a/lisp/gnus-mlspl.el b/lisp/gnus-mlspl.el index eacdd13..8936bc5 100644 --- a/lisp/gnus-mlspl.el +++ b/lisp/gnus-mlspl.el @@ -24,62 +24,64 @@ (require 'gnus-group) (require 'nnmail) -(defvar gnus-mlsplit-updated-hook nil +(defvar gnus-group-split-updated-hook nil "Hook called just after nnmail-split-fancy is updated by -gnus-mlsplit-update") +gnus-group-split-update") -(defvar gnus-mlsplit-default-catch-all-group "mail.misc" - "Group used by gnus-mlsplit and -gnus-mlsplit-update as default catch-all group") +(defvar gnus-group-split-default-catch-all-group "mail.misc" + "Group used by gnus-group-split and gnus-group-split-update as +default catch-all group") ;;;###autoload -(defun gnus-mlsplit-setup (&optional auto-update catch-all) - "Sets things up so that nnmail-split-fancy is used for mail splitting, -and defines the variable nnmail-split-fancy according with group parameters. - -if AUTO-UPDATE is non-nil (prefix argument accepted, if called interactive), -makes sure nnmail-split-fancy is re-computed before getting new mail, -by adding gnus-mlsplit-update to nnmail-pre-get-new-mail-hook." +(defun gnus-group-split-setup (&optional auto-update catch-all) + "Sets things up so that nnmail-split-fancy is used for mail +splitting, and defines the variable nnmail-split-fancy according with +group parameters. + +if AUTO-UPDATE is non-nil (prefix argument accepted, if called +interactive), makes sure nnmail-split-fancy is re-computed before +getting new mail, by adding gnus-group-split-update to +nnmail-pre-get-new-mail-hook." (interactive "P") (setq nnmail-split-methods 'nnmail-split-fancy) (when catch-all - (setq gnus-mlsplit-default-catch-all-group catch-all)) - (gnus-mlsplit-update) + (setq gnus-group-split-default-catch-all-group catch-all)) + (gnus-group-split-update) (when auto-update - (add-hook 'nnmail-pre-get-new-mail-hook 'gnus-mlsplit-update))) + (add-hook 'nnmail-pre-get-new-mail-hook 'gnus-group-split-update))) ;;;###autoload -(defun gnus-mlsplit-update (&optional catch-all) +(defun gnus-group-split-update (&optional catch-all) "Computes nnmail-split-fancy from group params, by calling -\(gnus-mlsplit-fancy nil nil DEFAULTGROUP)" +\(gnus-group-split-fancy nil nil DEFAULTGROUP)" (interactive) (setq nnmail-split-fancy - (gnus-mlsplit-fancy - nil nil (or catch-all gnus-mlsplit-default-catch-all-group))) - (run-hooks 'gnus-mlsplit-updated-hook) + (gnus-group-split-fancy + nil nil (or catch-all gnus-group-split-default-catch-all-group))) + (run-hooks 'gnus-group-split-updated-hook) ) ;;;###autoload -(defun gnus-mlsplit () - "Uses information from group parameters in order to split mail. -See gnus-mlsplit-fancy for more information. +(defun gnus-group-split () + "Uses information from group parameters in order to split mail. See +gnus-group-split-fancy for more information. If no group is defined as catch-all, the value of -gnus-mlsplit-default-catch-all-group is used. +gnus-group-split-default-catch-all-group is used. -gnus-mlsplit is a valid value for nnmail-split-methods." +gnus-group-split is a valid value for nnmail-split-methods." (let (nnmail-split-fancy) - (gnus-mlsplit-update - gnus-mlsplit-default-catch-all-group) + (gnus-group-split-update + gnus-group-split-default-catch-all-group) (nnmail-split-fancy))) ;;;###autoload -(defun gnus-mlsplit-fancy +(defun gnus-group-split-fancy (&optional groups no-crosspost catch-all) - "Uses information from group parameters in order to split mail. -It can be embedded into nnmail-split-fancy lists with the SPLIT + "Uses information from group parameters in order to split mail. It +can be embedded into nnmail-split-fancy lists with the SPLIT -\(: gnus-mlsplit-fancy GROUPS NO-CROSSPOST CATCH-ALL\) +\(: gnus-group-split-fancy GROUPS NO-CROSSPOST CATCH-ALL\) GROUPS may be a regular expression or a list of group names, that will be used to select candidate groups. If it is ommited or nil, all @@ -94,7 +96,7 @@ split-regexp matches the empty string, nor is there a selected group whose SPLIT-SPEC is 'catch-all, this group name will be appended to the returned SPLIT list, as the last element in a '| SPLIT. -For each selected group, a SPLIT is composed like this: if split-spec +For each selected group, a SPLIT is composed like this: if SPLIT-SPEC is specified, this split is returned as-is (unless it is nil: in this case, the group is ignored). Otherwise, if TO-ADDRESS, TO-LIST and/or EXTRA-ALIASES are specified, a regexp that matches any of them is @@ -116,7 +118,7 @@ nnml:mail.foo: nnml:mail.others: \((split-spec . catch-all)) -Calling (gnus-mlsplit-fancy nil nil \"mail.misc\") returns: +Calling (gnus-group-split-fancy nil nil \"mail.misc\") returns: \(| (& (any \"\\\\(bar@femail\\\\.com\\\\|.*@femail\\\\.com\\\\)\" \"nnml:mail.bar\") diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index ba73165..d4f8d5c 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -2758,6 +2758,7 @@ If NO-DISPLAY, don't generate a summary buffer." (gnus-summary-set-local-parameters gnus-newsgroup-name) (gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy) + (gnus-update-summary-mark-positions) ;; Do score processing. (when gnus-use-scoring (gnus-possibly-score-headers)) @@ -4531,10 +4532,10 @@ The resulting hash table is returned, or nil if no Xrefs were found." headers id end ref (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (or (and (gnus-buffer-live-p gnus-summary-buffer) - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets)) - gnus-newsgroup-ignored-charsets))) + (save-excursion (condition-case nil + (set-buffer gnus-summary-buffer) + (error)) + gnus-newsgroup-ignored-charsets))) (save-excursion (set-buffer nntp-server-buffer) ;; Translate all TAB characters into SPACE characters. diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index ed63e62..97da766 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -149,11 +149,20 @@ with some simple extensions. (gnus-group-topic group)))) (defun gnus-topic-goto-topic (topic) - "Go to TOPIC." (when topic (gnus-goto-char (text-property-any (point-min) (point-max) 'gnus-topic (intern topic))))) +(defun gnus-topic-jump-to-topic (topic) + "Go to TOPIC." + (interactive + (list (completing-read "Go to topic: " + (mapcar 'list (gnus-topic-list)) + nil t))) + (dolist (topic (gnus-current-topics topic)) + (gnus-topic-fold t)) + (gnus-topic-goto-topic topic)) + (defun gnus-current-topic () "Return the name of the current topic." (let ((result @@ -507,9 +516,9 @@ articles in the topic and its subtopics." (car gnus-group-list-mode) (cdr gnus-group-list-mode) nil nil topic level)) -(defun gnus-topic-fold (&optional insert) +(defun gnus-topic-fold (&optional insert topic) "Remove/insert the current topic." - (let ((topic (gnus-group-topic-name))) + (let ((topic (or topic (gnus-group-topic-name)))) (when topic (save-excursion (if (not (gnus-group-active-topic-p)) @@ -932,6 +941,7 @@ articles in the topic and its subtopics." "c" gnus-topic-copy-group "h" gnus-topic-hide-topic "s" gnus-topic-show-topic + "j" gnus-topic-jump-to-topic "M" gnus-topic-move-matching "C" gnus-topic-copy-matching "\C-i" gnus-topic-indent @@ -963,6 +973,7 @@ articles in the topic and its subtopics." ["Copy matching" gnus-topic-copy-matching t] ["Move matching" gnus-topic-move-matching t]) ("Topics" + ["Goto" gnus-topic-jump-to-topic t] ["Show" gnus-topic-show-topic t] ["Hide" gnus-topic-hide-topic t] ["Delete" gnus-topic-delete t] diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 67f87fc..bb42ef6 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -838,9 +838,12 @@ ARG is passed to the first function." (if (eq (char-after) ?#) (goto-char (point-max)) (unless (eobp) - (setq elem (buffer-substring - (point) (progn (skip-chars-forward "^\t ") - (point)))) + (setq elem + (if (= (following-char) ?\") + (read (current-buffer)) + (buffer-substring + (point) (progn (skip-chars-forward "^\t ") + (point))))) (cond ((equal elem "macdef") ;; We skip past the macro definition. diff --git a/lisp/gnus.el b/lisp/gnus.el index 3c9b50c..fa6046f 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.071" +(defconst gnus-version-number "6.10.072" "Version number for this version of gnus.") (defconst gnus-revision-number "00" "Revision number for this version of gnus.") -(defconst gnus-original-version-number "0.93" +(defconst gnus-original-version-number "0.95" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) @@ -1812,8 +1812,9 @@ use the article treating faculties instead. Is is described in Info node ("gnus-vm" :interactive t gnus-summary-save-in-vm gnus-summary-save-article-vm) ("gnus-draft" :interactive t gnus-draft-mode gnus-group-send-drafts) - ("gnus-mlspl" gnus-mlsplit gnus-mlsplit-fancy) - ("gnus-mlspl" :interactive t gnus-mlsplit-setup gnus-mlsplit-update)))) + ("gnus-mlspl" gnus-group-split gnus-group-split-fancy) + ("gnus-mlspl" :interactive t gnus-group-split-setup + gnus-group-split-update)))) ;;; gnus-sum.el thingies diff --git a/lisp/mail-source.el b/lisp/mail-source.el index 45ef233..6853e49 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -310,8 +310,7 @@ If ARGS, PROMPT is used as an argument to `format'." (if (and (symbolp script) (fboundp script)) (funcall script) (mail-source-call-script - (format-spec - script spec)))) + (format-spec script spec)))) (when delay (sleep-for delay))) @@ -400,9 +399,8 @@ If ARGS, PROMPT is used as an argument to `format'." (mail-source-callback callback server) (mail-source-run-script postscript - (format-spec-make - ?p password ?t mail-source-crash-box - ?s server ?P port ?u user))) + (format-spec-make ?p password ?t mail-source-crash-box + ?s server ?P port ?u user))) ;; We nix out the password in case the error ;; was because of a wrong password being given. (setq mail-source-password-cache diff --git a/lisp/message.el b/lisp/message.el index 0f2c2c1..b38f228 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -1749,7 +1749,7 @@ C-c C-r message-caesar-buffer-body (rot13 the message body)." "Move point to the end of the headers." (interactive) (message-goto-body) - (forward-line -2)) + (forward-line -1)) (defun message-goto-signature () "Move point to the beginning of the message signature. @@ -3213,7 +3213,7 @@ If NOW, use that time instead." parse-time-months)))) (format-time-string "%Y %H:%M:%S " now) ;; We do all of this because XEmacs doesn't have the %z spec. - (format "%s%02d%02d" sign (/ zone 3600) (% zone 3600))))) + (format "%s%02d%02d" sign (/ zone 3600) (/ (% zone 3600) 60))))) (defun message-make-followup-subject (subject) "Make a followup Subject." diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 6c70505..c43b1b6 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -317,7 +317,7 @@ external if displayed external." (let ((mm (current-buffer)) (non-viewer (assoc "non-viewer" (mailcap-mime-info - (mm-handle-media-type handle)) t))) + (mm-handle-media-type handle) t)))) (unwind-protect (if method (funcall method) @@ -330,9 +330,10 @@ external if displayed external." (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory))) (filename (mail-content-type-get (mm-handle-disposition handle) 'filename)) - (needsterm (assoc "needsterm" - (mailcap-mime-info - (mm-handle-media-type handle)) t)) + (mime-info (mailcap-mime-info + (mm-handle-media-type handle) t)) + (needsterm (or (assoc "needsterm" mime-info) + (assoc "needsterminal" mime-info))) process file buffer) ;; We create a private sub-directory where we store our files. (make-directory dir) @@ -349,16 +350,36 @@ external if displayed external." (start-process "*display*" nil "xterm" "-e" shell-file-name "-c" - (format method - (mm-quote-arg file))) + (mm-mailcap-command + method file (mm-handle-type handle))) (start-process "*display*" (setq buffer (generate-new-buffer "*mm*")) shell-file-name - "-c" (format method - (mm-quote-arg file))))) + "-c" + (mm-mailcap-command + method file (mm-handle-type handle))))) (mm-handle-set-undisplayer handle (cons file buffer))) (message "Displaying %s..." (format method file)))))) +(defun mm-mailcap-command (method file type-list) + (let ((ctl (cdr type-list)) + (beg 0) + out sub total) + (while (string-match "%{\\([^}]+\\)}\\|%s\\|%t" method beg) + (push (substring method beg (match-beginning 0)) out) + (setq beg (match-end 0) + total (match-string 0 method) + sub (match-string 1 method)) + (cond + ((string= total "%s") + (push (mm-quote-arg file) out)) + ((string= total "%t") + (push (mm-quote-arg (car type-list)) out)) + (t + (push (mm-quote-arg (or (cdr (assq (intern sub) ctl)) "")) out)))) + (push (substring method beg (length method)) out) + (mapconcat 'identity (nreverse out) ""))) + (defun mm-remove-parts (handles) "Remove the displayed MIME parts represented by HANDLE." (if (and (listp handles) diff --git a/lisp/mm-encode.el b/lisp/mm-encode.el index 9cdc36d..ddb5b0b 100644 --- a/lisp/mm-encode.el +++ b/lisp/mm-encode.el @@ -28,12 +28,15 @@ (require 'gnus-mailcap) (defvar mm-content-transfer-encoding-defaults - '(("text/.*" quoted-printable) + '(("text/x-patch" 8bit) + ("text/.*" qp-or-base64) ("message/rfc822" 8bit) ("application/emacs-lisp" 8bit) ("application/x-patch" 8bit) - (".*" base64)) - "Alist of regexps that match MIME types and their encodings.") + (".*" qp-or-base64)) + "Alist of regexps that match MIME types and their encodings. +If the encoding is `qp-or-base64', then either quoted-printable +or base64 will be used, depending on what is more efficient.") (defun mm-insert-rfc822-headers (charset encoding) "Insert text/plain headers with CHARSET and ENCODING." @@ -110,14 +113,38 @@ The encoding used is returned." (insert "\n")) (defun mm-content-transfer-encoding (type) - "Return a CTE suitable for TYPE." + "Return a CTE suitable for TYPE to encode the current buffer." (let ((rules mm-content-transfer-encoding-defaults)) (catch 'found (while rules (when (string-match (caar rules) type) - (throw 'found (cadar rules))) + (throw 'found + (if (eq (cadar rules) 'qp-or-base64) + (mm-qp-or-base64) + (cadar rules)))) (pop rules))))) +(defun mm-qp-or-base64 () + (save-excursion + (save-restriction + (narrow-to-region (point-min) (min (+ (point-min) 1000) (point-max))) + (goto-char (point-min)) + (let ((8bit 0)) + (cond + ((not (featurep 'mule)) + (while (re-search-forward "[^\x00-\x7f]" nil t) + (incf 8bit))) + (t + ;; Mule version + (while (not (eobp)) + (skip-chars-forward "\0-\177") + (unless (eobp) + (forward-char 1) + (incf 8bit))))) + (if (> (/ (* 8bit 1.0) (buffer-size)) 0.166) + 'quoted-printable + 'base64))))) + (provide 'mm-encode) ;;; mm-encode.el ends here diff --git a/lisp/mm-util.el b/lisp/mm-util.el index 0fa5e3c..a8e8f8b 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -186,6 +186,7 @@ used as the line break code type of the coding system." (defsubst mm-enable-multibyte () "Enable multibyte in the current buffer." (when (and (fboundp 'set-buffer-multibyte) + (boundp 'enable-multibyte-characters) (default-value 'enable-multibyte-characters)) (set-buffer-multibyte t))) diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index c4f2416..1937780 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -452,7 +452,9 @@ If NIL, NNFOLDER-FILE-CODING-SYSTEM is used.") (ignore-errors (rename-file buffer-file-name - (nnfolder-group-pathname new-name)) + (let ((new-file (nnfolder-group-pathname new-name))) + (gnus-make-directory (file-name-directory new-file)) + new-file)) t) ;; That went ok, so we change the internal structures. (let ((entry (assoc group nnfolder-group-alist))) diff --git a/lisp/nnmh.el b/lisp/nnmh.el index d9f107d..6ee74d7 100644 --- a/lisp/nnmh.el +++ b/lisp/nnmh.el @@ -198,11 +198,14 @@ '<)) (cond (dir + (setq nnmh-group-alist + (delq (assoc group nnmh-group-alist) nnmh-group-alist)) + (push (list group (cons (car dir) (car (last dir)))) + nnmh-group-alist) (nnheader-report 'nnmh "Selected group %s" group) (nnheader-insert "211 %d %d %d %s\n" (length dir) (car dir) - (progn (while (cdr dir) (setq dir (cdr dir))) (car dir)) - group)) + (car (last dir)) group)) (t (nnheader-report 'nnmh "Empty group %s" group) (nnheader-insert (format "211 0 1 0 %s\n" group)))))))))) diff --git a/lisp/pop3.el b/lisp/pop3.el index 32a9f4d..44f033a 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -4,7 +4,7 @@ ;; Author: Richard L. Pieri ;; Keywords: mail, pop3 -;; Version: 1.3r +;; Version: 1.3s ;; This file is part of GNU Emacs. @@ -37,7 +37,7 @@ (require 'mail-utils) (provide 'pop3) -(defconst pop3-version "1.3r") +(defconst pop3-version "1.3s") (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil) "*POP3 maildrop.") @@ -181,8 +181,7 @@ Returns the process associated with the connection." ;; (insert command "\r\n")) (setq pop3-read-point (point)) (goto-char (point-max)) - (process-send-string process command) - (process-send-string process "\r\n") + (process-send-string process (concat command "\r\n")) ) (defun pop3-read-response (process &optional return) diff --git a/texi/ChangeLog b/texi/ChangeLog index 893bd16..42c9e20 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,12 @@ +1999-07-09 19:41:34 Lars Magne Ingebrigtsen + + * gnus.texi (Using MIME): Addition. + (Topic Commands): Addition. + +1999-07-06 05:37:46 Alexandre Oliva + + * gnus.texi (Fancy Mail Splitting): Document RESTRICT. + 1999-07-07 10:26:59 Robin S. Socha * gnus.texi (Scoring Tips): Typo. diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 4728564..1115047 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -1,7 +1,7 @@ @c \input texinfo @c -*-texinfo-*- @setfilename gnus-ja -@settitle Semi-gnus 6.10.071 Manual +@settitle Semi-gnus 6.10.072 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.071 Manual +@title Semi-gnus 6.10.072 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.071 $B$KBP1~$7$^$9!#(B +$B$3$N@bL@=q$O(B Semi-gnus 6.10.072 $B$KBP1~$7$^$9!#(B @end ifinfo @@ -2714,6 +2714,11 @@ Gnus (@code{gnus-topic-move-group})$B!#$3$N%3%^%s%I$O%W%m%;%9%^!<%/!&%W(B $B%l%U%#%C%/%9%k!<%k$K=>$$$^$9(B (@pxref{Process/Prefix})$B!#(B +@item T j +@kindex T j (Topic) +@findex gnus-topic-jump-to-topic +$B%H%T%C%/$K%8%c%s%W$7$^$9(B (@code{gnus-topic-jump-to-topic})$B!#(B + @item T c @kindex T c (Topic) @findex gnus-topic-copy-group diff --git a/texi/gnus.texi b/texi/gnus.texi index a1a84ee..aaa1ad6 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ @c \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Semi-gnus 6.10.071 Manual +@settitle Semi-gnus 6.10.072 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -319,7 +319,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Semi-gnus 6.10.071 Manual +@title Semi-gnus 6.10.072 Manual @author by Lars Magne Ingebrigtsen @page @@ -362,7 +362,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.071. +This manual corresponds to Semi-gnus 6.10.072. @end ifinfo @@ -2728,6 +2728,11 @@ Move the current group to some other topic (@code{gnus-topic-move-group}). This command uses the process/prefix convention (@pxref{Process/Prefix}). +@item T j +@kindex T j (Topic) +@findex gnus-topic-jump-to-topic +Go to a topic (@code{gnus-topic-jump-to-topic}). + @item T c @kindex T c (Topic) @findex gnus-topic-copy-group diff --git a/texi/message-ja.texi b/texi/message-ja.texi index b78fd06..230380a 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.071 Manual +@settitle Message 6.10.072 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.071 Manual +@title Message 6.10.072 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.071 $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.072 $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 0341aae..6f6abd4 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 6.10.071 Manual +@settitle Message 6.10.072 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.071 Manual +@title Message 6.10.072 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.071. Message is +This manual corresponds to Message 6.10.072. Message is distributed with the Gnus distribution bearing the same version number as this manual.