From: yamaoka
Date: Tue, 10 Oct 2000 12:43:25 +0000 (+0000)
Subject: Synch with `t-gnus-6_14' and Gnus.
X-Git-Tag: t-gnus-6_14-quimby-before-installer-changed-~58
X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53966f536c958de3f90d110045f1cf1dcb0a2020;p=elisp%2Fgnus.git-
Synch with `t-gnus-6_14' and Gnus.
---
diff --git a/ChangeLog b/ChangeLog
index 0dc6f0f..10a8d76 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-10-08 TSUCHIYA Masatoshi
+
+ * lisp/nnshimbun.el (nnshimbun-type-definition): Fix regular
+ expression to extract article body from `ZDNet'.
+
2000-10-06 Katsumi Yamaoka
* lisp/imap.el: Require `base64' instead of to autoload it.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 796198d..b8d360b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,186 @@
+2000-10-10 00:00:28 ShengHuo ZHU
+
+ * webmail.el (webmail-init): Use mm-disable-multibyte-mule4.
+
+2000-10-09 22:50:05 ShengHuo ZHU
+
+ * base64.el (base64-decode-region): Just give a message if the end
+ is not sane.
+
+2000-10-09 20:09:11 ShengHuo ZHU
+
+ * rfc2047.el (rfc2047-encode-message-header): Move fold into
+ encode-region.
+ (rfc2047-dissect-region): Rewrite.
+ (rfc2047-encode-region): Rewrite.
+ (rfc2047-fold-region): Fold any line longer than 76.
+ (rfc2047-unfold-region): New function.
+ (rfc2047-decode-region): Use it.
+ (rfc2047-q-encode-region): Don't break at bob.
+
+2000-10-09 17:12:00 ShengHuo ZHU
+
+ * nntp.el (nntp-open-connection): Kill process buffer when quit.
+ (nntp-connection-timeout): Add a note. SIGALRM is ignored in both
+ FSF Emacs 20 and XEmacs 21.
+ * gnus-agent.el (gnus-agent-fetch-session): Catch quit.
+
+2000-10-09 Dave Love
+
+ * gnus-audio.el: Don't require cl.
+ (gnus-audio): New custom group.
+ (gnus-audio-inline-sound): Change to work with Emacs.
+ (gnus-audio-directory, gnus-audio-directory)
+ (gnus-audio-au-player): Customize.
+ (gnus-audio-play): Try external player if play-sound-file fails.
+ Use file-name-extension, not string-match.
+
+ * gnus-art.el (article-de-quoted-unreadable)
+ (article-de-base64-unreadable): Fold search case rather than
+ downcasing string. Apply mm-charset-to-coding-system to arg of
+ quoted-printable-decode-region.
+ (gnus-article-dumbquotes-map): Fix dashes.
+ (gnus-button-mailto, gnus-button-embedded-url): Doc fix.
+ (gnus-button-reply): Just alias it.
+
+2000-10-09 Stefan Monnier
+
+ * mm-encode.el: Require CL. At least, for `incf'.
+
+ * nnfolder.el (nnfolder-ignore-active-file): Typos.
+
+ * gnus-mh.el (gnus-summary-save-in-folder): Obey mh-lib-progs.
+
+ * gnus-kill.el (gnus-kill): Typo.
+
+2000-10-09 Gerd Moellmann
+
+ * smiley-ems.el (smiley-update-cache): Use `:ascent center'.
+
+2000-10-09 Simon Josefsson
+
+ * nnimap.el (nnimap-group-overview-filename): Create directory for
+ newfile (when use long filenames is nil). Copy+delete file if
+ rename didn't work.
+ (nnimap-group-overview-filename): `rename-file' and `copy-file'
+ doesn't return anything useful, use ignore-errors instead.
+
+2000-10-08 13:05:11 ShengHuo ZHU
+
+ * dgnushack.el (dgnushack-compile): Delete old elc files first.
+
+2000-10-08 10:59:13 ShengHuo ZHU
+
+ * gnus-ems.el (gnus-kill-all-overlays): Move here.
+ * gnus-util.el (gnus-kill-all-overlays): Move out.
+ * gnus-sum.el (gnus-cache-write-active): Auto load.
+ * lpath.el: Shut up.
+ * nnweb.el (nnweb-url-retrieve-asynch): url-retrieve is
+ asynchronous in Exp version.
+
+2000-10-08 08:57:13 ShengHuo ZHU
+
+ * gnus-art.el, gnus-ems.el, gnus-start.el: Remove gnus-xemacs.
+ * gnus-ems.el: Autoload smiley.
+ * gnus-art.el (gnus-treat-display-smileys): Default value in Emacs 21.
+
+2000-10-08 08:45:48 ShengHuo ZHU
+
+ * gnus-sum.el (gnus-summary-display-article): Enable multibyte.
+ (gnus-summary-select-article): Don't enable multibyte here.
+ (gnus-summary-goto-article): Ditto.
+
+2000-10-08 Christoph Conrad
+
+ * gnus-draft.el (gnus-draft-send-message): Typo.
+
+2000-10-08 Simon Josefsson
+
+ * nnimap.el (nnimap-verify-uidvalidity): Delete overview file when
+ uid validity changes.
+ (nnimap-group-overview-filename): Store uidvalidity in filenames.
+ Rename old files into new format.
+
+2000-10-07 15:49:39 ShengHuo ZHU
+
+ * mm-util.el (mm-enable-multibyte-mule4): New.
+ (mm-disable-multibyte-mule4): New.
+ * gnus-sum.el (gnus-summary-mode): Use it.
+ (gnus-summary-select-article): Ditto.
+ (gnus-summary-goto-article): Use enable multibyte.
+ * rfc2047.el (rfc2047-decode): Use unibyte.
+
+2000-10-07 15:42:59 ShengHuo ZHU
+
+ * gnus-logic.el (gnus-advanced-string): Use "" if nil.
+
+2000-10-07 10:31:05 ShengHuo ZHU
+
+ * rfc2047.el (rfc2047-q-encode-region): Better calculation of
+ break point.
+ (rfc2047-fold-region): Don't break the first non-LWSP characters.
+
+2000-10-07 09:18:53 ShengHuo ZHU
+
+ * gnus.el (gnus-agent-fetching): New variable.
+ * gnus-agent.el (gnus-agent-with-fetch): Bind it.
+ * gnus-score.el (gnus-score-body): Don't score body when
+ agent-fetching.
+ (gnus-score-followup): Don't score followup either.
+
+2000-10-07 08:19:17 ShengHuo ZHU
+
+ * gnus-art.el: Define dynamic variables in eval-when-compile.
+ * message.el (message-sending-message): New variable.
+ (message-send): Use it.
+ * gnus-draft.el (gnus-draft-send-message): Ditto.
+ (gnus-group-send-drafts): Ditto.
+
+2000-10-06 Dave Love
+
+ * gnus-audio.el: Don't require cl.
+ (gnus-audio): New custom group.
+ (gnus-audio-inline-sound): Change to work with Emacs.
+ (gnus-audio-directory, gnus-audio-directory)
+ (gnus-audio-au-player): Customize.
+ (gnus-audio-play): Try external player if play-sound-file fails.
+ Use file-name-extension, not string-match.
+
+2000-10-06 17:38:03 ShengHuo ZHU
+
+ * gnus-art.el (gnus-article-prepare): Configure it again.
+
+2000-10-06 15:11:07 ShengHuo ZHU
+
+ * message.el (message-default-charset): Default value for non-Mule
+ Emacsen.
+
+2000-10-06 14:28:50 ShengHuo ZHU
+
+ * message.el (message-alternative-emails): New.
+ (message-use-alternative-email-as-from): New.
+ (message-setup): Use them.
+
+2000-10-06 13:46:47 ShengHuo ZHU
+
+ * base64.el, dgnushack.el, gnus-spec.el, messagexmas.el
+ * gnus-xmas.el, nnheaderxm.el, nndraft.el: Use defalias.
+
+ * gnus-xmas.el (gnus-xmas-define): Defalias gnus-overlay-buffer,
+ gnus-overlay-start.
+ * gnus.el: Ditto.
+ * gnus-art.el (gnus-insert-mime-button): Use them.
+
+2000-10-06 10:01:08 ShengHuo ZHU
+
+ * mm-util.el (mm-with-unibyte-current-buffer): Don't set unibyte
+ if eight-bit-control is a charset, e.g. Mule 5.0 in Emacs 21.
+
+2000-10-06 09:38:54 ShengHuo ZHU
+
+ * qp.el (quoted-printable-encode-region): Use
+ mm-with-unibyte-current-buffer within narrowed region.
+
2000-10-06 08:56:33 ShengHuo ZHU
* webmail.el (webmail-type-definition): Fix my-deja open url.
@@ -300,7 +483,6 @@
(mm-inline-message): Test for `remove-specifier'; don't use
condition-case.
->>>>>>> 5.672
2000-09-24 Simon Josefsson
* nnimap.el (nnimap-request-accept-article): Remove From[^:] lines.
diff --git a/lisp/base64.el b/lisp/base64.el
index 6858a46..8ca14a6 100644
--- a/lisp/base64.el
+++ b/lisp/base64.el
@@ -54,7 +54,7 @@
;; For non-MULE
(if (not (fboundp 'char-int))
- (fset 'char-int 'identity))
+ (defalias 'char-int 'identity))
(defvar base64-alphabet
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
@@ -180,12 +180,12 @@ base64-encoder-program.")
(setq bits 0 counter 0))
(t (setq bits (lsh bits 6)))))))
(cond
- ((= (point) end)
- (if (not (zerop counter))
- (error "at least %d bits missing at end of base64 encoding"
- (* (- 4 counter) 6)))
- (setq done t))
- ((eq (char-after (point)) ?=)
+ ((or (= (point) end)
+ (eq (char-after (point)) ?=))
+ (if (and (= (point) end) (> counter 1))
+ (message
+ "at least %d bits missing at end of base64 encoding"
+ (* (- 4 counter) 6)))
(setq done t)
(cond ((= counter 1)
(error "at least 2 bits missing at end of base64 encoding"))
@@ -297,8 +297,8 @@ base64-encoder-program.")
(buffer-string)
(kill-buffer (current-buffer)))))
-(fset 'base64-decode-string 'base64-decode)
-(fset 'base64-encode-string 'base64-encode)
+(defalias 'base64-decode-string 'base64-decode)
+(defalias 'base64-encode-string 'base64-encode)
);; (static-when nil ...
diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el
index bd3790c..9accb5f 100644
--- a/lisp/dgnushack.el
+++ b/lisp/dgnushack.el
@@ -29,12 +29,10 @@
;;; Code:
;; Set coding priority of Shift-JIS to the bottom.
-(defvar *predefined-category*)
-(defvar coding-category-list)
(if (featurep 'xemacs)
- (fset 'set-coding-priority 'ignore)
- (fset 'coding-priority-list 'ignore)
- (fset 'set-coding-priority-list 'ignore))
+ (defalias 'set-coding-priority 'ignore)
+ (defalias 'coding-priority-list 'ignore)
+ (defalias 'set-coding-priority-list 'ignore))
(cond ((and (featurep 'xemacs) (featurep 'mule))
(if (memq 'shift-jis (coding-priority-list))
(set-coding-priority-list
@@ -48,7 +46,7 @@
(copy-sequence coding-category-list))
'(coding-category-sjis))))))
-(fset 'facep 'ignore)
+(defalias 'facep 'ignore)
(require 'cl)
@@ -81,8 +79,8 @@
(unless (fboundp 'si:byte-optimize-form-code-walker)
(byte-optimize-form nil);; Load `byte-opt' or `byte-optimize'.
(setq max-specpdl-size 3000)
- (fset 'si:byte-optimize-form-code-walker
- (symbol-function 'byte-optimize-form-code-walker))
+ (defalias 'si:byte-optimize-form-code-walker
+ (symbol-function 'byte-optimize-form-code-walker))
(defun byte-optimize-form-code-walker (form for-effect)
(if (and for-effect (memq (car-safe form) '(and or)))
;; Fix bug in and/or forms.
@@ -118,8 +116,7 @@
(defun byte-optimize-char-after (form)
(if (null (cdr form))
'(char-after (point))
- form))
- ))
+ form))))
(condition-case nil
(char-before)
@@ -129,8 +126,7 @@
(defun byte-optimize-char-before (form)
(if (null (cdr form))
'(char-before (point))
- form))
- ))
+ form))))
(push srcdir load-path)
@@ -163,8 +159,8 @@
:symbol-for-testing-whether-colon-keyword-is-available-or-not
(void-variable
;; Bind keywords.
- (mapcar (lambda (keyword) (set keyword keyword))
- '(:button-keymap :data :file :mime-handle))))
+ (dolist (keyword '(:button-keymap :data :file :mime-handle))
+ (set keyword keyword))))
;; Unknown variables and functions.
(unless (boundp 'buffer-file-coding-system)
@@ -203,48 +199,46 @@ You also then need to add the following to the lisp/dgnushack.el file:
(push \"~/lisp/custom\" load-path)
Modify to suit your needs."))
- (let ((files (directory-files srcdir nil "^[^=].*\\.el$"))
- ;;(byte-compile-generate-call-tree t)
- file elc)
- (mapcar
- (lambda (el) (setq files (delete el files)))
- (append
- dgnushack-tool-files
- (condition-case nil
- (progn (require 'w3-forms) nil)
- (error '("nnweb.el" "nnlistserv.el" "nnultimate.el"
- "nnslashdot.el" "nnwarchive.el" "webmail.el")))
- (condition-case nil
- (progn (require 'bbdb) nil)
- (error '("gnus-bbdb.el")))
- (unless (featurep 'xemacs)
- '("gnus-xmas.el" "gnus-picon.el" "messagexmas.el"
- "nnheaderxm.el" "smiley.el"))
- (when (or (featurep 'xemacs) (<= emacs-major-version 20))
- '("smiley-ems.el"))
- (when (and (fboundp 'md5) (subrp (symbol-function 'md5)))
- '("md5.el"))))
- (while (setq file (pop files))
+ (let ((files (directory-files srcdir nil "^[^=].*\\.el$")))
+ (dolist (file
+ (append
+ dgnushack-tool-files
+ (condition-case nil
+ (progn (require 'w3-forms) nil)
+ (error '("nnweb.el" "nnlistserv.el" "nnultimate.el"
+ "nnslashdot.el" "nnwarchive.el" "webmail.el")))
+ (condition-case nil
+ (progn (require 'bbdb) nil)
+ (error '("gnus-bbdb.el")))
+ (unless (featurep 'xemacs)
+ '("gnus-xmas.el" "gnus-picon.el" "messagexmas.el"
+ "nnheaderxm.el" "smiley.el"))
+ (when (or (featurep 'xemacs) (<= emacs-major-version 20))
+ '("smiley-ems.el"))
+ (when (and (fboundp 'md5) (subrp (symbol-function 'md5)))
+ '("md5.el"))))
+ (setq files (delete file files)))
+
+ (dolist (file files)
(setq file (expand-file-name file srcdir))
- (when (or (not (file-exists-p (setq elc (concat file "c"))))
- (file-newer-than-file-p file elc))
- (ignore-errors
- (byte-compile-file file))))))
+ (when (and (file-exists-p (setq elc (concat file "c")))
+ (file-newer-than-file-p file elc))
+ (delete-file elc)))
+
+ (let (;;(byte-compile-generate-call-tree t)
+ file elc)
+ (while (setq file (pop files))
+ (setq file (expand-file-name file srcdir))
+ (when (or (not (file-exists-p (setq elc (concat file "c"))))
+ (file-newer-than-file-p file elc))
+ (ignore-errors
+ (byte-compile-file file)))))))
(defun dgnushack-recompile ()
(require 'gnus)
(byte-recompile-directory "." 0))
-;; Avoid byte-compile warnings.
-(defvar gnus-product-name)
-(defvar early-package-load-path)
-(defvar early-packages)
-(defvar last-package-load-path)
-(defvar last-packages)
-(defvar late-package-load-path)
-(defvar late-packages)
-
(defconst dgnushack-info-file-regexp
(concat "^\\(gnus\\|message\\|emacs-mime\\|gnus-ja\\|message-ja\\)"
"\\.info\\(-[0-9]+\\)?$"))
@@ -253,11 +247,7 @@ Modify to suit your needs."))
"^\\(gnus\\|message\\|emacs-mime\\|gnus-ja\\|message-ja\\)\\.texi$")
(defun dgnushack-make-package ()
- (require 'gnus)
- (let* ((product-name (downcase gnus-product-name))
- (lisp-dir (concat "lisp/" product-name "/"))
- make-backup-files)
-
+ (let (make-backup-files)
(message "Updating autoloads for directory %s..." default-directory)
(let ((generated-autoload-file "auto-autoloads.el")
noninteractive
@@ -281,89 +271,90 @@ Modify to suit your needs."))
(require 'cus-load)
(byte-compile-file "custom-load.el")
- (message "Generating MANIFEST.%s for the package..." product-name)
- (with-temp-buffer
- (insert "pkginfo/MANIFEST." product-name "\n")
- (mapcar
- (lambda (file)
- (unless (member file dgnushack-unexported-files)
- (insert lisp-dir file "\n")))
- (sort (directory-files "." nil "\\.elc?$") 'string-lessp))
- (mapcar
- (lambda (file) (insert "info/" file "\n"))
- (sort (directory-files "../texi/" nil dgnushack-info-file-regexp)
- 'string-lessp))
- (write-file (concat "../MANIFEST." product-name)))))
+ (require 'gnus)
+ (let ((product-name (downcase gnus-product-name)))
+ (message "Generating MANIFEST.%s for the package..." product-name)
+ (with-temp-buffer
+ (insert "pkginfo/MANIFEST." product-name "\n")
+ (let ((lisp-dir (concat "lisp/" product-name "/"))
+ (files (sort (directory-files "." nil "\\.elc?$") 'string-lessp))
+ file)
+ (while (setq file (pop files))
+ (unless (member file dgnushack-unexported-files)
+ (insert lisp-dir file "\n")))
+ (setq files (sort (directory-files "../texi/" nil
+ dgnushack-info-file-regexp)
+ 'string-lessp))
+ (while (setq file (pop files))
+ (insert lisp-dir file "\n")))
+ (write-file (concat "../MANIFEST." product-name))))))
(defun dgnushack-install-package ()
(let ((package-dir (car command-line-args-left))
- dirs info-dir pkginfo-dir product-name lisp-dir manifest files)
+ (product-name (progn (require 'gnus) (downcase gnus-product-name))))
+
+ ;; Examine PACKAGEDIR.
(unless package-dir
- (when (boundp 'early-packages)
- (setq dirs (delq nil (append (when early-package-load-path
- early-packages)
- (when late-package-load-path
- late-packages)
- (when last-package-load-path
- last-packages))))
- (while (and dirs (not package-dir))
- (when (file-exists-p (car dirs))
- (setq package-dir (car dirs)
- dirs (cdr dirs))))))
+ (let (dirs)
+ (when (boundp 'early-packages)
+ (setq dirs (delq nil (append (when early-package-load-path
+ early-packages)
+ (when late-package-load-path
+ late-packages)
+ (when last-package-load-path
+ last-packages))))
+ (while (and dirs (not package-dir))
+ (when (file-directory-p (car dirs))
+ (setq package-dir (car dirs)
+ dirs (cdr dirs)))))))
(unless package-dir
(error "%s" "
You must specify the name of the package path as follows:
-% make install-package PACKAGEDIR=/usr/local/lib/xemacs/xemacs-packages
-"
- ))
- (setq info-dir (expand-file-name "info/" package-dir)
- pkginfo-dir (expand-file-name "pkginfo/" package-dir))
- (require 'gnus)
- (setq product-name (downcase gnus-product-name)
- lisp-dir (expand-file-name (concat "lisp/" product-name "/")
- package-dir)
- manifest (concat "MANIFEST." product-name))
-
- (unless (file-directory-p lisp-dir)
- (make-directory lisp-dir t))
- (unless (file-directory-p info-dir)
- (make-directory info-dir))
- (unless (file-directory-p pkginfo-dir)
- (make-directory pkginfo-dir))
-
- (setq files (sort (directory-files "." nil "\\.elc?$") 'string-lessp))
- (mapcar (lambda (el) (setq files (delete el files)))
- dgnushack-unexported-files)
- (mapcar
- (lambda (file)
- (unless (or (member file files)
- (not (string-match "\\.elc?$" file)))
- (setq file (expand-file-name file lisp-dir))
- (message "Removing %s..." file)
- (condition-case nil
- (delete-file file)
- (error nil))))
- (directory-files lisp-dir nil nil nil t))
- (mapcar
- (lambda (file)
- (message "Copying %s to %s..." file lisp-dir)
- (copy-file file (expand-file-name file lisp-dir) t t))
- files)
-
- (mapcar
- (lambda (file)
- (message "Copying ../texi/%s to %s..." file info-dir)
- (copy-file (expand-file-name file "../texi/")
- (expand-file-name file info-dir)
- t t))
- (sort (directory-files "../texi/" nil dgnushack-info-file-regexp)
- 'string-lessp))
-
- (message "Copying ../%s to %s..." manifest pkginfo-dir)
- (copy-file (expand-file-name manifest "../")
- (expand-file-name manifest pkginfo-dir) t t)
-
+% make install-package PACKAGEDIR=/usr/local/lib/xemacs/xemacs-packages/"))
+
+ ;; Install lisp files.
+ (let ((lisp-dir (expand-file-name (concat "lisp/" product-name "/")
+ package-dir))
+ (files (sort (directory-files "." nil "\\.elc?$") 'string-lessp)))
+ (unless (file-directory-p lisp-dir)
+ (make-directory lisp-dir t))
+ (dolist (file dgnushack-unexported-files)
+ (setq files (delete file files)))
+ ;; Remove extra files.
+ (dolist (file (directory-files lisp-dir nil nil nil t))
+ (unless (or (member file files)
+ (not (string-match "\\.elc?$" file)))
+ (setq file (expand-file-name file lisp-dir))
+ (message "Removing %s..." file)
+ (condition-case nil
+ (delete-file file)
+ (error nil))))
+ (while (setq file (pop files))
+ (message "Copying %s to %s..." file lisp-dir)
+ (copy-file file (expand-file-name file lisp-dir) t t)))
+
+ ;; Install info files.
+ (let ((files (sort (directory-files "../texi/" nil
+ dgnushack-info-file-regexp)
+ 'string-lessp))
+ (info-dir (expand-file-name "info/" package-dir)))
+ (unless (file-directory-p info-dir)
+ (make-directory info-dir))
+ (while (setq file (pop files))
+ (message "Copying ../texi/%s to %s..." file info-dir)
+ (copy-file (expand-file-name file "../texi/")
+ (expand-file-name file info-dir)
+ t t)))
+
+ ;; Install pkginfo.
+ (let ((manifest (concat "MANIFEST." product-name))
+ (pkginfo-dir (expand-file-name "pkginfo/" package-dir)))
+ (unless (file-directory-p pkginfo-dir)
+ (make-directory pkginfo-dir))
+ (message "Copying ../%s to %s..." manifest pkginfo-dir)
+ (copy-file (expand-file-name manifest "../")
+ (expand-file-name manifest pkginfo-dir) t t))
(message "Done")))
(defun dgnushack-texi-add-suffix-and-format ()
@@ -393,9 +384,7 @@ You must specify the name of the package path as follows:
(t
(setq files (cons file files)
command-line-args-left (cdr command-line-args-left)))))
- (while files
- (setq file (car files)
- files (cdr files))
+ (while (setq file (pop files))
(condition-case err
(progn
(if buffer-file-name (kill-buffer (current-buffer)))
diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el
index b301e76..d48410f 100644
--- a/lisp/gnus-agent.el
+++ b/lisp/gnus-agent.el
@@ -204,7 +204,7 @@ If this is `ask' the hook will query the user."
(defmacro gnus-agent-with-fetch (&rest forms)
"Do FORMS safely."
`(unwind-protect
- (progn
+ (let ((gnus-agent-fetching t))
(gnus-agent-start-fetch)
,@forms)
(gnus-agent-stop-fetch)))
@@ -1114,7 +1114,11 @@ the actual number of articles toggled is returned."
(error
(unless (funcall gnus-agent-confirmation-function
(format "Error (%s). Continue? " err))
- (error "Cannot fetch articles into the Gnus agent."))))
+ (error "Cannot fetch articles into the Gnus agent.")))
+ (quit
+ (unless (funcall gnus-agent-confirmation-function
+ (format "Quit (%s). Continue? " err))
+ (signal 'quit "Cannot fetch articles into the Gnus agent."))))
(pop methods))
(gnus-message 6 "Finished fetching articles into the Gnus agent"))))
diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el
index c65a62f..a1bc361 100644
--- a/lisp/gnus-art.el
+++ b/lisp/gnus-art.el
@@ -216,7 +216,7 @@ regexp. If it matches, the text in question is not a signature."
((and (fboundp 'image-type-available-p)
(image-type-available-p 'xbm))
'gnus-article-display-xface)
- ((and (not gnus-xemacs)
+ ((and (not (featurep 'xemacs))
window-system
(module-installed-p 'x-face-mule))
'x-face-mule-gnus-article-display-x-face)
@@ -631,8 +631,8 @@ displayed by the first non-nil matching CONTENT face."
("\223" "``")
("\224" "\"")
("\225" "*")
- ("\226" "---")
- ("\227" "-")
+ ("\226" "-")
+ ("\227" "--")
("\231" "(TM)")
("\233" ">")
("\234" "oe")
@@ -925,7 +925,7 @@ See the manual for details."
(defcustom gnus-treat-display-xface
(and (or (and (fboundp 'image-type-available-p)
(image-type-available-p 'xbm))
- (and gnus-xemacs (featurep 'xface))
+ (and (featurep 'xemacs) (featurep 'xface))
(eq 'x-face-mule-gnus-article-display-x-face
gnus-article-x-face-command))
'head)
@@ -937,8 +937,11 @@ See the manual for details."
(put 'gnus-treat-display-xface 'highlight t)
(defcustom gnus-treat-display-smileys
- (if (or (and gnus-xemacs (featurep 'xpm))
- (and (not gnus-xemacs)
+ (if (or (and (featurep 'xemacs)
+ (featurep 'xpm))
+ (and (fboundp 'image-type-available-p)
+ (image-type-available-p 'pbm))
+ (and (not (featurep 'xemacs))
window-system
(module-installed-p 'gnus-bitmap)))
t
@@ -950,7 +953,7 @@ See the manual for details."
:type gnus-article-treat-custom)
(put 'gnus-treat-display-smileys 'highlight t)
-(defcustom gnus-treat-display-picons (if gnus-xemacs 'head nil)
+(defcustom gnus-treat-display-picons (if (featurep 'xemacs) 'head nil)
"Display picons.
Valid values are nil, t, `head', `last', an integer or a predicate.
See the manual for details."
@@ -1381,7 +1384,7 @@ if given a positive prefix, always hide."
(narrow-to-region header-start header-end)
(article-hide-headers)
;; Re-display X-Face image under XEmacs.
- (when (and gnus-xemacs
+ (when (and (featurep 'xemacs)
(gnus-functionp gnus-article-x-face-command))
(let ((func (cadr (assq 'gnus-treat-display-xface
gnus-treatment-function-alist)))
@@ -1695,9 +1698,11 @@ or not."
(unless charset
(setq charset gnus-newsgroup-charset))
(when (or force
- (and type (string-match "quoted-printable" (downcase type))))
+ (and type (let ((case-fold-search t))
+ (string-match "quoted-printable" type))))
(article-goto-body)
- (quoted-printable-decode-region (point) (point-max) charset)))))
+ (quoted-printable-decode-region
+ (point) (point-max) (mm-charset-to-coding-system charset))))))
(defun article-de-base64-unreadable (&optional force)
"Translate a base64 article.
@@ -1720,13 +1725,14 @@ If FORCE, decode the article whether it is marked as base64 not."
(unless charset
(setq charset gnus-newsgroup-charset))
(when (or force
- (and type (string-match "base64" (downcase type))))
+ (and type (let ((case-fold-search t))
+ (string-match "base64" type))))
(article-goto-body)
(save-restriction
(narrow-to-region (point) (point-max))
(base64-decode-region (point-min) (point-max))
- (if (mm-coding-system-p charset)
- (mm-decode-coding-region (point-min) (point-max) charset)))))))
+ (mm-decode-coding-region
+ (point-min) (point-max) (mm-charset-to-coding-system charset)))))))
(eval-when-compile
(require 'rfc1843))
@@ -3116,6 +3122,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(gnus-set-mode-line 'article))
(article-goto-body)
(set-window-point (get-buffer-window (current-buffer)) (point))
+ (gnus-configure-windows 'article)
t))))))
(defun gnus-article-prepare-mime-display (&optional number)
@@ -3413,9 +3420,11 @@ value of the variable `gnus-show-mime' is non-nil."
gnus-summary-show-article-charset-alist))
(read-coding-system "Charset: ")))))
(forward-line 2)
- (mm-insert-inline handle (if charset
- (mm-decode-coding-string contents charset)
- contents))
+ (mm-insert-inline handle
+ (if charset
+ (mm-decode-coding-string
+ contents (mm-charset-to-coding-system charset))
+ contents))
(goto-char b))))
(defun gnus-mime-externalize-part (&optional handle)
@@ -3637,8 +3646,8 @@ In no internal viewer is available, use an external viewer."
;; window, overlay, position.
(if (mm-handle-displayed-p
(if overlay
- (with-current-buffer (overlay-buffer overlay)
- (widget-get (widget-at (overlay-start overlay))
+ (with-current-buffer (gnus-overlay-buffer overlay)
+ (widget-get (widget-at (gnus-overlay-start overlay))
:mime-handle))
(widget-get widget/window :mime-handle)))
"hide" "show")
@@ -5099,18 +5108,14 @@ forbidden in URL encoding."
(message-goto-subject)))))
(defun gnus-button-mailto (address)
- ;; Mail to ADDRESS.
+ "Mail to ADDRESS."
(set-buffer (gnus-copy-article-buffer))
- (gnus-setup-message 'reply
- (message-reply address)))
+ (message-reply address))
-(defun gnus-button-reply (address)
- ;; Reply to ADDRESS.
- (gnus-setup-message 'reply
- (message-reply address)))
+(defalias 'gnus-button-reply 'message-reply)
(defun gnus-button-embedded-url (address)
- "Browse ADDRESS."
+ "Activate ADDRESS with `browse-url'."
(browse-url (gnus-strip-whitespace address)))
(defun gnus-article-smiley-display ()
@@ -5293,11 +5298,13 @@ For example:
'mime-view-entity entity))))))
;; Dynamic variables.
-(defvar part-number)
-(defvar total-parts)
-(defvar type)
-(defvar condition)
-(defvar length)
+(eval-when-compile
+ (defvar part-number)
+ (defvar total-parts)
+ (defvar type)
+ (defvar condition)
+ (defvar length))
+
(defun gnus-treat-predicate (val)
(cond
((null val)
diff --git a/lisp/gnus-audio.el b/lisp/gnus-audio.el
index 51d054c..8aa8529 100644
--- a/lisp/gnus-audio.el
+++ b/lisp/gnus-audio.el
@@ -1,7 +1,8 @@
;;; gnus-audio.el --- Sound effects for Gnus
-;; Copyright (C) 1996 Free Software Foundation
+;; Copyright (C) 1996, 2000 Free Software Foundation
;; Author: Steven L. Baur
+;; Keywords: news, mail, multimedia
;; This file is part of GNU Emacs.
@@ -21,27 +22,39 @@
;; Boston, MA 02111-1307, USA.
;;; Commentary:
+
;; This file provides access to sound effects in Gnus.
-;; Prerelease: This file is partially stripped to support earcons.el
-;; You can safely ignore most of it until Red Gnus. **Evil Laugh**
+;; This file is partially stripped to support earcons.el.
+
;;; Code:
(require 'nnheader)
-(eval-when-compile (require 'cl))
-
-(defvar gnus-audio-inline-sound
- (and (fboundp 'device-sound-enabled-p)
- (device-sound-enabled-p))
- "When t, we will not spawn a subprocess to play sounds.")
-
-(defvar gnus-audio-directory (nnheader-find-etc-directory "sounds")
- "The directory containing the Sound Files.")
-(defvar gnus-audio-au-player "/usr/bin/showaudio"
- "Executable program for playing sun AU format sound files.")
+(defgroup gnus-audio nil
+ "Playing sound in Gnus."
+ :group 'gnus-visual
+ :group 'multimedia)
-(defvar gnus-audio-wav-player "/usr/local/bin/play"
- "Executable program for playing WAV files.")
+(defvar gnus-audio-inline-sound
+ (or (if (fboundp 'device-sound-enabled-p)
+ (device-sound-enabled-p)) ; XEmacs
+ (fboundp 'play-sound)) ; Emacs 21
+ "Non-nil means try to play sounds without using an external program.")
+
+(defcustom gnus-audio-directory (nnheader-find-etc-directory "sounds")
+ "The directory containing the Sound Files."
+ :type 'directory
+ :group 'gnus-audio)
+
+(defcustom gnus-audio-au-player "/usr/bin/showaudio"
+ "Executable program for playing sun AU format sound files."
+ :group 'gnus-audio
+ :type 'string)
+
+(defcustom gnus-audio-wav-player "/usr/local/bin/play"
+ "Executable program for playing WAV files."
+ :group 'gnus-audio
+ :type 'string)
;;; The following isn't implemented yet. Wait for Millennium Gnus.
;;(defvar gnus-audio-effects-enabled t
@@ -78,26 +91,33 @@
;;;###autoload
(defun gnus-audio-play (file)
- "Play a sound through the speaker."
+ "Play a sound FILE through the speaker."
(interactive)
(let ((sound-file (if (file-exists-p file)
file
- (concat gnus-audio-directory file))))
+ (expand-file-name file gnus-audio-directory))))
(when (file-exists-p sound-file)
- (if gnus-audio-inline-sound
- (play-sound-file sound-file)
- (cond ((string-match "\\.wav$" sound-file)
- (call-process gnus-audio-wav-player
- sound-file
- 0
- nil
- sound-file))
- ((string-match "\\.au$" sound-file)
- (call-process gnus-audio-au-player
- sound-file
- 0
- nil
- sound-file)))))))
+ (cond ((and gnus-audio-inline-sound
+ (condition-case nil
+ ;; Even if we have audio, we may fail with the
+ ;; wrong sort of sound file.
+ (progn (play-sound-file sound-file)
+ t)
+ (error nil))))
+ ;; If we don't have built-in sound, or playing it failed,
+ ;; try with external program.
+ ((equal "wav" (file-name-extension sound-file))
+ (call-process gnus-audio-wav-player
+ sound-file
+ 0
+ nil
+ sound-file))
+ ((equal "au" (file-name-extension sound-file))
+ (call-process gnus-audio-au-player
+ sound-file
+ 0
+ nil
+ sound-file))))))
;;; The following isn't implemented yet, wait for Red Gnus
diff --git a/lisp/gnus-draft.el b/lisp/gnus-draft.el
index 366f867..849dc9b 100644
--- a/lisp/gnus-draft.el
+++ b/lisp/gnus-draft.el
@@ -112,12 +112,16 @@
(defun gnus-draft-send-message (&optional n)
"Send the current draft."
(interactive "P")
- (let ((articles (gnus-summary-work-articles n))
- article)
+ (let* ((articles (gnus-summary-work-articles n))
+ (total (length articles))
+ article)
(while (setq article (pop articles))
(gnus-summary-remove-process-mark article)
(unless (memq article gnus-newsgroup-unsendable)
- (gnus-draft-send article gnus-newsgroup-name t)
+ (let ((message-sending-message
+ (format "Sending message %d of %d..."
+ (- total (length articles)) total)))
+ (gnus-draft-send article gnus-newsgroup-name t))
(gnus-summary-mark-article article gnus-canceled-mark)))))
(defun gnus-draft-send (article &optional group interactive)
@@ -186,14 +190,14 @@
(cdr (assq 'unsend
(gnus-info-marks
(gnus-get-info "nndraft:queue"))))))
- (n (length articles))
- article i)
+ (total (length articles))
+ article)
(while (setq article (pop articles))
- (setq i (- n (length articles)))
- (message "Sending message %d of %d." i n)
- (if (memq article unsendable)
- (message "Message %d of %d is unsendable." i n)
- (gnus-draft-send article))))))
+ (unless (memq article unsendable)
+ (let ((message-sending-message
+ (format "Sending message %d of %d..."
+ (- total (length articles)) total)))
+ (gnus-draft-send article)))))))
;;; Utility functions
diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el
index e7fdc48..c9648a3 100644
--- a/lisp/gnus-ems.el
+++ b/lisp/gnus-ems.el
@@ -31,16 +31,12 @@
;;; Function aliases later to be redefined for XEmacs usage.
-(eval-and-compile
- (defvar gnus-xemacs (featurep 'xemacs)
- "Non-nil if running under XEmacs."))
-
(defvar gnus-mouse-2 [mouse-2])
(defvar gnus-down-mouse-3 [down-mouse-3])
(defvar gnus-down-mouse-2 [down-mouse-2])
(defvar gnus-widget-button-keymap nil)
(defvar gnus-mode-line-modified
- (if (or gnus-xemacs
+ (if (or (featurep 'xemacs)
(< emacs-major-version 20))
'("--**-" . "-----")
'("**" "--")))
@@ -50,16 +46,22 @@
(autoload 'gnus-xmas-redefine "gnus-xmas")
(autoload 'appt-select-lowest-window "appt"))
-(or (fboundp 'mail-file-babyl-p)
- (fset 'mail-file-babyl-p 'rmail-file-p))
-
-(when (and (not (featurep 'xemacs)) (>= emacs-major-version 21))
+(if (featurep 'xemacs)
+ (autoload 'gnus-smiley-display "smiley")
(autoload 'gnus-smiley-display "smiley-ems")) ; override XEmacs version
+(defun gnus-kill-all-overlays ()
+ "Delete all overlays in the current buffer."
+ (let* ((overlayss (overlay-lists))
+ (buffer-read-only nil)
+ (overlays (delq nil (nconc (car overlayss) (cdr overlayss)))))
+ (while overlays
+ (delete-overlay (pop overlays)))))
+
;;; Mule functions.
(eval-and-compile
- (if gnus-xemacs
+ (if (featurep 'xemacs)
(gnus-xmas-define)
(defvar gnus-mouse-face-prop 'mouse-face
"Property used for highlighting mouse regions.")))
@@ -87,7 +89,7 @@
(defun gnus-ems-redefine ()
(cond
- (gnus-xemacs
+ ((featurep 'xemacs)
(gnus-xmas-redefine))
((featurep 'mule)
diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el
index 4838ba8..dfed289 100644
--- a/lisp/gnus-kill.el
+++ b/lisp/gnus-kill.el
@@ -523,7 +523,7 @@ COMMAND must be a lisp expression or a string representing a key sequence."
(if (listp kill-list)
;; It is a list.
(if (not (consp (cdr kill-list)))
- ;; It's on the form (regexp . date).
+ ;; It's of the form (regexp . date).
(if (zerop (gnus-execute field (car kill-list)
command nil (not all)))
(when (> (days-between date (cdr kill-list))
diff --git a/lisp/gnus-logic.el b/lisp/gnus-logic.el
index 56964ff..03b1c1c 100644
--- a/lisp/gnus-logic.el
+++ b/lisp/gnus-logic.el
@@ -145,7 +145,7 @@
(let* ((type (or type 's))
(case-fold-search (not (eq (downcase (symbol-name type))
(symbol-name type))))
- (header (aref gnus-advanced-headers index)))
+ (header (or (aref gnus-advanced-headers index) "")))
(cond
((memq type '(r R regexp Regexp))
(string-match match header))
diff --git a/lisp/gnus-mh.el b/lisp/gnus-mh.el
index f737712..a73e90b 100644
--- a/lisp/gnus-mh.el
+++ b/lisp/gnus-mh.el
@@ -67,7 +67,11 @@ Optional argument FOLDER specifies folder name."
t))))
(errbuf (gnus-get-buffer-create " *Gnus rcvstore*"))
;; Find the rcvstore program.
- (exec-path (if mh-lib (cons mh-lib exec-path) exec-path)))
+ (exec-path (cond
+ ((and (boundp 'mh-lib-progs) mh-lib-progs)
+ (cons mh-lib-progs exec-path))
+ (mh-lib (cons mh-lib exec-path))
+ (t exec-path))))
(with-current-buffer gnus-original-article-buffer
(save-restriction
(widen)
diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el
index 85c91e3..8116cd2 100644
--- a/lisp/gnus-score.el
+++ b/lisp/gnus-score.el
@@ -1673,204 +1673,211 @@ score in GNUS-NEWSGROUP-SCORED by SCORE."
nil)
(defun gnus-score-body (scores header now expire &optional trace)
- (save-excursion
- (setq gnus-scores-articles
- (sort gnus-scores-articles
- (lambda (a1 a2)
- (< (mail-header-number (car a1))
- (mail-header-number (car a2))))))
- (set-buffer nntp-server-buffer)
- (save-restriction
- (let* ((buffer-read-only nil)
- (articles gnus-scores-articles)
- (all-scores scores)
- (request-func (cond ((string= "head" header)
- 'gnus-request-head)
- ((string= "body" header)
- 'gnus-request-body)
- (t 'gnus-request-article)))
- entries alist ofunc article last)
- (when articles
- (setq last (mail-header-number (caar (last articles))))
+ (if gnus-agent-fetching
+ nil
+ (save-excursion
+ (setq gnus-scores-articles
+ (sort gnus-scores-articles
+ (lambda (a1 a2)
+ (< (mail-header-number (car a1))
+ (mail-header-number (car a2))))))
+ (set-buffer nntp-server-buffer)
+ (save-restriction
+ (let* ((buffer-read-only nil)
+ (articles gnus-scores-articles)
+ (all-scores scores)
+ (request-func (cond ((string= "head" header)
+ 'gnus-request-head)
+ ((string= "body" header)
+ 'gnus-request-body)
+ (t 'gnus-request-article)))
+ entries alist ofunc article last)
+ (when articles
+ (setq last (mail-header-number (caar (last articles))))
;; Not all backends support partial fetching. In that case,
- ;; we just fetch the entire article.
- (unless (gnus-check-backend-function
- (and (string-match "^gnus-" (symbol-name request-func))
- (intern (substring (symbol-name request-func)
- (match-end 0))))
- gnus-newsgroup-name)
- (setq ofunc request-func)
- (setq request-func 'gnus-request-article))
- (while articles
- (setq article (mail-header-number (caar articles)))
- (gnus-message 7 "Scoring article %s of %s..." article last)
- (widen)
- (when (funcall request-func article gnus-newsgroup-name)
- (goto-char (point-min))
- ;; If just parts of the article is to be searched, but the
- ;; backend didn't support partial fetching, we just narrow
- ;; to the relevant parts.
- (when ofunc
- (if (eq ofunc 'gnus-request-head)
+ ;; we just fetch the entire article.
+ (unless (gnus-check-backend-function
+ (and (string-match "^gnus-" (symbol-name request-func))
+ (intern (substring (symbol-name request-func)
+ (match-end 0))))
+ gnus-newsgroup-name)
+ (setq ofunc request-func)
+ (setq request-func 'gnus-request-article))
+ (while articles
+ (setq article (mail-header-number (caar articles)))
+ (gnus-message 7 "Scoring article %s of %s..." article last)
+ (widen)
+ (when (funcall request-func article gnus-newsgroup-name)
+ (goto-char (point-min))
+ ;; If just parts of the article is to be searched, but the
+ ;; backend didn't support partial fetching, we just narrow
+ ;; to the relevant parts.
+ (when ofunc
+ (if (eq ofunc 'gnus-request-head)
+ (narrow-to-region
+ (point)
+ (or (search-forward "\n\n" nil t) (point-max)))
(narrow-to-region
- (point)
- (or (search-forward "\n\n" nil t) (point-max)))
- (narrow-to-region
- (or (search-forward "\n\n" nil t) (point))
- (point-max))))
- (setq scores all-scores)
- ;; Find matches.
- (while scores
- (setq alist (pop scores)
- entries (assoc header alist))
- (while (cdr entries) ;First entry is the header index.
- (let* ((rest (cdr entries))
- (kill (car rest))
- (match (nth 0 kill))
- (type (or (nth 3 kill) 's))
- (score (or (nth 1 kill)
- gnus-score-interactive-default-score))
- (date (nth 2 kill))
- (found nil)
- (case-fold-search
- (not (or (eq type 'R) (eq type 'S)
- (eq type 'Regexp) (eq type 'String))))
- (search-func
- (cond ((or (eq type 'r) (eq type 'R)
- (eq type 'regexp) (eq type 'Regexp))
- 're-search-forward)
- ((or (eq type 's) (eq type 'S)
- (eq type 'string) (eq type 'String))
- 'search-forward)
- (t
- (error "Invalid match type: %s" type)))))
- (goto-char (point-min))
- (when (funcall search-func match nil t)
- ;; Found a match, update scores.
- (setcdr (car articles) (+ score (cdar articles)))
- (setq found t)
- (when trace
- (push
- (cons (car-safe (rassq alist gnus-score-cache)) kill)
- gnus-score-trace)))
- ;; Update expire date
- (unless trace
- (cond
- ((null date)) ;Permanent entry.
- ((and found gnus-update-score-entry-dates)
- ;; Match, update date.
- (gnus-score-set 'touched '(t) alist)
- (setcar (nthcdr 2 kill) now))
- ((and expire (< date expire)) ;Old entry, remove.
- (gnus-score-set 'touched '(t) alist)
- (setcdr entries (cdr rest))
- (setq rest entries))))
- (setq entries rest)))))
- (setq articles (cdr articles)))))))
- nil)
+ (or (search-forward "\n\n" nil t) (point))
+ (point-max))))
+ (setq scores all-scores)
+ ;; Find matches.
+ (while scores
+ (setq alist (pop scores)
+ entries (assoc header alist))
+ (while (cdr entries) ;First entry is the header index.
+ (let* ((rest (cdr entries))
+ (kill (car rest))
+ (match (nth 0 kill))
+ (type (or (nth 3 kill) 's))
+ (score (or (nth 1 kill)
+ gnus-score-interactive-default-score))
+ (date (nth 2 kill))
+ (found nil)
+ (case-fold-search
+ (not (or (eq type 'R) (eq type 'S)
+ (eq type 'Regexp) (eq type 'String))))
+ (search-func
+ (cond ((or (eq type 'r) (eq type 'R)
+ (eq type 'regexp) (eq type 'Regexp))
+ 're-search-forward)
+ ((or (eq type 's) (eq type 'S)
+ (eq type 'string) (eq type 'String))
+ 'search-forward)
+ (t
+ (error "Invalid match type: %s" type)))))
+ (goto-char (point-min))
+ (when (funcall search-func match nil t)
+ ;; Found a match, update scores.
+ (setcdr (car articles) (+ score (cdar articles)))
+ (setq found t)
+ (when trace
+ (push
+ (cons (car-safe (rassq alist gnus-score-cache)) kill)
+ gnus-score-trace)))
+ ;; Update expire date
+ (unless trace
+ (cond
+ ((null date)) ;Permanent entry.
+ ((and found gnus-update-score-entry-dates)
+ ;; Match, update date.
+ (gnus-score-set 'touched '(t) alist)
+ (setcar (nthcdr 2 kill) now))
+ ((and expire (< date expire)) ;Old entry, remove.
+ (gnus-score-set 'touched '(t) alist)
+ (setcdr entries (cdr rest))
+ (setq rest entries))))
+ (setq entries rest)))))
+ (setq articles (cdr articles)))))))
+ nil))
(defun gnus-score-thread (scores header now expire &optional trace)
(gnus-score-followup scores header now expire trace t))
(defun gnus-score-followup (scores header now expire &optional trace thread)
- ;; Insert the unique article headers in the buffer.
- (let ((gnus-score-index (nth 1 (assoc header gnus-header-index)))
- (current-score-file gnus-current-score-file)
- (all-scores scores)
- ;; gnus-score-index is used as a free variable.
- alike last this art entries alist articles
- new news)
-
- ;; Change score file to the adaptive score file. All entries that
- ;; this function makes will be put into this file.
- (save-excursion
- (set-buffer gnus-summary-buffer)
- (gnus-score-load-file
- (or gnus-newsgroup-adaptive-score-file
- (gnus-score-file-name
- gnus-newsgroup-name gnus-adaptive-file-suffix))))
+ (if gnus-agent-fetching
+ ;; FIXME: It seems doable in fetching mode.
+ nil
+ ;; Insert the unique article headers in the buffer.
+ (let ((gnus-score-index (nth 1 (assoc header gnus-header-index)))
+ (current-score-file gnus-current-score-file)
+ (all-scores scores)
+ ;; gnus-score-index is used as a free variable.
+ alike last this art entries alist articles
+ new news)
+
+ ;; Change score file to the adaptive score file. All entries that
+ ;; this function makes will be put into this file.
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ (gnus-score-load-file
+ (or gnus-newsgroup-adaptive-score-file
+ (gnus-score-file-name
+ gnus-newsgroup-name gnus-adaptive-file-suffix))))
- (setq gnus-scores-articles (sort gnus-scores-articles 'gnus-score-string<)
- articles gnus-scores-articles)
+ (setq gnus-scores-articles (sort gnus-scores-articles
+ 'gnus-score-string<)
+ articles gnus-scores-articles)
- (erase-buffer)
- (while articles
- (setq art (car articles)
- this (aref (car art) gnus-score-index)
- articles (cdr articles))
- (if (equal last this)
- (push art alike)
- (when last
- (insert last ?\n)
- (put-text-property (1- (point)) (point) 'articles alike))
- (setq alike (list art)
- last this)))
- (when last ; Bwadr, duplicate code.
- (insert last ?\n)
- (put-text-property (1- (point)) (point) 'articles alike))
-
- ;; Find matches.
- (while scores
- (setq alist (car scores)
- scores (cdr scores)
- entries (assoc header alist))
- (while (cdr entries) ;First entry is the header index.
- (let* ((rest (cdr entries))
- (kill (car rest))
- (match (nth 0 kill))
- (type (or (nth 3 kill) 's))
- (score (or (nth 1 kill) gnus-score-interactive-default-score))
- (date (nth 2 kill))
- (found nil)
- (mt (aref (symbol-name type) 0))
- (case-fold-search
- (not (or (= mt ?R) (= mt ?S) (= mt ?E) (= mt ?F))))
- (dmt (downcase mt))
- (search-func
- (cond ((= dmt ?r) 're-search-forward)
- ((or (= dmt ?e) (= dmt ?s) (= dmt ?f)) 'search-forward)
- (t (error "Invalid match type: %s" type))))
- arts art)
- (goto-char (point-min))
- (if (= dmt ?e)
+ (erase-buffer)
+ (while articles
+ (setq art (car articles)
+ this (aref (car art) gnus-score-index)
+ articles (cdr articles))
+ (if (equal last this)
+ (push art alike)
+ (when last
+ (insert last ?\n)
+ (put-text-property (1- (point)) (point) 'articles alike))
+ (setq alike (list art)
+ last this)))
+ (when last ; Bwadr, duplicate code.
+ (insert last ?\n)
+ (put-text-property (1- (point)) (point) 'articles alike))
+
+ ;; Find matches.
+ (while scores
+ (setq alist (car scores)
+ scores (cdr scores)
+ entries (assoc header alist))
+ (while (cdr entries) ;First entry is the header index.
+ (let* ((rest (cdr entries))
+ (kill (car rest))
+ (match (nth 0 kill))
+ (type (or (nth 3 kill) 's))
+ (score (or (nth 1 kill) gnus-score-interactive-default-score))
+ (date (nth 2 kill))
+ (found nil)
+ (mt (aref (symbol-name type) 0))
+ (case-fold-search
+ (not (or (= mt ?R) (= mt ?S) (= mt ?E) (= mt ?F))))
+ (dmt (downcase mt))
+ (search-func
+ (cond ((= dmt ?r) 're-search-forward)
+ ((or (= dmt ?e) (= dmt ?s) (= dmt ?f)) 'search-forward)
+ (t (error "Invalid match type: %s" type))))
+ arts art)
+ (goto-char (point-min))
+ (if (= dmt ?e)
+ (while (funcall search-func match nil t)
+ (and (= (progn (beginning-of-line) (point))
+ (match-beginning 0))
+ (= (progn (end-of-line) (point))
+ (match-end 0))
+ (progn
+ (setq found (setq arts (get-text-property
+ (point) 'articles)))
+ ;; Found a match, update scores.
+ (while arts
+ (setq art (car arts)
+ arts (cdr arts))
+ (gnus-score-add-followups
+ (car art) score all-scores thread))))
+ (end-of-line))
(while (funcall search-func match nil t)
- (and (= (progn (beginning-of-line) (point))
- (match-beginning 0))
- (= (progn (end-of-line) (point))
- (match-end 0))
- (progn
- (setq found (setq arts (get-text-property
- (point) 'articles)))
- ;; Found a match, update scores.
- (while arts
- (setq art (car arts)
- arts (cdr arts))
- (gnus-score-add-followups
- (car art) score all-scores thread))))
- (end-of-line))
- (while (funcall search-func match nil t)
- (end-of-line)
- (setq found (setq arts (get-text-property (point) 'articles)))
- ;; Found a match, update scores.
- (while (setq art (pop arts))
- (when (setq new (gnus-score-add-followups
- (car art) score all-scores thread))
- (push new news)))))
- ;; Update expire date
- (cond ((null date)) ;Permanent entry.
- ((and found gnus-update-score-entry-dates) ;Match, update date.
- (gnus-score-set 'touched '(t) alist)
- (setcar (nthcdr 2 kill) now))
- ((and expire (< date expire)) ;Old entry, remove.
- (gnus-score-set 'touched '(t) alist)
- (setcdr entries (cdr rest))
- (setq rest entries)))
- (setq entries rest))))
- ;; We change the score file back to the previous one.
- (save-excursion
- (set-buffer gnus-summary-buffer)
- (gnus-score-load-file current-score-file))
- (list (cons "references" news))))
+ (end-of-line)
+ (setq found (setq arts (get-text-property (point) 'articles)))
+ ;; Found a match, update scores.
+ (while (setq art (pop arts))
+ (when (setq new (gnus-score-add-followups
+ (car art) score all-scores thread))
+ (push new news)))))
+ ;; Update expire date
+ (cond ((null date)) ;Permanent entry.
+ ((and found gnus-update-score-entry-dates)
+ ;Match, update date.
+ (gnus-score-set 'touched '(t) alist)
+ (setcar (nthcdr 2 kill) now))
+ ((and expire (< date expire)) ;Old entry, remove.
+ (gnus-score-set 'touched '(t) alist)
+ (setcdr entries (cdr rest))
+ (setq rest entries)))
+ (setq entries rest))))
+ ;; We change the score file back to the previous one.
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ (gnus-score-load-file current-score-file))
+ (list (cons "references" news)))))
(defun gnus-score-add-followups (header score scores &optional thread)
"Add a score entry to the adapt file."
diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el
index 552d981..ff2802e 100644
--- a/lisp/gnus-spec.el
+++ b/lisp/gnus-spec.el
@@ -386,7 +386,7 @@ by `gnus-xmas-redefine'."
;; This function parses the FORMAT string with the help of the
;; SPEC-ALIST and returns a list that can be eval'ed to return a
;; string.
- (let ((xemacs-mule-p (and gnus-xemacs (featurep 'mule)))
+ (let ((xemacs-mule-p (and (featurep 'xemacs) (featurep 'mule)))
max-width
spec flist fstring elem result dontinsert user-defined
type value pad-width spec-beg cut-width ignore-value
@@ -578,7 +578,7 @@ If PROPS, insert the result."
;; Under XEmacs, it's (funcall #)
(not (and (eq 'funcall (car form))
(byte-code-function-p (cadr form)))))
- (fset 'gnus-tmp-func `(lambda () ,form))
+ (defalias 'gnus-tmp-func `(lambda () ,form))
(byte-compile 'gnus-tmp-func)
(setq compiled-function (gnus-byte-code 'gnus-tmp-func))
(set (intern (format "gnus-%s-line-format-spec" type))
diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el
index 2d2acd1..c4df151 100644
--- a/lisp/gnus-start.el
+++ b/lisp/gnus-start.el
@@ -699,7 +699,7 @@ prompt the user for the name of an NNTP server to use."
(when gnus-simple-splash
(setq gnus-simple-splash nil)
(cond
- (gnus-xemacs
+ ((featurep 'xemacs)
(gnus-xmas-splash))
((and (eq window-system 'x)
(= (frame-height) (1+ (window-height))))
@@ -2767,7 +2767,7 @@ The backup file \".newsrc.eld_\" will be created before re-reading."
(let ((str (buffer-substring
(point) (progn (end-of-line) (point))))
(coding
- (and (or gnus-xemacs
+ (and (or (featurep 'xemacs)
(and (boundp 'enable-multibyte-characters)
enable-multibyte-characters))
(fboundp 'gnus-mule-get-coding-system)
diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el
index 1246317..46f283e 100644
--- a/lisp/gnus-sum.el
+++ b/lisp/gnus-sum.el
@@ -49,6 +49,7 @@
(autoload 'pgg-verify-region "pgg" nil t))
(autoload 'gnus-summary-limit-include-cached "gnus-cache" nil t)
+(autoload 'gnus-cache-write-active "gnus-cache")
(autoload 'gnus-set-summary-default-charset "gnus-i18n" nil t)
(defcustom gnus-kill-summary-on-exit t
diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el
index 439dda0..44529b2 100644
--- a/lisp/gnus-util.el
+++ b/lisp/gnus-util.el
@@ -483,14 +483,6 @@ If N, return the Nth ancestor instead."
(file-name-nondirectory file))))
(copy-file file to))
-(defun gnus-kill-all-overlays ()
- "Delete all overlays in the current buffer."
- (let* ((overlayss (overlay-lists))
- (buffer-read-only nil)
- (overlays (delq nil (nconc (car overlayss) (cdr overlayss)))))
- (while overlays
- (delete-overlay (pop overlays)))))
-
(defvar gnus-work-buffer " *gnus work*")
(defun gnus-set-work-buffer ()
diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el
index a043b1d..c179dbd 100644
--- a/lisp/gnus-xmas.el
+++ b/lisp/gnus-xmas.el
@@ -407,26 +407,28 @@ call it with the value of the `gnus-data' text property."
(cond
((fboundp 'char-or-char-int-p)
;; Handle both types of marks for XEmacs-20.x.
- (fset 'gnus-characterp 'char-or-char-int-p))
+ (defalias 'gnus-characterp 'char-or-char-int-p))
;; V19 of XEmacs, probably.
(t
- (fset 'gnus-characterp 'characterp)))
-
- (fset 'gnus-make-overlay 'make-extent)
- (fset 'gnus-delete-overlay 'delete-extent)
- (fset 'gnus-overlay-put 'set-extent-property)
- (fset 'gnus-move-overlay 'gnus-xmas-move-overlay)
- (fset 'gnus-overlay-end 'extent-end-position)
- (fset 'gnus-kill-all-overlays 'gnus-xmas-kill-all-overlays)
- (fset 'gnus-extent-detached-p 'extent-detached-p)
- (fset 'gnus-add-text-properties 'gnus-xmas-add-text-properties)
- (fset 'gnus-put-text-property 'gnus-xmas-put-text-property)
- (fset 'gnus-deactivate-mark 'ignore)
- (fset 'gnus-window-edges 'window-pixel-edges)
+ (defalias 'gnus-characterp 'characterp)))
+
+ (defalias 'gnus-make-overlay 'make-extent)
+ (defalias 'gnus-delete-overlay 'delete-extent)
+ (defalias 'gnus-overlay-put 'set-extent-property)
+ (defalias 'gnus-move-overlay 'gnus-xmas-move-overlay)
+ (defalias 'gnus-overlay-buffer 'extent-object)
+ (defalias 'gnus-overlay-start 'extent-start-position)
+ (defalias 'gnus-overlay-end 'extent-end-position)
+ (defalias 'gnus-kill-all-overlays 'gnus-xmas-kill-all-overlays)
+ (defalias 'gnus-extent-detached-p 'extent-detached-p)
+ (defalias 'gnus-add-text-properties 'gnus-xmas-add-text-properties)
+ (defalias 'gnus-put-text-property 'gnus-xmas-put-text-property)
+ (defalias 'gnus-deactivate-mark 'ignore)
+ (defalias 'gnus-window-edges 'window-pixel-edges)
(if (and (<= emacs-major-version 19)
(< emacs-minor-version 14))
- (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
+ (defalias 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
(when (fboundp 'turn-off-scroll-in-place)
(add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place))
@@ -443,34 +445,34 @@ call it with the value of the `gnus-data' text property."
(list 'funcall fval)
(cons 'progn (cdr (cdr fval))))))
- (fset 'gnus-x-color-values
- (if (fboundp 'x-color-values)
- 'x-color-values
- (lambda (color)
- (color-instance-rgb-components
- (make-color-instance color))))))
+ (defalias 'gnus-x-color-values
+ (if (fboundp 'x-color-values)
+ 'x-color-values
+ (lambda (color)
+ (color-instance-rgb-components
+ (make-color-instance color))))))
(defun gnus-xmas-redefine ()
"Redefine lots of Gnus functions for XEmacs."
- (fset 'gnus-summary-set-display-table 'gnus-xmas-summary-set-display-table)
- (fset 'gnus-visual-turn-off-edit-menu 'identity)
- (fset 'gnus-summary-recenter 'gnus-xmas-summary-recenter)
- (fset 'gnus-extent-start-open 'gnus-xmas-extent-start-open)
- (fset 'gnus-article-push-button 'gnus-xmas-article-push-button)
- (fset 'gnus-window-top-edge 'gnus-xmas-window-top-edge)
- (fset 'gnus-read-event-char 'gnus-xmas-read-event-char)
- (fset 'gnus-group-startup-message 'gnus-xmas-group-startup-message)
- (fset 'gnus-tree-minimize 'gnus-xmas-tree-minimize)
- (fset 'gnus-appt-select-lowest-window
+ (defalias 'gnus-summary-set-display-table 'gnus-xmas-summary-set-display-table)
+ (defalias 'gnus-visual-turn-off-edit-menu 'identity)
+ (defalias 'gnus-summary-recenter 'gnus-xmas-summary-recenter)
+ (defalias 'gnus-extent-start-open 'gnus-xmas-extent-start-open)
+ (defalias 'gnus-article-push-button 'gnus-xmas-article-push-button)
+ (defalias 'gnus-window-top-edge 'gnus-xmas-window-top-edge)
+ (defalias 'gnus-read-event-char 'gnus-xmas-read-event-char)
+ (defalias 'gnus-group-startup-message 'gnus-xmas-group-startup-message)
+ (defalias 'gnus-tree-minimize 'gnus-xmas-tree-minimize)
+ (defalias 'gnus-appt-select-lowest-window
'gnus-xmas-appt-select-lowest-window)
- (fset 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names)
- (fset 'gnus-character-to-event 'character-to-event)
- (fset 'gnus-mode-line-buffer-identification
+ (defalias 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names)
+ (defalias 'gnus-character-to-event 'character-to-event)
+ (defalias 'gnus-mode-line-buffer-identification
'gnus-xmas-mode-line-buffer-identification)
- (fset 'gnus-key-press-event-p 'key-press-event-p)
- (fset 'gnus-region-active-p 'region-active-p)
- (fset 'gnus-annotation-in-region-p 'gnus-xmas-annotation-in-region-p)
- (fset 'gnus-mime-button-menu 'gnus-xmas-mime-button-menu)
+ (defalias 'gnus-key-press-event-p 'key-press-event-p)
+ (defalias 'gnus-region-active-p 'region-active-p)
+ (defalias 'gnus-annotation-in-region-p 'gnus-xmas-annotation-in-region-p)
+ (defalias 'gnus-mime-button-menu 'gnus-xmas-mime-button-menu)
(add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add)
(add-hook 'gnus-summary-mode-hook 'gnus-xmas-summary-menu-add)
diff --git a/lisp/gnus.el b/lisp/gnus.el
index 6e8f162..bcefb29 100644
--- a/lisp/gnus.el
+++ b/lisp/gnus.el
@@ -276,6 +276,8 @@ be set in `.emacs' instead."
(defalias 'gnus-delete-overlay 'delete-overlay)
(defalias 'gnus-overlay-put 'overlay-put)
(defalias 'gnus-move-overlay 'move-overlay)
+ (defalias 'gnus-overlay-buffer 'overlay-buffer)
+ (defalias 'gnus-overlay-start 'overlay-start)
(defalias 'gnus-overlay-end 'overlay-end)
(defalias 'gnus-extent-detached-p 'ignore)
(defalias 'gnus-extent-start-open 'ignore)
@@ -1540,6 +1542,9 @@ If nil, no default charset is assumed when posting."
(defvar gnus-agent nil
"Whether we want to use the Gnus agent or not.")
+(defvar gnus-agent-fetching nil
+ "Whether Gnus agent is in fetching mode.")
+
(defvar gnus-command-method nil
"Dynamically bound variable that says what the current backend is.")
diff --git a/lisp/lpath.el b/lisp/lpath.el
index 916b108..e3baffc 100644
--- a/lisp/lpath.el
+++ b/lisp/lpath.el
@@ -11,106 +11,97 @@
(defun maybe-fbind (args)
(while args
(or (fboundp (car args))
- (fset (car args) 'ignore))
+ (defalias (car args) 'ignore))
(setq args (cdr args))))
(defun maybe-bind (args)
(mapcar (lambda (var) (unless (boundp var) (set var nil))) args))
+(maybe-fbind '(babel-fetch
+ babel-wash create-image decode-coding-string display-graphic-p
+ find-image font-create-object gnus-mule-get-coding-system
+ image-size image-type-available-p insert-image
+ mail-aliases-setup mm-copy-tree
+ mule-write-region-no-coding-system put-image
+ rmail-select-summary rmail-summary-exists rmail-update-summary
+ sc-cite-regexp set-font-family set-font-size temp-directory
+ url-view-url vcard-pretty-print
+ w3-coding-system-for-mime-charset w3-prepare-buffer w3-region
+ widget-make-intangible x-defined-colors))
+
+(maybe-bind '(adaptive-fill-first-line-regexp
+ adaptive-fill-regexp babel-history babel-translations
+ display-time-mail-function imap-password mail-mode-hook
+ url-current-callback-func url-be-asynchronous
+ url-current-callback-data url-working-buffer
+ url-current-mime-headers w3-meta-charset-content-type-regexp
+ w3-meta-content-type-charset-regexp))
+
(if (featurep 'xemacs)
(progn
(defvar track-mouse nil)
- (maybe-fbind '(posn-point
- event-start x-popup-menu
- facemenu-get-face window-at coordinates-in-window-p
- easy-menu-create-keymaps
- read-event internal-find-face internal-next-face-id
- make-face-internal set-frame-face-alist frame-face-alist
- facemenu-add-new-face make-face-x-resource-internal
- set-font-size set-font-family posn-window
- run-with-idle-timer mouse-minibuffer-check window-edges
- event-click-count track-mouse read-event mouse-movement-p
- event-end mouse-scroll-subr overlay-lists delete-overlay
- set-face-stipple mail-abbrevs-setup
- make-char-table set-char-table-range font-create-object
- x-color-values widget-make-intangible error-message-string
- w3-form-encode-xwfu gnus-mule-get-coding-system
- decode-coding-string mail-aliases-setup
- url-view-url w3-prepare-buffer
- set-buffer-multibyte
- find-non-ascii-charset-region char-charset
- find-charset-region
- find-coding-systems-region get-charset-property
- coding-system-get w3-region
- w3-coding-system-for-mime-charset
- rmail-summary-exists rmail-select-summary
- 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
- put-image create-image display-graphic-p
- find-image insert-image image-size
- make-overlay overlay-put overlay-buffer overlay-start
- overlay-get overlay-end make-symbolic-link))
- (maybe-bind '(global-face-data
- mark-active transient-mark-mode mouse-selection-click-count
- mouse-selection-click-count-buffer buffer-display-table
- font-lock-defaults user-full-name user-login-name
- gnus-newsgroup-name gnus-article-x-face-too-ugly
+ (maybe-fbind '(char-charset
+ coding-system-get compute-motion coordinates-in-window-p
+ delete-overlay easy-menu-create-keymaps
+ error-message-string event-click-count event-end
+ event-start facemenu-add-new-face facemenu-get-face
+ find-charset-region find-coding-systems-for-charsets
+ find-coding-systems-region find-non-ascii-charset-region
+ frame-face-alist get-charset-property internal-find-face
+ internal-next-face-id mail-abbrevs-setup make-char-table
+ make-face-internal make-face-x-resource-internal
+ make-overlay mouse-minibuffer-check mouse-movement-p
+ mouse-scroll-subr overlay-buffer overlay-end
+ overlay-get overlay-lists overlay-put
+ overlay-start posn-point posn-window
+ read-event read-event run-with-idle-timer
+ set-buffer-multibyte set-char-table-range
+ set-face-stipple set-frame-face-alist track-mouse
+ url-retrieve w3-form-encode-xwfu window-at
+ window-edges x-color-values x-popup-menu))
+ (maybe-bind '(buffer-display-table
+ buffer-file-coding-system font-lock-defaults
+ global-face-data gnus-article-x-face-too-ugly
gnus-newsgroup-charset gnus-newsgroup-emphasis-alist
- mail-mode-hook
- adaptive-fill-first-line-regexp adaptive-fill-regexp
- url-current-mime-headers buffer-file-coding-system
- w3-image-mappings url-current-mime-type
- w3-meta-content-type-charset-regexp
- w3-meta-charset-content-type-regexp
- url-current-callback-func url-current-callback-data
- url-be-asynchronous temporary-file-directory
- babel-translations babel-history
- display-time-mail-function imap-password
- )))
- (maybe-bind '(mail-mode-hook
- enable-multibyte-characters browse-url-browser-function
- adaptive-fill-first-line-regexp adaptive-fill-regexp
- url-current-mime-headers help-echo-owns-message
- w3-meta-content-type-charset-regexp
- w3-meta-charset-content-type-regexp
- babel-translations babel-history
- display-time-mail-function imap-password))
- (maybe-fbind '(color-instance-rgb-components
- temp-directory
- glyph-width annotation-glyph window-pixel-width glyph-height
- window-pixel-height map-extents
- make-color-instance color-instance-name specifier-instance
- device-type device-class get-popup-menu-response event-object
- add-submenu set-font-family
- font-create-object set-font-size frame-device find-face
- set-extent-property make-extent characterp display-error
- set-face-doc-string frame-property face-doc-string
- button-press-event-p next-command-event
- widget-make-intangible glyphp make-glyph set-glyph-image
- set-glyph-property event-glyph glyph-property event-point
- device-on-window-system-p make-gui-button Info-goto-node
- pp-to-string color-name
- gnus-mule-get-coding-system decode-coding-string
- mail-aliases-setup
- url-view-url w3-prepare-buffer
- char-int
- annotationp delete-annotation make-image-specifier
- make-annotation events-to-keys
- w3-do-setup w3-region
- w3-coding-system-for-mime-charset
- rmail-summary-exists rmail-select-summary rmail-update-summary
- url-generic-parse-url valid-image-instantiator-format-p
- babel-fetch babel-wash sc-cite-regexp
- put-image create-image display-graphic-p
- find-image insert-image image-size
- vcard-pretty-print image-type-available-p
- coding-system-get find-coding-system
- find-coding-systems-for-charsets find-coding-systems-region
- font-lock-set-defaults function-max-args get-charset-property
- make-symbolic-link map-extents smiley-encode-buffer
- toolbar-gnus)))
+ gnus-newsgroup-name mark-active
+ mouse-selection-click-count
+ mouse-selection-click-count-buffer
+ temporary-file-directory transient-mark-mode
+ url-current-mime-type
+ user-full-name user-login-name
+ w3-image-mappings)))
+ (maybe-bind '(browse-url-browser-function
+ enable-multibyte-characters help-echo-owns-message))
+ (maybe-fbind '(Info-goto-node
+ add-submenu annotation-glyph annotationp babel-as-string
+ button-press-event-p char-int characterp color-instance-name
+ color-instance-rgb-components color-name delete-annotation
+ device-class device-on-window-system-p device-type
+ display-error event-glyph event-object event-point
+ events-to-keys face-doc-string find-face frame-device
+ frame-property get-popup-menu-response glyph-height
+ glyph-property glyph-width glyphp make-annotation
+ make-color-instance make-extent make-glyph make-gui-button
+ make-image-specifier map-extents next-command-event
+ pp-to-string read-color set-extent-property
+ set-face-doc-string set-glyph-image set-glyph-property
+ specifier-instance url-generic-parse-url
+ valid-image-instantiator-format-p w3-do-setup
+ window-pixel-height window-pixel-width)))
+
+;; T-gnus.
+(if (featurep 'xemacs)
+ (maybe-bind '(mh-lib-progs))
+ ;; FSFmacs
+ (maybe-fbind '(charsetp
+ font-lock-set-defaults function-max-args
+ smiley-encode-buffer))
+ (if (boundp 'MULE)
+ (progn
+ (maybe-fbind '(coding-system-get
+ file-name-extension find-coding-systems-region
+ get-charset-property))
+ (maybe-bind '(mh-lib-progs)))))
(require 'custom)
diff --git a/lisp/message.el b/lisp/message.el
index 0610610..489c5f1 100644
--- a/lisp/message.el
+++ b/lisp/message.el
@@ -1255,8 +1255,16 @@ should be sent in several parts. If it is nil, the size is unlimited."
:type '(choice (const :tag "unlimited" nil)
(integer 1000000)))
+(defcustom message-alternative-emails nil
+ "A regexp to match the alternative email addresses.
+The first matched address (not primary one) is used in the From field."
+ :group 'message-headers
+ :type '(choice (const :tag "Always use primary" nil)
+ regexp))
+
;;; Internal variables.
+(defvar message-sending-message "Sending...")
(defvar message-buffer-list nil)
(defvar message-this-is-news nil)
(defvar message-this-is-mail nil)
@@ -2651,7 +2659,7 @@ It should typically alter the sending method in some way or other."
(put-text-property (point-min) (point-max) 'read-only nil))
(run-hooks 'message-send-hook)
(message-fix-before-sending)
- (message "Sending...")
+ (message message-sending-message)
(let ((message-encoding-buffer
(message-generate-new-buffer-clone-locals " message encoding"))
(message-edit-buffer (current-buffer))
@@ -4364,6 +4372,8 @@ than 988 characters long, and if they are not, trim them until they are."
(message-insert-signature)
(save-restriction
(message-narrow-to-headers)
+ (if message-alternative-emails
+ (message-use-alternative-email-as-from))
(run-hooks 'message-header-setup-hook))
(set-buffer-modified-p nil)
(setq buffer-undo-list nil)
@@ -5450,6 +5460,24 @@ regexp varstr."
(let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook))
(read-string prompt))))
+(defun message-use-alternative-email-as-from ()
+ (require 'mail-utils)
+ (let* ((fields '("To" "Cc"))
+ (emails
+ (split-string
+ (mail-strip-quoted-names
+ (mapconcat 'message-fetch-reply-field fields ","))
+ "[ \f\t\n\r\v,]+"))
+ email)
+ (while emails
+ (if (string-match message-alternative-emails (car emails))
+ (setq email (car emails)
+ emails nil))
+ (pop emails))
+ (unless (or (not email) (equal email user-mail-address))
+ (goto-char (point-max))
+ (insert "From: " email "\n"))))
+
(defun message-save-drafts ()
"Postponing the message."
(interactive)
diff --git a/lisp/messagexmas.el b/lisp/messagexmas.el
index b817f86..847f8ff 100644
--- a/lisp/messagexmas.el
+++ b/lisp/messagexmas.el
@@ -90,7 +90,8 @@ If it is non-nil, it must be a toolbar. The five valid values are
"Exchange point and mark, but allow for XEmacs' optional argument."
(exchange-point-and-mark message-xmas-dont-activate-region))
-(fset 'message-exchange-point-and-mark 'message-xmas-exchange-point-and-mark)
+(defalias 'message-exchange-point-and-mark
+ 'message-xmas-exchange-point-and-mark)
(defun message-xmas-maybe-fontify ()
(when (featurep 'font-lock)
@@ -114,8 +115,8 @@ If it is non-nil, it must be a toolbar. The five valid values are
(substring table (+ a 26) 255))))
(when (>= emacs-major-version 20)
- (fset 'message-make-caesar-translation-table
- 'message-xmas-make-caesar-translation-table))
+ (defalias 'message-make-caesar-translation-table
+ 'message-xmas-make-caesar-translation-table))
(add-hook 'message-mode-hook 'message-xmas-maybe-fontify)
diff --git a/lisp/mm-encode.el b/lisp/mm-encode.el
index 54e1bca..3ab5da1 100644
--- a/lisp/mm-encode.el
+++ b/lisp/mm-encode.el
@@ -24,6 +24,7 @@
;;; Code:
+(eval-when-compile (require 'cl))
(require 'mail-parse)
(require 'gnus-mailcap)
diff --git a/lisp/mm-util.el b/lisp/mm-util.el
index b8df4e1..e989047 100644
--- a/lisp/mm-util.el
+++ b/lisp/mm-util.el
@@ -229,6 +229,22 @@ used as the line break code type of the coding system."
(when (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte nil)))
+(defsubst mm-enable-multibyte-mule4 ()
+ "Enable multibyte in the current buffer.
+Only used in Emacs Mule 4."
+ (when (and (fboundp 'set-buffer-multibyte)
+ (boundp 'enable-multibyte-characters)
+ (default-value 'enable-multibyte-characters)
+ (not (charsetp 'eight-bit-control)))
+ (set-buffer-multibyte t)))
+
+(defsubst mm-disable-multibyte-mule4 ()
+ "Disable multibyte in the current buffer.
+Only used in Emacs Mule 4."
+ (when (and (fboundp 'set-buffer-multibyte)
+ (not (charsetp 'eight-bit-control)))
+ (set-buffer-multibyte nil)))
+
(defun mm-preferred-coding-system (charset)
;; A typo in some Emacs versions.
(or (get-charset-property charset 'prefered-coding-system)
@@ -342,7 +358,8 @@ See also `with-temp-file' and `with-output-to-string'."
"Evaluate FORMS there like `progn' in current buffer."
(let ((multibyte (make-symbol "multibyte")))
`(if (or (featurep 'xemacs)
- (not (fboundp 'set-buffer-multibyte)))
+ (not (fboundp 'set-buffer-multibyte))
+ (charsetp 'eight-bit-control)) ;; For Emacs Mule 4 only.
(progn
,@forms)
(let ((,multibyte (default-value 'enable-multibyte-characters)))
diff --git a/lisp/nndraft.el b/lisp/nndraft.el
index 5bee2cf..50b833c 100644
--- a/lisp/nndraft.el
+++ b/lisp/nndraft.el
@@ -35,7 +35,7 @@
(require 'nnoo)
(eval-when-compile
;; This is just to shut up the byte-compiler.
- (fset 'nndraft-request-group 'ignore))
+ (defalias 'nndraft-request-group 'ignore))
(nnoo-declare nndraft
nnmh)
diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el
index 33718e9..5917d11 100644
--- a/lisp/nnfolder.el
+++ b/lisp/nnfolder.el
@@ -48,10 +48,10 @@
;; style. -SLB
(defvoo nnfolder-ignore-active-file nil
- "If non-nil, the active file is ignores.
+ "If non-nil, the active file is ignored.
This causes nnfolder to do some extra work in order to determine the
true active ranges of an mbox file. Note that the active file is
-still saved, but it's values are not used. This costs some extra time
+still saved, but its values are not used. This costs some extra time
when scanning an mbox when opening it.")
(defvoo nnfolder-distrust-mbox nil
diff --git a/lisp/nnheaderxm.el b/lisp/nnheaderxm.el
index c77c11d..7ec301a 100644
--- a/lisp/nnheaderxm.el
+++ b/lisp/nnheaderxm.el
@@ -53,10 +53,10 @@
(message "%s(Y/n) Yes" prompt)
t))))
-(fset 'nnheader-run-at-time 'nnheader-xmas-run-at-time)
-(fset 'nnheader-cancel-timer 'delete-itimer)
-(fset 'nnheader-cancel-function-timers 'ignore)
-(fset 'nnheader-Y-or-n-p 'nnheader-xmas-Y-or-n-p)
+(defalias 'nnheader-run-at-time 'nnheader-xmas-run-at-time)
+(defalias 'nnheader-cancel-timer 'delete-itimer)
+(defalias 'nnheader-cancel-function-timers 'ignore)
+(defalias 'nnheader-Y-or-n-p 'nnheader-xmas-Y-or-n-p)
(provide 'nnheaderxm)
diff --git a/lisp/nnimap.el b/lisp/nnimap.el
index c0d3302..268168f 100644
--- a/lisp/nnimap.el
+++ b/lisp/nnimap.el
@@ -322,10 +322,26 @@ If SERVER is nil, uses the current server."
group (gnus-server-to-method
(format "nnimap:%s" server))))
(new-uidvalidity (imap-mailbox-get 'uidvalidity))
- (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity)))
+ (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity))
+ (dir (file-name-as-directory (expand-file-name nnimap-directory)))
+ (nameuid (nnheader-translate-file-chars
+ (concat nnimap-nov-file-name
+ (if (equal server "")
+ "unnamed"
+ server) "." group "." old-uidvalidity
+ nnimap-nov-file-name-suffix) t))
+ (file (if (or nnmail-use-long-file-names
+ (file-exists-p (expand-file-name nameuid dir)))
+ (expand-file-name nameuid dir)
+ (expand-file-name
+ (encode-coding-string
+ (nnheader-replace-chars-in-string nameuid ?. ?/)
+ nnmail-pathname-coding-system)
+ dir))))
(if old-uidvalidity
(if (not (equal old-uidvalidity new-uidvalidity))
- nil ;; uidvalidity clash
+ ;; uidvalidity clash
+ (gnus-delete-file file)
(gnus-group-set-parameter gnusgroup 'uidvalidity new-uidvalidity)
t)
(gnus-group-add-parameter gnusgroup (cons 'uidvalidity new-uidvalidity))
@@ -443,18 +459,48 @@ If EXAMINE is non-nil the group is selected read-only."
(defun nnimap-group-overview-filename (group server)
"Make pathname for GROUP on SERVER."
- (let ((dir (file-name-as-directory (expand-file-name nnimap-directory)))
- (file (nnheader-translate-file-chars
- (concat nnimap-nov-file-name
- (if (equal server "")
- "unnamed"
- server) "." group nnimap-nov-file-name-suffix) t)))
- (if (or nnmail-use-long-file-names
- (file-exists-p (concat dir file)))
- (concat dir file)
- (concat dir (encode-coding-string
- (nnheader-replace-chars-in-string file ?. ?/)
- nnmail-pathname-coding-system)))))
+ (let* ((dir (file-name-as-directory (expand-file-name nnimap-directory)))
+ (uidvalidity (gnus-group-get-parameter
+ (gnus-group-prefixed-name
+ group (gnus-server-to-method
+ (format "nnimap:%s" server)))
+ 'uidvalidity))
+ (name (nnheader-translate-file-chars
+ (concat nnimap-nov-file-name
+ (if (equal server "")
+ "unnamed"
+ server) "." group nnimap-nov-file-name-suffix) t))
+ (nameuid (nnheader-translate-file-chars
+ (concat nnimap-nov-file-name
+ (if (equal server "")
+ "unnamed"
+ server) "." group "." uidvalidity
+ nnimap-nov-file-name-suffix) t))
+ (oldfile (if (or nnmail-use-long-file-names
+ (file-exists-p (expand-file-name name dir)))
+ (expand-file-name name dir)
+ (expand-file-name
+ (encode-coding-string
+ (nnheader-replace-chars-in-string name ?. ?/)
+ nnmail-pathname-coding-system)
+ dir)))
+ (newfile (if (or nnmail-use-long-file-names
+ (file-exists-p (expand-file-name nameuid dir)))
+ (expand-file-name nameuid dir)
+ (expand-file-name
+ (encode-coding-string
+ (nnheader-replace-chars-in-string nameuid ?. ?/)
+ nnmail-pathname-coding-system)
+ dir))))
+ (when (and (file-exists-p oldfile) (not (file-exists-p newfile)))
+ (message "nnimap: Upgrading novcache filename...")
+ (sit-for 1)
+ (gnus-make-directory (file-name-directory newfile))
+ (unless (ignore-errors (rename-file oldfile newfile) t)
+ (if (ignore-errors (copy-file oldfile newfile) t)
+ (delete-file oldfile)
+ (error "Can't rename `%s' to `%s'" oldfile newfile))))
+ newfile))
(defun nnimap-retrieve-headers-from-file (group server)
(with-current-buffer nntp-server-buffer
diff --git a/lisp/nnshimbun.el b/lisp/nnshimbun.el
index 1400590..255d2ec 100644
--- a/lisp/nnshimbun.el
+++ b/lisp/nnshimbun.el
@@ -122,8 +122,8 @@
(index-url . nnshimbun-url)
(from-address . "zdnn@softbank.co.jp")
(make-contents . nnshimbun-make-html-contents)
- (contents-start . "\\(\\|[0-9]+年[0-9]+月[0-9]+日[^<]*[ \t\r\f\n]*[ \t\r\f\n]*[ \t\r\f\n]*\\(
\\)?\\)")
- (contents-end . "\\(\\|\\|<\\(b\\|strong\\)>\\[\\2>[^<]*<\\2>ZDNet/\\(JAPAN\\|USA\\)\\]\\(<[^>]+>\\)?\\2>\\)"))
+ (contents-start . "\\(\\|\\)")
+ (contents-end . "\\(\\|\\)"))
("mew"
(url . "http://www.mew.org/archive/")
(groups ,@(mapcar #'car nnshimbun-mew-groups))
diff --git a/lisp/nntp.el b/lisp/nntp.el
index e571061..5d7afc5 100644
--- a/lisp/nntp.el
+++ b/lisp/nntp.el
@@ -210,7 +210,8 @@ server there that you can connect to. See also
(defvoo nntp-connection-timeout nil
"*Number of seconds to wait before an nntp connection times out.
-If this variable is nil, which is the default, no timers are set.")
+If this variable is nil, which is the default, no timers are set.
+NOTE: This variable is never seen to work in FSF Emacs 20 and XEmacs 21.")
(defvoo nntp-prepare-post-hook nil
"*Hook run just before posting an article. It is supposed to be used for
@@ -964,6 +965,7 @@ password contained in '~/.nntp-authinfo'."
(error nil)
(quit
(message "Quit opening connection")
+ (nntp-kill-buffer pbuffer)
(signal 'quit nil)
nil))))
(when timer
diff --git a/lisp/nnweb.el b/lisp/nnweb.el
index e318ae4..7328882 100644
--- a/lisp/nnweb.el
+++ b/lisp/nnweb.el
@@ -350,9 +350,13 @@ and `altavista'.")
(setq url-current-callback-data data
url-be-asynchronous t
url-current-callback-func callback)
- (url-retrieve url))
+ (url-retrieve url nil))
(setq-default url-be-asynchronous old-asynch)))
+(if (fboundp 'url-retrieve-synchronously)
+ (defun nnweb-url-retrieve-asynch (url callback &rest data)
+ (url-retrieve url callback data)))
+
;;;
;;; DejaNews functions.
;;;
diff --git a/lisp/qp.el b/lisp/qp.el
index c55cb9e..24b0c70 100644
--- a/lisp/qp.el
+++ b/lisp/qp.el
@@ -92,9 +92,9 @@ If `mm-use-ultra-safe-encoding' is set, fold unconditionally and
encode lines starting with \"From\"."
(interactive "r")
(save-excursion
- (mm-with-unibyte-current-buffer
- (save-restriction
- (narrow-to-region from to)
+ (save-restriction
+ (narrow-to-region from to)
+ (mm-with-unibyte-current-buffer
;; (mm-encode-body)
;; Encode all the non-ascii and control characters.
(goto-char (point-min))
diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el
index 5e2eed4..63a6736 100644
--- a/lisp/rfc2047.el
+++ b/lisp/rfc2047.el
@@ -137,8 +137,7 @@ Should be called narrowed to the head of the message."
method (cdr elem))))
(cond
((eq method 'mime)
- (rfc2047-encode-region (point-min) (point-max))
- (rfc2047-fold-region (point-min) (point-max)))
+ (rfc2047-encode-region (point-min) (point-max)))
((eq method 'default)
(if (and (featurep 'mule)
mail-parse-charset)
@@ -166,83 +165,79 @@ Should be called narrowed to the head of the message."
(defun rfc2047-dissect-region (b e)
"Dissect the region between B and E into words."
- (let ((all-specials (concat ietf-drums-tspecials " \t\n\r"))
- (special-list (mapcar 'identity ietf-drums-tspecials))
- (blank-list '(? ?\t ?\n ?\r))
- words current cs state mail-parse-mule-charset)
+ (let ((word-chars "-A-Za-z0-9!*+/")
+ ;; Not using ietf-drums-specials-token makes life simple.
+ mail-parse-mule-charset
+ words point current
+ result word)
(save-restriction
(narrow-to-region b e)
(goto-char (point-min))
- (skip-chars-forward all-specials)
- (setq b (point))
+ (skip-chars-forward "\000-\177")
(while (not (eobp))
- (cond
- ((not state)
- (setq state 'word)
- (if (not (eq (setq cs (mm-charset-after)) 'ascii))
- (setq current cs))
- (setq b (point)))
- ((eq state 'blank)
- (cond
- ((memq (char-after) special-list)
- (setq state nil))
- ((memq (char-after) blank-list))
- (t
- (setq state 'word)
- (unless b
- (setq b (point)))
- (if (not (eq (setq cs (mm-charset-after)) 'ascii))
- (setq current cs)))))
- ((eq state 'word)
- (cond
- ((memq (char-after) special-list)
- (setq state nil)
- (push (list b (point) current) words)
- (setq current nil))
- ((memq (char-after) blank-list)
- (setq state 'blank)
- (if (not current)
- (setq b nil)
- (push (list b (point) current) words)
- (setq b (point))
- (setq current nil)))
- ((or (eq (setq cs (mm-charset-after)) 'ascii)
- (if current
- (eq current cs)
- (setq current cs))))
- (t
- (push (list b (point) current) words)
- (setq current cs)
- (setq b (point))))))
- (if state
- (forward-char)
- (skip-chars-forward all-specials)))
- (if (eq state 'word)
- (push (list b (point) current) words)))
- words))
+ (setq point (point))
+ (skip-chars-backward word-chars b)
+ (unless (eq b (point))
+ (push (cons (buffer-substring b (point)) nil) words))
+ (setq b (point))
+ (goto-char point)
+ (setq current (mm-charset-after))
+ (forward-char 1)
+ (skip-chars-forward word-chars)
+ (while (and (not (eobp))
+ (eq (mm-charset-after) current))
+ (forward-char 1)
+ (skip-chars-forward word-chars))
+ (unless (eq b (point))
+ (push (cons (buffer-substring b (point)) current) words))
+ (setq b (point))
+ (skip-chars-forward "\000-\177"))
+ (unless (eq b (point))
+ (push (cons (buffer-substring b (point)) nil) words)))
+ ;; merge adjacent words
+ (setq word (pop words))
+ (while word
+ (if (and (cdr word)
+ (caar words)
+ (not (cdar words))
+ (not (string-match "[^ \t]" (caar words))))
+ (if (eq (cdr (nth 1 words)) (cdr word))
+ (progn
+ (setq word (cons (concat
+ (car (nth 1 words)) (caar words)
+ (car word))
+ (cdr word)))
+ (pop words)
+ (pop words))
+ (push (cons (concat (caar words) (car word)) (cdr word))
+ result)
+ (pop words)
+ (setq word (pop words)))
+ (push word result)
+ (setq word (pop words))))
+ result))
(defun rfc2047-encode-region (b e)
"Encode all encodable words in REGION."
- (let ((words (rfc2047-dissect-region b e))
- beg end current word)
- (while (setq word (pop words))
- (if (and (eq (nth 2 word) current)
- (eq beg (nth 1 word)))
- (setq beg (nth 0 word))
- (when current
- (if (and (eq beg (nth 1 word)) (nth 2 word))
- (progn
- ;; There might be a bug in Emacs Mule.
- ;; A space must be inserted before encoding.
- (goto-char beg)
- (insert " ")
- (rfc2047-encode (1+ beg) (1+ end) current))
- (rfc2047-encode beg end current)))
- (setq current (nth 2 word)
- beg (nth 0 word)
- end (nth 1 word))))
- (when current
- (rfc2047-encode beg end current))))
+ (let ((words (rfc2047-dissect-region b e)) word)
+ (save-restriction
+ (narrow-to-region b e)
+ (delete-region (point-min) (point-max))
+ (while (setq word (pop words))
+ (if (not (cdr word))
+ (insert (car word))
+ (rfc2047-fold-region (gnus-point-at-bol) (point))
+ (goto-char (point-max))
+ (if (> (- (point) (save-restriction
+ (widen)
+ (gnus-point-at-bol))) 76)
+ (insert "\n "))
+ ;; Insert blank between encoded words
+ (if (eq (char-before) ?=) (insert " "))
+ (rfc2047-encode (point)
+ (progn (insert (car word)) (point))
+ (cdr word))))
+ (rfc2047-fold-region (point-min) (point-max)))))
(defun rfc2047-encode-string (string)
"Encode words in STRING."
@@ -290,22 +285,73 @@ Should be called narrowed to the head of the message."
(save-restriction
(narrow-to-region b e)
(goto-char (point-min))
- (let ((break nil))
+ (let ((break nil)
+ (bol (save-restriction
+ (widen)
+ (gnus-point-at-bol))))
(while (not (eobp))
- (cond
- ((memq (char-after) '(? ?\t))
- (setq break (point)))
- ((and (not break)
- (looking-at "=\\?"))
- (setq break (point)))
- ((and break
- (looking-at "\\?=")
- (> (- (point) (gnus-point-at-bol)) 76))
+ (when (and break (> (- (point) bol) 76))
(goto-char break)
(setq break nil)
- (insert "\n ")))
- (unless (eobp)
- (forward-char 1))))))
+ (insert "\n ")
+ (setq bol (1- (point)))
+ ;; Don't break before the first non-LWSP characters.
+ (skip-chars-forward " \t")
+ (forward-char 1))
+ (cond
+ ((eq (char-after) ?\n)
+ (forward-char 1)
+ (setq bol (point)
+ break nil)
+ (skip-chars-forward " \t")
+ (unless (or (eobp) (eq (char-after) ?\n))
+ (forward-char 1)))
+ ((eq (char-after) ?\r)
+ (forward-char 1))
+ ((memq (char-after) '(? ?\t))
+ (skip-chars-forward " \t")
+ (setq break (1- (point))))
+ ((not break)
+ (if (not (looking-at "=\\?"))
+ (if (eq (char-after) ?=)
+ (forward-char 1)
+ (skip-chars-forward "^ \t\n\r="))
+ (setq break (point))
+ (skip-chars-forward "^ \t\n\r")))
+ (t
+ (skip-chars-forward "^ \t\n\r"))))
+ (when (and break (> (- (point) bol) 76))
+ (goto-char break)
+ (setq break nil)
+ (insert "\n ")
+ (setq bol (1- (point)))
+ ;; Don't break before the first non-LWSP characters.
+ (skip-chars-forward " \t")
+ (forward-char 1)))))
+
+(defun rfc2047-unfold-region (b e)
+ "Fold the long lines in the region."
+ (save-restriction
+ (narrow-to-region b e)
+ (goto-char (point-min))
+ (let ((bol (save-restriction
+ (widen)
+ (gnus-point-at-bol)))
+ (eol (gnus-point-at-eol))
+ leading)
+ (forward-line 1)
+ (while (not (eobp))
+ (looking-at "[ \t]*")
+ (setq leading (- (match-end 0) (match-beginning 0)))
+ (if (< (- (gnus-point-at-eol) bol leading) 76)
+ (progn
+ (goto-char eol)
+ (delete-region eol (progn
+ (skip-chars-forward "[ \t\n\r]+")
+ (1- (point)))))
+ (setq bol (gnus-point-at-bol)))
+ (setq eol (gnus-point-at-eol))
+ (forward-line 1)))))
(defun rfc2047-b-encode-region (b e)
"Encode the header contained in REGION with the B encoding."
@@ -329,11 +375,14 @@ Should be called narrowed to the head of the message."
(subst-char-in-region (point-min) (point-max) ? ?_)
(setq alist nil))
(pop alist))
- (goto-char (point-min))
- (while (not (eobp))
- (goto-char (min (point-max) (+ 64 (point))))
+ (goto-char (1+ (point-min)))
+ (while (and (not (bobp)) (not (eobp)))
+ (goto-char (min (point-max) (save-restriction
+ (widen)
+ ;; THe QP encapsulation is about 20.
+ (+ 56 (gnus-point-at-bol)))))
(search-backward "=" (- (point) 2) t)
- (unless (eobp)
+ (unless (or (bobp) (eobp))
(insert "\n")))))))
;;;
@@ -376,7 +425,8 @@ Should be called narrowed to the head of the message."
mail-parse-charset
(not (eq mail-parse-charset 'us-ascii))
(not (eq mail-parse-charset 'gnus-decoded)))
- (mm-decode-coding-region b (point-max) mail-parse-charset))))))
+ (mm-decode-coding-region b (point-max) mail-parse-charset))
+ (rfc2047-unfold-region (point-min) (point-max))))))
(defun rfc2047-decode-string (string)
"Decode the quoted-printable-encoded STRING and return the results."
@@ -423,15 +473,17 @@ If your Emacs implementation can't decode CHARSET, it returns nil."
(when (and (eq cs 'ascii)
mail-parse-charset)
(setq cs mail-parse-charset))
- (mm-decode-coding-string
- (cond
- ((equal "B" encoding)
- (base64-decode-string string))
- ((equal "Q" encoding)
- (quoted-printable-decode-string
- (mm-replace-chars-in-string string ?_ ? )))
- (t (error "Invalid encoding: %s" encoding)))
- cs))))
+ (mm-with-unibyte-current-buffer
+ ;; In Emacs Mule 4, decoding UTF-8 should be in unibyte mode.
+ (mm-decode-coding-string
+ (cond
+ ((equal "B" encoding)
+ (base64-decode-string string))
+ ((equal "Q" encoding)
+ (quoted-printable-decode-string
+ (mm-replace-chars-in-string string ?_ ? )))
+ (t (error "Invalid encoding: %s" encoding)))
+ cs)))))
(provide 'rfc2047)
diff --git a/lisp/smiley-ems.el b/lisp/smiley-ems.el
index d8611c7..bffcbb3 100644
--- a/lisp/smiley-ems.el
+++ b/lisp/smiley-ems.el
@@ -73,7 +73,7 @@ rgexp to replace with IMAGE. IMAGE is the name of a PBM file in
(let* ((data-directory smiley-data-directory)
(image (find-image (list (list :type 'pbm
:file (nth 2 elt)
- :ascent 100)))))
+ :ascent 'center)))))
(if image
(push (list (car elt) (cadr elt) image)
smiley-cached-regexp-alist)))))
diff --git a/lisp/webmail.el b/lisp/webmail.el
index bac7664..cd8d77b 100644
--- a/lisp/webmail.el
+++ b/lisp/webmail.el
@@ -282,8 +282,8 @@
(if (gnus-buffer-live-p webmail-buffer)
(set-buffer webmail-buffer)
(setq webmail-buffer
- (mm-with-unibyte
- (nnheader-set-temp-buffer " *webmail*")))))
+ (nnheader-set-temp-buffer " *webmail*"))
+ (mm-disable-multibyte-mule4)))
(defvar url-package-name)
(defvar url-package-version)
diff --git a/texi/ChangeLog b/texi/ChangeLog
index 177d26d..a765f1e 100644
--- a/texi/ChangeLog
+++ b/texi/ChangeLog
@@ -1,3 +1,11 @@
+2000-10-07 16:50:14 ShengHuo ZHU
+
+ * Makefile.in: Use install-info.
+
+2000-10-06 14:38:27 ShengHuo ZHU
+
+ * message.texi (Message Headers): Add.
+
2000-10-04 09:23:49 ShengHuo ZHU
* gnus.texi (Article Hiding): Add.
diff --git a/texi/doclicense.texi b/texi/doclicense.texi
new file mode 100644
index 0000000..d580caf
--- /dev/null
+++ b/texi/doclicense.texi
@@ -0,0 +1,368 @@
+@c -*-texinfo-*-
+@node GNU Free Documentation License, Intro, Copying, Top
+
+@appendix GNU Free Documentation License
+@center Version 1.1, March 2000
+
+@display
+Copyright (C) 2000 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+@sp 1
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document ``free'' in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@sp 1
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The ``Document'', below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as ``you''.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+@sp 1
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+@sp 1
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+@sp 1
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.@*
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).@*
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.@*
+D. Preserve all the copyright notices of the Document.@*
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.@*
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.@*
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.@*
+H. Include an unaltered copy of this License.@*
+I. Preserve the section entitled ``History'', and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled ``History'' in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.@*
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the ``History'' section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.@*
+K. In any section entitled ``Acknowledgements'' or ``Dedications'',
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.@*
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.@*
+M. Delete any section entitled ``Endorsements''. Such a section
+ may not be included in the Modified Version.@*
+N. Do not retitle any existing section as ``Endorsements''
+ or to conflict in title with any Invariant Section.@*
+@sp 1
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+@sp 1
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled ``History''
+in the various original documents, forming one section entitled
+``History''; likewise combine any sections entitled ``Acknowledgements'',
+and any sections entitled ``Dedications''. You must delete all sections
+entitled ``Endorsements.''
+@sp 1
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+@sp 1
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an ``aggregate'', and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+@sp 1
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+@sp 1
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+@sp 1
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+@end enumerate
+
+@unnumberedsec ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being @var{list their titles}, with the
+ Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+If you have no Invariant Sections, write ``with no Invariant Sections''
+instead of saying which ones are invariant. If you have no
+Front-Cover Texts, write ``no Front-Cover Texts'' instead of
+``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff --git a/texi/emacs-mime.texi b/texi/emacs-mime.texi
index ac2bc8f..c8a2f46 100644
--- a/texi/emacs-mime.texi
+++ b/texi/emacs-mime.texi
@@ -22,15 +22,20 @@ Copyright (C) 1998,99,2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being none, with the Front-Cover texts being ``A GNU
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end ifnottex
@tex
@@ -50,11 +55,16 @@ any later version published by the Free Software Foundation; with the
Invariant Sections being none, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end titlepage
@page
@@ -696,8 +706,8 @@ image/*; gimp -8 %s
audio/wav; wavplayer %s
@end example
-This says that all image files should be displayed with @samp{xv}, and
-that realaudio files should be played by @samp{rvplayer}.
+This says that all image files should be displayed with @code{gimp}, and
+that realaudio files should be played by @code{rvplayer}.
The @code{mailcap} library parses this file, and provides functions for
matching types.
diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi
index 06b2572..07522a0 100644
--- a/texi/gnus-ja.texi
+++ b/texi/gnus-ja.texi
@@ -277,17 +277,17 @@ Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being none, with the Front-Cover texts being ``A GNU
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書
第 1.1 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更す
ることを許可する。変更不可部分は指定しない。「A GNU Manual」は表表紙テ
キスト、以下の (a) は裏表紙テキストである。この利用許諾契約書の複写は
-「GNU フリー文書利用許諾契約書」という章に含まれている。
+「Emacs manual」の「GNU フリー文書利用許諾契約書」という章に含まれている。
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
@@ -297,6 +297,16 @@ Software Foundation raise funds for GNU development.''
のように複製したり変更する自由がある。複製はフリーソフトウェア財団によっ
て出版された。(フリーソフトウェア財団は) GNU の開発のために必要な資金を
集めている。」
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+この文書は「GNU フリー文書利用許諾契約書」に基づいて配布された収集著作物
+の一部です。もしあなたがこの文書を収集著作物から分離して配布したいときは、
+契約書の第 6 項に記述されているように、文書に契約書の複写を付加すること
+によって、行なうことができます。
\newpage
\end{titlepage}
@end iflatex
@@ -312,17 +322,17 @@ Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being none, with the Front-Cover texts being ``A GNU
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書
第 1.1 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更す
ることを許可する。変更不可部分は指定しない。「A GNU Manual」は表表紙テ
キスト、以下の (a) は裏表紙テキストである。この利用許諾契約書の複写は
-「GNU フリー文書利用許諾契約書」という章に含まれている。
+「Emacs manual」の「GNU フリー文書利用許諾契約書」という章に含まれている。
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
@@ -332,6 +342,16 @@ Software Foundation raise funds for GNU development.''
のように複製したり変更する自由がある。複製はフリーソフトウェア財団によっ
て出版された。(フリーソフトウェア財団は) GNU の開発のために必要な資金を
集めている。」
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+この文書は「GNU フリー文書利用許諾契約書」に基づいて配布された収集著作物
+の一部です。もしあなたがこの文書を収集著作物から分離して配布したいときは、
+契約書の第 6 項に記述されているように、文書に契約書の複写を付加すること
+によって、行なうことができます。
@end ifnottex
@tex
@@ -346,27 +366,38 @@ Software Foundation raise funds for GNU development.''
@vskip 0pt plus 1filll
Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
-著作権表示とこの許可文がすべての複製に存在する限り、この説明書のまったく
-同一の複製を作り、配布することを許可する。
+この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書
+第 1.1 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更す
+ることを許可する。変更不可部分は指定しない。「A GNU Manual」は表表紙テ
+キスト、以下の (a) は裏表紙テキストである。この利用許諾契約書の複写は
+「Emacs manual」の「GNU フリー文書利用許諾契約書」という章に含まれている。
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
-同一複製の条件の下で、それによって得られた結果をこの許可文の表示と同一の
-条件のもとで配布する限り、この説明書の修正版の複製をし、配布することを許
-可する。
+(a) FSF の裏表紙テキスト:「あなたにはこの GNU Manual を GNU ソフトウェア
+のように複製したり変更する自由がある。複製はフリーソフトウェア財団によっ
+て出版された。(フリーソフトウェア財団は) GNU の開発のために必要な資金を
+集めている。」
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
-上記の修正版に関する条件の下で、この説明書の翻訳の複製を作り、配布するこ
-とを許可する。
+この文書は「GNU フリー文書利用許諾契約書」に基づいて配布された収集著作物
+の一部です。もしあなたがこの文書を収集著作物から分離して配布したいときは、
+契約書の第 6 項に記述されているように、文書に契約書の複写を付加すること
+によって、行なうことができます。
@end titlepage
@page
@@ -773,6 +804,7 @@ Scoring
* Reverse Scoring:: 古いものの子であるという問題は問題ではない
* Global Score Files:: 地をつかみ、耳を切り裂くスコアファイル
* Kill Files:: それらはまだここにありますが、無視する事ができる
+* Converting Kill Files:: 消去ファイルをスコアファイルに変換する
* GroupLens:: どれを読むのが好きかの予言を得る
* Advanced Scoring:: スコアの法則を作るために論理表現を使う
* Score Decays:: スコアを枯れていかせるのは役に立つ事もある
@@ -14470,6 +14502,7 @@ Gnus は概略バッファを作成する前に、現在のグループに適用されるどん
* Reverse Scoring:: 古いものの子であるという問題は問題ではない
* Global Score Files:: 地をつかみ、耳を切り裂くスコアファイル
* Kill Files:: それらはまだここにありますが、無視する事ができる
+* Converting Kill Files:: 消去ファイルをスコアファイルに変換する
* GroupLens:: どれを読むのが好きかの予言を得る
* Advanced Scoring:: スコアの法則を作るために論理表現を使う
* Score Decays:: スコアを枯れていかせるのは役に立つ事もある
@@ -15738,8 +15771,6 @@ GNUS 消去ファイルを編集するための二つの概略バッファ関数があります。
@end table
-@c The URL below is invalid and the code isn't on gnus.org.
-@ignore
@node Converting Kill Files
@section 消去ファイルの変換
@cindex kill files
@@ -15759,7 +15790,6 @@ GNUS 消去ファイルを編集するための二つの概略バッファ関数があります。
に @code{gnus-kill} 形式以外のものがたくさん含まれていれば、それらを手で
変換しなければなりません。あるいは単にそれらを、そのままにしておいてくだ
さい。Gnus は以前同様にそれらを使ってくれるでしょう。
-@end ignore
@node GroupLens
@section GroupLens
diff --git a/texi/gnus.texi b/texi/gnus.texi
index a7f7fe2..2df6fbd 100644
--- a/texi/gnus.texi
+++ b/texi/gnus.texi
@@ -277,15 +277,20 @@ Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being none, with the Front-Cover texts being ``A GNU
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
\newpage
\end{titlepage}
@end iflatex
@@ -303,11 +308,16 @@ any later version published by the Free Software Foundation; with the
Invariant Sections being none, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end ifnottex
@tex
@@ -321,17 +331,22 @@ Software Foundation raise funds for GNU development.''
@vskip 0pt plus 1filll
Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end titlepage
@page
@@ -725,6 +740,7 @@ Scoring
* Reverse Scoring:: That problem child of old is not problem.
* Global Score Files:: Earth-spanning, ear-splitting score files.
* Kill Files:: They are still here, but they can be ignored.
+* Converting Kill Files:: Translating kill files to score files.
* GroupLens:: Getting predictions on what you like to read.
* Advanced Scoring:: Using logical expressions to build score rules.
* Score Decays:: It can be useful to let scores wither away.
@@ -15004,6 +15020,7 @@ silently to help keep the sizes of the score files down.
* Reverse Scoring:: That problem child of old is not problem.
* Global Score Files:: Earth-spanning, ear-splitting score files.
* Kill Files:: They are still here, but they can be ignored.
+* Converting Kill Files:: Translating kill files to score files.
* GroupLens:: Getting predictions on what you like to read.
* Advanced Scoring:: Using logical expressions to build score rules.
* Score Decays:: It can be useful to let scores wither away.
@@ -16293,8 +16310,7 @@ A hook called in kill-file mode buffers.
@end table
-@c The URL below is invalid and the code isn't on gnus.org.
-@ignore
+
@node Converting Kill Files
@section Converting Kill Files
@cindex kill files
@@ -16313,7 +16329,6 @@ If your old kill files are very complex---if they contain more
non-@code{gnus-kill} forms than not, you'll have to convert them by
hand. Or just let them be as they are. Gnus will still use them as
before.
-@end ignore
@node GroupLens
diff --git a/texi/message-ja.texi b/texi/message-ja.texi
index 5569397..7003aac 100644
--- a/texi/message-ja.texi
+++ b/texi/message-ja.texi
@@ -16,7 +16,7 @@
@ifnottex
-This file documents Message, the Emacs message composition mode.
+This file documents Message, the Emacs message composition mode.
このファイルは Emacs のメッセージ作成モードである Message に関する説明文
書です。
@@ -25,8 +25,8 @@ Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being none, with the Front-Cover texts being ``A GNU
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
License''.
@@ -45,6 +45,16 @@ Software Foundation raise funds for GNU development.''
のように複製したり変更する自由がある。複製はフリーソフトウェア財団によっ
て出版された。(フリーソフトウェア財団は) GNU の開発のために必要な資金を
集めている。」
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+この文書は「GNU フリー文書利用許諾契約書」に基づいて配布された収集著作物
+の一部です。もしあなたがこの文書を収集著作物から分離して配布したいときは、
+契約書の第 6 項に記述されているように、文書に契約書の複写を付加すること
+によって、行なうことができます。
@end ifnottex
@tex
@@ -65,13 +75,13 @@ any later version published by the Free Software Foundation; with the
Invariant Sections being none, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書
第 1.1 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更す
ることを許可する。変更不可部分は指定しない。「A GNU Manual」は表表紙テ
キスト、以下の (a) は裏表紙テキストである。この利用許諾契約書の複写は
-「GNU フリー文書利用許諾契約書」という章に含まれている。
+「Emacs manual」の「GNU フリー文書利用許諾契約書」という章に含まれている。
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
@@ -81,6 +91,16 @@ Software Foundation raise funds for GNU development.''
のように複製したり変更する自由がある。複製はフリーソフトウェア財団によっ
て出版された。(フリーソフトウェア財団は) GNU の開発のために必要な資金を
集めている。」
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+この文書は「GNU フリー文書利用許諾契約書」に基づいて配布された収集著作物
+の一部です。もしあなたがこの文書を収集著作物から分離して配布したいときは、
+契約書の第 6 項に記述されているように、文書に契約書の複写を付加すること
+によって、行なうことができます。
@end titlepage
@page
@@ -769,6 +789,16 @@ response to) と言う意味です。いくつかの無学の馬鹿はこの事実を得る事に失
に合うような正規表現に設定するでしょう。私自身は、そのような規格に従わな
いメールはただ捨て去っているだけです。
+@item message-alternative-emails
+@vindex message-alternative-emails
+A regexp to match the alternative email addresses. The first matched
+address (not primary one) is used in the @code{From} field.
+代わりのメールアドレスに合致する正規表現です。最初にマッチした (第一義で
+はない) アドレスが @code{From} フィールドで使われます。
+(訳注: To か Cc にあるアドレスで、最初にこの正規表現に合致し、
+かつ @code{user-mail-address} とは違うものが、@code{From} フィールドのメー
+ルアドレスとして使われます。)
+
@end table
diff --git a/texi/message.texi b/texi/message.texi
index 29a6cce..fb42b8b 100644
--- a/texi/message.texi
+++ b/texi/message.texi
@@ -22,15 +22,20 @@ Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being none, with the Front-Cover texts being ``A GNU
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end ifnottex
@tex
@@ -50,11 +55,16 @@ any later version published by the Free Software Foundation; with the
Invariant Sections being none, with the Front-Cover texts being ``A GNU
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled ``GNU Free Documentation
-License''.
+License'' in the Emacs manual.
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end titlepage
@page
@@ -785,6 +795,11 @@ have to deal with users that use these evil tools, in which case you may
set this variable to a regexp that matches these prefixes. Myself, I
just throw away non-compliant mail.
+@item message-alternative-emails
+@vindex message-alternative-emails
+A regexp to match the alternative email addresses. The first matched
+address (not primary one) is used in the @code{From} field.
+
@end table