branch.
+2003-05-14 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Gnus v5.10.2 is released.
+
+2003-05-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mail-source.el (mail-source-delete-incoming): Changed to t.
+
+ * rfc2047.el (rfc2047-syntax-table): Funcall.
+
+ * lpath.el ((featurep 'xemacs)): Added set-char-table-range.
+ ((featurep 'xemacs)): No, don't.
+
+ * rfc2047.el (rfc2047-encodable-p): Use the header charset.
+
+ * gnus-sum.el (gnus-summary-reselect-current-group): Supply
+ leave-hidden.
+
+2003-05-14 Jonathan Kamens <jik@kamens.brookline.ma.us>
+
+ * gnus-sum.el (gnus-summary-exit): Added `leave-hidden'. (Tiny
+ patch.)
+
+2003-05-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-registry.el (gnus-registry-store-extra-entry): Use
+ gnus-assq-delete-all.
+
+ * gnus-xmas.el (gnus-xmas-assq-delete-all): New function.
+
+ * message.el (message-ignored-bounced-headers): Add Delivered-To.
+
+ * gnus-sum.el (gnus-summary-find-next): Indent.
+ (gnus-summary-find-prev): Ditto.
+ (gnus-summary-catchup): Doc fix.
+ (gnus-summary-mark-current-read-and-unread-as-read): New function.
+ (gnus-summary-catchup): Really mark after point.
+
+ * gnus-util.el (gnus-user-date): Use %d instead of %m.
+ (gnus-user-date): Use floating point time so that we don't get
+ overflows.
+
+ * gnus-sum.el (gnus-summary-local-variables): Clean up.
+
+ * gnus-fun.el (gnus-display-x-face-in-from): Don't use centering
+ since none of the other image things do.
+
2003-05-13 Katsumi Yamaoka <yamaoka@jpl.org>
* dgnushack.el (assq-delete-all): New compiler macro for Emacs 20.
(if (gnus-image-type-available-p 'xface)
(gnus-create-image
(concat "X-Face: " data)
- 'xface t :ascent 'center :face 'gnus-x-face)
+ 'xface t :face 'gnus-x-face)
(gnus-create-image
- pbm 'pbm t :ascent 'center :face 'gnus-x-face))))
+ pbm 'pbm t :face 'gnus-x-face))))
(gnus-add-wash-type 'xface))))))
(defun gnus-grab-cam-x-face ()
"Put a specific entry in the extras field of the registry entry for id."
(let* ((extra (gnus-registry-fetch-extra id))
(alist (cons (cons key value)
- (assq-delete-all key (gnus-registry-fetch-extra id)))))
+ (gnus-assq-delete-all key (gnus-registry-fetch-extra id)))))
(gnus-registry-store-extra id alist)))
(defun gnus-registry-fetch-group (id)
(gnus-group-best-unread-group exclude-group))))
(defun gnus-summary-find-next (&optional unread article backward)
- (if backward (gnus-summary-find-prev unread article)
+ (if backward
+ (gnus-summary-find-prev unread article)
(let* ((dummy (gnus-summary-article-intangible-p))
(article (or article (gnus-summary-article-number)))
(data (gnus-data-find-list article))
(progn
(while data
(unless (memq (gnus-data-number (car data))
- (cond ((eq gnus-auto-goto-ignores 'always-undownloaded)
- gnus-newsgroup-undownloaded)
- (gnus-plugged
- nil)
- ((eq gnus-auto-goto-ignores 'unfetched)
- gnus-newsgroup-unfetched)
- ((eq gnus-auto-goto-ignores 'undownloaded)
- gnus-newsgroup-undownloaded)))
+ (cond
+ ((eq gnus-auto-goto-ignores
+ 'always-undownloaded)
+ gnus-newsgroup-undownloaded)
+ (gnus-plugged
+ nil)
+ ((eq gnus-auto-goto-ignores
+ 'unfetched)
+ gnus-newsgroup-unfetched)
+ ((eq gnus-auto-goto-ignores
+ 'undownloaded)
+ gnus-newsgroup-undownloaded)))
(when (gnus-data-unread-p (car data))
(setq result (car data)
data nil)))
(progn
(while data
(unless (memq (gnus-data-number (car data))
- (cond ((eq gnus-auto-goto-ignores 'always-undownloaded)
- gnus-newsgroup-undownloaded)
- (gnus-plugged
- nil)
- ((eq gnus-auto-goto-ignores 'unfetched)
- gnus-newsgroup-unfetched)
- ((eq gnus-auto-goto-ignores 'undownloaded)
- gnus-newsgroup-undownloaded)))
+ (cond
+ ((eq gnus-auto-goto-ignores
+ 'always-undownloaded)
+ gnus-newsgroup-undownloaded)
+ (gnus-plugged
+ nil)
+ ((eq gnus-auto-goto-ignores
+ 'unfetched)
+ gnus-newsgroup-unfetched)
+ ((eq gnus-auto-goto-ignores
+ 'undownloaded)
+ gnus-newsgroup-undownloaded)))
(when (gnus-data-unread-p (car data))
(setq result (car data)
data nil)))
(let ((current-subject (gnus-summary-find-for-reselect))
(group gnus-newsgroup-name))
(setq gnus-newsgroup-begin nil)
- (gnus-summary-exit)
+ (gnus-summary-exit nil 'leave-hidden)
;; We have to adjust the point of group mode buffer because
;; point was moved to the next unread newsgroup by exiting.
(gnus-summary-jump-to-group group)
(gnus-save-newsrc-file)
(gnus-dribble-save)))
-(defun gnus-summary-exit (&optional temporary)
+(defun gnus-summary-exit (&optional temporary leave-hidden)
"Exit reading current newsgroup, and then return to group selection mode.
`gnus-exit-group-hook' is called with no arguments if that value is non-nil."
(interactive)
(when (eq mode 'gnus-summary-mode)
(gnus-kill-buffer buf)))
(setq gnus-current-select-method gnus-select-method)
- (pop-to-buffer gnus-group-buffer)
+ (if leave-hidden
+ (set-buffer gnus-group-buffer)
+ (pop-to-buffer gnus-group-buffer))
(if (not quit-config)
(progn
(goto-char group-point)
- (gnus-configure-windows 'group 'force)
+ (unless leave-hidden
+ (gnus-configure-windows 'group 'force))
(unless (pos-visible-in-window-p)
(forward-line (/ (static-if (featurep 'xemacs)
(window-displayed-height)
(gnus-summary-mark-article gnus-current-article
(or new-mark gnus-read-mark)))))
+(defun gnus-summary-mark-current-read-and-unread-as-read (&optional new-mark)
+ "Intended to be used by `gnus-summary-mark-article-hook'."
+ (let ((mark (gnus-summary-article-mark)))
+ (when (or (gnus-unread-mark-p mark)
+ (gnus-read-mark-p mark))
+ (gnus-summary-mark-article (gnus-summary-article-number)
+ (or new-mark gnus-read-mark)))))
+
(defun gnus-summary-mark-unread-as-ticked ()
"Intended to be used by `gnus-summary-mark-article-hook'."
(when (memq gnus-current-article gnus-newsgroup-unreads)
If prefix argument ALL is non-nil, ticked and dormant articles will
also be marked as read.
If QUIETLY is non-nil, no questions will be asked.
+
If TO-HERE is non-nil, it should be a point in the buffer. All
-articles before (after, if REVERSE is set) this point will be marked as read.
+articles before (after, if REVERSE is set) this point will be marked
+as read.
+
Note that this function will only catch up the unread article
in the current summary buffer limitation.
+
The number of articles marked as read is returned."
(interactive "P")
(prog1
(if (and to-here reverse)
(progn
(goto-char to-here)
- (gnus-summary-mark-read-and-unread-as-read gnus-catchup-mark)
+ (gnus-summary-mark-current-read-and-unread-as-read
+ gnus-catchup-mark)
(while (gnus-summary-find-next (not all))
(gnus-summary-mark-article-as-read gnus-catchup-mark)))
(when (gnus-summary-first-subject (not all))
;; age-depending date representations. (e.g. just the time if it's
;; from today, the day of the week if it's within the last 7 days and
;; the full date if it's older)
+
(defun gnus-seconds-today ()
"Returns the number of seconds passed today"
(let ((now (decode-time (current-time))))
Returns \" ? \" if there's bad input or if an other error occurs.
Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"."
(condition-case ()
- (let* ((messy-date (safe-date-to-time messy-date))
- (now (current-time))
+ (let* ((messy-date (time-to-seconds (safe-date-to-time messy-date)))
+ (now (time-to-seconds (current-time)))
;;If we don't find something suitable we'll use this one
- (my-format "%b %m '%y")
- (high (lsh (- (car now) (car messy-date)) 16)))
- (if (and (> high -1) (= (logand high 65535) 0))
- ;;overflow and bad input
- (let* ((difference (+ high (- (car (cdr now))
- (car (cdr messy-date)))))
- (templist gnus-user-date-format-alist)
- (top (eval (caar templist))))
- (while (if (numberp top) (< top difference) (not top))
- (progn
- (setq templist (cdr templist))
- (setq top (eval (caar templist)))))
- (if (stringp (cdr (car templist)))
- (setq my-format (cdr (car templist))))))
- (format-time-string (eval my-format) messy-date))
+ (my-format "%b %d '%y"))
+ (let* ((difference (- now messy-date))
+ (templist gnus-user-date-format-alist)
+ (top (eval (caar templist))))
+ (while (if (numberp top) (< top difference) (not top))
+ (progn
+ (setq templist (cdr templist))
+ (setq top (eval (caar templist)))))
+ (if (stringp (cdr (car templist)))
+ (setq my-format (cdr (car templist)))))
+ (format-time-string (eval my-format) (seconds-to-time messy-date)))
(error " ? ")))
-;;end of Frank's code
(defun gnus-dd-mmm (messy-date)
"Return a string like DD-MMM from a big messy string."
(defalias 'gnus-put-text-property 'gnus-xmas-put-text-property)
(defalias 'gnus-deactivate-mark 'ignore)
(defalias 'gnus-window-edges 'window-pixel-edges)
+ (defalias 'gnus-assq-delete-all 'gnus-xmas-assq-delete-all)
(if (and (<= emacs-major-version 19)
(< emacs-minor-version 14))
`(open-network-stream ,name ,buffer ,host ,service ,protocol)
`(open-network-stream ,name ,buffer ,host ,service)))
+(defun gnus-xmas-assq-delete-all (key alist)
+ (let ((elem nil))
+ (while (setq elem (assq key alist))
+ (setq alist (delq elem alist)))
+ alist))
+
(provide 'gnus-xmas)
;;; gnus-xmas.el ends here
(defalias 'gnus-appt-select-lowest-window 'appt-select-lowest-window)
(defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
(defalias 'gnus-character-to-event 'identity)
+ (defalias 'gnus-assq-delete-all 'assq-delete-all)
(defalias 'gnus-add-text-properties 'add-text-properties)
(defalias 'gnus-put-text-property 'put-text-property)
(defvar gnus-mode-line-image-cache t)
:group 'mail-source
:type 'integer)
-(defcustom mail-source-delete-incoming nil
+(defcustom mail-source-delete-incoming t
"*If non-nil, delete incoming files after handling.
If t, delete immediately, if nil, never delete. If a positive number, delete
files older than number of days."
:group 'message-sending
:type 'string)
-(defcustom message-ignored-bounced-headers "^\\(Received\\|Return-Path\\):"
+(defcustom message-ignored-bounced-headers
+ "^\\(Received\\|Return-Path\\|Delivered-To\\):"
"*Regexp that matches headers to be removed in resent bounced mail."
:group 'message-interface
:type 'regexp)
(require 'message) ; for message-posting-charset
(let ((charsets
(mm-find-mime-charset-region (point-min) (point-max))))
- (and charsets (not (equal charsets (list message-posting-charset))))))
+ (and charsets
+ (not (equal charsets (list (car message-posting-charset)))))))
;; Use this syntax table when parsing into regions that may need
;; encoding. Double quotes are string delimiters, backslash is
;; Play safe and don't assume the form of the word syntax entry --
;; copy it from ?a.
(if (fboundp 'set-char-table-range) ; Emacs
- (set-char-table-range table t (aref (standard-syntax-table) ?a))
+ (funcall (intern "set-char-table-range")
+ table t (aref (standard-syntax-table) ?a))
(if (fboundp 'put-char-table)
(if (fboundp 'get-char-table) ; warning avoidance
(put-char-table t (get-char-table ?a (standard-syntax-table))
+2003-05-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Anti-Spam Basics): Removed mention of gnus-junk.
+
+2003-05-13 Jesper Harder <harder@ifa.au.dk>
+
+ * gnus.texi (Agent Variables, Score File Format)
+ (Troubleshooting, Editing IMAP ACLs, Conformity): a -> an.
+
+ * message.texi (Insertion Variables): do.
+
2003-05-13 Simon Josefsson <jas@extundo.com>
* gnus.texi (IMAP, Agent and IMAP, Oort Gnus): s/a/an/. Tiny
\e$B$k$H;W$C$F$$$k$J$i!"$=$l$>$l$N2!$7IU$1@kEA%a!<%k$N4X78Ev6I$K6l>p$rAw$jIU\e(B
\e$B$1$k$3$H$5$($b$G$-$^$9\e(B --- \e$B2K$J$H$-$K$G$b$M!#\e(B
-\e$B$^$?!"$"$J$?$,BU$1<T$N%M%C%H%o!<%/;TL1$G$b$"$k$J$i!"\e(B
-@file{gnus-junk.el} \e$B%Q%C%1!<%8$K$h$C$F<+F0E*$K6l>p$r$$$&J}$,NI$$$H;W$&$+\e(B
-\e$B$b$7$l$^$;$s!#$3$l\e(B
-\e$B$O\e(B @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html} \e$B$+\e(B
-\e$B$i!VL5NA$G!WMxMQ$G$-$^$9!#$[$H$s$I$N\e(B spam \e$B%a!<%k$O<+F0E*$KAw$i$l$F$$$k$N\e(B
-\e$B$G!"$A$g$C$H$@$11'Ch$N%P%i%s%9$,$H$l$k$+$b$7$l$^$;$s!#\e(B
-
\e$B$3$l$G;d$N$H$3$m$G$OF0$$$F$$$^$9!#$3$l$G$_$s$J$O4JC1$JJ}K!$G;d$KO"Mm$r<h\e(B
\e$B$k$3$H$,$G$-\e(B (\e$BIaDL$K\e(B @kbd{r} \e$B$r2!$9$@$1$G$G$-$k\e(B)\e$B!";d$O\e(B spam \e$B$KHQ$o$5$l$k\e(B
\e$B$3$H$OA4$/$"$j$^$;$s!#F@!9>uBV$G$9!#;d$N0U8+$H$7$F$O!"\e(B@code{From} \e$B%X%C%@!<\e(B
@cindex RFC 1991
@cindex RFC 2440
RFC 1991 is the original @acronym{PGP} message specification,
-published as a Information RFC. RFC 2440 was the follow-up, now
+published as an informational RFC. RFC 2440 was the follow-up, now
called Open PGP, and put on the Standards Track. Both document a
non-@acronym{MIME} aware @acronym{PGP} format. Gnus supports both
encoding (signing and encryption) and decoding (verification and
@acronym{IMAP} servers support this, this function will give an error if it
doesn't.
-To edit a ACL for a mailbox, type @kbd{G l}
-(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with a ACL
+To edit an ACL for a mailbox, type @kbd{G l}
+(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with an ACL
editing window with detailed instructions.
Some possible uses:
@item gnus-server-unopen-status
@vindex gnus-server-unopen-status
-Perhaps not a Agent variable, but closely related to the Agent, this
+Perhaps not an Agent variable, but closely related to the Agent, this
variable says what will happen if Gnus cannot open a server. If the
Agent is enabled, the default, @code{nil}, makes Gnus ask the user
whether to deny the server or whether to unplug the agent. If the
@item gnus-auto-goto-ignores
@vindex gnus-auto-goto-ignores
-Another variable that isn't a Agent variable, yet so closely related
+Another variable that isn't an Agent variable, yet so closely related
that most will look for it here, this variable tells the summary
buffer how to maneuver around undownloaded (only headers stored in the
agent) and unfetched (neither article nor headers stored) articles.
entries will result in new score entries being added for all follow-ups
to articles that matches these score entries.
-Following this key is a arbitrary number of score entries, where each
+Following this key is an arbitrary number of score entries, where each
score entry has one to four elements.
@enumerate
citizen, you can even send off complaints to the proper authorities on
each unsolicited commercial email---at your leisure.
-If you are also a lazy net citizen, you will probably prefer complaining
-automatically with the @file{gnus-junk.el} package, available FOR FREE
-at @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html}.
-Since most e-mail spam is sent automatically, this may reconcile the
-cosmic balance somewhat.
-
This works for me. It allows people an easy way to contact me (they can
just press @kbd{r} in the usual way), and I'm not bothered at all with
spam. It's a win-win situation. Forging @code{From} headers to point
@cindex RFC 1991
@cindex RFC 2440
RFC 1991 is the original @acronym{PGP} message specification,
-published as a Information RFC. RFC 2440 was the follow-up, now
+published as an informational RFC. RFC 2440 was the follow-up, now
called Open PGP, and put on the Standards Track. Both document a
non-@acronym{MIME} aware @acronym{PGP} format. Gnus supports both
encoding (signing and encryption) and decoding (verification and
@cindex elp
@cindex profile
@cindex slow
-Sometimes, a problem do not directly generate a elisp error but
+Sometimes, a problem do not directly generate an elisp error but
manifests itself by causing Gnus to be very slow. In these cases, you
can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are
slow, and then try to analyze the backtrace (repeating the procedure
@cindex yanking
@cindex cited
@cindex quoting
-When yanking text from a article which contains no text or already
+When yanking text from an article which contains no text or already
cited text, each line will be prefixed with the contents of this
variable. The default is @samp{>}. See also
@code{message-yank-prefix}.