1999-07-06 Katsumi Yamaoka <yamaoka@jpl.org>
+ * lisp/gnus.el (gnus-version-number): Update to 6.10.070.
+ (gnus-revision-number): Fresh start from 00.
+
+ * texi/{message.texi,message-ja.texi,gnus.texi,gnus-ja.texi}:
+ Update for T-gnus 6.10.070.
+
+ * texi/{gnus-ja.texi,emacs-mime.texi,ChangeLog}: Sync up with
+ Pterodactyl Gnus v0.92.
+
+ * lisp/gnus-mlspl.el: New file copied from Pterodactyl Gnus v0.92.
+
+ * lisp/{nntp.el,nnmail.el,nnfolder.el,nndraft.el,nndoc.el,mml.el,
+ mm-view.el,mm-util.el,mm-decode.el,message.el,gnus-xmas.el,
+ gnus-util.el,gnus-sum.el,gnus-start.el,gnus-mailcap.el,
+ gnus-group.el,gnus-art.el,gnus-agent.el,Makefile.in,ChangeLog}:
+ Sync up with Pterodactyl Gnus v0.92.
+
+ * README.T-gnus: Update for T-gnus 6.10.070.
+
+1999-07-06 Katsumi Yamaoka <yamaoka@jpl.org>
+
* lisp/gnus.el (gnus-revision-number): Increment to 01.
1999-07-05 Tsukamoto Tetsuo <czkmt@remus.dti.ne.jp>
* T-gnus 6.10 - this is based on Pterodactyl Gnus.
- The latest T-gnus is T-gnus 6.10.069 (Based on pgnus-0.91).
+ The latest T-gnus is T-gnus 6.10.070 (Based on pgnus-0.92).
It requires SEMI/WEMI-1.12/1.13, the latest FLIM-1.12, and the latest
APEL (9.13 or later).
+Tue Jul 6 10:59:24 1999 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.92 is released.
+
+1999-07-06 12:30:59 Johannes Weinert <Johannes.Weinert@Informatik.Uni-Oldenburg.DE>
+
+ * gnus-sum.el (gnus-summary-catchup-and-exit): Doc fix.
+
+1999-07-06 07:41:07 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nntp.el (nntp-retrieve-groups): Don't do anything when not
+ connected.
+
+ * gnus-start.el (gnus-active-to-gnus-format): Only save active
+ when plugged.
+
+ * mm-view.el (mm-inline-message): Ignore remove-spec.
+
+ * gnus-agent.el (gnus-agent-write-active): Check whether orig sym
+ is bound.
+
+ * gnus-msg.el (gnus-summary-mail-forward): Rename From_ lines.
+
+ * nndoc.el (nndoc-guess-type): Remove blank lines at the start.
+
+ * nnfolder.el (nnfolder-read-folder): Remove blank lines at the
+ start.
+
+ * message.el (message-fill-yanked-message): Remove `t' arg.
+
+ * gnus-group.el (gnus-group-kill-group): Message killing of
+ groups.
+
+ * mm-util.el (mm-preferred-coding-system): New function.
+ (mm-mime-charset): Use it.
+
+ * mml.el (mml-generate-mime-1): Charset-encode message parts.
+
+1999-07-06 07:03:31 Alexandre Oliva <oliva@dcc.unicamp.br>
+
+ * gnus-mlsplt.el: New file.
+
+1999-07-06 05:47:57 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-inline-Media-tests): Changed from forms to
+ functions.
+ (mm-attachment-override-p): Take a handle instead of a type.
+ (mm-inlined-p): Ditto.
+ (mm-automatic-display-p): Ditto,
+ (mm-inlinable-p): Ditto.
+
+ * nndraft.el (nndraft-request-expire-articles): Delete backup
+ files.
+
+ * mailcap.el (mailcap-parse-mailcap): Regexp-quote stuff.
+
+ * gnus-sum.el (gnus-summary-limit-to-extra): Typo.
+
+1999-07-06 05:37:46 Alexandre Oliva <oliva@dcc.unicamp.br>
+
+ * nnmail.el (nnmail-split-it): Allow .*.
+
+1999-07-05 05:04:57 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-inline-large-images-p): Renamed.
+
+ * gnus-art.el (article-date-ut): Always look in the current buffer
+ for the Date header.
+
+ * mml.el (mml-validate): New command.
+
+ * mailcap.el (mailcap-possible-viewers): Revert to string-match
+ since we are dealing with regexps.
+
Sun Jul 4 06:31:01 1999 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Pterodactyl Gnus v0.91 is released.
warn:
rm -f *.elc ; $(EMACS) $(FLAGS) --eval '(dgnushack-compile t)' 2>&1 | egrep -v "variable G|inhibit-point-motion-hooks|coding-system|temp-results|variable gnus|variable nn|scroll-in-place|deactivate-mark|filladapt-mode|byte-code-function-p|print-quoted|ps-right-header|ps-left-header|article-inhibit|print-escape|ssl-program-arguments|message-log-max"
+# The "clever" rule is unsafe, since redefined macros are loaded from
+# .elc files, and not the .el file.
clever some:
$(EMACS) $(FLAGS) -f dgnushack-compile
(defun gnus-agent-write-active (file new)
(let ((orig (gnus-make-hashtable (count-lines (point-min) (point-max))))
(file (gnus-agent-lib-file "active"))
- elem)
+ elem osym)
(when (file-exists-p file)
(with-temp-buffer
(insert-file-contents-as-coding-system gnus-agent-file-coding-system
(mapatoms
(lambda (sym)
(when (and sym (boundp sym))
- (if (setq elem (symbol-value (intern (symbol-name sym) orig)))
+ (if (and (boundp (setq osym (intern (symbol-name sym) orig)))
+ (setq elem (symbol-value osym)))
(setcdr elem (cdr (symbol-value sym)))
(set (intern (symbol-name sym) orig) (symbol-value sym)))))
new))
("\221" "`")
("\222" "'")
("\223" "``")
- ("\224" "''")
+ ("\224" "\"")
("\225" "*")
- ("\226" "-")
+ ("\226" "---")
("\227" "-")
("\231" "(TM)")
("\233" ">")
(mm-pipe-part data)))
(defun gnus-mime-view-part ()
- "Interactively choose a view method for the MIME part under point."
+ "Interactively choose a viewing method for the MIME part under point."
(interactive)
(gnus-article-check-buffer)
(let ((data (get-text-property (point) 'gnus-data)))
(gnus-article-check-buffer)
(let* ((handle (or handle (get-text-property (point) 'gnus-data)))
(mm-user-display-methods nil)
- (mm-all-images-fit t)
+ (mm-inline-large-images nil)
(mail-parse-charset gnus-newsgroup-charset)
(mail-parse-ignored-charsets
(save-excursion (set-buffer gnus-summary-buffer)
(gnus-article-check-buffer)
(let* ((handle (or handle (get-text-property (point) 'gnus-data)))
(mm-user-display-methods '((".*" . inline)))
- (mm-all-images-fit t)
+ (mm-inline-large-images t)
(mail-parse-charset gnus-newsgroup-charset)
(mail-parse-ignored-charsets
(save-excursion (set-buffer gnus-summary-buffer)
(or (not (mm-handle-disposition handle))
(equal (car (mm-handle-disposition handle))
"inline")
- (mm-attachment-override-p type)))
- (mm-automatic-display-p type)
- (or (mm-inlined-p type)
+ (mm-attachment-override-p handle)))
+ (mm-automatic-display-p handle)
+ (or (mm-inlined-p handle)
(mm-automatic-external-display-p type)))
(setq display t)
(when (equal (car (split-string type "/"))
(push (cons (car entry) (nth 2 entry))
gnus-list-of-killed-groups))
(gnus-group-change-level
- (if entry entry group) gnus-level-killed (if entry nil level)))
+ (if entry entry group) gnus-level-killed (if entry nil level))
+ (message "Killed group %s" group))
;; If there are lots and lots of groups to be killed, we use
;; this thing instead.
(let (entry)
(cond
((eq ?* (or (char-after save-pos) 0)) ".*")
((= (point) save-pos) ".*")
- (t (buffer-substring save-pos (point)))))
+ (t (regexp-quote (buffer-substring save-pos (point))))))
(skip-chars-forward "; \t\n")
;;; Got the major/minor chunks, now for the viewers/etc
;;; The first item _must_ be a viewer, according to the
(cond
((equal (car (car major)) minor)
(setq exact (cons (cdr (car major)) exact)))
- ((and minor (string= (car (car major)) minor))
+ ((and minor (string-match (car (car major)) minor))
(setq wildcard (cons (cdr (car major)) wildcard))))
(setq major (cdr major)))
(nconc (nreverse exact) (nreverse wildcard))))
(insert ?\\))
;; Let the Gnus agent save the active file.
- (when (and gnus-agent real-active)
+ (when (and gnus-agent real-active gnus-plugged)
(gnus-agent-save-active method))
;; If these are groups from a foreign select method, we insert the
"t" gnus-article-toggle-headers
"v" gnus-summary-verbose-headers
"m" gnus-summary-toggle-mime
- "h" gnus-article-treat-html
"H" gnus-article-strip-headers-in-body
"d" gnus-article-treat-dumbquotes)
["Capitalize sentences" gnus-article-capitalize-sentences t]
["CR" gnus-article-remove-cr t]
["Show X-Face" gnus-article-display-x-face t]
- ["UnHTMLize" gnus-article-treat-html t]
["Rot 13" gnus-summary-caesar-message t]
["Unix pipe" gnus-summary-pipe-message t]
["Add buttons" gnus-article-add-buttons t]
(intern
(gnus-completing-read
(symbol-name (car gnus-extra-headers))
- "Score extra header:"
+ "Limit extra header:"
(mapcar (lambda (x)
(cons (symbol-name x) x))
gnus-extra-headers)
(goto-char (point-min))
(or (search-forward "\n\n" nil t) (point)))
(goto-char (point-min))
- (delete-matching-lines "^\\(Path\\):\\|^From ")
+ (delete-matching-lines "^Path:\\|^From ")
(widen))
(unwind-protect
(if (let ((gnus-newsgroup-ephemeral-charset gnus-newsgroup-charset)
(gnus-summary-catchup t quietly))
(defun gnus-summary-catchup-and-exit (&optional all quietly)
- "Mark all articles not marked as unread in this newsgroup as read, then exit.
+ "Mark all unread articles in this group as read, then exit.
If prefix argument ALL is non-nil, all articles are marked as read."
(interactive "P")
(when (gnus-summary-catchup all quietly nil 'fast)
(with-temp-file file
(mapatoms
(lambda (sym)
- (when (and sym (boundp sym))
+ (when (and sym
+ (boundp sym)
+ (symbol-value sym))
(insert (format "%s %d %d y\n"
(symbol-name sym) (cdr (symbol-value sym))
(car (symbol-value sym))))))
[gnus-group-unsubscribe gnus-group-unsubscribe t "Unsubscribe group"]
[gnus-group-subscribe gnus-group-subscribe t "Subscribe group"]
[gnus-group-kill-group gnus-group-kill-group t "Kill group"]
- [gnus-group-exit gnus-group-exit t "Exit Gnus"]
- )
+ [gnus-group-exit gnus-group-exit t "Exit Gnus"])
"The group buffer toolbar.")
(defvar gnus-summary-toolbar
(defconst gnus-product-name "T-gnus"
"Product name of this version of gnus.")
-(defconst gnus-version-number "6.10.069"
+(defconst gnus-version-number "6.10.070"
"Version number for this version of gnus.")
-(defconst gnus-revision-number "01"
+(defconst gnus-revision-number "00"
"Revision number for this version of gnus.")
-(defconst gnus-original-version-number "0.91"
+(defconst gnus-original-version-number "0.92"
"Version number for this version of Gnus.")
(provide 'running-pterodactyl-gnus-0_73-or-later)
Checks include subject-cmsg multiple-headers sendsys message-id from
long-lines control-chars size new-text redirected-followup signature
approved sender empty empty-headers message-id from subject
-shorten-followup-to existing-newsgroups buffer-file-name unchanged."
+shorten-followup-to existing-newsgroups buffer-file-name unchanged
+newsgroups."
:group 'message-news)
(defcustom message-required-news-headers
(goto-char (point-min))
(search-forward (concat "\n" mail-header-separator "\n") nil t)
(let ((fill-prefix message-yank-prefix))
- (fill-individual-paragraphs (point) (point-max) justifyp t))))
+ (fill-individual-paragraphs (point) (point-max) justifyp))))
(defun message-indent-citation ()
"Modify text just inserted from a message to be cited.
(car elem))))
(setq success (funcall (caddr elem) arg)))))
(setq sent t))))
+ (unless sent
+ (error "No methods specified to send by"))
(prog1
(when (and success sent)
(message-do-fcc)
(defun message-check-news-header-syntax ()
(and
+ ;; Check Newsgroups header.
+ (message-check 'newsgroyps
+ (let ((group (message-fetch-field "newsgroups")))
+ (or
+ (and group
+ (not (string-match "\\`[ \t]*\\'" group)))
+ (ignore
+ (message
+ "The newsgroups field is empty or missing. Posting is denied.")))))
;; Check the Subject header.
(message-check 'subject
(let* ((case-fold-search t)
,disposition ,description ,cache ,id))
(defvar mm-inline-media-tests
- '(("image/jpeg" mm-inline-image (mm-valid-and-fit-image-p 'jpeg handle))
- ("image/png" mm-inline-image (mm-valid-and-fit-image-p 'png handle))
- ("image/gif" mm-inline-image (mm-valid-and-fit-image-p 'gif handle))
- ("image/tiff" mm-inline-image (mm-valid-and-fit-image-p 'tiff handle))
- ("image/xbm" mm-inline-image (mm-valid-and-fit-image-p 'xbm handle))
- ("image/x-xbitmap" mm-inline-image (mm-valid-and-fit-image-p 'xbm handle))
- ("image/xpm" mm-inline-image (mm-valid-and-fit-image-p 'xpm handle))
- ("image/x-pixmap" mm-inline-image (mm-valid-and-fit-image-p 'xpm handle))
- ("image/bmp" mm-inline-image (mm-valid-and-fit-image-p 'bmp handle))
- ("text/plain" mm-inline-text t)
- ("text/enriched" mm-inline-text t)
- ("text/richtext" mm-inline-text t)
- ("text/html" mm-inline-text (locate-library "w3"))
- ("text/x-vcard" mm-inline-text (locate-library "vcard"))
- ("message/delivery-status" mm-inline-text t)
- ("message/rfc822" mm-inline-message t)
- ("text/.*" mm-inline-text t)
+ '(("image/jpeg"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'jpeg handle)))
+ ("image/png"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'png handle)))
+ ("image/gif"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'gif handle)))
+ ("image/tiff"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'tiff handle)) )
+ ("image/xbm"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'xbm handle)))
+ ("image/x-xbitmap"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'xbm handle)))
+ ("image/xpm"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'xpm handle)))
+ ("image/x-pixmap"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'xpm handle)))
+ ("image/bmp"
+ mm-inline-image
+ (lambda (handle)
+ (mm-valid-and-fit-image-p 'bmp handle)))
+ ("text/plain" mm-inline-text identity)
+ ("text/enriched" mm-inline-text identity)
+ ("text/richtext" mm-inline-text identity)
+ ("text/html"
+ mm-inline-text
+ (lambda (handle)
+ (locate-library "w3")))
+ ("text/x-vcard"
+ mm-inline-text
+ (lambda (handle)
+ (locate-library "vcard")))
+ ("message/delivery-status" mm-inline-text identity)
+ ("message/rfc822" mm-inline-message identity)
+ ("text/.*" mm-inline-text identity)
("audio/wav" mm-inline-audio
- (and (or (featurep 'nas-sound) (featurep 'native-sound))
- (device-sound-enabled-p)))
- ("audio/au" mm-inline-audio
- (and (or (featurep 'nas-sound) (featurep 'native-sound))
- (device-sound-enabled-p)))
- ("multipart/alternative" ignore t)
- ("multipart/mixed" ignore t)
- ("multipart/related" ignore t))
+ (lambda (handle)
+ (and (or (featurep 'nas-sound) (featurep 'native-sound))
+ (device-sound-enabled-p))))
+ ("audio/au"
+ mm-inline-audio
+ (lambda (handle)
+ (and (or (featurep 'nas-sound) (featurep 'native-sound))
+ (device-sound-enabled-p))))
+ ("multipart/alternative" ignore identity)
+ ("multipart/mixed" ignore identity)
+ ("multipart/related" ignore identity))
"Alist of media types/test that say whether the media types can be displayed inline.")
(defvar mm-inlined-types
("/tmp/"))
"Where mm will store its temporary files.")
-(defvar mm-all-images-fit nil
+(defvar mm-inline-large-images nil
"If non-nil, then all images fit in the buffer.")
;;; Internal variables.
(mm-remove-part handle)
(let* ((type (car (mm-handle-type handle)))
(method (mailcap-mime-info type)))
- (if (mm-inlined-p type)
+ (if (mm-inlined-p handle)
(progn
(forward-line 1)
(mm-display-inline handle)
(funcall function handle)
(goto-char (point-min))))
-(defun mm-inlinable-p (type)
- "Say whether TYPE can be displayed inline."
+(defun mm-inlinable-p (handle)
+ "Say whether HANDLE can be displayed inline."
(let ((alist mm-inline-media-tests)
+ (type (car (mm-handle-type handle)))
test)
(while alist
(when (equal type (caar alist))
(setq test (caddar alist)
alist nil)
- (setq test (eval test)))
+ (setq test (funcall test handle)))
(pop alist))
test))
-(defun mm-automatic-display-p (type)
- "Say whether the user wants TYPE to be displayed automatically."
+(defun mm-automatic-display-p (handle)
+ "Say whether the user wants HANDLE to be displayed automatically."
(let ((methods mm-automatic-display)
+ (type (car (mm-handle-type handle)))
method result)
(while (setq method (pop methods))
(when (and (string-match method type)
- (mm-inlinable-p type))
+ (mm-inlinable-p handle))
(setq result t
methods nil)))
result))
-(defun mm-inlined-p (type)
- "Say whether the user wants TYPE to be displayed automatically."
+(defun mm-inlined-p (handle)
+ "Say whether the user wants HANDLE to be displayed automatically."
(let ((methods mm-inlined-types)
+ (type (car (mm-handle-type handle)))
method result)
(while (setq method (pop methods))
(when (and (string-match method type)
- (mm-inlinable-p type))
+ (mm-inlinable-p handle))
(setq result t
methods nil)))
result))
-(defun mm-attachment-override-p (type)
- "Say whether TYPE should have attachment behavior overridden."
+(defun mm-attachment-override-p (handle)
+ "Say whether HANDLE should have attachment behavior overridden."
(let ((types mm-attachment-override-types)
+ (type (car (mm-handle-type handle)))
ty)
(catch 'found
(while (setq ty (pop types))
(when (and (string-match ty type)
- (mm-inlinable-p type))
+ (mm-inlinable-p handle))
(throw 'found t))))))
(defun mm-automatic-external-display-p (type)
(car (mm-handle-type (car h)))))
(setq handle (car h))
(when (and (equal p type)
- (mm-automatic-display-p type)
+ (mm-automatic-display-p (car h))
(or (stringp (caar h))
(not (mm-handle-disposition (car h)))
(equal (car (mm-handle-disposition (car h)))
(defun mm-image-fit-p (handle)
"Say whether the image in HANDLE will fit the current window."
(let ((image (mm-get-image handle)))
- (or mm-all-images-fit
+ (or mm-inline-large-images
(and (< (glyph-width image) (window-pixel-width))
(< (glyph-height image) (window-pixel-height))))))
(when (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte nil)))
+(defun mm-preferred-coding-system (charset)
+ ;; A typo in some Emacs versions.
+ (or (get-charset-property charset 'prefered-coding-system)
+ (get-charset-property charset 'preffered-coding-system)))
+
(defun mm-mime-charset (charset)
"Return the MIME charset corresponding to the MULE CHARSET."
(if (fboundp 'coding-system-get)
;; This exists in Emacs 20.
(or
- (and (get-charset-property charset 'prefered-coding-system)
+ (and (mm-preferred-coding-system charset)
(coding-system-get
- (get-charset-property charset 'prefered-coding-system)
- 'mime-charset))
+ (mm-preferred-coding-system charset) 'mime-charset))
(and (eq charset 'ascii)
'us-ascii)
- (get-charset-property charset 'prefered-coding-system)
+ (mm-preferred-coding-system charset)
(mm-mule-charset-to-mime-charset charset))
;; This is for XEmacs.
(mm-mule-charset-to-mime-charset charset)))
(condition-case var
(w3-region (point-min) (point-max))
(error)))))
-;;; (narrow-to-region (1+ (point-min)) (point-max))
(mm-handle-set-undisplayer
handle
`(lambda ()
(goto-char (point-min)))
(defun mm-inline-message (handle)
- (let ((b (point)) gnus-displaying-mime handles)
+ (let ((b (point))
+ gnus-displaying-mime handles)
(save-excursion
(save-restriction
(narrow-to-region b b)
(run-hooks 'gnus-article-decode-hook)
(gnus-article-prepare-display)
(setq handles gnus-article-mime-handles))
- (if handles
- (setq gnus-article-mime-handles
- (append gnus-article-mime-handles handles)))
+ (when handles
+ (setq gnus-article-mime-handles
+ (append gnus-article-mime-handles handles)))
(mm-handle-set-undisplayer
handle
`(lambda ()
(let (buffer-read-only)
- (mapc (lambda (prop)
- (remove-specifier
- (face-property 'default prop) (current-buffer)))
- '(background background-pixmap foreground))
+ (ignore-errors
+ ;; This is only valid on XEmacs.
+ (mapc (lambda (prop)
+ (remove-specifier
+ (face-property 'default prop) (current-buffer)))
+ '(background background-pixmap foreground)))
(delete-region ,(point-min-marker) ,(point-max-marker)))))))))
(provide 'mm-view)
((eq (car cont) 'part)
(let (coded encoding charset filename type)
(setq type (or (cdr (assq 'type cont)) "text/plain"))
- (if (equal (car (split-string type "/")) "text")
+ (if (member (car (split-string type "/")) '("text" "message"))
(with-temp-buffer
(cond
((cdr (assq 'buffer cont))
["Multipart" mml-insert-multipart t]
["Part" mml-insert-part t])
["Quote" mml-quote-region t]
- ["Validate" mml-validate t]))
+ ["Validate" mml-validate t]
+ ["Preview" mml-preview t]))
(defvar mml-mode nil
"Minor mode for editing MML.")
(fundamental-mode)
(setq buffer-read-only t)
(goto-char (point-min))))
-
+
+(defun mml-validate ()
+ "Validate the current MML document."
+ (interactive)
+ (mml-parse))
+
(provide 'mml)
;;; mml.el ends here
(setq entry (pop alist)))
(when (memq subtype (or (cdr (assq 'subtype entry)) '(guess)))
(goto-char (point-min))
+ ;; Remove blank lines.
+ (while (eq (following-char) ?\n)
+ (delete-char 1))
(when (numberp (setq result (funcall (intern
(format "nndoc-%s-type-p"
(car entry))))))
(save-excursion
(set-buffer nndoc-current-buffer)
(goto-char (point-min))
+ ;; Remove blank lines.
+ (while (eq (following-char) ?\n)
+ (delete-char 1))
;; Find the beginning of the file.
(when nndoc-file-begin
(nndoc-search nndoc-file-begin))
(let ((auto (nndraft-auto-save-file-name
(nndraft-article-filename article))))
(when (file-exists-p auto)
- (funcall nnmail-delete-file-function auto)))))
+ (funcall nnmail-delete-file-function auto)))
+ (dolist (backup
+ (let ((kept-new-versions 1)
+ (kept-old-versions 0))
+ (cdr (find-backup-file-name
+ (nndraft-article-filename article)))))
+ (when (file-exists-p backup)
+ (funcall nnmail-delete-file-function backup)))))
res))
(deffoo nndraft-request-accept-article (group &optional server last noinsert)
(save-buffer))
;; Parse the damn thing.
(save-excursion
+ (goto-char (point-min))
+ ;; Remove any blank lines at the start.
+ (while (eq (following-char) ?\n)
+ (delete-char 1))
(nnmail-activate 'nnfolder)
;; Read in the file.
(let ((delim "^From ")
GROUP: Mail will be stored in GROUP (a string).
-\(FIELD VALUE SPLIT): If the message field FIELD (a regexp) contains
- VALUE (a regexp), store the messages as specified by SPLIT.
+\(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT): If the message
+ field FIELD (a regexp) contains VALUE (a regexp), store the messages
+ as specified by SPLIT. If RESTRICT (a regexp) matches some string
+ after FIELD and before the end of the matched VALUE, return NIL,
+ otherwise process SPLIT. Multiple RESTRICTs add up, further
+ restricting the possibility of processing SPLIT.
\(| SPLIT...): Process each SPLIT expression until one of them matches.
A SPLIT expression is said to match if it will cause the mail
the buffer containing the message headers. The return value FUNCTION
should be a split, which is then recursively processed.
+\(! FUNCTION SPLIT): Call FUNCTION with the result of SPLIT. The
+ return value FUNCTION should be a split, which is then recursively
+ processed.
+
FIELD must match a complete field name. VALUE must match a complete
word according to the `nnmail-split-fancy-syntax-table' syntax table.
You can use \".*\" in the regexps to match partial field names or words.
;; Other mailing lists...
(any \"procmail@informatik\\\\.rwth-aachen\\\\.de\" \"procmail.list\")
(any \"SmartList@informatik\\\\.rwth-aachen\\\\.de\" \"SmartList.list\")
+ ;; Both lists below have the same suffix, so prevent
+ ;; cross-posting to mkpkg.list of messages posted only to
+ ;; the bugs- list, but allow cross-posting when the
+ ;; message was really cross-posted.
+ (any \"bugs-mypackage@somewhere\" \"mypkg.bugs\")
+ (any \"mypackage@somewhere\" - \"bugs-mypackage\" \"mypkg.list\")
+ ;;
;; People...
(any \"larsi@ifi\\\\.uio\\\\.no\" \"people.Lars Magne Ingebrigtsen\"))
;; Unmatched mail goes to the catch all group.
;; Check the cache for the regexp for this split.
((setq cached-pair (assq split nnmail-split-cache))
- (goto-char (point-max))
- ;; FIX FIX FIX problem with re-search-backward is that if you have
- ;; a split: (from "foo-\\(bar\\|baz\\)@gnus.org "mail.foo.\\1")
- ;; and someone mails a message with 'To: foo-bar@gnus.org' and
- ;; 'CC: foo-baz@gnus.org', we'll pick 'mail.foo.baz' as the group
- ;; if the cc line is a later header, even though the other choice
- ;; is probably better. Also, this routine won't do a crosspost
- ;; when there are two different matches.
- ;; I guess you could just make this more determined, and it could
- ;; look for still more matches prior to this one, and recurse
- ;; on each of the multiple matches hit. Of course, then you'd
- ;; want to make sure that nnmail-article-group or nnmail-split-fancy
- ;; removed duplicates, since there might be more of those.
- ;; I guess we could also remove duplicates in the & split case, since
- ;; that's the only thing that can introduce them.
- (when (re-search-backward (cdr cached-pair) nil t)
+ (let (split-result
+ (end-point (point-max))
+ (value (nth 1 split)))
+ (if (symbolp value)
+ (setq value (cdr (assq value nnmail-split-abbrev-alist))))
+ (while (and (goto-char end-point)
+ (re-search-backward (cdr cached-pair) nil t))
(when nnmail-split-tracing
(push (cdr cached-pair) nnmail-split-trace))
- ;; Someone might want to do a \N sub on this match, so get the
- ;; correct match positions.
- (goto-char (match-end 0))
- (let ((value (nth 1 split)))
- (re-search-backward (if (symbolp value)
- (cdr (assq value nnmail-split-abbrev-alist))
- value)
- (match-end 1)))
- (nnmail-split-it (nth 2 split))))
+ (let ((split-rest (cddr split))
+ (end (match-end 0))
+ ;; The searched regexp is \(\(FIELD\).*\)\(VALUE\). So,
+ ;; start-of-value is the the point just before the
+ ;; beginning of the value, whereas after-header-name is
+ ;; the point just after the field name.
+ (start-of-value (match-end 1))
+ (after-header-name (match-end 2)))
+ ;; Start the next search just before the beginning of the
+ ;; VALUE match.
+ (setq end-point (1- start-of-value))
+ ;; Handle - RESTRICTs
+ (while (eq (car split-rest) '-)
+ ;; RESTRICT must start after-header-name and
+ ;; end after start-of-value, so that, for
+ ;; (any "foo" - "x-foo" "foo.list")
+ ;; we do not exclude foo.list just because
+ ;; the header is: ``To: x-foo, foo''
+ (goto-char end)
+ (if (and (re-search-backward (cadr split-rest)
+ after-header-name t)
+ (> (match-end 0) start-of-value))
+ (setq split-rest nil)
+ (setq split-rest (cddr split-rest))))
+ (when split-rest
+ (goto-char end)
+ (let ((value (nth 1 split)))
+ (if (symbolp value)
+ (setq value (cdr (assq value nnmail-split-abbrev-alist))))
+ ;; Someone might want to do a \N sub on this match, so get the
+ ;; correct match positions.
+ (re-search-backward value start-of-value))
+ (dolist (sp (nnmail-split-it (car split-rest)))
+ (unless (memq sp split-result)
+ (push sp split-result))))))
+ split-result))
;; Not in cache, compute a regexp for the field/value pair.
(t
(let* ((field (nth 0 split))
(value (nth 1 split))
- (regexp (concat "^\\(\\("
+ partial regexp)
+ (if (symbolp value)
+ (setq value (cdr (assq value nnmail-split-abbrev-alist))))
+ (if (string= ".*" (substring value 0 2))
+ (setq value (substring value 2)
+ partial ""))
+ (setq regexp (concat "^\\(\\("
(if (symbolp field)
(cdr (assq field nnmail-split-abbrev-alist))
field)
- "\\):.*\\)\\<\\("
- (if (symbolp value)
- (cdr (assq value nnmail-split-abbrev-alist))
- value)
- "\\)\\>")))
+ "\\):.*\\)"
+ (or partial "\\<")
+ "\\("
+ value
+ "\\)\\>"))
(push (cons split regexp) nnmail-split-cache)
;; Now that it's in the cache, just call nnmail-split-it again
;; on the same split, which will find it immediately in the cache.
(deffoo nntp-retrieve-groups (groups &optional server)
"Retrieve group info on GROUPS."
(nntp-possibly-change-group nil server)
- (save-excursion
- (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
- ;; The first time this is run, this variable is `try'. So we
- ;; try.
- (when (eq nntp-server-list-active-group 'try)
- (nntp-try-list-active (car groups)))
- (erase-buffer)
- (let ((count 0)
- (received 0)
- (last-point (point-min))
- (nntp-inhibit-erase t)
- (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
- (while groups
- ;; Send the command to the server.
- (nntp-send-command nil command (pop groups))
- (incf count)
- ;; Every 400 requests we have to read the stream in
- ;; order to avoid deadlocks.
- (when (or (null groups) ;All requests have been sent.
- (zerop (% count nntp-maximum-request)))
- (nntp-accept-response)
- (while (progn
- (goto-char last-point)
- ;; Count replies.
- (while (re-search-forward "^[0-9]" nil t)
- (incf received))
- (setq last-point (point))
- (< received count))
- (nntp-accept-response))))
+ (when (nntp-find-connection-buffer nntp-server-buffer)
+ (save-excursion
+ (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
+ ;; The first time this is run, this variable is `try'. So we
+ ;; try.
+ (when (eq nntp-server-list-active-group 'try)
+ (nntp-try-list-active (car groups)))
+ (erase-buffer)
+ (let ((count 0)
+ (received 0)
+ (last-point (point-min))
+ (nntp-inhibit-erase t)
+ (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
+ (while groups
+ ;; Send the command to the server.
+ (nntp-send-command nil command (pop groups))
+ (incf count)
+ ;; Every 400 requests we have to read the stream in
+ ;; order to avoid deadlocks.
+ (when (or (null groups) ;All requests have been sent.
+ (zerop (% count nntp-maximum-request)))
+ (nntp-accept-response)
+ (while (progn
+ (goto-char last-point)
+ ;; Count replies.
+ (while (re-search-forward "^[0-9]" nil t)
+ (incf received))
+ (setq last-point (point))
+ (< received count))
+ (nntp-accept-response))))
- ;; Wait for the reply from the final command.
- (goto-char (point-max))
- (re-search-backward "^[0-9]" nil t)
- (when (looking-at "^[23]")
- (while (progn
- (goto-char (point-max))
- (if (not nntp-server-list-active-group)
- (not (re-search-backward "\r?\n" (- (point) 3) t))
- (not (re-search-backward "^\\.\r?\n" (- (point) 4) t))))
- (nntp-accept-response)))
-
- ;; Now all replies are received. We remove CRs.
- (goto-char (point-min))
- (while (search-forward "\r" nil t)
- (replace-match "" t t))
+ ;; Wait for the reply from the final command.
+ (goto-char (point-max))
+ (re-search-backward "^[0-9]" nil t)
+ (when (looking-at "^[23]")
+ (while (progn
+ (goto-char (point-max))
+ (if (not nntp-server-list-active-group)
+ (not (re-search-backward "\r?\n" (- (point) 3) t))
+ (not (re-search-backward "^\\.\r?\n" (- (point) 4) t))))
+ (nntp-accept-response)))
- (if (not nntp-server-list-active-group)
- (progn
- (copy-to-buffer nntp-server-buffer (point-min) (point-max))
- 'group)
- ;; We have read active entries, so we just delete the
- ;; superfluous gunk.
+ ;; Now all replies are received. We remove CRs.
(goto-char (point-min))
- (while (re-search-forward "^[.2-5]" nil t)
- (delete-region (match-beginning 0)
- (progn (forward-line 1) (point))))
- (copy-to-buffer nntp-server-buffer (point-min) (point-max))
- 'active))))
+ (while (search-forward "\r" nil t)
+ (replace-match "" t t))
+
+ (if (not nntp-server-list-active-group)
+ (progn
+ (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+ 'group)
+ ;; We have read active entries, so we just delete the
+ ;; superfluous gunk.
+ (goto-char (point-min))
+ (while (re-search-forward "^[.2-5]" nil t)
+ (delete-region (match-beginning 0)
+ (progn (forward-line 1) (point))))
+ (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+ 'active)))))
(deffoo nntp-retrieve-articles (articles &optional group server)
(nntp-possibly-change-group group server)
+1999-07-06 11:41:59 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Mail Source Specifiers): Fix.
+ (Mail Source Customization): Deleted obsolete vars.
+
+1999-07-05 05:16:55 Laura Conrad <lconrad@world.std.com>
+
+ * gnus.texi (Mail in a Newsreader): Rewrite.
+
1999-07-04 04:33:50 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Posting Styles): Fix.
and, if so, how to do it. It does not say whether parts are
@emph{actually} displayed inline.
-@item mm-inlines-types
+@item mm-inlined-types
This, on the other hand, says what types are to be displayed inline, if
they satisfy the conditions set by the variable above. It's a list of
@sc{mime} media types.
@item mm-automatic-display
This is a list of types that are to be displayed ``automatically'', but
-only if the above variable allows it. That is, only inlinable parts are
-usually displayed automatically, but in the end, this is up to the
-display agent that's using the @sc{mime} library.
+only if the above variable allows it. That is, only inlinable parts can
+be displayed automatically.
@item mm-attachment-override-types
Some @sc{mime} agents create parts that have a content-disposition of
@samp{attachment}. This variable allows overriding that disposition and
-displaying the part inline.
+displaying the part inline. (Note that the disposition is only
+overridden if we are able to, and want to, display the part inline.)
@item mm-discouraged-alternatives
List of @sc{mime} types that are discouraged when viewing
("text/html" "text/richtext")
@end lisp
-@item mm-all-images-fit
-If non-@code{nil}, all images will be deemed to fit into the buffer,
-even when they don't.
+@item mm-inline-large-images-p
+When displaying inline images that are larger than the window, XEmacs
+does not enable scrolling, which means that you cannot see the whole
+image. To prevent this, the library tries to determine the image size
+before displaying it inline, and if it doesn't fit the window, the
+library will display it externally (e.g. with @samp{ImageMagick} or
+@samp{xv}). Setting this variable to @code{t} disables this check and
+makes the library display all inline images as inline, regardless of
+their size.
+
@end table
@c \input texinfo @c -*-texinfo-*-
@setfilename gnus-ja
-@settitle Semi-gnus 6.10.069 Manual
+@settitle Semi-gnus 6.10.070 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Semi-gnus 6.10.069 Manual
+@title Semi-gnus 6.10.070 Manual
@author by Lars Magne Ingebrigtsen
@author by members of Semi-gnus mailing-list
\e$B$J8@8l7w$r:9JL$7$^$;$s!#$"$"!"%/%j%s%4%s$NJ}$O\e(B Unicode Next Generation\e$B$r\e(B
\e$B$*BT$A$/$@$5$$!#\e(B
-\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.10.069 \e$B$KBP1~$7$^$9!#\e(B
+\e$B$3$N@bL@=q$O\e(B Semi-gnus 6.10.070 \e$B$KBP1~$7$^$9!#\e(B
@end ifinfo
\e$B$F\e(B expire \e$B$N=hM}$,@)8f$5$l!"%a!<%k$N\e(B expire \e$B$N=hM}$O$"$J$?$,@)8f$7$^$9!#\e(B
\e$B%a!<%k$N\e(B expire \e$B$K$D$$$F$O\e(B @pxref{Expiring Mail} \e$B$r;2>H$7$F2<$5$$!#\e(B
-\e$B$7$P$i$/%a!<%k$H%K%e!<%9$NN>J}$r;H$C$F$_$l$P!"G[Aw$N;EAH$_$N0c$$$,=EMW\e(B
-\e$B$G$O$J$$$3$H$K5$$,IU$-$^$9!#Bg;v$J$N$O5-;v$r<u$1<h$k4Q=0$N?t$J$N$G$9!#\e(B
+\e$B$7$P$i$/%a!<%k$H%K%e!<%9$NN>J}$r;H$C$F$_$l$P!"5-;v$N<h$j07$$$K$D$$$FG[\e(B
+\e$BAw$N5!9=$,9T$J$&$3$H$O$o$:$+$G$"$k$3$H$K5$$,IU$-$^$9!#\e(B
\e$BB?$/$N?M$?$A$OJ#?t$N%a!<%j%s%0%j%9%H$r9VFI$7$F$$$^$9!#$=$l$i$O\e(B SMTP \e$B$G\e(B
-\e$BG[Aw$5$l$k!"%a!<%k!"$G$9!#$"$k?M$?$A$O>.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k\e(B
-\e$B%K%e!<%9%0%k!<%W$r9VFI$7$F$$$^$9!#$=$l$i$O\e(B NNTP \e$B$GG[Aw$5$l$k!"%K%e!<%9!"\e(B
-\e$B$G$9!#\e(B
+\e$BG[Aw$5$l$k!"%a!<%k!"$G$9!#$=$l$i$N5-;v$r$H$F$bCm0U?<$/FI$s$G$$$k$K$b$+\e(B
+\e$B$+$o$i$:!"2?=54V$bJV;v$,L5$$$3$H$,$"$k$G$7$g$&!#;d$?$A$O$=$&$$$&5-;v$r\e(B
+\e$B%;!<%V$9$kI,MW$O$"$j$^$;$s!#$J$<$J$i$P!"$b$&0lEYFI$`I,MW$,@8$8$F$b!"$=\e(B
+\e$B$l$i$O$I$3$+$KJ]B8$5$l$F$$$k$+$i$G$9!#\e(B
+
+\e$B$"$k?M$?$A$O>.?M?t$KMxMQ$5$l$F$$$k%m!<%+%k%K%e!<%9%0%k!<%W$r9VFI$7$F$$\e(B
+\e$B$^$9!#$=$l$i$O\e(B NNTP \e$B$GG[Aw$5$l$k!"%K%e!<%9!"$G$9!#;d$?$A$O<+J,$N;E;v$K\e(B
+\e$BLrN)$F$k$?$a$K!"$=$l$i$NKDBg$J5-;v$NCGJR$rFI$s$@$jJV;v$r$7$J$1$l$P$J$j\e(B
+\e$B$^$;$s!#$=$7$F$=$l$i$OJ]B8$5$l$F$$$J$$$+$b$7$l$^$;$s$+$i!"6=L#$N$"$k5-\e(B
+\e$B;v$r8D?M%a!<%k$HF1$8$h$&$KJ]B8$7$J$1$l$P$J$i$J$$$G$7$g$&!#\e(B
+
+\e$BG[Aw$N;EAH$_$N0c$$$O$I$&$G$b$h$$$3$H$G!"Bg;v$J$N$O$$$+$K<gBj$K6=L#$r;}$C\e(B
+\e$B$F$$$k$+$H!"$b$&0lEYFI$_$?$$$H$-$K$$$+$K4JC1$K8F$S=P$;$k$+$J$N$G$9!#\e(B
-\e$BG[Aw$N;EAH$_$N0c$$$O$I$&$G$b$h$$$3$H$G!"Bg;v$J$N$O5-;v$,\e(B @dfn{personal}
- \e$B$J$b$N$+\e(B @dfn{public} \e$B$J$b$N$+$H$$$&$3$H$G$9!#$3$l$iFs$D$N<oN`$K1~$8\e(B
-\e$B$F!"B?$/$N%f!<%6$O\e(B gnus \e$B$NF0:n$rHyL/$K@Z$jBX$($^$9!#\e(B
+gnus \e$B$O%a!<%k$r%K%e!<%9%0%k!<%W$N$h$&$K\e(B ``\e$B%0%k!<%W\e(B'' \e$B$KJB$YJQ$($F!"3F!9\e(B
+\e$B$N%0%k!<%W\e(B (\e$B%a!<%k$+%K%e!<%9\e(B) \e$B$rJL8D$K07$&$?$a$NK-IY$J5!G=$rDs6!$7$^$9!#\e(B
\e$B$"$k?M$?$A$O\e(B gnus (\e$B$($C$X$s\e(B) \e$B$N$d$j$+$?$KK~B-$G$-$J$/$F!"\e(Bgnus \e$B$,%a!<%k\e(B
\e$B%j!<%@$K$J$k$3$H$rM_$7$^$9!#\e(Bgnus \e$B$r$b$C$H%a!<%k%j!<%@E*$J$b$N$K$9$k$?\e(B
;; \e$BB>$N%a!<%j%s%0%j%9%H\e(B...
(any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
(any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
+ ;; Both lists below have the same suffix, so prevent
+ ;; cross-posting to mkpkg.list of messages posted only to
+ ;; the bugs- list, but allow cross-posting when the
+ ;; message was really cross-posted.
+ (any "bugs-mypackage@@somewhere" "mypkg.bugs")
+ (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list")
;; \e$B?M!9\e(B...
(any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
;; \e$B9gCW$7$J$+$C$?%a!<%k$OA4$F$rJa$^$($k%0%k!<%W$X9T$-$^$9!#\e(B
Peter Arius,
Matt Armstrong,
Marc Auslander,
+Miles Bader,
+Alexei V. Barantsev,
Frank Bennett,
Robert Bihlmeyer,
Chris Bone,
Mark Borges,
Mark Boyns,
Lance A. Brown,
+Rob Browning,
Kees de Bruin,
Martin Buchholz,
Joe Buehler,
David Charlap,
Dan Christensen,
Kevin Christian,
+Jae-you Chung, @c ?
+James H. Cloos, Jr.,
+Laura Conrad,
Michael R. Cook,
Glenn Coombs,
+Andrew J. Cosgriff,
+Neil Crellin,
Frank D. Cringle,
Geoffrey T. Dairiki,
Andre Deparade,
Michael Welsh Duggan,
Dave Edmondson,
Paul Eggert,
+Mark W. Eichin,
+Karl Eichwalder,
Enami Tsugutomo, @c Enami
Michael Ernst,
Luc Van Eycken,
Sam Falkner,
Nelson Jose dos Santos Ferreira,
Sigbjorn Finne,
+Sven Fischer,
+Paul Fisher,
Decklin Foster,
Gary D. Foster,
Paul Franklin,
Arne Georg Gleditsch,
David S. Goldberg,
Michelangelo Grigni,
+Dale Hagglund,
D. Hall,
Magnus Hammerin,
Kenichi Handa, @c Handa
Yoshiki Hayashi, @c ?
P. E. Jareth Hein,
Hisashige Kenji, @c Hisashige
+Scott Hofmann,
Marc Horowitz,
Gunnar Horrigmo,
Richard Hoskins,
Brad Howes,
+Miguel de Icaza,
Fran\e,Ag\e(Bois Felix Ingrand,
+Tatsuya Ichikawa, @c ?
Ishikawa Ichiro, @c Ishikawa
Lee Iverson,
Iwamuro Motonori, @c Iwamuro
Rajappa Iyer,
Andreas Jaeger,
+Adam P. Jenkins,
Randell Jesup,
Fred Johansen,
Gareth Jones,
Simon Josefsson,
Greg Klanderman,
Karl Kleinpaste,
+Michael Klingbeil,
Peter Skov Knudsen,
Shuhei Kobayashi, @c Kobayashi
+Petr Konecny,
Koseki Yoshinori, @c Koseki
Thor Kristoffersen,
Jens Lautenbacher,
Martin Larose,
Seokchan Lee, @c Lee
+Joerg Lenneis,
Carsten Leonhardt,
James LewisMoss,
Christian Limpach,
Ken Olstad,
Masaharu Onishi, @c Onishi
Hideki Ono, @c Ono
+Ettore Perazzoli,
William Perry,
Stephen Peters,
Jens-Ulrik Holger Petersen,
Ulrich Pfeifer,
Matt Pharr,
+Andy Piper,
John McClary Prevost,
Bill Pringlemeir,
Mike Pullen,
Roland B. Roberts,
Bart Robinson,
Christian von Roques,
+Markus Rost,
Jason Rumney,
Wolfgang Rupprecht,
Jay Sachs,
Dewey M. Sasser,
+Conrad Sauerwald,
Loren Schall,
Dan Schmidt,
Ralph Schleicher,
Richard Stallman,
Greg Stark,
Sam Steingold,
+Paul Stevenson,
+Jonas Steverud,
Paul Stodghill,
+Kiyokazu Suto, @c Suto
Kurt Swanson,
Samuel Tardieu,
Teddy,
Chuck Thompson,
+Tozawa Akihiko, @c Tozawa
Philippe Troin,
James Troup,
Trung Tran-Duc,
+Jack Twilley,
Aaron M. Ucko,
Aki Vehtari,
Didier Verna,
+Vladimir Volovich,
Jan Vroonhof,
Stefan Waldherr,
Pete Ware,
Barry A. Warsaw,
Christoph Wedler,
Joe Wells,
-Katsumi Yamaoka, @c Yamaoka
+Lee Willis,
+Katsumi Yamaoka @c Yamaoka
and
-Shenghuo Zhu. @c Zhu
+Lloyd Zusman.
\e$B$=$l$>$l$N?M!9$,9T$C$?;v$N40A4$J354Q$rF@$k$?$a$K!"\e(BChangeLog \e$B$,\e(B Gnus \e$B$N%"\e(B
\e$B%k%U%!G[I[$K$O4^$^$l$F$$$F!"K-IY$JFI$_J*$rM?$($k$G$7$g$&!#\e(B(550KB \e$B$H$$$/\e(B
@c \input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Semi-gnus 6.10.069 Manual
+@settitle Semi-gnus 6.10.070 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Semi-gnus 6.10.069 Manual
+@title Semi-gnus 6.10.070 Manual
@author by Lars Magne Ingebrigtsen
@page
API. So Semi-gnus does not discriminate various language communities.
Oh, if you are a Klingon, please wait Unicode Next Generation.
-This manual corresponds to Semi-gnus 6.10.069.
+This manual corresponds to Semi-gnus 6.10.070.
@end ifinfo
Gnus does not behave like traditional mail readers. If you want to make
it behave that way, you can, but it's an uphill battle.
-Gnus, by default, handles all its group using the same approach. This
+Gnus, by default, handles all its groups using the same approach. This
approach is very newsreaderly---you enter a group, see the new/unread
messages, and when you read the messages, they get marked as read, and
you don't see them any more. (Unless you explicitly ask for them.)
Mail}.
What many Gnus users find, after using it a while for both news and
-mail, is that the transport becomes more and more irrelevant. What
-becomes important is the size of the receiving audience.
+mail, is that the transport mechanism has very little to do with how
+they want to treat a message.
Many people subscribe to several mailing lists. These are transported
-via SMTP, and are therefore mail. Some people have local news groups
-which have only a handful of readers. These are transported via NNTP,
-and are therefore news.
+via SMTP, and are therefore mail. But we might go for weeks without
+answering, or even reading these messages very carefully. We may not
+need to save them because if we should need to read one again, they are
+archived somewhere else.
+
+Some people have local news groups which have only a handful of readers.
+These are transported via NNTP, and are therefore news. But we may need
+to read and answer a large fraction of the messages very carefully in
+order to do our work. And there may not be an archive, so we may need
+to save the interesting messages the same way we would personal mail.
The important distinction turns out to be not the transport mechanism,
-but whether the messages are @dfn{personal} or @dfn{public}. Many users
-then subtly alter the behavior of Gnus according to these two
-categories.
+but other factors such as how interested we are in the subject matter,
+or how easy it is to retrieve the message if we need to read it again.
+
+Gnus provides many options for sorting mail into ``groups'' which behave
+like newsgroups, and for treating each group (whether mail or news)
+differently.
Some users never get comfortable using the Gnus (ahem) paradigm and wish
that Gnus should grow up and be a male, er, mail reader. It is possible
@cindex mail spool
@cindex mail source
-You tell Gnus how to fetch mail by creating a @dfn{mail source
-specifier}.
+You tell Gnus how to fetch mail by setting @code{mail-sources}
+(@pxref{Fetching Mail}) to a @dfn{mail source specifier}.
Here's an example:
variables.
@table @code
-@item mail-source-movemail-program
-@vindex mail-source-movemail-program
-A command to be executed to move mail from the inbox. The default is
-@samp{movemail}.
-
-This can also be a function. In that case, the function will be
-called with two parameters -- the name of the INBOX file, and the file
-to be moved to.
-
-@item mail-source-movemail-args
-@vindex mail-source-movemail-args
-Extra arguments to give to the command described above.
-
@item mail-source-crash-box
@vindex mail-source-crash-box
File where mail will be stored while processing it. The default is
;; Other mailing lists...
(any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list")
(any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list")
+ ;; Both lists below have the same suffix, so prevent
+ ;; cross-posting to mkpkg.list of messages posted only to
+ ;; the bugs- list, but allow cross-posting when the
+ ;; message was really cross-posted.
+ (any "bugs-mypackage@@somewhere" "mypkg.bugs")
+ (any "mypackage@@somewhere\" - "bugs-mypackage" "mypkg.list")
;; People...
(any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen"))
;; Unmatched mail goes to the catch all group.
examples.
@item
-@var{(FIELD VALUE SPLIT)}: If the split is a list, the first element of
-which is a string, then store the message as specified by SPLIT, if
-header FIELD (a regexp) contains VALUE (also a regexp).
+@var{(FIELD VALUE [- RESTRICT [- RESTRICT [...]]] SPLIT)}: If the split
+is a list, the first element of which is a string, then store the
+message as specified by SPLIT, if header FIELD (a regexp) contains VALUE
+(also a regexp). If RESTRICT (yet another regexp) matches some string
+after FIELD and before the end of the matched VALUE, the SPLIT is
+ignored. If none of the RESTRICT clauses match, SPLIT is processed.
@item
@var{(| SPLIT...)}: If the split is a list, and the first element is
Matt Armstrong,
Marc Auslander,
Miles Bader,
+Alexei V. Barantsev,
Frank Bennett,
Robert Bihlmeyer,
Chris Bone,
Mark Borges,
Mark Boyns,
Lance A. Brown,
+Rob Browning,
Kees de Bruin,
Martin Buchholz,
Joe Buehler,
David Charlap,
Dan Christensen,
Kevin Christian,
+Jae-you Chung, @c ?
+James H. Cloos, Jr.,
+Laura Conrad,
Michael R. Cook,
Glenn Coombs,
+Andrew J. Cosgriff,
+Neil Crellin,
Frank D. Cringle,
Geoffrey T. Dairiki,
Andre Deparade,
Michael Welsh Duggan,
Dave Edmondson,
Paul Eggert,
+Mark W. Eichin,
Karl Eichwalder,
Enami Tsugutomo, @c Enami
Michael Ernst,
Sam Falkner,
Nelson Jose dos Santos Ferreira,
Sigbjorn Finne,
+Sven Fischer,
Paul Fisher,
Decklin Foster,
Gary D. Foster,
Yoshiki Hayashi, @c ?
P. E. Jareth Hein,
Hisashige Kenji, @c Hisashige
+Scott Hofmann,
Marc Horowitz,
Gunnar Horrigmo,
Richard Hoskins,
Brad Howes,
+Miguel de Icaza,
François Felix Ingrand,
+Tatsuya Ichikawa, @c ?
Ishikawa Ichiro, @c Ishikawa
Lee Iverson,
Iwamuro Motonori, @c Iwamuro
Rajappa Iyer,
Andreas Jaeger,
+Adam P. Jenkins,
Randell Jesup,
Fred Johansen,
Gareth Jones,
Simon Josefsson,
Greg Klanderman,
Karl Kleinpaste,
+Michael Klingbeil,
Peter Skov Knudsen,
Shuhei Kobayashi, @c Kobayashi
+Petr Konecny,
Koseki Yoshinori, @c Koseki
Thor Kristoffersen,
Jens Lautenbacher,
Ken Olstad,
Masaharu Onishi, @c Onishi
Hideki Ono, @c Ono
+Ettore Perazzoli,
William Perry,
Stephen Peters,
Jens-Ulrik Holger Petersen,
Richard Stallman,
Greg Stark,
Sam Steingold,
+Paul Stevenson,
Jonas Steverud,
Paul Stodghill,
+Kiyokazu Suto, @c Suto
Kurt Swanson,
Samuel Tardieu,
Teddy,
Chuck Thompson,
+Tozawa Akihiko, @c Tozawa
Philippe Troin,
James Troup,
Trung Tran-Duc,
+Jack Twilley,
Aaron M. Ucko,
Aki Vehtari,
Didier Verna,
+Vladimir Volovich,
Jan Vroonhof,
Stefan Waldherr,
Pete Ware,
Allow "orphan" scores in the Agent scoring.
@item
+@example
+ - Edit article's summary line.
+ - End edit
+ - Sort lines in buffer by subject
+
+ --> the old subject line appears in Summary buffer, not the one that was
+ just changed to.
+@end example
+
+@item
Solve the halting problem.
@c TODO
\input texinfo @c -*-texinfo-*-
@setfilename message-ja
-@settitle Message 6.10.069 Manual
+@settitle Message 6.10.070 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 6.10.069 Manual
+@title Message 6.10.070 Manual
@author by Lars Magne Ingebrigtsen
@translated by members of Semi-gnus mailing-list
* Key Index:: \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw!#\e(B
@end menu
-\e$B$3$N%^%K%e%"%k$O\e(B Message 6.10.069 \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e%"%k$H\e(B
+\e$B$3$N%^%K%e%"%k$O\e(B Message 6.10.070 \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e%"%k$H\e(B
\e$BF1$8HGHV9f$N\e(B Gnus \e$B$NG[I[$H6&$KG[I[$5$l$^$9!#\e(B
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 6.10.069 Manual
+@settitle Message 6.10.070 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 6.10.069 Manual
+@title Message 6.10.070 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 6.10.069. Message is
+This manual corresponds to Message 6.10.070. Message is
distributed with the Gnus distribution bearing the same version number
as this manual.