+2001-08-07 Andreas Jaeger <aj@suse.de>
+
+ * gpg.el (gpg-passphrase-forget): Don't cache
+ gpg-passphrase-timer.
+ (gpg-passphrase-store): Check if gpg-passphrase-timer is
+ initialized already.
+
2001-07-30 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
From Andreas Fuchs <asf@void.at>
"Forget stored passphrase."
(interactive)
(cancel-timer gpg-passphrase-timer)
+ (setq gpg-passphrase-timer nil)
(gpg-passphrase-clear-string gpg-passphrase)
(setq gpg-passphrase nil))
"Store PASSPHRASE in cache.
Updates the timeout for clearing the cache to `gpg-passphrase-timeout'."
(unless (equal gpg-passphrase-timeout 0)
+ (if (null gpg-passphrase-timer)
+ (setq gpg-passphrase-timer (timer-create)))
(timer-set-time gpg-passphrase-timer
(timer-relative-time (current-time)
gpg-passphrase-timeout))
+2001-08-12 Simon Josefsson <jas@extundo.com>
+ Suggested by Kai.Grossjohann@CS.Uni-Dortmund.DE
+
+ Support `recent' mark indicating newly arrived messages (to
+ separate from old but unread messages).
+
+ * nnimap.el (nnimap-retrieve-groups): Push dummy article into
+ `nnmail-split-history' if recent is > 0.
+ (nnimap-request-update-info-internal): Update `recent' marks.
+ (nnimap-request-set-mark): Never set `recent' marks.
+ (nnimap-mark-to-predicate-alist, nnimap-mark-to-flag-alist): Add
+ recent.
+
+ * gnus-sum.el (gnus-recent-mark): New mark.
+ (gnus-newsgroup-recent): New variable.
+ (gnus-summary-local-variables): Add gnus-newsgroup-recent.
+ (gnus-summary-prepare-threads): Mark recent articles.
+ (gnus-summary-add-mark): Support recent.
+ (gnus-summary-update-secondary-mark): Support recent.
+
+ * gnus.el (gnus-article-mark-lists): Add recent.
+
+2001-08-12 Simon Josefsson <jas@extundo.com>
+
+ * mm-bodies.el (mm-decode-content-transfer-encoding): Returns
+ whether successful decoding took place. Add doc.
+
+2001-08-12 Simon Josefsson <jas@extundo.com>
+ Suggested by Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * gnus.el (gnus-summary-line-format, gnus-parameters):
+ * gnus-gl.el (gnus-summary-grouplens-line-format):
+ * gnus-salt.el (gnus-summary-pick-line-format):
+ * gnus-spec.el (gnus-format-specs): %n is 23 chars.
+
+2001-08-11 09:40:00 Karl Kleinpaste <karl@charcoal.com>
+ Committed by Kai Gro\e,A_\e(Bjohann.
+
+ * gnus-score.el (gnus-score-string): Fix `match' regexp
+ for `extra' header case.
+
+2001-08-10 23:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nnmbox.el (nnmbox-read-mbox): No warning.
+
+2001-08-10 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * nndoc.el (nndoc-article-type): Fix doc.
+ (nndoc-generate-article-function): New.
+ (nndoc-dissection-function): New.
+ (nndoc-type-alist): Add oe-dbx.
+ (nndoc-oe-dbx-type-p): New.
+ (nndoc-oe-dbx-dissection): New.
+ (nndoc-oe-dbx-generate-article): New.
+
+2001-08-11 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus-delay.el (gnus-delay-send-drafts): Cleaner way to check
+ whether deadline has been reached. Patch from Dan Nicolaescu
+ <dann@godzilla.ics.uci.edu>.
+
+2001-08-10 02:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-ml.el (turn-on-gnus-mailing-list-mode): Use
+ gnus-group-find-parameter. Suggested by Janne Rinta-Manty
+ <rintaman@cs.Helsinki.FI>.
+
+ * mail-source.el (mail-source-movemail): The error buffer is
+ modified, but nothing in it.
+
+2001-08-10 01:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+
+ * message.el (message-bogus-system-names): New.
+ (message-make-fqdn): Use it.
+
2001-08-09 15:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
* nndraft.el (nndraft-request-group): Use
(setq deadline (nnheader-header-value))
(setq deadline (apply 'encode-time (parse-time-string deadline)))
(setq deadline (time-since deadline))
- (when (and (>= (nth 0 deadline) 0)
- (>= (nth 1 deadline) 0))
+ (when (time-less-p (apply 'encode-time
+ (parse-time-string deadline))
+ (current-time))
(message "Sending article %d" article)
(gnus-draft-send article group)
(message "Sending article %d...done" article)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defvar gnus-summary-grouplens-line-format
- "%U\%R\%z%l%I\%(%[%4L: %-20,20n%]%) %s\n"
+ "%U\%R\%z%l%I\%(%[%4L: %-23,23n%]%) %s\n"
"*The line format spec in summary GroupLens mode buffers.")
(defvar grouplens-pseudonym ""
;;;###autoload
(defun turn-on-gnus-mailing-list-mode ()
- (when (gnus-group-get-parameter gnus-newsgroup-name 'to-list)
+ (when (gnus-group-find-parameter gnus-newsgroup-name 'to-list)
(gnus-mailing-list-mode 1)))
;;;###autoload
:group 'gnus-summary-pick)
(defcustom gnus-summary-pick-line-format
- "%-5P %U\%R\%z\%I\%(%[%4L: %-20,20n%]%) %s\n"
+ "%-5P %U\%R\%z\%I\%(%[%4L: %-23,23n%]%) %s\n"
"*The format specification of the lines in pick buffers.
It accepts the same format specs that `gnus-summary-line-format' does."
:type 'string
;; Evil hackery to make match usable in non-standard headers.
(when extra
(setq match (concat "[ (](" extra " \\. \"[^)]*"
- match "[^(]*\")[ )]")
+ match "[^\"]*\")[ )]")
search-func 're-search-forward)) ; XXX danger?!?
(cond
`((group ("%M\%S\%p\%P\%5y: %(%g%)%l\n" ,gnus-group-line-format-spec))
(summary-dummy ("* %(: :%) %S\n"
,gnus-summary-dummy-line-format-spec))
- (summary ("%U\%R\%z\%I\%(%[%4L: %-20,20n%]%) %s\n"
+ (summary ("%U\%R\%z\%I\%(%[%4L: %-23,23n%]%) %s\n"
,gnus-summary-line-format-spec)))
"Alist of format specs.")
:group 'gnus-summary-marks
:type 'character)
+(defcustom gnus-recent-mark ?N
+ "*Mark used for articles that are recent."
+ :group 'gnus-summary-marks
+ :type 'character)
+
(defcustom gnus-cached-mark ?*
"*Mark used for articles that are in the cache."
:group 'gnus-summary-marks
(defvar gnus-newsgroup-forwarded nil
"List of articles that have been forwarded in the current newsgroup.")
+(defvar gnus-newsgroup-recent nil
+ "List of articles that have are recent in the current newsgroup.")
+
(defvar gnus-newsgroup-expirable nil
"List of articles in the current newsgroup that can be expired.")
gnus-newsgroup-unselected gnus-newsgroup-marked
gnus-newsgroup-reads gnus-newsgroup-saved
gnus-newsgroup-replied gnus-newsgroup-forwarded
+ gnus-newsgroup-recent
gnus-newsgroup-expirable
gnus-newsgroup-processable gnus-newsgroup-killed
gnus-newsgroup-downloadable gnus-newsgroup-undownloaded
gnus-forwarded-mark)
((memq number gnus-newsgroup-saved)
gnus-saved-mark)
+ ((memq number gnus-newsgroup-recent)
+ gnus-recent-mark)
(t gnus-no-mark))
gnus-tmp-from (mail-header-from gnus-tmp-header)
gnus-tmp-name
(error "No such mark type: %s" type)
(setq var (intern (format "gnus-newsgroup-%s" type)))
(set var (cons article (symbol-value var)))
- (if (memq type '(processable cached replied forwarded saved))
+ (if (memq type '(processable cached replied forwarded recent saved))
(gnus-summary-update-secondary-mark article)
- ;;; !!! This is bobus. We should find out what primary
+ ;;; !!! This is bogus. We should find out what primary
;;; !!! mark we want to set.
(gnus-summary-update-mark gnus-del-mark 'unread)))))
gnus-forwarded-mark)
((memq article gnus-newsgroup-saved)
gnus-saved-mark)
+ ((memq article gnus-newsgroup-recent)
+ gnus-recent-mark)
(t gnus-no-mark))
'replied)
(when (gnus-visual-p 'summary-highlight 'highlight)
((\"mail\\\\..*\" (gnus-show-threads nil)
(gnus-use-scoring nil)
(gnus-summary-line-format
- \"%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\\n\")
+ \"%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\\n\")
(gcc-self . t)
(display . all))
(\"mail\\\\.me\" (gnus-use-scoring t))
(bookmarks . bookmark) (dormant . dormant)
(scored . score) (saved . save)
(cached . cache) (downloadable . download)
- (unsendable . unsend) (forwarded . forward)))
+ (unsendable . unsend) (forwarded . forward)
+ (recent . recent)))
(defvar gnus-headers-retrieved-by nil)
(defvar gnus-article-reply nil)
;;; gnus-sum.el thingies
-(defcustom gnus-summary-line-format "%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n"
+(defcustom gnus-summary-line-format "%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n"
"*The format specification of the lines in the summary buffer.
It works along the same lines as a normal formatting string,
nil errors nil from to)))))
(when (file-exists-p to)
(set-file-modes to mail-source-default-file-modes))
- (if (and (not (buffer-modified-p errors))
+ (if (and (or (not (buffer-modified-p errors))
+ (zerop (buffer-size errors)))
(zerop result))
;; No output => movemail won.
t
(defvar message-send-mail-real-function nil
"Internal send mail function.")
+(defvar message-bogus-system-names "^localhost\\."
+ "The regexp of bogus system names.")
+
(eval-and-compile
(autoload 'message-setup-toolbar "messagexmas")
(autoload 'mh-new-draft-name "mh-comp")
(let ((system-name (system-name))
(user-mail (message-user-mail-address)))
(cond
- ((string-match "[^.]\\.[^.]" system-name)
+ ((and (string-match "[^.]\\.[^.]" system-name)
+ (not (string-match message-bogus-system-names system-name)))
;; `system-name' returned the right result.
system-name)
;; Try `mail-host-address'.
;;;
(defun mm-decode-content-transfer-encoding (encoding &optional type)
+ "Decodes buffer encoded with ENCODING, returning success status.
+If TYPE is `text/plain' CRLF->LF translation may occur."
(prog1
(condition-case error
(cond
((eq encoding 'quoted-printable)
- (quoted-printable-decode-region (point-min) (point-max)))
+ (quoted-printable-decode-region (point-min) (point-max))
+ t)
((eq encoding 'base64)
(base64-decode-region
(point-min)
(point))))
((memq encoding '(7bit 8bit binary))
;; Do nothing.
- )
+ t)
((null encoding)
;; Do nothing.
- )
+ t)
((memq encoding '(x-uuencode x-uue))
(require 'mm-uu)
- (funcall mm-uu-decode-function (point-min) (point-max)))
+ (funcall mm-uu-decode-function (point-min) (point-max))
+ t)
((eq encoding 'x-binhex)
(require 'mm-uu)
- (funcall mm-uu-binhex-decode-function (point-min) (point-max)))
+ (funcall mm-uu-binhex-decode-function (point-min) (point-max))
+ t)
((functionp encoding)
- (funcall encoding (point-min) (point-max)))
+ (funcall encoding (point-min) (point-max))
+ t)
(t
(message "Unknown encoding %s; defaulting to 8bit" encoding)))
(error
;;; Commentary:
+;; For Outlook mail boxes format, see http://mbx2mbox.sourceforge.net/
+
;;; Code:
(eval-when-compile (require 'cl))
"*Type of the file.
One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
`rfc934', `rfc822-forward', `mime-parts', `standard-digest',
-`slack-digest', `clari-briefs', `nsmail' or `guess'.")
+`slack-digest', `clari-briefs', `nsmail', `outlook', `oe-dbx' or
+`guess'.")
(defvoo nndoc-post-type 'mail
"*Whether the nndoc group is `mail' or `post'.")
(outlook
(article-begin-function . nndoc-outlook-article-begin)
(body-end . "\0"))
+ (oe-dbx ;; Outlook Express DBX format
+ (dissection-function . nndoc-oe-dbx-dissection)
+ (generate-head-function . nndoc-oe-dbx-generate-head)
+ (generate-article-function . nndoc-oe-dbx-generate-article))
(guess
(guess . t)
(subtype nil))
(guess . t)
(subtype nil))))
+(defvar nndoc-binary-file-names ".[Dd][Bb][Xx]$"
+ "Regexp for binary nndoc file names.")
+
\f
(defvoo nndoc-file-begin nil)
(defvoo nndoc-first-article nil)
(defvoo nndoc-generate-head-function nil)
(defvoo nndoc-article-transform-function nil)
(defvoo nndoc-article-begin-function nil)
+(defvoo nndoc-generate-article-function nil)
+(defvoo nndoc-dissection-function nil)
(defvoo nndoc-status-string "")
(defvoo nndoc-group-alist nil)
(set-buffer buffer)
(erase-buffer)
(when entry
- (if (stringp article)
- nil
+ (cond
+ ((stringp article) nil)
+ (nndoc-generate-article-function
+ (funcall nndoc-generate-article-function article))
+ (t
(insert-buffer-substring
nndoc-current-buffer (car entry) (nth 1 entry))
(insert "\n")
(funcall nndoc-prepare-body-function))
(when nndoc-article-transform-function
(funcall nndoc-article-transform-function article))
- t)))))
+ t))))))
(deffoo nndoc-request-group (group &optional server dont-check)
"Select news GROUP."
(save-excursion
(set-buffer nndoc-current-buffer)
(erase-buffer)
- (if (stringp nndoc-address)
- (nnheader-insert-file-contents nndoc-address)
- (insert-buffer-substring nndoc-address))
- (run-hooks 'nndoc-open-document-hook))))
+ (if (and (stringp nndoc-address)
+ (string-match nndoc-binary-file-names nndoc-address))
+ (let ((coding-system-for-read 'binary))
+ (mm-insert-file-contents nndoc-address))
+ (if (stringp nndoc-address)
+ (nnheader-insert-file-contents nndoc-address)
+ (insert-buffer-substring nndoc-address))
+ (run-hooks 'nndoc-open-document-hook)))))
;; Initialize the nndoc structures according to this new document.
(when (and nndoc-current-buffer
(not nndoc-dissection-alist))
nndoc-body-begin nndoc-body-end-function nndoc-body-end
nndoc-prepare-body-function nndoc-article-transform-function
nndoc-generate-head-function nndoc-body-begin-function
- nndoc-head-begin-function)))
+ nndoc-head-begin-function
+ nndoc-generate-article-function
+ nndoc-dissection-function)))
(while vars
(set (pop vars) nil)))
(let (defs)
;; FIXME: Is JMF the magic of outlook mailbox? -- ShengHuo.
(looking-at "JMF"))
+(defun nndoc-oe-dbx-type-p ()
+ (looking-at (mm-string-as-multibyte "\317\255\022\376")))
+
+(defun nndoc-read-little-endian ()
+ (+ (prog1 (char-after) (forward-char 1))
+ (lsh (prog1 (char-after) (forward-char 1)) 8)
+ (lsh (prog1 (char-after) (forward-char 1)) 16)
+ (lsh (prog1 (char-after) (forward-char 1)) 24)))
+
+(defun nndoc-oe-dbx-decode-block ()
+ (list
+ (nndoc-read-little-endian) ;; this address
+ (nndoc-read-little-endian) ;; next address offset
+ (nndoc-read-little-endian) ;; blocksize
+ (nndoc-read-little-endian))) ;; next address
+
+(defun nndoc-oe-dbx-dissection ()
+ (let ((i 0) blk p tp)
+ (goto-char 60117) ;; 0x0000EAD4+1
+ (setq p (point))
+ (unless (eobp)
+ (setq blk (nndoc-oe-dbx-decode-block)))
+ (while (and blk (> (car blk) 0) (or (zerop (nth 3 blk))
+ (> (nth 3 blk) p)))
+ (push (list (incf i) p nil nil nil 0) nndoc-dissection-alist)
+ (while (and (> (car blk) 0) (> (nth 3 blk) p))
+ (goto-char (1+ (nth 3 blk)))
+ (setq blk (nndoc-oe-dbx-decode-block)))
+ (if (or (<= (car blk) p)
+ (<= (nth 1 blk) 0)
+ (not (zerop (nth 3 blk))))
+ (setq blk nil)
+ (setq tp (+ (car blk) (nth 1 blk) 17))
+ (if (or (<= tp p) (>= tp (point-max)))
+ (setq blk nil)
+ (goto-char tp)
+ (setq p tp
+ blk (nndoc-oe-dbx-decode-block)))))))
+
+(defun nndoc-oe-dbx-generate-article (article &optional head)
+ (let ((entry (cdr (assq article nndoc-dissection-alist)))
+ (cur (current-buffer))
+ (begin (point))
+ blk p)
+ (with-current-buffer nndoc-current-buffer
+ (setq p (car entry))
+ (while (> p (point-min))
+ (goto-char p)
+ (setq blk (nndoc-oe-dbx-decode-block))
+ (setq p (point))
+ (with-current-buffer cur
+ (insert-buffer-substring nndoc-current-buffer p (+ p (nth 2 blk))))
+ (setq p (1+ (nth 3 blk)))))
+ (goto-char begin)
+ (while (re-search-forward "\r$" nil t)
+ (delete-backward-char 1))
+ (when head
+ (goto-char begin)
+ (when (search-forward "\n\n" nil t)
+ (setcar (cddddr entry) (count-lines (point) (point-max)))
+ (delete-region (1- (point)) (point-max))))
+ t))
+
+(defun nndoc-oe-dbx-generate-head (article)
+ (nndoc-oe-dbx-generate-article article 'head))
+
(deffoo nndoc-request-accept-article (group &optional server last)
nil)
-
;;;
;;; Functions for dissecting the documents
;;;
;; 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))
- ;; Go through the file.
- (while (if (and first nndoc-first-article)
- (nndoc-search nndoc-first-article)
- (nndoc-article-begin))
- (setq first nil)
- (cond (nndoc-head-begin-function
- (funcall nndoc-head-begin-function))
- (nndoc-head-begin
- (nndoc-search nndoc-head-begin)))
- (if (or (eobp)
- (and nndoc-file-end
- (looking-at nndoc-file-end)))
- (goto-char (point-max))
- (setq head-begin (point))
- (nndoc-search (or nndoc-head-end "^$"))
- (setq head-end (point))
- (if nndoc-body-begin-function
- (funcall nndoc-body-begin-function)
- (nndoc-search (or nndoc-body-begin "^\n")))
- (setq body-begin (point))
- (or (and nndoc-body-end-function
- (funcall nndoc-body-end-function))
- (and nndoc-body-end
- (nndoc-search nndoc-body-end))
- (nndoc-article-begin)
- (progn
- (goto-char (point-max))
- (when nndoc-file-end
- (and (re-search-backward nndoc-file-end nil t)
- (beginning-of-line)))))
- (setq body-end (point))
- (push (list (incf i) head-begin head-end body-begin body-end
- (count-lines body-begin body-end))
- nndoc-dissection-alist))))))
+ (if nndoc-dissection-function
+ (funcall nndoc-dissection-function)
+ ;; Find the beginning of the file.
+ (when nndoc-file-begin
+ (nndoc-search nndoc-file-begin))
+ ;; Go through the file.
+ (while (if (and first nndoc-first-article)
+ (nndoc-search nndoc-first-article)
+ (nndoc-article-begin))
+ (setq first nil)
+ (cond (nndoc-head-begin-function
+ (funcall nndoc-head-begin-function))
+ (nndoc-head-begin
+ (nndoc-search nndoc-head-begin)))
+ (if (or (eobp)
+ (and nndoc-file-end
+ (looking-at nndoc-file-end)))
+ (goto-char (point-max))
+ (setq head-begin (point))
+ (nndoc-search (or nndoc-head-end "^$"))
+ (setq head-end (point))
+ (if nndoc-body-begin-function
+ (funcall nndoc-body-begin-function)
+ (nndoc-search (or nndoc-body-begin "^\n")))
+ (setq body-begin (point))
+ (or (and nndoc-body-end-function
+ (funcall nndoc-body-end-function))
+ (and nndoc-body-end
+ (nndoc-search nndoc-body-end))
+ (nndoc-article-begin)
+ (progn
+ (goto-char (point-max))
+ (when nndoc-file-end
+ (and (re-search-backward nndoc-file-end nil t)
+ (beginning-of-line)))))
+ (setq body-end (point))
+ (push (list (incf i) head-begin head-end body-begin body-end
+ (count-lines body-begin body-end))
+ nndoc-dissection-alist)))))))
(defun nndoc-article-begin ()
(if nndoc-article-begin-function
(or (member "\\NoSelect"
(imap-mailbox-get 'list-flags group nnimap-server-buffer))
(let ((info (nnimap-find-minmax-uid group 'examine)))
+ (when (> (or (imap-mailbox-get 'recent group
+ nnimap-server-buffer) 0)
+ 0)
+ (push (list (cons group 0)) nnmail-split-history))
(insert (format "\"%s\" %d %d y\n" group
(or (nth 2 info) 0)
(max 1 (or (nth 1 info) 1))))))))
(gnus-info-set-read info seen)))
(mapcar (lambda (pred)
- (when (and (nnimap-mark-permanent-p (cdr pred))
- (member (nnimap-mark-to-flag (cdr pred))
- (imap-mailbox-get 'flags)))
+ (when (or (eq (cdr pred) 'recent)
+ (and (nnimap-mark-permanent-p (cdr pred))
+ (member (nnimap-mark-to-flag (cdr pred))
+ (imap-mailbox-get 'flags))))
(gnus-info-set-marks
info
(nnimap-update-alist-soft
marks)
;; cache flags are pointless on the server
(setq cmdmarks (delq 'cache cmdmarks))
+ ;; recent marks can't be set
+ (setq cmdmarks (delq 'recent cmdmarks))
(when nnimap-importantize-dormant
;; flag dormant articles as ticked
(if (memq 'dormant cmdmarks)
'((read . "SEEN")
(tick . "FLAGGED")
(draft . "DRAFT")
+ (recent . "RECENT")
(reply . "ANSWERED")))
(cons (cdr pair)
(format "KEYWORD gnus-%s" (symbol-name (cdr pair))))))
'((read . "\\Seen")
(tick . "\\Flagged")
(draft . "\\Draft")
+ (recent . "\\Recent")
(reply . "\\Answered")))
(cons (cdr pair)
(format "gnus-%s" (symbol-name (cdr pair))))))
(let ((nnheader-file-coding-system
nnmbox-file-coding-system))
(nnheader-find-file-noselect
- nnmbox-mbox-file nil t))))
+ nnmbox-mbox-file t t))))
(buffer-disable-undo)
;; Go through the group alist and compare against the mbox file.
+2001-08-11 23:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
+ From Nevin Kapur <nevin@jhu.edu>
+
+ * gnus.texi (September Gnus): Typo.
+
+2001-08-12 Simon Josefsson <jas@extundo.com>
+ Suggested by Kai.Grossjohann@CS.Uni-Dortmund.DE
+
+ * gnus.texi (Other Marks): Add recent.
+ (Optional Backend Functions): Add forward and recent.
+
+2001-08-12 Kai Grossjohann <grossjoh@ls6.informatik.uni-dortmund.de>
+
+ * gnus.texi (Window Layout): Renamed from `Windows
+ Configuration'. After all, we're not talking about Microsoft.
+ Suggested by Barry Fishman.
+
+2001-08-11 Kai Gro\e,A_\e(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+ * gnus.texi (Summary Mail Commands): Remove duplicate explanation
+ of `S W'. Reported by Norbert Koch.
+
2001-08-09 15:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
From Benjamin Rutt <brutt@bloomington.in.us>
* Symbolic Prefixes:: \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$kJ}K!\e(B
* Formatting Variables:: \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9$k;v\e(B
\e$B$,$G$-$k\e(B
-* Windows Configuration:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
+* Window Layout:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
* Faces and Fonts:: \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
* Compilation:: \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
* Mode Lines:: \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
\e$BF,0z?t$N=,47$r;H$$$^$9!#\e(B
@item S v
-@kindex S v (Summary)
+@kindex S v (\e$B35N,\e(B)
@findex gnus-summary-very-wide-reply
\e$B8=:_$N5-;v$r=q$$$??M$KBP$7$F!"Hs>o$K9-$$JVEz\e(B (very wide reply) \e$B$r$7$^\e(B
\e$B$9\e(B (@code{gnus-summary-very-wide-reply})\e$B!#\e(B@dfn{\e$BHs>o$K9-$$JVEz\e(B} \e$B$H$O!"%W\e(B
\e$B$r$9$k$3$H$G$9!#$3$NL?Na$O%W%m%;%9\e(B/\e$B@\F,0z?t$N=,47$r;H$$$^$9!#\e(B
@item S V
-@kindex S V (Summary)
+@kindex S V (\e$B35N,\e(B)
@findex gnus-summary-very-wide-reply-with-original
\e$B8=:_$N5-;v$KK\5-;v$r4^$s$@Hs>o$K9-$$JVEz$N%a!<%k$rAw$j$^\e(B
\e$B$9\e(B (@code{gnus-summary-very-wide-reply-with-original})\e$B!#$3$NL?Na$O%W%m%;\e(B
\e$BE>Aw$7$?5-;v$O$9$Y$FFs7eL\$K\e(B @samp{O} \e$B$N0u$,$D$-$^\e(B
\e$B$9\e(B (@code{gnus-forwarded-mark})\e$B!#\e(B
+@vindex gnus-recent-mark
+\e$B$=$N%0%k!<%W$G\e(B ``\e$B:G6a\e(B'' (``recently'') \e$BFO$$$?5-;v$OFs7eL\$K\e(B @samp{N} \e$B$N\e(B
+\e$B$N0u$,$D$-$^$9\e(B (@code{gnus-recent-mark})\e$B!#$?$$$F$$$N%P%C%/%(%s%I$O$3$N0u\e(B
+\e$B$r%5%]!<%H$;$:!"$=$N>l9g$OI=<($5$l$^$;$s!#\e(B
+
@item
@vindex gnus-cached-mark
\e$B5-;v%-%c%C%7%e$KCy$a$i$l$F$$$k5-;v$OFs7eL\$K\e(B @samp{*} \e$B$N0u$,$D$-$^\e(B
(article 1.0))))
@end lisp
-@xref{Windows Configuration}\e$B!#\e(B
+@xref{Window Layout}\e$B!#\e(B
@node Mail Group Commands
@section \e$B%a!<%k%0%k!<%WL?Na\e(B
* Symbolic Prefixes:: \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$kJ}K!\e(B
* Formatting Variables:: \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9$k;v\e(B
\e$B$,$G$-$k\e(B
-* Windows Configuration:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
+* Window Layout:: Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
* Faces and Fonts:: \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
* Compilation:: \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
* Mode Lines:: \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
@samp{%(} \e$B;XDj\e(B (\e$B$d$=$NN`$N$b$N\e(B) \e$B$O%b!<%I9TJQ?t$G$OA4$/0UL#$r$J$5$J$$;v$K\e(B
\e$BCm0U$7$F$/$@$5$$!#\e(B
-@node Windows Configuration
-@section \e$B%&%#%s%I%&$N@_Dj\e(B
-@cindex windows configuration
+@node Window Layout
+@section \e$B%&%#%s%I%&$NG[CV\e(B
+@cindex window layout
\e$B$$$(!"\e(BX \e$B$K4X$9$k;v$O$"$j$^$;$s$N$G!"$*$H$J$7$/$7$F2<$5$$!#\e(B
\e$B$O=i4|@_Dj$G\e(B @samp{*Picons*} \e$B%P%C%U%!$K0LCV$7$^$9\e(B)\e$B!#B>$NM-8z$J>l=j$H$7$F\e(B
\e$B$O\e(B @code{article}, @code{summary} \e$B$"$k$$$O\e(B @samp{*scratch*} \e$B$@$m$&$HCN$C\e(B
\e$B$?$3$H$G$O$"$j$^$;$s!#$?$@$=$N%P%C%U%!$rI8=`$N\e(B gnus \e$BAkG[CV=h\e(B
-\e$BM}\e(B --- @pxref{Windows Configuration} \e$B$K$h$C$F8+$($k$h$&$K$7$F$*$/$3$H$r\e(B
-\e$B3NG'$7$F$/$@$5$$!#\e(B
+\e$BM}\e(B --- @pxref{Window Layout} \e$B$K$h$C$F8+$($k$h$&$K$7$F$*$/$3$H$r3NG'$7$F\e(B
+\e$B$/$@$5$$!#\e(B
@item gnus-picons-group-excluded-groups
@vindex gnus-picons-group-excluded-groups
@item
Gnus \e$B$N%&%#%s%I%&$H%U%l!<%`$N@_Dj$G$?$/$5$s$NJQ$J;v$r$G$-$k$h$&$K$J$j$^\e(B
-\e$B$7$?\e(B (@pxref{Windows Configuration})\e$B!#\e(B
+\e$B$7$?\e(B (@pxref{Window Layout})\e$B!#\e(B
@item
\e$B%-!<%\!<%I$r;H$&Be$o$j$K!"%\%?%s$r%/%j%C%/$G$-$k$h$&$K$J$j$^$7\e(B
@item
\e$B%U%l!<%`$,\e(B @code{gnus-buffer-configuration} \e$B$NItJ,$K$J$k;v$,$G$-$^\e(B
-\e$B$9\e(B (@pxref{Windows Configuration})\e$B!#\e(B
+\e$B$9\e(B (@pxref{Window Layout})\e$B!#\e(B
@item
\e$B%G!<%b%s$N%W%m%;%9$G%a!<%k$r:FAv::$9$k$3$H$,$G$-$k$h$&$K$J$j$^$7\e(B
\e$BB8:_$9$k0u$r>C5n$7$F!";XDj$5$l$?$h$&$K@_Dj!"0u$NDI2C\e(B (\e$B8@5Z$5$l$F$$$J$$0u\e(B
\e$B$OJ]B8$7$^$9\e(B)\e$B!"0u$N>C5n\e(B (\e$B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9\e(B) \e$B$G$9!#\e(BMARK \e$B$O0u\e(B
\e$B$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s%\%k$G$9!#8=:_;H$o$l$F$$$k0u\e(B
-\e$B$O\e(B @code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed}, @code{dormant}, @code{save}, @code{download}, @code{unsend} \e$B$G\e(B
-\e$B$9$,!"$b$72DG=$J$i!"$"$J$?$N%P%C%/%(%s%I$O$3$l$i$K@)8B$r$9$k$Y$-$G$O$"$j\e(B
-\e$B$^$;$s!#\e(B
+\e$B$O\e(B @code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed},
+@code{dormant}, @code{save}, @code{download}, @code{unsend},
+@code{forward} \e$B$*$h$S\e(B @code{recent} \e$B$G$9$,!"$b$72DG=$J$i!"$"$J$?$N%P%C%/\e(B
+\e$B%(%s%I$O$3$l$i$K@)8B$r$9$k$Y$-$G$O$"$j$^$;$s!#\e(B
\e$BL7=b$9$kF0:n$,;XDj$5$l$?$H$-!"%j%9%H$N:G8e$NF0:n$,8zNO$r;}$D$b$N$K$J$j$^\e(B
\e$B$9!#$9$J$o$A!"F0:n$K5-;v\e(B 1 \e$B$K\e(B @code{\e$B2D;k\e(B} \e$B0u$rDI2C$9$kMW5a$,$"$j!"%j%9%H\e(B
* Interactive:: Making Gnus ask you many questions.
* Symbolic Prefixes:: How to supply some Gnus functions with options.
* Formatting Variables:: You can specify what buffers should look like.
-* Windows Configuration:: Configuring the Gnus buffer windows.
+* Window Layout:: Configuring the Gnus buffer windows.
* Faces and Fonts:: How to change how faces look.
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
articles. This command uses the process/prefix convention.
-@item S W
-@kindex S W (Summary)
-@findex gnus-summary-wide-reply-with-original
-Mail a very wide reply to the current article and include the original
-message (@code{gnus-summary-wide-reply-with-original}). This command uses
-the process/prefix convention.
-
@item S o m
@itemx C-c C-f
@kindex S o m (Summary)
All articles that you have forwarded will be marked with an @samp{O} in
the second column (@code{gnus-forwarded-mark}).
+@vindex gnus-recent-mark
+Articles that are ``recently'' arrived in the group will be marked
+with an @samp{N} in the second column (@code{gnus-recent-mark}). Most
+backend doesn't support the mark, in which case it's not shown.
+
@item
@vindex gnus-cached-mark
Articles stored in the article cache will be marked with an @samp{*} in
(article 1.0))))
@end lisp
-@xref{Windows Configuration}.
+@xref{Window Layout}.
@node Mail Group Commands
* Interactive:: Making Gnus ask you many questions.
* Symbolic Prefixes:: How to supply some Gnus functions with options.
* Formatting Variables:: You can specify what buffers should look like.
-* Windows Configuration:: Configuring the Gnus buffer windows.
+* Window Layout:: Configuring the Gnus buffer windows.
* Faces and Fonts:: How to change how faces look.
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
mode-line variables.
-@node Windows Configuration
-@section Windows Configuration
-@cindex windows configuration
+@node Window Layout
+@section Window Layout
+@cindex window layout
No, there's nothing here about X, so be quiet.
valid places could be @code{article}, @code{summary}, or
@samp{*scratch*} for all I care. Just make sure that you've made the
buffer visible using the standard Gnus window configuration
-routines---@pxref{Windows Configuration}.
+routines---@pxref{Window Layout}.
@item gnus-picons-group-excluded-groups
@vindex gnus-picons-group-excluded-groups
@item
You can do lots of strange stuff with the Gnus window & frame
-configuration (@pxref{Windows Configuration}).
+configuration (@pxref{Window Layout}).
@item
You can click on buttons instead of using the keyboard
buffer (@pxref{Article Keymap}).
@item
-Frames can be part of @code{gnus-buffer-configuration} (@pxref{Windows
-Configuration}).
+Frames can be part of @code{gnus-buffer-configuration} (@pxref{Window
+Layout}).
@item
Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
mentioned) marks. MARK is a list of marks; where each mark is a symbol.
Currently used marks are @code{read}, @code{tick}, @code{reply},
@code{expire}, @code{killed}, @code{dormant}, @code{save},
-@code{download} and @code{unsend}, but your backend should, if possible,
-not limit itself to these.
+@code{download}, @code{unsend}, @code{forward} and @code{recent},
+but your backend should, if possible, not limit itself to these.
Given contradictory actions, the last action in the list should be the
effective one. That is, if your action contains a request to add the