From fe997c9f03881697022ed9d22a8f170c85e047b5 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Sun, 2 May 2004 00:27:17 +0000 Subject: [PATCH] T-gnus v6.17.2. --- ChangeLog | 180 +- GNUS-NEWS | 519 +- Mule23@1934.en | 180 +- Mule23@1934.ja | 184 +- README.T-gnus | 2 +- aclocal.m4 | 19 +- configure | 19 +- contrib/ChangeLog | 24 + contrib/README | 11 - contrib/base64.el | 278 - contrib/cus-dep.el | 171 - contrib/md5.el | 409 - contrib/nnir.el | 29 +- contrib/passwd.el | 386 - contrib/regexp-opt.el | 238 - contrib/ssl.el | 4 +- contrib/starttls.el | 4 +- contrib/timer.el | 308 - etc/gnus-tut.txt | 2 +- lisp/ChangeLog |19773 ++++----------------------------------------- lisp/ChangeLog.1 |18940 +++++++++++++++++++++++++++++++++++++++++++ lisp/binhex.el | 18 +- lisp/canlock-om.el | 215 - lisp/canlock.el | 100 +- lisp/compface.el | 739 +- lisp/deuglify.el | 131 +- lisp/dgnushack.el | 395 +- lisp/dns.el | 36 +- lisp/flow-fill.el | 17 +- lisp/gnus-agent.el | 1677 ++-- lisp/gnus-art.el | 611 +- lisp/gnus-cache.el | 147 +- lisp/gnus-cite.el | 24 +- lisp/gnus-clfns.el | 432 - lisp/gnus-cus.el | 34 +- lisp/gnus-delay.el | 2 +- lisp/gnus-demon.el | 2 +- lisp/gnus-diary.el | 4 +- lisp/gnus-dired.el | 2 +- lisp/gnus-draft.el | 64 +- lisp/gnus-ems.el | 42 +- lisp/gnus-fun.el | 37 +- lisp/gnus-gl.el | 860 -- lisp/gnus-group.el | 181 +- lisp/gnus-int.el | 69 +- lisp/gnus-kill.el | 14 +- lisp/gnus-ml.el | 12 +- lisp/gnus-mlspl.el | 26 +- lisp/gnus-move.el | 3 +- lisp/gnus-msg.el | 26 +- lisp/gnus-namazu.el | 120 +- lisp/gnus-nocem.el | 3 +- lisp/gnus-offline.el | 36 +- lisp/gnus-ofsetup.el | 2 +- lisp/gnus-picon.el | 1 - lisp/gnus-range.el | 69 +- lisp/gnus-registry.el | 84 +- lisp/gnus-salt.el | 12 +- lisp/gnus-score.el | 127 +- lisp/gnus-setup.el | 5 +- lisp/gnus-soup.el | 2 +- lisp/gnus-spec.el | 21 +- lisp/gnus-srvr.el | 45 +- lisp/gnus-start.el | 326 +- lisp/gnus-sum.el | 375 +- lisp/gnus-topic.el | 28 +- lisp/gnus-undo.el | 3 +- lisp/gnus-util.el | 143 +- lisp/gnus-uu.el | 36 +- lisp/gnus-vers.el | 5 +- lisp/gnus-xmas.el | 63 +- lisp/gnus.el | 176 +- lisp/hex-util.el | 73 - lisp/html2text.el | 261 +- lisp/ietf-drums.el | 6 +- lisp/imap.el | 94 +- lisp/legacy-gnus-agent.el | 213 + lisp/lpath.el | 26 +- lisp/mail-source.el | 26 +- lisp/md5.el | 413 - lisp/message.el | 227 +- lisp/messagexmas.el | 5 +- lisp/mm-bodies.el | 17 +- lisp/mm-decode.el | 26 +- lisp/mm-url.el | 6 +- lisp/mm-util.el | 67 +- lisp/mm-view.el | 95 +- lisp/mml-sec.el | 2 +- lisp/mml-smime.el | 3 + lisp/mml.el | 110 +- lisp/mml2015.el | 11 +- lisp/netrc.el | 87 +- lisp/nnbabyl.el | 5 +- lisp/nndb.el | 6 +- lisp/nndiary.el | 2 +- lisp/nndoc.el | 2 +- lisp/nnfolder.el | 41 +- lisp/nnheader.el | 53 +- lisp/nnheaderxm.el | 70 +- lisp/nnimap.el | 81 +- lisp/nnkiboze.el | 21 +- lisp/nnlistserv.el | 2 +- lisp/nnmail.el | 38 +- lisp/nnmaildir.el | 153 +- lisp/nnmbox.el | 5 +- lisp/nnmh.el | 32 +- lisp/nnml.el | 40 +- lisp/nnnil.el | 6 +- lisp/nnrss.el | 352 +- lisp/nnslashdot.el | 1 - lisp/nnspool.el | 4 +- lisp/nntp.el | 121 +- lisp/nnultimate.el | 1 - lisp/nnvirtual.el | 63 +- lisp/nnweb.el | 3 +- lisp/nnwfm.el | 1 - lisp/password.el | 111 + lisp/pop3.el | 138 +- lisp/rfc2047.el | 115 +- lisp/rfc2231.el | 3 - lisp/run-at-time.el | 96 + lisp/score-mode.el | 4 +- lisp/sha1-el.el | 444 - lisp/sieve-manage.el | 250 +- lisp/sieve-mode.el | 3 +- lisp/sieve.el | 2 +- lisp/smime.el | 643 -- lisp/spam-report.el | 123 +- lisp/spam-stat.el | 189 +- lisp/spam-wash.el | 74 + lisp/spam.el | 997 ++- lisp/uudecode.el | 3 +- make.bat | 29 +- sample.lpath.el | 42 - texi/ChangeLog | 252 + texi/Makefile.in | 24 +- texi/dir | 3 + texi/emacs-mime.texi | 21 +- texi/gnus-ja.texi | 1103 +-- texi/gnus-news.el | 109 + texi/gnus-news.texi | 71 + texi/gnus.texi | 954 ++- texi/gnusref.tex | 5 +- texi/infohack.el | 32 +- texi/message-ja.texi | 13 +- texi/message.texi | 17 +- texi/ptexinfmt.el | 52 +- texi/sieve.texi | 5 +- texi/texi2latex.el | 17 +- 149 files changed, 28680 insertions(+), 29417 deletions(-) delete mode 100644 contrib/base64.el delete mode 100644 contrib/cus-dep.el delete mode 100644 contrib/md5.el delete mode 100644 contrib/passwd.el delete mode 100644 contrib/regexp-opt.el delete mode 100644 contrib/timer.el delete mode 100644 lisp/canlock-om.el delete mode 100644 lisp/gnus-clfns.el delete mode 100644 lisp/gnus-gl.el delete mode 100644 lisp/hex-util.el create mode 100644 lisp/legacy-gnus-agent.el delete mode 100644 lisp/md5.el create mode 100644 lisp/password.el create mode 100644 lisp/run-at-time.el delete mode 100644 lisp/sha1-el.el delete mode 100644 lisp/smime.el create mode 100644 lisp/spam-wash.el delete mode 100644 sample.lpath.el create mode 100644 texi/gnus-news.el create mode 100644 texi/gnus-news.texi diff --git a/ChangeLog b/ChangeLog index 2194890..8abacae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,182 @@ -2004-01-11 TSUCHIYA Masatoshi +2004-04-27 Katsumi Yamaoka - * lisp/nnshimbun.el: Accidentaly revivaled. Remove again. + * lisp/dgnushack.el (describe-key-briefly): Remove compiler macro. + +2004-04-12 TAKAHASHI Kaoru + + * texi/ptexinfmt.el: Support @indicateurl, @LaTeX, @ordf, @ordm. + @url is now a synonym for @uref. + +2004-04-08 Katsumi Yamaoka + + * lisp/gnus-util.el (gnus-set-work-buffer): Set buffer multibyte. + (gnus-select-frame-set-input-focus): Don't check whether + `focus-follows-mouse' is bound. + (frame-parameter): Remove. + +2004-03-25 Katsumi Yamaoka + + * lisp/pop3.el: Don't require `advice', `pces' and `path-util'. + (pop3-ssl-program-name): Use `executable-find' instead of + `exec-installed-p'. + (pop3-movemail): Don't use `write-region-as-binary'. + (pop3-open-server): Don't use `open-network-stream-as-binary'. + (pop3-open-ssl-stream): Don't use `as-binary-process'. + (pop3-open-tls-stream): Ditto. + (mail-source-fetch-pop): In Gnus, advise it to bind + `pop3-connection-type' and `pop3-leave-mail-on-server' while + fetching mails, according to `mail-sources'. + +2004-03-24 KOSEKI Yoshinori + + * lisp/gnus-namazu.el (gnus-namazu/directory-table-use): Remove. + (gnus-namazu-imap-maildir): New variable. + +2004-03-09 Katsumi Yamaoka + + * lisp/dgnushack.el (dgnushack-unexporting-files): Add + legacy-gnus-agent.el. + +2004-03-08 Kevin Greiner + + * make.bat: Make sure that gnus-load.el and sieve are writable to + avoid breakage. + +2004-03-04 KOSEKI Yoshinori + + * lisp/gnus-namazu.el (gnus-namazu-command-prefix): New variable. + (gnus-namazu-imap-group-prefix): Ditto. + (gnus-namazu/directory-table-use): Ditto. + (gnus-namazu/call-namazu): Use gnus-namazu-imap-group-prefix. + (gnus-namazu/search): Support Maildir. + +2004-03-01 Reiner Steib + + * make.bat: Fix directory test for Windows 9x/ME. From Michael + Schierl (tiny change). + +2004-02-11 TAKAHASHI Kaoru + + * texi/ptexinfmt.el: Support @docbook, @ifdocbook, @ifnotdocbook, + and @registeredsymbol. + +2004-02-06 Katsumi Yamaoka + + * lisp/gnus-ofsetup.el (gnus-setup-for-offline): Fix misplaced `)'. + +2004-02-03 Hiroshi Fujishima + + * texi/gnus-ja.texi (Contributors): Fix typo. + +2004-01-23 Katsumi Yamaoka + + * lisp/canlock.el: Reload sha1-el provided by FLIM when an old + version (maybe provided by the XEmacs ecrypt package) was loaded. + + * lisp/dgnushack.el (max-specpdl-size): Don't modify the value. + (byte-optimize-form-code-walker): Simplify the test form; doc fix. + (char-after): Don't byte-optimize it. + (char-before): Ditto. + (dgnushack-bind-colon-keywords): Remove. + +2004-01-21 Katsumi Yamaoka + + * lisp/smime.el: Remove. + +2004-01-14 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-article-add-button): Remove Mule 2 stuff. + * lisp/gnus-namazu.el: Don't autoload regexp-opt. + * lisp/gnus-util.el (gnus-read-event-char): Remove Mule 2 stuff. + * lisp/nnmail.el (nnmail-lazy): Ditto. + +2004-01-07 Katsumi Yamaoka + + * lisp/gnus-art.el (gnus-treat-smiley): Ignore Emacs version + number. + + * lisp/gnus-cite.el (gnus-cite-add-face): Don't support old + Emacsen. + + * lisp/gnus.el: Always autoload `x-face-decode-message-header' and + `x-face-mule-gnus-article-display-x-face'. + + * lisp/pop3.el (pop3-md5): Always use the built-in `md5'. + +2004-01-07 Hiroshi Fujishima + + * etc/gnus-tut.txt: `G m' instead of `G V' (tiny patch). + +2004-01-06 Katsumi Yamaoka + + * lisp/gnus-clfns.el: Abolish. + * lisp/nnshimbun.el: Abolish. + + * lisp/dgnushack.el: Allow loading dgnushack.el w/o dgnuspath.el. + +2004-01-05 Jesper Harder + + * make.bat: Add missing parens. From Robert Marshall + . + +2004-01-05 Katsumi Yamaoka + + * aclocal.m4 (AC_CHECK_EMACS_FLAVOR): Don't check for Mule 2. + * sample.lpath.el: Remove. + * contrib/cus-dep.el: Remove. + * contrib/gnus-idna.el: Remove. + * contrib/passwd.el: Remove. + * contrib/regexp-opt.el: Remove. + * contrib/timer.el: Remove. + * lisp/canlock-om.el: Remove. + * lisp/dgnushack.el: Add `early-package-load-path' to `load-path' + for XEmacs 21.5; remove Mule 2 stuff. + * lisp/gnus-agent.el: Remove Mule 2 stuff. + * lisp/gnus-art.el: Ditto. + * lisp/gnus-cite.el: Ditto. + * lisp/gnus-ems.el: Ditto. + * lisp/gnus-msg.el: Ditto. + * lisp/gnus-namazu.el: Ditto. + * lisp/gnus-offline.el: Ditto. + * lisp/gnus-start.el: Ditto. + * lisp/gnus-util.el: Ditto. + * lisp/gnus-uu.el: Ditto. + * lisp/gnus.el: Ditto. + * lisp/lpath.el: Ditto. + * lisp/mail-source.el: Ditto. + * lisp/message.el: Ditto. + * lisp/mm-url.el: Ditto. + * lisp/nnfolder.el: Ditto. + * lisp/nnheader.el: Ditto. + * lisp/nnkiboze.el: Ditto. + * lisp/nnmail.el: Ditto. + * lisp/nnmaildir.el: Ditto. + * lisp/nnmbox.el: Ditto. + * lisp/nnmh.el: Ditto. + * lisp/nnml.el: Ditto. + * lisp/nnrss.el: Ditto. + * lisp/nnshimbun.el: Ditto. + * lisp/nntp.el: Ditto. + * lisp/score-mode.el: Ditto. + * texi/infohack.el: Ditto. + * texi/ptexinfmt.el: Ditto. + +2004-01-05 Katsumi Yamaoka + + * lisp/hex-util.el: Remove. + * lisp/md5.el: Remove. + * lisp/sha1-el.el: Remove. + +2004-01-05 Simon Josefsson + + * GNUS-NEWS: Mention SASL, and that sieve-manage uses it. + Mention password.el. + Mention NTLM. + +2004-01-04 Simon Josefsson + + * GNUS-NEWS: Add IMAP ID (RFC 2971) support. + Mention `W e' for editing all.SCORE. 2004-01-05 Katsumi Yamaoka diff --git a/GNUS-NEWS b/GNUS-NEWS index b891063..6c5238b 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -6,516 +6,33 @@ Please send Gnus bug reports to bugs@gnus.org. For older news, see Gnus info node "New Features". -* Changes in Oort Gnus +* Changes in No Gnus -** `gnus-group-read-ephemeral-group' can be called interactively, using `G M'. +** Gnus includes an Emacs Lisp SASL library. -** In draft groups, `e' is now bound to `gnus-draft-edit-message'. -Use `B w' for `gnus-summary-edit-article' instead. +This provide a clean API to SASL mechanisms from within Emacs. The +user visible aspects of this, compared to the earlier situation, +include support for DIGEST-MD5 and NTLM. -** The revised Gnus FAQ is included in the manual. -See the info node "Frequently Asked Questions". +** ManageSieve connections uses the SASL library by default. -** Upgrading from previous (stable) version if you have used Oort. +The primary change this brings is support for DIGEST-MD5 and NTLM, +when the server support it. -If you have tried Oort (the unstable Gnus branch leading to this -release) but went back to a stable version, be careful when upgrading -to this version. In particular, you will probably want to remove all -.marks (nnml) and .mrk (nnfolder) files, so that flags are read from -your ~/.newsrc.eld instead of from the .marks/.mrk file where this -release store flags. See a later entry for more information about -marks. Note that downgrading isn't safe in general. +** Gnus include a password cache mechanism in password.el. -** Article Buttons +It is enabled by default (see `password-cache'), with a short timeout +of 16 seconds (see `password-cache-expiry'). If PGG is used as the +PGP backend, the PGP passphrase is managed by this mechanism. +Passwords for ManageSieve connections are managed by this mechanism, +after quering the user about whether to do so. -More buttons for URLs, mail addresses, Message-IDs, Info links, man pages and -Emacs or Gnus related references, see the info node "Article Buttons". The -variables `gnus-button-*-level' can be used to control the appearance of all -article buttons, see the info node "Article Button Levels". +** IMAP identity (RFC 2971) is supported. -** Dired integration +By default, Gnus do not send any information about itself, but you can +customize it using `nnimap-id'. -`gnus-dired-minor-mode' installs key bindings in dired buffers to send a file -as an attachment (`C-c C-m C-a'), open a file using the approriate mailcap -entry (`C-c C-m C-l'), and print a file using the mailcap entry (`C-c C-m -C-p'). See the info node "Other modes". - - -** Gnus can display RSS newsfeeds as a newsgroup. To get started do `B -nnrss RET RET' in the Group buffer. - -** Single-part yenc encoded attachments can be decoded. - -** Picons -The picons code has been reimplemented to work in Emacs 21 -- some of -the previous options have been removed or renamed. - -Picons are small "personal icons" representing users, domain and -newsgroups, which can be displayed in the Article buffer. To enable -picons, install the picons database from - - http://www.cs.indiana.edu/picons/ftp/index.html - -and point `gnus-picon-databases' to that location. - -** If the new option `gnus-treat-body-boundary' is `head', a boundary -line is drawn at the end of the headers. - -** Retrieval of charters and control messages -There are new commands for fetching newsgroup charters (`H c') and -control messages (`H C'). - -** Delayed articles -You can delay the sending of a message with `C-c C-j' in the Message -buffer. The messages are delivered at specified time. This is useful -for sending yourself reminders. Setup with (gnus-delay-initialize). - -** If `auto-compression-mode' is enabled, attachments are automatically -decompressed when activated. - -** If the new option `nnml-use-compressed-files' is non-nil, -the nnml back end allows compressed message files. - -** Signed article headers (X-PGP-Sig) can be verified with `W p'. - -** The Summary Buffer uses an arrow in the fringe to indicate the -current article in Emacs 21 running on a graphical display. Customize -`gnus-summary-display-arrow' to disable it. - -** Warn about email replies to news -Do you often find yourself replying to news by email by mistake? Then -the new option `gnus-confirm-mail-reply-to-news' is just the thing for -you. - -** If the new option `gnus-summary-display-while-building' is non-nil, -the summary buffer is shown and updated as it's being built. - -** The new `recent' mark "." indicates newly arrived messages (as -opposed to old but unread messages). - -** The new option `gnus-gcc-mark-as-read' automatically marks -Gcc articles as read. - -** The nndoc back end now supports mailman digests and exim bounces. - -** Gnus supports RFC 2369 mailing list headers, and adds a number of -related commands in mailing list groups. - -** The Date header can be displayed in a format that can be read aloud -in English, see `gnus-treat-date-english'. - -** The envelope sender address can be customized when using Sendmail, see -`message-sendmail-envelope-from'. - -** diffs are automatically highlighted in groups matching -`mm-uu-diff-groups-regexp' - -** TLS wrapper shipped with Gnus - -TLS/SSL is now supported in IMAP and NNTP via tls.el and GNUTLS. The -old TLS/SSL support via (external third party) ssl.el and OpenSSL -still works. - -** New make.bat for compiling and installing Gnus under MS Windows - -Use make.bat if you want to install Gnus under MS Windows, the first -argument to the batch-program should be the directory where xemacs.exe -respectively emacs.exe is located, iff you want to install Gnus after -compiling it, give make.bat /copy as the second parameter. - -`make.bat' has been rewritten from scratch, it now features automatic -recognition of XEmacs and GNU Emacs, generates gnus-load.el, checks if -errors occur while compilation and generation of info files and reports -them at the end of the build process. It now uses makeinfo if it is -available and falls back to infohack.el otherwise. `make.bat' should now -install all files which are necessary to run Gnus and be generally a -complete replacement for the "configure; make; make install" cycle used -under Unix systems. - -The new make.bat makes make-x.bat superfluous, so it has been removed. - -** Support for non-ASCII domain names - -Message supports non-ASCII domain names in From:, To: and Cc: and will -query you whether to perform encoding when you try to send a message. -The variable `message-use-idna' controls this. Gnus will also decode -non-ASCII domain names in From:, To: and Cc: when you view a message. -The variable `gnus-use-idna' controls this. - -** Better handling of Microsoft citation styles - -Gnus now tries to recognize the mangled header block that some Microsoft -mailers use to indicate that the rest of the message is a citation, even -though it is not quoted in any way. The variable -`gnus-cite-unsightly-citation-regexp' matches the start of these -citations. - -** gnus-article-skip-boring - -If you set `gnus-article-skip-boring' to t, then Gnus will not scroll -down to show you a page that contains only boring text, which by -default means cited text and signature. You can customize what is -skippable using `gnus-article-boring-faces'. - -This feature is especially useful if you read many articles that -consist of a little new content at the top with a long, untrimmed -message cited below. - -** The format spec %C for positioning point has changed to %*. - -** The new variable `gnus-parameters' can be used to set group parameters. - -Earlier this was done only via `G p' (or `G c'), which stored the -parameters in ~/.newsrc.eld, but via this variable you can enjoy the -powers of customize, and simplified backups since you set the variable -in ~/.emacs instead of ~/.newsrc.eld. The variable maps regular -expressions matching group names to group parameters, a'la: - - (setq gnus-parameters - '(("mail\\..*" - (gnus-show-threads nil) - (gnus-use-scoring nil)) - ("^nnimap:\\(foo.bar\\)$" - (to-group . "\\1")))) - -** Smileys (":-)", ";-)" etc) are now iconized for Emacs too. - -Customize `gnus-treat-display-smileys' to disable it. - -** Gnus no longer generates the Sender: header automatically. - -Earlier it was generated iff the user configurable email address was -different from the Gnus guessed default user address. As the guessing -algorithm is rarely correct these days, and (more controversially) the -only use of the Sender: header was to check if you are entitled to -cancel/supersede news (which is now solved by Cancel Locks instead, -see another entry), generation of the header has been disabled by -default. See the variables `message-required-headers', -`message-required-news-headers', and `message-required-mail-headers'. - -** Features from third party message-utils.el added to message.el. - -Message now asks if you wish to remove "(was: )" from -subject lines (see `message-subject-trailing-was-query'). C-c M-m and -C-c M-f inserts markers indicating included text. C-c C-f a adds a -X-No-Archive: header. C-c C-f x inserts appropriate headers and a -note in the body for cross-postings and followups (see the variables -`message-cross-post-*'). - -** References and X-Draft-Headers are no longer generated when you -start composing messages and `message-generate-headers-first' is nil. - -** Improved anti-spam features. - -Gnus is now able to take out spam from your mail and news streams -using a wide variety of programs and filter rules. Among the supported -methods are RBL blocklists, bogofilter and white/blacklists. Hooks -for easy use of external packages such as SpamAssassin and Hashcash -are also new. - -** Easy inclusion of X-Faces headers. - -** In the summary buffer, the new command / N inserts new messages and -/ o inserts old messages. - -** Gnus decodes morse encoded messages if you press W m. - -** Unread count correct in nnimap groups. - -The estimated number of unread articles in the group buffer should now -be correct for nnimap groups. This is achieved by calling -`nnimap-fixup-unread-after-getting-new-news' from the -`gnus-setup-news-hook' (called on startup) and -`gnus-after-getting-new-news-hook' (called after getting new mail). -If you have modified those variables from the default, you may want to -add n-f-u-a-g-n-n again. If you were happy with the estimate and want -to save some (minimal) time when getting new mail, remove the -function. - -** Group Carbon Copy (GCC) quoting - -To support groups that contains SPC and other weird characters, groups -are quoted before they are placed in the Gcc: header. This means -variables such as `gnus-message-archive-group' should no longer -contain quote characters to make groups containing SPC work. Also, if -you are using the string "nnml:foo, nnml:bar" (indicating Gcc into two -groups) you must change it to return the list ("nnml:foo" "nnml:bar"), -otherwise the Gcc: line will be quoted incorrectly. Note that -returning the string "nnml:foo, nnml:bar" was incorrect earlier, it -just didn't generate any problems since it was inserted directly. - -** ~/News/overview/ not used. - -As a result of the following change, the ~/News/overview/ directory is -not used any more. You can safely delete the entire hierarchy. - -** gnus-agent - -The Gnus Agent has seen a major update. It is now enabled by default, -and all nntp and nnimap servers from `gnus-select-method' and -`gnus-secondary-select-method' are agentized by default. Earlier only -the server in `gnus-select-method' was agentized by the default, and the -agent was disabled by default. When the agent is enabled, headers are -now also retrieved from the Agent cache instead of the backends when -possible. Earlier this only happened in the unplugged state. You can -enroll or remove servers with `J a' and `J r' in the server buffer. -Gnus will not download articles into the Agent cache, unless you -instruct it to do so, though, by using `J u' or `J s' from the Group -buffer. You revert to the old behaviour of having the Agent disabled -by customizing `gnus-agent'. Note that putting `(gnus-agentize)' in -~/.gnus is not needed any more. - -** gnus-summary-line-format - -The default value changed to "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n". -Moreover `gnus-extra-headers', `nnmail-extra-headers' and -`gnus-ignored-from-addresses' changed their default so that the users -name will be replaced by the recipient's name or the group name -posting to for NNTP groups. - -** deuglify.el (gnus-article-outlook-deuglify-article) - -A new file from Raymond Scholz for deuglifying -broken Outlook (Express) articles. - -** (require 'gnus-load) - -If you use a stand-alone Gnus distribution, you'd better add -"(require 'gnus-load)" to your ~/.emacs after adding the Gnus -lisp directory into load-path. - -File gnus-load.el contains autoload commands, functions and variables, -some of which may not be included in distributions of Emacsen. - -** gnus-slave-unplugged - -A new command which starts gnus offline in slave mode. - -** message-insinuate-rmail - -Adding (message-insinuate-rmail) in .emacs and customizing -`mail-user-agent' to `gnus-user-agent' convinces Rmail to compose, -reply and forward messages in Message mode, where you can enjoy the -power of MML. - -** message-minibuffer-local-map - -The line below enables BBDB in resending a message: - -(define-key message-minibuffer-local-map [?\t] 'bbdb-complete-name) - -** Externalizing and deleting of attachments. - -If `gnus-gcc-externalize-attachments' (or -`message-fcc-externalize-attachments') is non-nil, attach local files -as external parts. - -The command `gnus-mime-save-part-and-strip' (bound to `C-o' on MIME -buttons) saves a part and replaces the part with an external one. -`gnus-mime-delete-part' (bound to `d' on MIME buttons) removes a part. -It works only on back ends that support editing. - -** gnus-default-charset - -The default value now guesses on the basis of your environment instead -of using Latin-1. Also the ".*" item in gnus-group-charset-alist is -removed. - -** gnus-posting-styles - -Add a new format of match like - - ((header "to" "larsi.*org") - (Organization "Somewhere, Inc.")) - -The old format like the lines below is obsolete, but still accepted. - - (header "to" "larsi.*org" - (Organization "Somewhere, Inc.")) - -** message-ignored-news-headers and message-ignored-mail-headers - -X-Draft-From and X-Gnus-Agent-Meta-Information have been added into -these two variables. If you customized those, perhaps you need add -those two headers too. - -** Gnus reads the NOV and articles in the Agent if plugged. - -If one reads an article while plugged, and the article already exists -in the Agent, it won't get downloaded once more. Customize -`gnus-agent-cache' to revert to the old behavior. - -** Gnus supports the "format=flowed" (RFC 2646) parameter. - -On composing messages, it is enabled by `use-hard-newlines'. Decoding -format=flowed was present but not documented in earlier versions. - -** Gnus supports the generation of RFC 2298 Disposition Notification requests. - -This is invoked with the C-c M-n key binding from message mode. - -** Gnus supports Maildir groups. - -Gnus includes a new backend nnmaildir.el. - -** Printing capabilities are enhanced. - -Gnus supports Muttprint natively with O P from the Summary and Article -buffers. Also, each individual MIME part can be printed using p on -the MIME button. - -** Message supports the Importance: (RFC 2156) header. - -In the message buffer, `C-c C-f C-i' or `C-c C-u' cycles through the -valid values. - -** Gnus supports Cancel Locks in News. - -This means a header "Cancel-Lock" is inserted in news posting. It is -used to determine if you wrote a article or not (for cancelling and -superseding). Gnus generates a random password string the first time -you post a message, and saves it using the Custom system. While the -variable is called `canlock-password', it is not security sensitive -data. Publishing your canlock string on the web will not allow anyone -to be able to anything she could not already do. The behaviour can be -changed by customizing `message-insert-canlock'. - -** Gnus supports server-side mail filtering using Sieve. - -Sieve rules can be added as Group Parameters for groups, and the -complete Sieve script is generated using `D g' from the Group buffer, -and then uploaded to the server using `C-c C-l' in the generated Sieve -buffer. Search the online Gnus manual for "sieve", and see the new -Sieve manual, for more information. - -** Extended format specs. - -Format spec "%&user-date;" is added into -`gnus-summary-line-format-alist'. Also, user defined extended format -specs are supported. The extended format specs look like "%u&foo;", -which invokes function `gnus-user-format-function-foo'. Because "&" is -used as the escape character, old user defined format "%u&" is no -longer supported. - -** `/ *' (gnus-summary-limit-include-cached) is rewritten. - -It was aliased to `Y c' (gnus-summary-insert-cached-articles). The new -function filters out other articles. - -** Some limiting commands accept a C-u prefix to negate the match. - -If C-u is used on subject, author or extra headers, i.e., `/ s', `/ -a', and `/ x' (gnus-summary-limit-to-{subject,author,extra}) -respectively, the result will be to display all articles that do not -match the expression. - -** Group names are treated as UTF-8 by default. - -This is supposedly what USEFOR wanted to migrate to. See -`gnus-group-name-charset-group-alist' and -`gnus-group-name-charset-method-alist' for customization. - -** The nnml and nnfolder backends store marks for each group. - -This makes it possible to take backup of nnml/nnfolder servers/groups -separately of ~/.newsrc.eld, while preserving marks. It also makes it -possible to share articles and marks between users (without sharing -the ~/.newsrc.eld file) within e.g. a department. It works by storing -the marks stored in ~/.newsrc.eld in a per-group file ".marks" (for -nnml) and "groupname.mrk" (for nnfolder, named "groupname"). If the -nnml/nnfolder is moved to another machine, Gnus will automatically use -the .marks or .mrk file instead of the information in ~/.newsrc.eld. -The new server variables `nnml-marks-is-evil' and -`nnfolder-marks-is-evil' can be used to disable this feature. - -** The menu bar item (in Group and Summary buffer) named "Misc" has -been renamed to "Gnus". - -** The menu bar item (in Message mode) named "MML" has been renamed to -"Attachments". Note that this menu also contains security related -stuff, like signing and encryption. - -** gnus-group-charset-alist and gnus-group-ignored-charsets-alist. - -The regexps in these variables are compared with full group names -instead of real group names in 5.8. Users who customize these -variables should change those regexps accordingly. For example: - - ("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr) - -** Gnus supports PGP (RFC 1991/2440), PGP/MIME (RFC 2015/3156) and -S/MIME (RFC 2630-2633). - -It needs an external S/MIME and OpenPGP implementation, but no -additional lisp libraries. This add several menu items to the -Attachments menu, and C-c RET key bindings, when composing messages. -This also obsoletes `gnus-article-hide-pgp-hook'. - -** Gnus inlines external parts (message/external). - -** MML (Mime compose) prefix changed from `M-m' to `C-c C-m'. - -This change was made to avoid conflict with the standard binding of -`back-to-indentation', which is also useful in message mode. - -** The default for message-forward-show-mml changed to symbol best. - -The behaviour for the `best' value is to show MML (i.e., convert MIME -to MML) when appropriate. MML will not be used when forwarding signed -or encrypted messages, as the conversion invalidate the digital -signature. - -** Bug fixes. - - -* Changes in Pterodactyl Gnus (5.8/5.9) - -The Gnus NEWS entries are short, but they reflect sweeping changes in -four areas: Article display treatment, MIME treatment, -internationalization and mail-fetching. - -** The mail-fetching functions have changed. See the manual for the -many details. In particular, all procmail fetching variables are gone. - -If you used procmail like in - -(setq nnmail-use-procmail t) -(setq nnmail-spool-file 'procmail) -(setq nnmail-procmail-directory "~/mail/incoming/") -(setq nnmail-procmail-suffix "\\.in") - -this now has changed to - -(setq mail-sources - '((directory :path "~/mail/incoming/" - :suffix ".in"))) - -More information is available in the info doc at Select Methods -> -Getting Mail -> Mail Sources - -** Gnus is now a MIME-capable reader. This affects many parts of -Gnus, and adds a slew of new commands. See the manual for details. - -** Gnus has also been multilingualized. This also affects too -many parts of Gnus to summarize here, and adds many new variables. - -** gnus-auto-select-first can now be a function to be -called to position point. - -** The user can now decide which extra headers should be included in -summary buffers and NOV files. - -** `gnus-article-display-hook' has been removed. Instead, a number -of variables starting with `gnus-treat-' have been added. - -** The Gnus posting styles have been redone again and now works in a -subtly different manner. - -** New web-based backends have been added: nnslashdot, nnwarchive -and nnultimate. nnweb has been revamped, again, to keep up with -ever-changing layouts. - -** Gnus can now read IMAP mail via nnimap. +** The "all.SCORE" file can now be edited from the group buffer using `W e'. * For older news, see Gnus info node "New Features". diff --git a/Mule23@1934.en b/Mule23@1934.en index ba70609..caac6f9 100644 --- a/Mule23@1934.en +++ b/Mule23@1934.en @@ -1,179 +1 @@ -How to build T-gnus with Mule 2.3 based on Emacs 19.34. - -FIXING loaddefs.el -================== - -Unfortunately, some variables for `message' are predefined in lisp/ -loaddefs.el which is dumped in Mule executable file. It is uninvited, -moreover, it has a bad influence. So you should remove these -definitions from lisp/loaddefs.el and rebuild Mule. However, if you -don't want to rebuild Mule, you may put the following lines in the -beginning of .emacs file instead of rebuilding Mule. - -(let ((symbols '(citation-line-function - cite-function courtesy-message default-headers - default-mail-headers default-news-headers - deletable-headers fcc-handler-function - followup-to-function from-style - generate-headers-first generate-new-buffers - ignored-bounced-headers ignored-cited-headers - ignored-mail-headers ignored-news-headers - ignored-resent-headers ignored-supersedes-headers - included-forward-headers indent-citation-function - interactive kill-buffer-on-exit post-method - reply-to-function required-mail-headers - required-news-headers send-mail-function - send-news-function signature - signature-before-forwarded-message signature-file - signature-separator syntax-checks use-followup-to - user-organization-file wide-reply-to-function - yank-prefix)) - symbol) - (while symbols - (setq symbol (car symbols) - symbols (cdr symbol)) - (makunbound (intern (format "message-%s" symbol))))) - - -INSTALL CUSTOM, APEL, CLIME, SEMI -================================= - -T-gnus requires the latest version of CUSTOM, APEL, CLIME and SEMI; -CLIME 1.14 provides the same features as FLIM 1.14 for old Emacsen, -which is currently available from: - -ftp://ftp.jpl.org/pub/m17n/clime-1_14-************.tar.gz - -You should install these packages before installing T-gnus. As for -CUSTOM, you should apply the following patch before building it. - ------- cut here ------ cut here ------ cut here ------ cut here ------ ---- custom-1.9962/cus-face.el~ Wed Mar 4 19:52:39 1998 -+++ custom-1.9962/cus-face.el Mon Mar 9 08:05:33 1998 -@@ -96,7 +96,7 @@ - "Define a new FACE on all frames, ignoring X resources." - (interactive "SMake face: ") - (or (internal-find-face name) -- (let ((face (make-vector 8 nil))) -+ (let ((face (make-vector face-vector-length nil))) - (aset face 0 'face) - (aset face 1 name) - (let* ((frames (frame-list)) ------- cut here ------ cut here ------ cut here ------ cut here ------ - -By the way, the latest CUSTOM package for Emacs v19 is available from: - -ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz - -However, since the `custom-make-dependencies' function does not exist -in this version of CUSTOM, we will use the contrib/cus-dep.el which is -imported from Emacs 20.7 when building T-gnus. - - -INSTALL regexp-opt.el -===================== - -Some T-gnus modules use the functions `regexp-opt', etc. That -functions are defined in regexp-opt.el(c) in the recent Emacsen, -however, Mule 2.3 does not contain it in the standard Lisp libraries. -Copy the file contrib/regexp-opt.el to site-lisp directory (or any -other directory), and byte-compile it as follows: - - % cp -p contrib/regexp-opt.el /usr/local/share/mule/site-lisp - % cd /usr/local/share/mule/site-lisp/ - % mule -batch -q -no-site-file -f batch-byte-compile regexp-opt.el - - -INSTALL passwd.el -================= - -This module provide the `read-passwd' function. You have to install -it if you don't have that function. To do this: - - % cp -p contrib/passwd.el /usr/local/share/mule/site-lisp - % cd /usr/local/share/mule/site-lisp/ - % mule -batch -q -no-site-file -f batch-byte-compile passwd.el - -And add the following line in your .emacs file: - - (autoload 'read-passwd "passwd") - - -INSTALL T-gnus -============== - -There are three ways of making T-gnus with Mule 2.3 based on Emacs 19.34. - -1. If you have installed EMU, APEL, CLIME and SEMI packages under the - standard load-path, for instance: - - EMU: /usr/local/share/mule/19.34/site-lisp/ - APEL: /usr/local/share/mule/site-lisp/apel/ - CLIME: /usr/local/share/mule/site-lisp/flim/ - SEMI: /usr/local/share/mule/site-lisp/semi/ - - What is more, if you have been replaced old CUSTOM with new CUSTOM - or if you have installed new CUSTOM directly under the standard - load-path as such as /usr/local/share/mule/19.34/site-lisp/, you - may have nothing to be done; type the following commands right now. - - % ./configure --with-emacs=mule - % make install - - However, if you have installed new CUSTOM in the subdirectory under - the standard load-path, use the configure option `--with-addpath=' - as follows: - - % ./configure --with-emacs=mule\ - --with-addpath=/usr/local/share/mule/site-lisp/custom/ - % make install - - or you can use the file subdirs.el under the parent directory of - the subdirectory of CUSTOM to add it into load-path which contain - the following contents: - - (normal-top-level-add-to-load-path - '("custom/" "and the other subdirectories.../")) - - and then just type: - - % ./configure --with-emacs=mule - % make install - -2. If you have installed EMU, APEL, CLIME and SEMI packages in the - non-standard load-path, use the configure option `--with-addpath=' - with the colon separated directory names where EMU, APEL or CUSTOM - packages are installed. For example: - - % ./configure --with-emacs=mule\ - --with-addpath=~/elisp/emu/:~/elisp/apel/:~/elisp/custom/ - % make install - - In this case, you have no need to add paths of CLIME, SEMI if they - are installed under the directory which is same as the parent - directory of APEL. - -3. This is another way to install T-gnus when you have installed EMU, - APEL, CLIME and SEMI packages in the non-standard load-path. Copy - the file `sample.lpath.el' which is included in the distribution to - `~/.lpath.el' and modify it suitably for your environment. And - then type the following command. - - % ./configure --with-emacs=mule - % make install - - -USING emacs-w3m (and Emacs/W3) -============================== -The `nnshimbun' web based back end has been moved to the emacs-w3m -package at 18 June 2003. You need to install the latest version of -emacs-w3m if you want to browse web newspapers using T-gnus as before. -In that case, you *must* delete nnshimbun.el and nnshimbun.elc files -originated by T-gnus. Emacs-w3m is an Emacs interface to the external -command w3m, visit the following pages for more information: - - http://emacs-w3m.namazu.org/ - http://w3m.sourceforge.net/ - -Please give up the idea to use Emacs/W3 under Mule 2.3. There is no -information, sorry. +T-gnus no longer supports Mule 2.3 based on Emacs 19.34. diff --git a/Mule23@1934.ja b/Mule23@1934.ja index 65b6607..e01d89e 100644 --- a/Mule23@1934.ja +++ b/Mule23@1934.ja @@ -1,183 +1 @@ -Emacs 19.34 $B$r%Y!<%9$K$7$?(B Mule 2.3 $B$G(B T-gnus $B$r:n$kJ}K!!#(B - -FIXING loaddefs.el -================== - -$B;DG0$J$3$H$K$$$/$D$+$N(B `message' $B$G;H$&JQ?t$,(B lisp/loaddefs.el $B$GDj5A(B -$B$5$l$F$$$F(B Mule $B$N7W(B -$B$J$*@$OC$@$7!"$7$+$b0-1F6A$,$"$j$^$9!#$=$3$G$"$J$?$O$=$l$i$NDj5A$r(B -lisp/loaddefs.el $B$+$i:o=|$7$F!"(BMule $B$r:n$jD>$5$J$1$l$P$J$j$^$;$s!#(B -$B$7$+$7!"$b$7$"$J$?$,(B Mule $B$r:n$jD>$9$3$H$rK>$^$J$$$J$i$P!"(B.emacs $B%U%!(B -$B%$%k$N@hF,$K0J2<$N3F9T$r=q$-9~$`$3$H$G!"(BMule $B$r:n$jD>$9Be$o$j$K$9$k$3(B -$B$H$,$G$-$^$9!#(B - -(let ((symbols '(citation-line-function - cite-function courtesy-message default-headers - default-mail-headers default-news-headers - deletable-headers fcc-handler-function - followup-to-function from-style - generate-headers-first generate-new-buffers - ignored-bounced-headers ignored-cited-headers - ignored-mail-headers ignored-news-headers - ignored-resent-headers ignored-supersedes-headers - included-forward-headers indent-citation-function - interactive kill-buffer-on-exit post-method - reply-to-function required-mail-headers - required-news-headers send-mail-function - send-news-function signature - signature-before-forwarded-message signature-file - signature-separator syntax-checks use-followup-to - user-organization-file wide-reply-to-function - yank-prefix)) - symbol) - (while symbols - (setq symbol (car symbols) - symbols (cdr symbol)) - (makunbound (intern (format "message-%s" symbol))))) - - -INSTALL CUSTOM, APEL, CLIME, SEMI -================================= - -T-gnus $B$O:G?7HG$N(B CUSTOM, APEL, CLIME $B$*$h$S(B SEMI $B$rI,MW$H$7$^$9!#(B -CLIME 1.14 $B$O8E$$(B Emacs $B$K(B FLIM 1.14 $B$HF1$85!G=$rDs6!$9$k$b$N$G!"8=:_(B -$B0J2<$N$b$N$,F~(B -$B$N%G%#%l%/%H%j(B) $B$K%3%T!<$7$F!"(Bbyte-compile $B$7$F2<$5$$!#(B - - % cp -p contrib/regexp-opt.el /usr/local/share/mule/site-lisp - % cd /usr/local/share/mule/site-lisp/ - % mule -batch -q -no-site-file -f batch-byte-compile regexp-opt.el - - -INSTALL passwd.el -================= - -$B$3$N%b%8%e!<%k$O(B `read-passwd' $B4X?t$rDs6!$7$^$9!#L5$$>l9g$O%$%s%9%H!<(B -$B%k$7$J$1$l$P$J$j$^$;$s!#$=$l$K$O$3$&$7$F2<$5$$!#(B - - % cp -p contrib/passwd.el /usr/local/share/mule/site-lisp - % cd /usr/local/share/mule/site-lisp/ - % mule -batch -q -no-site-file -f batch-byte-compile passwd.el - -$B$=$7$F(B .emacs $B%U%!%$%k$K0J2<$N9T$rDI2C$7$F2<$5$$!#(B - - (autoload 'read-passwd "passwd") - - -INSTALL T-gnus -============== - -Emacs 19.34 $B$r%Y!<%9$K$7$?(B Mule 2.3 $B$G(B gnus $B$r:n$k$K$O;0$D$NJ}K!$,$"$j(B -$B$^$9!#(B - -1. $B$b$7$"$J$?$,(B EMU, APEL, CLIME $B$*$h$S(B SEMI $B$N3F%Q%C%1!<%8$rI8=`$N(B - load-path $B$N2<$K%$%s%9%H!<%k$7$F$$$k$H$7$^$9!#Nc$($P$3$&!#(B - - EMU: /usr/local/share/mule/19.34/site-lisp/ - APEL: /usr/local/share/mule/site-lisp/apel/ - CLIME: /usr/local/share/mule/site-lisp/flim/ - SEMI: /usr/local/share/mule/site-lisp/semi/ - - $B$7$+$b!"$b$7$"$J$?$,8E$$(B CUSTOM $B$r?7$7$$(B CUSTOM $B$GCV$-49$($F$$$k$+!"(B - $B?7$7$$(B CUSTOM $B$r(B /usr/local/share/mule/19.34/site-lisp/ $B$N$h$&$JI8(B - $B=`$N(B load-path $B$ND>2<$K%$%s%9%H!<%k$7$F$$$k$J$i$P!"$"$J$?$O2?$b$9(B - $B$kI,MW$,$"$j$^$;$s!#:#$9$0$K0J2<$N%3%^%s%I$r%?%$%W$7$F2<$5$$!#(B - - % ./configure --with-emacs=mule - % make install - - $B$7$+$7!"$b$7$"$J$?$,?7$7$$(B CUSTOM $B$rI8=`$N(B load-path $B$N2<$N%5%V%G%#(B - $B%l%/%H%j$K%$%s%9%H!<%k$7$F$"$k$J$i$P!"0J2<$N$h$&$K(B configure $B%*%W(B - $B%7%g%s$N(B `--with-addpath=' $B$r;H$&$+!"(B - - % ./configure --with-emacs=mule\ - --with-addpath=/usr/local/share/mule/site-lisp/custom/ - % make install - - $B$"$k$$$O$"$J$?$O0J2<$NFbMF$r4^$`!"(BCUSTOM $B%5%V%G%#%l%/%H%j$N?F%G%#(B - $B%l%/%H%j$N2<$N(B subdirs.el $B%U%!%$%k$r;H$&$3$H$,$G$-$^$9!#(B - - (normal-top-level-add-to-load-path - '("custom/" "and the other subdirectories.../")) - - $B$=$7$FC1$K(B - - % ./configure --with-emacs=mule - % make install - - $B$H%?%$%W$7$F2<$5$$!#(B - -2. $B$b$7$"$J$?$,(B EMU, APEL, CLIME $B$*$h$S(B SEMI $B$N3F%Q%C%1!<%8$rI8=`$G$O(B - $B$J$$(B load-path $B$K%$%s%9%H!<%k$7$F$$$k$J$i$P!"%3%m%s$G6h@Z$i$l$?(B - EMU, APEL $B$*$h$S(B CUSTOM $B$,%$%s%9%H!<%k$5$l$F$$$k%G%#%l%/%H%jL>$H(B - configure $B%*%W%7%g%s$N(B `--with-addpath=' $B$r;H$C$F2<$5$$!#Nc$($P(B - - % ./configure --with-emacs=mule\ - --with-addpath=~/elisp/emu/:~/elisp/apel/:~/elisp/custom/ - % make - - $B$3$N>l9g!"$b$7(B CLIME, SEMI $B$,(B APEL $B$N?F%G%#%l%/%H%j$HF1$8%G%#%l%/%H(B - $B%j$N2<$K%$%s%9%H!<%k$5$l$F$$$k$J$i$P!"$=$l$i$N(B path $B$rDI2C$9$kI,MW(B - $B$O$"$j$^$;$s!#(B - -3. $B$3$l$O!"(BEMU, APEL, CLIME $B$*$h$S(B SEMI $B$N3F%Q%C%1!<%8$rI8=`$G$O$J$$(B - load-path $B$K%$%s%9%H!<%k$7$F$$$k>l9g$N!"JL$NJ}K!$G$9!#G[I[$K4^$^$l(B - $B$F$$$k%U%!%$%k(B `sample.lpath.el' $B$r(B `~/.lpath.el' $B$K%3%T!<$7$F!"$"(B - $B$J$?$N4D6-$K9g$&$h$&$K=q$-49$($F2<$5$$!#$=$7$FC$7$F2<$5$$!#(BEmacs-w3m $B$O30It%3%^%s%I(B w3m $B$X$N(B Emacs $B$N%$%s(B -$B%?!<%U%'!<%9$G$9!#>\:Y>pJs$K$D$$$F$O0J2<$N%Z!<%8$rK,$M$F$_$F2<$5$$!#(B - - http://emacs-w3m.namazu.org/ - http://w3m.sourceforge.net/ - -Mule 2.3 $B$G(B Emacs/W3 $B$r;H$&$3$H$OD|$a$F2<$5$$!#$9$_$^$;$s$,>pJs$O$"$j(B -$B$^$;$s!#(B +T-gnus $B$O$b$O$d(B Emacs 19.34 $B$r%Y!<%9$K$7$?(B Mule 2.3 $B$r%5%]!<%H$7$^$;$s!#(B diff --git a/README.T-gnus b/README.T-gnus index bd87c38..22087b3 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -33,5 +33,5 @@ NEWS: * T-gnus 6.17 - this is based on Gnus. - The latest T-gnus is T-gnus 6.17.1 (based on No Gnus 0.1). It + The latest T-gnus is T-gnus 6.17.2 (based on No Gnus 0.2). It requires SEMI 1.14, FLIM 1.14, and APEL 10.0 or later. diff --git a/aclocal.m4 b/aclocal.m4 index 047cd6b..38bfc16 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -62,18 +62,15 @@ AC_DEFUN(AC_CHECK_EMACS_FLAVOR, unset EMACS_cv_SYS_flavor; AC_EMACS_LISP(flavor, - (cond ((featurep (quote xemacs)) \"XEmacs\")\ - ((boundp (quote MULE)) \"MULE\")\ - (t \"FSF Emacs\")), + (if (featurep (quote xemacs))\ + \"XEmacs\"\ + \"Emacs\"), "noecho") - case $EMACS_cv_SYS_flavor in - XEmacs) - EMACS_FLAVOR=xemacs;; - MULE) - EMACS_FLAVOR=mule;; - *) - EMACS_FLAVOR=emacs;; - esac + if test $EMACS_cv_SYS_flavor = XEmacs; then + EMACS_FLAVOR=xemacs + else + EMACS_FLAVOR=emacs + fi AC_MSG_RESULT($EMACS_cv_SYS_flavor)]) AC_DEFUN(AC_PATH_LISPDIR, [ diff --git a/configure b/configure index f9209ed..36fd3cf 100755 --- a/configure +++ b/configure @@ -1598,9 +1598,9 @@ echo $ECHO_N "checking what a flavor does $EMACS have... $ECHO_C" >&6 unset EMACS_cv_SYS_flavor; -elisp="(cond ((featurep (quote xemacs)) \"XEmacs\")\ - ((boundp (quote MULE)) \"MULE\")\ - (t \"FSF Emacs\"))" +elisp="(if (featurep (quote xemacs))\ + \"XEmacs\"\ + \"Emacs\")" if test -z ""noecho""; then echo "$as_me:$LINENO: checking for flavor" >&5 echo $ECHO_N "checking for flavor... $ECHO_C" >&6 @@ -1625,14 +1625,11 @@ if test -z ""noecho""; then echo "${ECHO_T}$flavor" >&6 fi - case $EMACS_cv_SYS_flavor in - XEmacs) - EMACS_FLAVOR=xemacs;; - MULE) - EMACS_FLAVOR=mule;; - *) - EMACS_FLAVOR=emacs;; - esac + if test $EMACS_cv_SYS_flavor = XEmacs; then + EMACS_FLAVOR=xemacs + else + EMACS_FLAVOR=emacs + fi echo "$as_me:$LINENO: result: $EMACS_cv_SYS_flavor" >&5 echo "${ECHO_T}$EMACS_cv_SYS_flavor" >&6 if test "$prefix" = NONE; then diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 999d5d9..3ff6caf 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,27 @@ +2004-04-05 Reiner Steib + + * nnir.el (nnir-group-server): Move before first use. + From Andreas Schwab . + Fix doc-string, indent. + +2004-03-15 Reiner Steib + + * nnir.el (nnir-run-swish-e): Fixed typo. From Adrian Lanz + (tiny change). + +2004-01-23 Jesper Harder + + * README: update. + + * md5.el: Remove. + + * base64.el: Remove. + +2004-01-16 Reiner Steib + + * nnir.el (nnir-run-glimpse): Fixed typo. Reported by Patrick + Drechsler . + 2003-11-15 Simon Josefsson * starttls.el: Sync with recent gnu.emacs.sources post. diff --git a/contrib/README b/contrib/README index 7c3c3fc..e51f9c7 100644 --- a/contrib/README +++ b/contrib/README @@ -12,22 +12,11 @@ need to a directory which is in load-path. Here is an overview of the files: -base64.el - - As of Emacs 21, base64 encoding and decoding is available - natively. So this file appears to be needed for Emacs 20 - only. - gpg-ring.el gpg.el hashcash.el -md5.el - - MD5 encoding is part of Emacs as of Emacs 21.2. Hence, this - file is not needed for those Emacs versions. - one-line-cookie.diff ssl.el diff --git a/contrib/base64.el b/contrib/base64.el deleted file mode 100644 index 572a5d3..0000000 --- a/contrib/base64.el +++ /dev/null @@ -1,278 +0,0 @@ -;;; base64.el,v --- Base64 encoding functions -;; Author: Kyle E. Jones -;; Created: 1997/03/12 14:37:09 -;; Version: 1.6 -;; Keywords: extensions - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (C) 1997 Kyle E. Jones -;;; -;;; This file is not part of GNU Emacs, but the same permissions apply. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile (require 'cl)) - -;; For non-MULE -(if (not (fboundp 'char-int)) - (defalias 'char-int 'identity)) - -(defvar base64-alphabet - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") - -(defvar base64-decoder-program nil - "*Non-nil value should be a string that names a MIME base64 decoder. -The program should expect to read base64 data on its standard -input and write the converted data to its standard output.") - -(defvar base64-decoder-switches nil - "*List of command line flags passed to the command named by -base64-decoder-program.") - -(defvar base64-encoder-program nil - "*Non-nil value should be a string that names a MIME base64 encoder. -The program should expect arbitrary data on its standard -input and write base64 data to its standard output.") - -(defvar base64-encoder-switches nil - "*List of command line flags passed to the command named by -base64-encoder-program.") - -(defconst base64-alphabet-decoding-alist - '( - ( ?A . 00) ( ?B . 01) ( ?C . 02) ( ?D . 03) ( ?E . 04) ( ?F . 05) - ( ?G . 06) ( ?H . 07) ( ?I . 08) ( ?J . 09) ( ?K . 10) ( ?L . 11) - ( ?M . 12) ( ?N . 13) ( ?O . 14) ( ?P . 15) ( ?Q . 16) ( ?R . 17) - ( ?S . 18) ( ?T . 19) ( ?U . 20) ( ?V . 21) ( ?W . 22) ( ?X . 23) - ( ?Y . 24) ( ?Z . 25) ( ?a . 26) ( ?b . 27) ( ?c . 28) ( ?d . 29) - ( ?e . 30) ( ?f . 31) ( ?g . 32) ( ?h . 33) ( ?i . 34) ( ?j . 35) - ( ?k . 36) ( ?l . 37) ( ?m . 38) ( ?n . 39) ( ?o . 40) ( ?p . 41) - ( ?q . 42) ( ?r . 43) ( ?s . 44) ( ?t . 45) ( ?u . 46) ( ?v . 47) - ( ?w . 48) ( ?x . 49) ( ?y . 50) ( ?z . 51) ( ?0 . 52) ( ?1 . 53) - ( ?2 . 54) ( ?3 . 55) ( ?4 . 56) ( ?5 . 57) ( ?6 . 58) ( ?7 . 59) - ( ?8 . 60) ( ?9 . 61) ( ?+ . 62) ( ?/ . 63) - )) - -(defvar base64-alphabet-decoding-vector - (let ((v (make-vector 123 nil)) - (p base64-alphabet-decoding-alist)) - (while p - (aset v (car (car p)) (cdr (car p))) - (setq p (cdr p))) - v)) - -(defvar base64-binary-coding-system 'binary) - -(defun base64-run-command-on-region (start end output-buffer command - &rest arg-list) - (let ((tempfile nil) status errstring default-process-coding-system - (coding-system-for-write base64-binary-coding-system) - (coding-system-for-read base64-binary-coding-system)) - (unwind-protect - (progn - (setq tempfile (make-temp-name "base64")) - (setq status - (apply 'call-process-region - start end command nil - (list output-buffer tempfile) - nil arg-list)) - (cond ((equal status 0) t) - ((zerop (save-excursion - (set-buffer (find-file-noselect tempfile)) - (buffer-size))) - t) - (t (save-excursion - (set-buffer (find-file-noselect tempfile)) - (setq errstring (buffer-string)) - (kill-buffer nil) - (cons status errstring))))) - (ignore-errors - (delete-file tempfile))))) - -(if (featurep 'xemacs) - (defalias 'base64-insert-char 'insert-char) - (defun base64-insert-char (char &optional count ignored buffer) - (if (or (null buffer) (eq buffer (current-buffer))) - (insert-char char count) - (with-current-buffer buffer - (insert-char char count)))) - (setq base64-binary-coding-system 'no-conversion)) - -(defun base64-decode-region (start end) - (interactive "r") - ;;(message "Decoding base64...") - (let ((work-buffer nil) - (done nil) - (counter 0) - (bits 0) - (lim 0) inputpos - (non-data-chars (concat "^=" base64-alphabet))) - (unwind-protect - (save-excursion - (setq work-buffer (generate-new-buffer " *base64-work*")) - (buffer-disable-undo work-buffer) - (if base64-decoder-program - (let* ((binary-process-output t) ; any text already has CRLFs - (status (apply 'base64-run-command-on-region - start end work-buffer - base64-decoder-program - base64-decoder-switches))) - (if (not (eq status t)) - (error "%s" (cdr status)))) - (goto-char start) - (skip-chars-forward non-data-chars end) - (while (not done) - (setq inputpos (point)) - (cond - ((> (skip-chars-forward base64-alphabet end) 0) - (setq lim (point)) - (while (< inputpos lim) - (setq bits (+ bits - (aref base64-alphabet-decoding-vector - (char-int (char-after inputpos))))) - (setq counter (1+ counter) - inputpos (1+ inputpos)) - (cond ((= counter 4) - (base64-insert-char (lsh bits -16) 1 nil work-buffer) - (base64-insert-char (logand (lsh bits -8) 255) 1 nil - work-buffer) - (base64-insert-char (logand bits 255) 1 nil - work-buffer) - (setq bits 0 counter 0)) - (t (setq bits (lsh bits 6))))))) - (cond - ((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")) - ((= counter 2) - (base64-insert-char (lsh bits -10) 1 nil work-buffer)) - ((= counter 3) - (base64-insert-char (lsh bits -16) 1 nil work-buffer) - (base64-insert-char (logand (lsh bits -8) 255) - 1 nil work-buffer)) - ((= counter 0) t))) - (t (skip-chars-forward non-data-chars end))))) - (or (markerp end) (setq end (set-marker (make-marker) end))) - (goto-char start) - (insert-buffer-substring work-buffer) - (delete-region (point) end)) - (and work-buffer (kill-buffer work-buffer)))) - ;;(message "Decoding base64... done") - ) - -(defun base64-encode-region (start end &optional no-line-break) - (interactive "r") - (message "Encoding base64...") - (let ((work-buffer nil) - (counter 0) - (cols 0) - (bits 0) - (alphabet base64-alphabet) - inputpos) - (unwind-protect - (save-excursion - (setq work-buffer (generate-new-buffer " *base64-work*")) - (buffer-disable-undo work-buffer) - (if base64-encoder-program - (let ((status (apply 'base64-run-command-on-region - start end work-buffer - base64-encoder-program - base64-encoder-switches))) - (if (not (eq status t)) - (error "%s" (cdr status)))) - (setq inputpos start) - (while (< inputpos end) - (setq bits (+ bits (char-int (char-after inputpos)))) - (setq counter (1+ counter)) - (cond ((= counter 3) - (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil - work-buffer) - (base64-insert-char - (aref alphabet (logand (lsh bits -12) 63)) - 1 nil work-buffer) - (base64-insert-char - (aref alphabet (logand (lsh bits -6) 63)) - 1 nil work-buffer) - (base64-insert-char - (aref alphabet (logand bits 63)) - 1 nil work-buffer) - (setq cols (+ cols 4)) - (cond ((and (= cols 72) - (not no-line-break)) - (base64-insert-char ?\n 1 nil work-buffer) - (setq cols 0))) - (setq bits 0 counter 0)) - (t (setq bits (lsh bits 8)))) - (setq inputpos (1+ inputpos))) - ;; write out any remaining bits with appropriate padding - (if (= counter 0) - nil - (setq bits (lsh bits (- 16 (* 8 counter)))) - (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil - work-buffer) - (base64-insert-char (aref alphabet (logand (lsh bits -12) 63)) - 1 nil work-buffer) - (if (= counter 1) - (base64-insert-char ?= 2 nil work-buffer) - (base64-insert-char (aref alphabet (logand (lsh bits -6) 63)) - 1 nil work-buffer) - (base64-insert-char ?= 1 nil work-buffer))) - (if (and (> cols 0) - (not no-line-break)) - (base64-insert-char ?\n 1 nil work-buffer))) - (or (markerp end) (setq end (set-marker (make-marker) end))) - (goto-char start) - (insert-buffer-substring work-buffer) - (delete-region (point) end)) - (and work-buffer (kill-buffer work-buffer)))) - (message "Encoding base64... done")) - -(defun base64-encode (string &optional no-line-break) - (save-excursion - (set-buffer (get-buffer-create " *base64-encode*")) - (erase-buffer) - (insert string) - (base64-encode-region (point-min) (point-max) no-line-break) - (skip-chars-backward " \t\r\n") - (delete-region (point-max) (point)) - (prog1 - (buffer-string) - (kill-buffer (current-buffer))))) - -(defun base64-decode (string) - (save-excursion - (set-buffer (get-buffer-create " *base64-decode*")) - (erase-buffer) - (insert string) - (base64-decode-region (point-min) (point-max)) - (goto-char (point-max)) - (skip-chars-backward " \t\r\n") - (delete-region (point-max) (point)) - (prog1 - (buffer-string) - (kill-buffer (current-buffer))))) - -(defalias 'base64-decode-string 'base64-decode) -(defalias 'base64-encode-string 'base64-encode) - -(provide 'base64) diff --git a/contrib/cus-dep.el b/contrib/cus-dep.el deleted file mode 100644 index 8b689bf..0000000 --- a/contrib/cus-dep.el +++ /dev/null @@ -1,171 +0,0 @@ -;;; cus-dep.el --- Find customization dependencies. -;; -;; Copyright (C) 1997 Free Software Foundation, Inc. -;; -;; Author: Per Abrahamsen -;; Keywords: internal - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Code: - -(require 'cl) -(require 'widget) -(require 'cus-face) -(require 'autoload) - -(defun custom-make-dependencies () - "Batch function to extract custom dependencies from .el files. -Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS" - (let ((enable-local-eval nil) - (all-subdirs command-line-args-left) - (start-directory default-directory)) - (get-buffer-create " cus-dep temp") - (set-buffer " cus-dep temp") - (while all-subdirs - (message "Directory %s" (car all-subdirs)) - (let ((files (directory-files (car all-subdirs) nil "\\`[^=].*\\.el\\'")) - (default-directory default-directory) - file - is-autoloaded) - (cd (car all-subdirs)) - (while files - (setq file (car files) - files (cdr files)) - (when (file-exists-p file) - (erase-buffer) - (insert-file-contents file) - (goto-char (point-min)) - (string-match "\\`\\(.*\\)\\.el\\'" file) - (let ((name (file-name-nondirectory (match-string 1 file)))) - (condition-case nil - (while (re-search-forward "^(defcustom\\|^(defface\\|^(defgroup" - nil t) - (setq is-autoloaded nil) - (beginning-of-line) - (save-excursion - (forward-line -1) - (if (looking-at generate-autoload-cookie) - (setq is-autoloaded t))) - (let ((expr (read (current-buffer)))) - (condition-case nil - (progn - (eval expr) - (put (nth 1 expr) 'custom-autoloaded is-autoloaded) - (put (nth 1 expr) 'custom-where name)) - (error nil)))) - (error nil))))) - (setq all-subdirs (cdr all-subdirs))))) - (message "Generating cus-load.el...") - (find-file "cus-load.el") - (erase-buffer) - (insert "\ -;;; cus-load.el --- automatically extracted custom dependencies -;; -;;; Code: - -") - (mapatoms (lambda (symbol) - (let ((members (get symbol 'custom-group)) - item where found) - (when members - (while members - (setq item (car (car members)) - members (cdr members) - where (get item 'custom-where)) - (unless (or (null where) - (member where found)) - (if found - (insert " ") - (insert "(put '" (symbol-name symbol) - " 'custom-loads '(")) - (prin1 where (current-buffer)) - (push where found))) - (when found - (insert "))\n")))))) - (insert "\ -;;; These are for handling :version. We need to have a minimum of -;;; information so `custom-changed-variables' could do its job. -;;; For both groups and variables we have to set `custom-version'. -;;; For variables we also set the `standard-value' and for groups -;;; `group-documentation' (which is shown in the customize buffer), so -;;; we don't have to load the file containing the group. - -;;; `custom-versions-load-alist' is an alist that has as car a version -;;; number and as elts the files that have variables that contain that -;;; version. These files should be loaded before showing the -;;; customization buffer that `customize-changed-options' generates. - - -;;; This macro is used so we don't modify the information about -;;; variables and groups if it's already set. (We don't know when -;;; cus-load.el is going to be loaded and at that time some of the -;;; files might be loaded and some others might not). -(defmacro custom-put-if-not (symbol propname value) - `(unless (get ,symbol ,propname) - (put ,symbol ,propname ,value))) - -") - (let ((version-alist nil)) - (mapatoms (lambda (symbol) - (let ((version (get symbol 'custom-version)) - where) - (when version - (setq where (get symbol 'custom-where)) - (when (and where - ;; Don't bother to do anything if it's - ;; autoloaded because we will have all - ;; this info when emacs is running - ;; anyway. - (not (get symbol 'custom-autoloaded))) - (insert "(custom-put-if-not '" (symbol-name symbol) - " 'custom-version ") - (prin1 version (current-buffer)) - (insert ")\n") - (insert "(custom-put-if-not '" (symbol-name symbol)) - (if (get symbol 'standard-value) - ;; This means it's a variable - (progn - (insert " 'standard-value t)\n") - (if (assoc version version-alist) - (unless - (member where - (cdr (assoc version version-alist))) - (push where (cdr (assoc version version-alist)))) - (push (cons version (list where)) version-alist))) - ;; This is a group - (insert " 'group-documentation ") - (prin1 (get symbol 'group-documentation) (current-buffer)) - (insert ")\n"))))))) - - (insert "\n(defvar custom-versions-load-alist " - (if version-alist "'" "")) - (prin1 version-alist (current-buffer)) - (insert "\n \"For internal use by custom.\")\n")) - - (insert "\ - -\(provide 'cus-load) - -;;; cus-load.el ends here\n") - (let ((kept-new-versions 10000000)) - (save-buffer)) - (message "Generating cus-load.el...done") - (kill-emacs)) - -;;; cus-dep.el ends here diff --git a/contrib/md5.el b/contrib/md5.el deleted file mode 100644 index a036819..0000000 --- a/contrib/md5.el +++ /dev/null @@ -1,409 +0,0 @@ -;;; md5.el -- MD5 Message Digest Algorithm -;;; Gareth Rees - -;; LCD Archive Entry: -;; md5|Gareth Rees|gdr11@cl.cam.ac.uk| -;; MD5 cryptographic message digest algorithm| -;; 13-Nov-95|1.0|~/misc/md5.el.Z| - -;;; Details: ------------------------------------------------------------------ - -;; This is a direct translation into Emacs LISP of the reference C -;; implementation of the MD5 Message-Digest Algorithm written by RSA -;; Data Security, Inc. -;; -;; The algorithm takes a message (that is, a string of bytes) and -;; computes a 16-byte checksum or "digest" for the message. This digest -;; is supposed to be cryptographically strong in the sense that if you -;; are given a 16-byte digest D, then there is no easier way to -;; construct a message whose digest is D than to exhaustively search the -;; space of messages. However, the robustness of the algorithm has not -;; been proven, and a similar algorithm (MD4) was shown to be unsound, -;; so treat with caution! -;; -;; The C algorithm uses 32-bit integers; because GNU Emacs -;; implementations provide 28-bit integers (with 24-bit integers on -;; versions prior to 19.29), the code represents a 32-bit integer as the -;; cons of two 16-bit integers. The most significant word is stored in -;; the car and the least significant in the cdr. The algorithm requires -;; at least 17 bits of integer representation in order to represent the -;; carry from a 16-bit addition. - -;;; Usage: -------------------------------------------------------------------- - -;; To compute the MD5 Message Digest for a message M (represented as a -;; string or as a vector of bytes), call -;; -;; (md5-encode M) -;; -;; which returns the message digest as a vector of 16 bytes. If you -;; need to supply the message in pieces M1, M2, ... Mn, then call -;; -;; (md5-init) -;; (md5-update M1) -;; (md5-update M2) -;; ... -;; (md5-update Mn) -;; (md5-final) - -;;; Copyright and licence: ---------------------------------------------------- - -;; Copyright (C) 1995 by Gareth Rees -;; Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm -;; -;; md5.el is free software; you can redistribute it and/or modify it -;; under the terms of the GNU General Public License as published by the -;; Free Software Foundation; either version 2, or (at your option) any -;; later version. -;; -;; md5.el is distributed in the hope that it will be useful, but WITHOUT -;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -;; for more details. -;; -;; The original copyright notice is given below, as required by the -;; licence for the original code. This code is distributed under *both* -;; RSA's original licence and the GNU General Public Licence. (There -;; should be no problems, as the former is more liberal than the -;; latter). - -;;; Original copyright notice: ------------------------------------------------ - -;; Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. -;; -;; License to copy and use this software is granted provided that it is -;; identified as the "RSA Data Security, Inc. MD5 Message- Digest -;; Algorithm" in all material mentioning or referencing this software or -;; this function. -;; -;; License is also granted to make and use derivative works provided -;; that such works are identified as "derived from the RSA Data -;; Security, Inc. MD5 Message-Digest Algorithm" in all material -;; mentioning or referencing the derived work. -;; -;; RSA Data Security, Inc. makes no representations concerning either -;; the merchantability of this software or the suitability of this -;; software for any particular purpose. It is provided "as is" without -;; express or implied warranty of any kind. -;; -;; These notices must be retained in any copies of any part of this -;; documentation and/or software. - -;;; Code: - -(defvar md5-program "md5sum" - "*Program that reads a message on its standard input and writes an -MD5 digest on its output.") - -(defvar md5-maximum-internal-length 4096 - "*The maximum size of a piece of data that should use the MD5 routines -written in lisp. If a message exceeds this, it will be run through an -external filter for processing. Also see the `md5-program' variable. -This variable has no effect if you call the md5-init|update|final -functions - only used by the `md5' function's simpler interface.") - -(defvar md5-bits (make-vector 4 0) - "Number of bits handled, modulo 2^64. -Represented as four 16-bit numbers, least significant first.") -(defvar md5-buffer (make-vector 4 '(0 . 0)) - "Scratch buffer (four 32-bit integers).") -(defvar md5-input (make-vector 64 0) - "Input buffer (64 bytes).") - -(defun md5-unhex (x) - (if (> x ?9) - (if (>= x ?a) - (+ 10 (- x ?a)) - (+ 10 (- x ?A))) - (- x ?0))) - -(defun md5-encode (message) - "Encodes MESSAGE using the MD5 message digest algorithm. -MESSAGE must be a string or an array of bytes. -Returns a vector of 16 bytes containing the message digest." - (if (<= (length message) md5-maximum-internal-length) - (progn - (md5-init) - (md5-update message) - (md5-final)) - (save-excursion - (set-buffer (get-buffer-create " *md5-work*")) - (erase-buffer) - (insert message) - (call-process-region (point-min) (point-max) - (or shell-file-name "/bin/sh") - t (current-buffer) nil - "-c" md5-program) - ;; MD5 digest is 32 chars long - ;; mddriver adds a newline to make neaten output for tty - ;; viewing, make sure we leave it behind. - (let ((data (buffer-substring (point-min) (+ (point-min) 32))) - (vec (make-vector 16 0)) - (ctr 0)) - (while (< ctr 16) - (aset vec ctr (+ (* 16 (md5-unhex (aref data (* ctr 2)))) - (md5-unhex (aref data (1+ (* ctr 2)))))) - (setq ctr (1+ ctr))))))) - -(defsubst md5-add (x y) - "Return 32-bit sum of 32-bit integers X and Y." - (let ((m (+ (car x) (car y))) - (l (+ (cdr x) (cdr y)))) - (cons (logand 65535 (+ m (lsh l -16))) (logand l 65535)))) - -;; FF, GG, HH and II are basic MD5 functions, providing transformations -;; for rounds 1, 2, 3 and 4 respectively. Each function follows this -;; pattern of computation (where ROTATE(x,y) means rotate 32-bit value x -;; by y bits to the left): -;; -;; FF(a,b,c,d,x,s,ac) = ROTATE(a + F(b,c,d) + x + ac,s) + b -;; -;; so we use the macro `md5-make-step' to construct each one. The -;; helper functions F, G, H and I operate on 16-bit numbers; the full -;; operation splits its inputs, operates on the halves separately and -;; then puts the results together. - -(defsubst md5-F (x y z) (logior (logand x y) (logand (lognot x) z))) -(defsubst md5-G (x y z) (logior (logand x z) (logand y (lognot z)))) -(defsubst md5-H (x y z) (logxor x y z)) -(defsubst md5-I (x y z) (logxor y (logior x (logand 65535 (lognot z))))) - -(defmacro md5-make-step (name func) - (` - (defun (, name) (a b c d x s ac) - (let* - ((m1 (+ (car a) ((, func) (car b) (car c) (car d)) (car x) (car ac))) - (l1 (+ (cdr a) ((, func) (cdr b) (cdr c) (cdr d)) (cdr x) (cdr ac))) - (m2 (logand 65535 (+ m1 (lsh l1 -16)))) - (l2 (logand 65535 l1)) - (m3 (logand 65535 (if (> s 15) - (+ (lsh m2 (- s 32)) (lsh l2 (- s 16))) - (+ (lsh m2 s) (lsh l2 (- s 16)))))) - (l3 (logand 65535 (if (> s 15) - (+ (lsh l2 (- s 32)) (lsh m2 (- s 16))) - (+ (lsh l2 s) (lsh m2 (- s 16))))))) - (md5-add (cons m3 l3) b))))) - -(md5-make-step md5-FF md5-F) -(md5-make-step md5-GG md5-G) -(md5-make-step md5-HH md5-H) -(md5-make-step md5-II md5-I) - -(defun md5-init () - "Initialise the state of the message-digest routines." - (aset md5-bits 0 0) - (aset md5-bits 1 0) - (aset md5-bits 2 0) - (aset md5-bits 3 0) - (aset md5-buffer 0 '(26437 . 8961)) - (aset md5-buffer 1 '(61389 . 43913)) - (aset md5-buffer 2 '(39098 . 56574)) - (aset md5-buffer 3 '( 4146 . 21622))) - -(defun md5-update (string) - "Update the current MD5 state with STRING (an array of bytes)." - (let ((len (length string)) - (i 0) - (j 0)) - (while (< i len) - ;; Compute number of bytes modulo 64 - (setq j (% (/ (aref md5-bits 0) 8) 64)) - - ;; Store this byte (truncating to 8 bits to be sure) - (aset md5-input j (logand 255 (aref string i))) - - ;; Update number of bits by 8 (modulo 2^64) - (let ((c 8) (k 0)) - (while (and (> c 0) (< k 4)) - (let ((b (aref md5-bits k))) - (aset md5-bits k (logand 65535 (+ b c))) - (setq c (if (> b (- 65535 c)) 1 0) - k (1+ k))))) - - ;; Increment number of bytes processed - (setq i (1+ i)) - - ;; When 64 bytes accumulated, pack them into sixteen 32-bit - ;; integers in the array `in' and then tranform them. - (if (= j 63) - (let ((in (make-vector 16 (cons 0 0))) - (k 0) - (kk 0)) - (while (< k 16) - (aset in k (md5-pack md5-input kk)) - (setq k (+ k 1) kk (+ kk 4))) - (md5-transform in)))))) - -(defun md5-pack (array i) - "Pack the four bytes at ARRAY reference I to I+3 into a 32-bit integer." - (cons (+ (lsh (aref array (+ i 3)) 8) (aref array (+ i 2))) - (+ (lsh (aref array (+ i 1)) 8) (aref array (+ i 0))))) - -(defun md5-byte (array n b) - "Unpack byte B (0 to 3) from Nth member of ARRAY of 32-bit integers." - (let ((e (aref array n))) - (cond ((eq b 0) (logand 255 (cdr e))) - ((eq b 1) (lsh (cdr e) -8)) - ((eq b 2) (logand 255 (car e))) - ((eq b 3) (lsh (car e) -8))))) - -(defun md5-final () - (let ((in (make-vector 16 (cons 0 0))) - (j 0) - (digest (make-vector 16 0)) - (padding)) - - ;; Save the number of bits in the message - (aset in 14 (cons (aref md5-bits 1) (aref md5-bits 0))) - (aset in 15 (cons (aref md5-bits 3) (aref md5-bits 2))) - - ;; Compute number of bytes modulo 64 - (setq j (% (/ (aref md5-bits 0) 8) 64)) - - ;; Pad out computation to 56 bytes modulo 64 - (setq padding (make-vector (if (< j 56) (- 56 j) (- 120 j)) 0)) - (aset padding 0 128) - (md5-update padding) - - ;; Append length in bits and transform - (let ((k 0) (kk 0)) - (while (< k 14) - (aset in k (md5-pack md5-input kk)) - (setq k (+ k 1) kk (+ kk 4)))) - (md5-transform in) - - ;; Store the results in the digest - (let ((k 0) (kk 0)) - (while (< k 4) - (aset digest (+ kk 0) (md5-byte md5-buffer k 0)) - (aset digest (+ kk 1) (md5-byte md5-buffer k 1)) - (aset digest (+ kk 2) (md5-byte md5-buffer k 2)) - (aset digest (+ kk 3) (md5-byte md5-buffer k 3)) - (setq k (+ k 1) kk (+ kk 4)))) - - ;; Return digest - digest)) - -;; It says in the RSA source, "Note that if the Mysterious Constants are -;; arranged backwards in little-endian order and decrypted with the DES -;; they produce OCCULT MESSAGES!" Security through obscurity? - -(defun md5-transform (in) - "Basic MD5 step. Transform md5-buffer based on array IN." - (let ((a (aref md5-buffer 0)) - (b (aref md5-buffer 1)) - (c (aref md5-buffer 2)) - (d (aref md5-buffer 3))) - (setq - a (md5-FF a b c d (aref in 0) 7 '(55146 . 42104)) - d (md5-FF d a b c (aref in 1) 12 '(59591 . 46934)) - c (md5-FF c d a b (aref in 2) 17 '( 9248 . 28891)) - b (md5-FF b c d a (aref in 3) 22 '(49597 . 52974)) - a (md5-FF a b c d (aref in 4) 7 '(62844 . 4015)) - d (md5-FF d a b c (aref in 5) 12 '(18311 . 50730)) - c (md5-FF c d a b (aref in 6) 17 '(43056 . 17939)) - b (md5-FF b c d a (aref in 7) 22 '(64838 . 38145)) - a (md5-FF a b c d (aref in 8) 7 '(27008 . 39128)) - d (md5-FF d a b c (aref in 9) 12 '(35652 . 63407)) - c (md5-FF c d a b (aref in 10) 17 '(65535 . 23473)) - b (md5-FF b c d a (aref in 11) 22 '(35164 . 55230)) - a (md5-FF a b c d (aref in 12) 7 '(27536 . 4386)) - d (md5-FF d a b c (aref in 13) 12 '(64920 . 29075)) - c (md5-FF c d a b (aref in 14) 17 '(42617 . 17294)) - b (md5-FF b c d a (aref in 15) 22 '(18868 . 2081)) - a (md5-GG a b c d (aref in 1) 5 '(63006 . 9570)) - d (md5-GG d a b c (aref in 6) 9 '(49216 . 45888)) - c (md5-GG c d a b (aref in 11) 14 '( 9822 . 23121)) - b (md5-GG b c d a (aref in 0) 20 '(59830 . 51114)) - a (md5-GG a b c d (aref in 5) 5 '(54831 . 4189)) - d (md5-GG d a b c (aref in 10) 9 '( 580 . 5203)) - c (md5-GG c d a b (aref in 15) 14 '(55457 . 59009)) - b (md5-GG b c d a (aref in 4) 20 '(59347 . 64456)) - a (md5-GG a b c d (aref in 9) 5 '( 8673 . 52710)) - d (md5-GG d a b c (aref in 14) 9 '(49975 . 2006)) - c (md5-GG c d a b (aref in 3) 14 '(62677 . 3463)) - b (md5-GG b c d a (aref in 8) 20 '(17754 . 5357)) - a (md5-GG a b c d (aref in 13) 5 '(43491 . 59653)) - d (md5-GG d a b c (aref in 2) 9 '(64751 . 41976)) - c (md5-GG c d a b (aref in 7) 14 '(26479 . 729)) - b (md5-GG b c d a (aref in 12) 20 '(36138 . 19594)) - a (md5-HH a b c d (aref in 5) 4 '(65530 . 14658)) - d (md5-HH d a b c (aref in 8) 11 '(34673 . 63105)) - c (md5-HH c d a b (aref in 11) 16 '(28061 . 24866)) - b (md5-HH b c d a (aref in 14) 23 '(64997 . 14348)) - a (md5-HH a b c d (aref in 1) 4 '(42174 . 59972)) - d (md5-HH d a b c (aref in 4) 11 '(19422 . 53161)) - c (md5-HH c d a b (aref in 7) 16 '(63163 . 19296)) - b (md5-HH b c d a (aref in 10) 23 '(48831 . 48240)) - a (md5-HH a b c d (aref in 13) 4 '(10395 . 32454)) - d (md5-HH d a b c (aref in 0) 11 '(60065 . 10234)) - c (md5-HH c d a b (aref in 3) 16 '(54511 . 12421)) - b (md5-HH b c d a (aref in 6) 23 '( 1160 . 7429)) - a (md5-HH a b c d (aref in 9) 4 '(55764 . 53305)) - d (md5-HH d a b c (aref in 12) 11 '(59099 . 39397)) - c (md5-HH c d a b (aref in 15) 16 '( 8098 . 31992)) - b (md5-HH b c d a (aref in 2) 23 '(50348 . 22117)) - a (md5-II a b c d (aref in 0) 6 '(62505 . 8772)) - d (md5-II d a b c (aref in 7) 10 '(17194 . 65431)) - c (md5-II c d a b (aref in 14) 15 '(43924 . 9127)) - b (md5-II b c d a (aref in 5) 21 '(64659 . 41017)) - a (md5-II a b c d (aref in 12) 6 '(25947 . 22979)) - d (md5-II d a b c (aref in 3) 10 '(36620 . 52370)) - c (md5-II c d a b (aref in 10) 15 '(65519 . 62589)) - b (md5-II b c d a (aref in 1) 21 '(34180 . 24017)) - a (md5-II a b c d (aref in 8) 6 '(28584 . 32335)) - d (md5-II d a b c (aref in 15) 10 '(65068 . 59104)) - c (md5-II c d a b (aref in 6) 15 '(41729 . 17172)) - b (md5-II b c d a (aref in 13) 21 '(19976 . 4513)) - a (md5-II a b c d (aref in 4) 6 '(63315 . 32386)) - d (md5-II d a b c (aref in 11) 10 '(48442 . 62005)) - c (md5-II c d a b (aref in 2) 15 '(10967 . 53947)) - b (md5-II b c d a (aref in 9) 21 '(60294 . 54161))) - - (aset md5-buffer 0 (md5-add (aref md5-buffer 0) a)) - (aset md5-buffer 1 (md5-add (aref md5-buffer 1) b)) - (aset md5-buffer 2 (md5-add (aref md5-buffer 2) c)) - (aset md5-buffer 3 (md5-add (aref md5-buffer 3) d)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Here begins the merger with the XEmacs API and the md5.el from the URL -;;; package. Courtesy wmperry@spry.com -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun md5 (object &optional start end) - "Return the MD5 (a secure message digest algorithm) of an object. -OBJECT is either a string or a buffer. -Optional arguments START and END denote buffer positions for computing the -hash of a portion of OBJECT." - (let ((buffer nil)) - (unwind-protect - (save-excursion - (setq buffer (generate-new-buffer " *md5-work*")) - (set-buffer buffer) - (cond - ((bufferp object) - (insert-buffer-substring object start end)) - ((stringp object) - (insert (if (or start end) - (substring object start end) - object))) - (t nil)) - (prog1 - (if (<= (point-max) md5-maximum-internal-length) - (mapconcat - (function (lambda (node) (format "%02x" node))) - (md5-encode (buffer-string)) - "") - (call-process-region (point-min) (point-max) - (or shell-file-name "/bin/sh") - t buffer nil - "-c" md5-program) - ;; MD5 digest is 32 chars long - ;; mddriver adds a newline to make neaten output for tty - ;; viewing, make sure we leave it behind. - (buffer-substring (point-min) (+ (point-min) 32))) - (kill-buffer buffer))) - (and buffer (kill-buffer buffer) nil)))) - -(provide 'md5) - -;;; md5.el ends here diff --git a/contrib/nnir.el b/contrib/nnir.el index 0a2347b..4f123af 100644 --- a/contrib/nnir.el +++ b/contrib/nnir.el @@ -298,7 +298,7 @@ ;;; Setup Code: -(defconst nnir-version "$Id: nnir.el,v 1.1.6.1 2004-01-04 23:51:01 yamaoka Exp $" +(defconst nnir-version "$Id: nnir.el,v 1.1.6.1.2.1 2004-05-02 00:24:53 yamaoka Exp $" "Version of NNIR.") (require 'cl) @@ -692,7 +692,17 @@ that it is for Namazu, not Glimpse." 'gnus-group-make-nnir-group)) (add-hook 'gnus-group-mode-hook 'nnir-group-mode-hook) - +(defmacro nnir-group-server (group) + "Return the server for a foreign newsgroup GROUP. +The returned format is as `gnus-server-to-method' needs it. See +`gnus-group-real-prefix' and `gnus-group-real-name'." + `(let ((gname ,group)) + (if (string-match "^\\([^:]+\\):" gname) + (setq gname (match-string 1 gname)) + nil) + (if (string-match "^\\([^+]+\\)\\+\\(.+\\)$" gname) + (format "%s:%s" (match-string 1 gname) (match-string 2 gname)) + (concat gname ":")))) ;; Summary mode commands. @@ -865,7 +875,7 @@ pairs (also vectors, actually)." (let ((artlist nil) (groupspec (cdr (assq 'group query))) (qstring (cdr (assq 'query query))) - (prefix (nnir-read-server-parm 'nnir-glimps-remove-prefix server)) + (prefix (nnir-read-server-parm 'nnir-glimpse-remove-prefix server)) artno dirnam) (when (and group groupspec) (error (concat "It does not make sense to use a group spec" @@ -1194,7 +1204,7 @@ Tested with swish-e-2.0.1 on Windows NT 4.0." (error "Missing parameter `nnir-swish-e-index-file'"))) (additional-switches (nnir-read-server-parm - 'nnir-swish++-additional-switches server)) + 'nnir-swish-e-additional-switches server)) (cp-list `(,nnir-swish-e-program nil ; input from /dev/null t ; output @@ -1486,17 +1496,6 @@ form 'backend:name'." ;; (symbol-value key)) ;; )) -(defmacro nnir-group-server (group) - "Returns the server for a foreign newsgroup in the format as gnus-server-to-method needs it. Compare to gnus-group-real-prefix and gnus-group-real-name." - `(let ((gname ,group)) - (if (string-match "^\\([^:]+\\):" gname) - (setq gname (match-string 1 gname)) - nil) - (if (string-match "^\\([^+]+\\)\\+\\(.+\\)$" gname) - (format "%s:%s" (match-string 1 gname) (match-string 2 gname)) - (concat gname ":")) - )) - (defun nnir-group-full-name (shortname server) "For the given group name, return a full Gnus group name. The Gnus backend/server information is added." diff --git a/contrib/passwd.el b/contrib/passwd.el deleted file mode 100644 index 0257469..0000000 --- a/contrib/passwd.el +++ /dev/null @@ -1,386 +0,0 @@ -;;; passwd.el --- Prompting for passwords semi-securely - -;; Copyright (C) 1994 Free Software Foundation, Inc. -;; Keywords: comm, extensions - -;; Author: Jamie Zawinski - -;; This file is part of XEmacs. - -;; XEmacs is free software; you can redistribute it and/or modify it -;; under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; XEmacs is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. - -;;; Synched up with: Not in FSF. - -;; You should have received a copy of the GNU General Public License -;; along with XEmacs; see the file COPYING. If not, write to the Free -;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Change Log: -;; -;; Sun Jun 12 04:19:30 1994 by sandy on ibm550.sissa.it -;; Added support for password histories and (provide 'passwd) -;; (jwz says: this "history" thing is completely undocumented, you loser!) -;; 2-Jan-95 (mon); 4:13 AM by jwz@netscape.com -;; Fixed Sandy's extreme keymap bogosity. Made it invert the screen when -;; reading securely (this could be better; maybe use red text or something -;; instead...) -;; 9-Jul-95 (fri); 4:55 AM by jwz@netscape.com -;; Made it work with XEmacs 19.12. -;; 7-Jul-95 by cthomp@cs.uiuc.edu -;; Added variable to control inverting frame when keyboard grabbed - -;;; Code: - -(defvar passwd-invert-frame-when-keyboard-grabbed t - "*If non-nil swap the foreground and background colors of all faces. -This is done while the keyboard is grabbed in order to give a visual -clue that a grab is in effect.") - -(defvar passwd-echo ?. - "*The character which should be echoed when typing a password, -or nil, meaning echo nothing.") - -(defvar read-passwd-map - (let ((i 0) - (s (make-string 1 0)) - map) - (cond ((fboundp 'set-keymap-parent) - (setq map (make-keymap)) - (set-keymap-parent map minibuffer-local-map)) - (t ; v18/FSFmacs compatibility - (setq map (copy-keymap minibuffer-local-map)))) - (if (fboundp 'set-keymap-name) - (set-keymap-name map 'read-passwd-map)) - - (while (< i 127) - (aset s 0 i) - (or (and (boundp 'meta-prefix-char) (eq i meta-prefix-char)) - (define-key map s 'self-insert-command)) - (setq i (1+ i))) - - (define-key map "\C-g" 'keyboard-quit) - (define-key map "\C-h" 'delete-backward-char) - (define-key map "\r" 'exit-minibuffer) - (define-key map "\n" 'exit-minibuffer) - (define-key map "\C-u" 'passwd-erase-buffer) - (define-key map "\C-q" 'quoted-insert) - (define-key map "\177" 'delete-backward-char) - (define-key map "\M-n" 'passwd-next-history-element) - (define-key map "\M-p" 'passwd-previous-history-element) - map) - "Keymap used for reading passwords in the minibuffer. -The \"bindings\" in this map are not real commands; only a limited -number of commands are understood. The important bindings are: -\\ - \\[passwd-erase-buffer] Erase all input. - \\[quoted-insert] Insert the next character literally. - \\[delete-backward-char] Delete the previous character. - \\[exit-minibuffer] Accept what you have typed. - \\[keyboard-quit] Abort the command. - -All other characters insert themselves (but do not echo.)") - -;;; internal variables - -(defvar passwd-history nil) -(defvar passwd-history-posn 0) - -;;;###autoload -(defun read-passwd (prompt &optional confirm default) - "Prompts for a password in the minibuffer, and returns it as a string. -If PROMPT may be a prompt string or an alist of elements -'\(prompt . default\). -If optional arg CONFIRM is true, then ask the user to type the password -again to confirm that they typed it correctly. -If optional arg DEFAULT is provided, then it is a string to insert as -the default choice (it is not, of course, displayed.) - -If running under X, the keyboard will be grabbed (with XGrabKeyboard()) -to reduce the possibility that evesdropping is occuring. - -When reading a password, all keys self-insert, except for: -\\ - \\[read-passwd-erase-line] Erase the entire line. - \\[quoted-insert] Insert the next character literally. - \\[delete-backward-char] Delete the previous character. - \\[exit-minibuffer] Accept what you have typed. - \\[keyboard-quit] Abort the command. - -The returned value is always a newly-created string. No additional copies -of the password remain after this function has returned. - -NOTE: unless great care is taken, the typed password will exist in plaintext -form in the running image for an arbitrarily long time. Priveleged users may -be able to extract it from memory. If emacs crashes, it may appear in the -resultant core file. - -Some steps you can take to prevent the password from being copied around: - - - as soon as you are done with the returned string, destroy it with - (fillarray string 0). The same goes for any default passwords - or password histories. - - - do not copy the string, as with concat or substring - if you do, be - sure to keep track of and destroy all copies. - - - do not insert the password into a buffer - if you do, be sure to - overwrite the buffer text before killing it, as with the functions - `passwd-erase-buffer' or `passwd-kill-buffer'. Note that deleting - the text from the buffer does NOT necessarily remove the text from - memory. - - - be careful of the undo history - if you insert the password into a - buffer which has undo recording turned on, the password will be - copied onto the undo list, and thus recoverable. - - - do not pass it as an argument to a shell command - anyone will be - able to see it if they run `ps' at the right time. - -Note that the password will be temporarily recoverable with the `view-lossage' -command. This data will not be overwritten until another hundred or so -characters are typed. There's not currently a way around this." - - (save-excursion - (let ((input (get-buffer-create " *password*")) - (passwd-history-posn 0) - passwd-history) - (if (listp prompt) - (setq passwd-history prompt - default (cdr (car passwd-history)))) - (set-buffer input) - (buffer-disable-undo input) - (use-local-map read-passwd-map) - (unwind-protect - (progn - (if (passwd-grab-keyboard) - (passwd-secure-display)) - (read-passwd-1 input prompt nil default) - (set-buffer input) - - (if (not confirm) - (buffer-string) - (let ((ok nil) - passwd) - (while (not ok) - (set-buffer input) - (setq passwd (buffer-string)) - (read-passwd-1 input prompt "[Retype to confirm]") - (if (passwd-compare-string-to-buffer passwd input) - (setq ok t) - (fillarray passwd 0) - (setq passwd nil) - (beep) - (read-passwd-1 input prompt "[Mismatch. Start over]") - )) - passwd))) - ;; protected - (passwd-ungrab-keyboard) - (passwd-insecure-display) - (passwd-kill-buffer input) - (if (fboundp 'clear-message) ;XEmacs - (clear-message) - (message "")) - )))) - - -(defun read-passwd-1 (buffer prompt &optional prompt2 default) - (set-buffer buffer) - (passwd-erase-buffer) - (if default (insert default)) - (catch 'exit ; exit-minibuffer throws here - (while t - (set-buffer buffer) - (let* ((minibuffer-completion-table nil) - (cursor-in-echo-area t) - (echo-keystrokes 0) - (key (passwd-read-key-sequence - (concat (if (listp prompt) - (car (nth passwd-history-posn passwd-history)) - prompt) - prompt2 - (if passwd-echo - (make-string (buffer-size) passwd-echo))))) - (binding (key-binding key))) - (setq prompt2 nil) - (set-buffer buffer) ; just in case... - (if (fboundp 'event-to-character) ;; lemacs - (setq last-command-event (aref key (1- (length key))) - last-command-char (event-to-character last-command-event)) - ;; v18/FSFmacs compatibility - (setq last-command-char (aref key (1- (length key))))) - (setq this-command binding) - (condition-case c - (command-execute binding) - (error - (beep) - (if (fboundp 'display-error) - (display-error c t) - ;; v18/FSFmacs compatibility - (message (concat (or (get (car-safe c) 'error-message) "???") - (if (cdr-safe c) ": ") - (mapconcat - (function (lambda (x) (format "%s" x))) - (cdr-safe c) ", ")))) - (sit-for 2))) - )))) - -(defun passwd-previous-history-element (n) - (interactive "p") - (or passwd-history - (error "Password history is empty.")) - (let ((l (length passwd-history))) - (setq passwd-history-posn - (% (+ n passwd-history-posn) l)) - (if (< passwd-history-posn 0) - (setq passwd-history-posn (+ passwd-history-posn l)))) - (let ((obuff (current-buffer))) ; want to move point in passwd buffer - (unwind-protect - (progn - (set-buffer " *password*") - (passwd-erase-buffer) - (insert (cdr (nth passwd-history-posn passwd-history)))) - (set-buffer obuff)))) - -(defun passwd-next-history-element (n) - (interactive "p") - (passwd-previous-history-element (- n))) - -(defun passwd-erase-buffer () - ;; First erase the buffer, which will simply enlarge the gap. - ;; Then insert null characters until the gap is filled with them - ;; to prevent the old text from being visible in core files or kmem. - ;; (Actually use 3x the size of the buffer just to be safe - a longer - ;; passwd might have been typed and backspaced over.) - (interactive) - (widen) - (let ((s (* (buffer-size) 3))) - (erase-buffer) - (while (> s 0) - (insert ?\000) - (setq s (1- s))) - (erase-buffer))) - -(defun passwd-kill-buffer (buffer) - (save-excursion - (set-buffer buffer) - (buffer-disable-undo buffer) - (passwd-erase-buffer) - (set-buffer-modified-p nil)) - (kill-buffer buffer)) - - -(defun passwd-compare-string-to-buffer (string buffer) - ;; same as (equal string (buffer-string)) but with no dangerous consing. - (save-excursion - (set-buffer buffer) - (goto-char (point-min)) - (let ((L (length string)) - (i 0)) - (if (/= L (- (point-max) (point-min))) - nil - (while (not (eobp)) - (if (/= (following-char) (aref string i)) - (goto-char (point-max)) - (setq i (1+ i)) - (forward-char))) - (= (point) (+ i (point-min))))))) - - -(defvar passwd-face-data nil) -(defun passwd-secure-display () - ;; Inverts the screen - used to indicate secure input, like xterm. - (cond - ((and passwd-invert-frame-when-keyboard-grabbed - (fboundp 'set-face-foreground)) - (setq passwd-face-data - (delq nil (mapcar (function - (lambda (face) - (let ((fg (face-foreground face)) - (bg (face-background face))) - (if (or fg bg) - (if (fboundp 'color-name) - (list face - (color-name fg) - (color-name bg)) - (list face fg bg)) - nil)))) - (if (fboundp 'list-faces) - (list-faces) ; lemacs - (face-list) ; FSFmacs - )))) - (let ((rest passwd-face-data)) - (while rest - (set-face-foreground (nth 0 (car rest)) (nth 2 (car rest))) - (set-face-background (nth 0 (car rest)) (nth 1 (car rest))) - (setq rest (cdr rest)))))) - nil) - -(defun passwd-insecure-display () - ;; Undoes the effect of `passwd-secure-display'. - (cond - (passwd-invert-frame-when-keyboard-grabbed - (while passwd-face-data - (set-face-foreground (nth 0 (car passwd-face-data)) - (nth 1 (car passwd-face-data))) - (set-face-background (nth 0 (car passwd-face-data)) - (nth 2 (car passwd-face-data))) - (setq passwd-face-data (cdr passwd-face-data))) - nil))) - -(defun passwd-grab-keyboard () - (cond ((not (and (fboundp 'x-grab-keyboard) ; lemacs 19.10+ - (eq 'x (if (fboundp 'frame-type) - (frame-type (selected-frame)) - (live-screen-p (selected-screen)))))) - nil) - ((x-grab-keyboard) - t) - (t - (message "Unable to grab keyboard - waiting a second...") - (sleep-for 1) - (cond ((x-grab-keyboard) - (message "Keyboard grabbed on second try.") - t) - (t - (beep) - (message "WARNING: keyboard is insecure (unable to grab!)") - (sleep-for 3) - nil))))) - -(defun passwd-ungrab-keyboard () - (if (and (fboundp 'x-ungrab-keyboard) ; lemacs 19.10+ - (eq 'x (if (fboundp 'frame-type) - (frame-type (selected-frame)) - (live-screen-p (selected-screen))))) - (x-ungrab-keyboard))) - -;; v18 compatibility -(or (fboundp 'buffer-disable-undo) - (fset 'buffer-disable-undo 'buffer-flush-undo)) - -;; read-key-sequence echoes the key sequence in Emacs 18. -(defun passwd-read-key-sequence (prompt) - (let ((inhibit-quit t) - str) - (while (or (null str) (keymapp (key-binding str))) - (if (fboundp 'display-message) - (display-message 'prompt prompt) - (message prompt)) - (setq str (concat str (char-to-string (read-char))))) - (setq quit-flag nil) - str)) - -(or (string-match "^18" emacs-version) - (fset 'passwd-read-key-sequence 'read-key-sequence)) - -(provide 'passwd) - -;;; passwd.el ends here diff --git a/contrib/regexp-opt.el b/contrib/regexp-opt.el deleted file mode 100644 index 589f1b7..0000000 --- a/contrib/regexp-opt.el +++ /dev/null @@ -1,238 +0,0 @@ -;;; regexp-opt.el --- generate efficient regexps to match strings. - -;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - -;; Author: Simon Marshall -;; Keywords: strings, regexps - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; The "opt" in "regexp-opt" stands for "optim\\(al\\|i\\(se\\|ze\\)\\)". -;; -;; This package generates a regexp from a given list of strings (which matches -;; one of those strings) so that the regexp generated by: -;; -;; (regexp-opt strings) -;; -;; is equivalent to, but more efficient than, the regexp generated by: -;; -;; (mapconcat 'regexp-quote strings "\\|") -;; -;; For example: -;; -;; (let ((strings '("cond" "if" "when" "unless" "while" -;; "let" "let*" "progn" "prog1" "prog2" -;; "save-restriction" "save-excursion" "save-window-excursion" -;; "save-current-buffer" "save-match-data" -;; "catch" "throw" "unwind-protect" "condition-case"))) -;; (concat "(" (regexp-opt strings t) "\\>")) -;; => "(\\(c\\(atch\\|ond\\(ition-case\\)?\\)\\|if\\|let\\*?\\|prog[12n]\\|save-\\(current-buffer\\|excursion\\|match-data\\|restriction\\|window-excursion\\)\\|throw\\|un\\(less\\|wind-protect\\)\\|wh\\(en\\|ile\\)\\)\\>" -;; -;; Searching using the above example `regexp-opt' regexp takes approximately -;; two-thirds of the time taken using the equivalent `mapconcat' regexp. - -;; Since this package was written to produce efficient regexps, not regexps -;; efficiently, it is probably not a good idea to in-line too many calls in -;; your code, unless you use the following trick with `eval-when-compile': -;; -;; (defvar definition-regexp -;; (eval-when-compile -;; (concat "^(" -;; (regexp-opt '("defun" "defsubst" "defmacro" "defalias" -;; "defvar" "defconst") t) -;; "\\>"))) -;; -;; The `byte-compile' code will be as if you had defined the variable thus: -;; -;; (defvar definition-regexp -;; "^(\\(def\\(alias\\|const\\|macro\\|subst\\|un\\|var\\)\\)\\>") -;; -;; Note that if you use this trick for all instances of `regexp-opt' and -;; `regexp-opt-depth' in your code, regexp-opt.el would only have to be loaded -;; at compile time. But note also that using this trick means that should -;; regexp-opt.el be changed, perhaps to fix a bug or to add a feature to -;; improve the efficiency of `regexp-opt' regexps, you would have to recompile -;; your code for such changes to have effect in your code. - -;; Originally written for font-lock.el, from an idea from Stig's hl319.el, with -;; thanks for ideas also to Michael Ernst, Bob Glickstein and Dan Nicolaescu. -;; Please don't tell me that it doesn't produce optimal regexps; I know that -;; already. For example, the above explanation for the meaning of "opt" would -;; be more efficient as "optim\\(al\\|i[sz]e\\)", but this requires complex -;; forward looking. But (ideas or) code to improve things (are) is welcome. - -;;; Code: - -;;;###autoload -(defun regexp-opt (strings &optional paren) - "Return a regexp to match a string in STRINGS. -Each string should be unique in STRINGS and should not contain any regexps, -quoted or not. If optional PAREN is non-nil, ensure that the returned regexp -is enclosed by at least one regexp grouping construct. -The returned regexp is typically more efficient than the equivalent regexp: - - (let ((open-paren (if PAREN \"\\\\(\" \"\")) (close-paren (if PAREN \"\\\\)\" \"\"))) - (concat open-paren (mapconcat 'regexp-quote STRINGS \"\\\\|\") close-paren)) - -but typically contains more regexp grouping constructs. -Use `regexp-opt-depth' to count them." - (save-match-data - ;; Recurse on the sorted list. - (let ((max-lisp-eval-depth (* 1024 1024)) - (completion-ignore-case nil)) - (regexp-opt-group (sort (copy-sequence strings) 'string-lessp) paren)))) - -;;;###autoload -(defun regexp-opt-depth (regexp) - "Return the depth of REGEXP. -This means the number of regexp grouping constructs (parenthesised expressions) -in REGEXP." - (save-match-data - ;; Hack to signal an error if REGEXP does not have balanced parentheses. - (string-match regexp "") - ;; Count the number of open parentheses in REGEXP. - (let ((count 0) start) - (while (string-match "\\\\(" regexp start) - (setq count (1+ count) start (match-end 0))) - count))) - -;;; Workhorse functions. - -(eval-when-compile - (require 'cl)) - -(unless (fboundp 'make-bool-vector) - (defalias 'make-bool-vector 'make-vector)) - -(defun regexp-opt-group (strings &optional paren lax) - ;; - ;; Return a regexp to match a string in STRINGS. - ;; If PAREN non-nil, output regexp parentheses around returned regexp. - ;; If LAX non-nil, don't output parentheses if it doesn't require them. - ;; Merges keywords to avoid backtracking in Emacs' regexp matcher. - ;; - ;; The basic idea is to find the shortest common prefix, remove it and - ;; recurse. If there is no prefix, we divide the list into two so that (at - ;; least) one half will have at least a one-character common prefix. - ;; - ;; Also we delay the addition of grouping parenthesis as long as possible - ;; until we're sure we need them, and try to remove one-character sequences - ;; so we can use character sets rather than grouping parenthesis. - ;; - (let* ((open-group (if paren "\\(" "")) - (close-group (if paren "\\)" "")) - (open-charset (if lax "" open-group)) - (close-charset (if lax "" close-group))) - (cond - ;; - ;; If there is only one string, just return it. - ((= (length strings) 1) - (if (= (length (car strings)) 1) - (concat open-charset (regexp-quote (car strings)) close-charset) - (concat open-group (regexp-quote (car strings)) close-group))) - ;; - ;; If there is an empty string, remove it and recurse on the rest. - ((= (length (car strings)) 0) - (concat open-charset - (regexp-opt-group (cdr strings) t t) "?" - close-charset)) - ;; - ;; If all are one-character strings, just return a character set. - ((= (length strings) (apply '+ (mapcar 'length strings))) - (concat open-charset - (regexp-opt-charset strings) - close-charset)) - ;; - ;; We have a list of different length strings. - (t - (let ((prefix (try-completion "" (mapcar 'list strings))) - (letters (let ((completion-regexp-list '("^.$"))) - (all-completions "" (mapcar 'list strings))))) - (cond - ;; - ;; If there is a common prefix, remove it and recurse on the suffixes. - ((> (length prefix) 0) - (let* ((length (length prefix)) - (suffixes (mapcar (lambda (s) (substring s length)) strings))) - (concat open-group - (regexp-quote prefix) (regexp-opt-group suffixes t t) - close-group))) - ;; - ;; If there are several one-character strings, remove them and recurse - ;; on the rest (first so the final regexp finds the longest match). - ((> (length letters) 1) - (let ((rest (let ((completion-regexp-list '("^..+$"))) - (all-completions "" (mapcar 'list strings))))) - (concat open-group - (regexp-opt-group rest) "\\|" (regexp-opt-charset letters) - close-group))) - ;; - ;; Otherwise, divide the list into those that start with a particular - ;; letter and those that do not, and recurse on them. - (t - (let* ((char (substring (car strings) 0 1)) - (half1 (all-completions char (mapcar 'list strings))) - (half2 (nthcdr (length half1) strings))) - (concat open-group - (regexp-opt-group half1) "\\|" (regexp-opt-group half2) - close-group))))))))) - -(defun regexp-opt-charset (chars) - ;; - ;; Return a regexp to match a character in CHARS. - ;; - ;; The basic idea is to find character ranges. Also we take care in the - ;; position of character set meta characters in the character set regexp. - ;; - (let* ((charwidth 256) ; Yeah, right. - (charmap (make-bool-vector charwidth nil)) - (charset "") - (bracket "") (dash "") (caret "")) - ;; - ;; Make a character map but extract character set meta characters. - (dolist (char (mapcar 'string-to-char chars)) - (case char - (?\] - (setq bracket "]")) - (?^ - (setq caret "^")) - (?- - (setq dash "-")) - (otherwise - (aset charmap char t)))) - ;; - ;; Make a character set from the map using ranges where applicable. - (dotimes (char charwidth) - (let ((start char)) - (while (and (< char charwidth) (aref charmap char)) - (incf char)) - (cond ((> char (+ start 3)) - (setq charset (format "%s%c-%c" charset start (1- char)))) - ((> char start) - (setq charset (format "%s%c" charset (setq char start))))))) - ;; - ;; Make sure a caret is not first and a dash is first or last. - (if (and (string-equal charset "") (string-equal bracket "")) - (concat "[" dash caret "]") - (concat "[" bracket charset caret dash "]")))) - -(provide 'regexp-opt) - -;;; regexp-opt.el ends here diff --git a/contrib/ssl.el b/contrib/ssl.el index 661e43b..bc5e971 100644 --- a/contrib/ssl.el +++ b/contrib/ssl.el @@ -1,7 +1,7 @@ ;;; ssl.el,v --- ssl functions for emacsen without them builtin ;; Author: $Author: yamaoka $ -;; Created: $Date: 2004-01-05 00:54:29 $ -;; Version: $Revision: 1.1.6.1.6.1 $ +;; Created: $Date: 2004-05-02 00:24:54 $ +;; Version: $Revision: 1.1.6.1.6.2 $ ;; Keywords: comm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/contrib/starttls.el b/contrib/starttls.el index 95db27f..e34a671 100644 --- a/contrib/starttls.el +++ b/contrib/starttls.el @@ -1,6 +1,6 @@ ;;; starttls.el --- STARTTLS support via wrapper around GNU TLS -;; Copyright (C) 2003 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: comm, tls, gnutls, ssl @@ -123,7 +123,7 @@ The default is what GNUTLS's \"gnutls-cli\" outputs." :type 'regexp :group 'starttls) -(defcustom starttls-failure "*** Handshake has failed" +(defcustom starttls-failure "\\*\\*\\* Handshake has failed" "*Regular expression indicating failed TLS handshake. The default is what GNUTLS's \"gnutls-cli\" outputs." ;; GNUTLS cli.c:do_handshake() print this string on failure. If the diff --git a/contrib/timer.el b/contrib/timer.el deleted file mode 100644 index 70d9940..0000000 --- a/contrib/timer.el +++ /dev/null @@ -1,308 +0,0 @@ -;;; timer.el --- run a function with args at some time in future. - -;; Copyright (C) 1996 Free Software Foundation, Inc. - -;; Maintainer: FSF - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This package gives you the capability to run Emacs Lisp commands at -;; specified times in the future, either as one-shots or periodically. - -;;; Code: - -(require 'itimer) - -(fset 'timer-create 'make-itimer) - -(fset 'timerp 'itimerp) - -;(defvar timer-idle-list nil -; "List of active idle-time timers in order of increasing time") -(defvaralias 'timer-idle-list 'itimer-list) -(defvaralias 'timer-list 'itimer-list) - - -(defun timer-set-time (timer time &optional delta) - "Set the trigger time of TIMER to TIME. -TIME must be in the internal format returned by, e.g., `current-time'. -If optional third argument DELTA is a non-zero integer, make the timer -fire repeatedly that many seconds apart." - (set-itimer-value timer (itimer-time-difference time (current-time))) - (and delta (check-nonnegative-number delta)) - (and delta (set-itimer-restart timer delta)) - timer) - -(defun timer-set-idle-time (timer secs &optional repeat) - "Set the trigger idle time of TIMER to SECS. -If optional third argument REPEAT is non-nil, make the timer -fire each time Emacs is idle for that many seconds." - (set-itimer-is-idle timer t) - (set-itimer-value timer secs) - (when repeat - (set-itimer-restart timer secs)) - timer) - -(defun timer-relative-time (time secs &optional usecs) - "Advance TIME by SECS seconds and optionally USECS microseconds. -SECS may be a fraction." - (let ((high (car time)) - (low (if (consp (cdr time)) (nth 1 time) (cdr time))) - (micro (if (numberp (car-safe (cdr-safe (cdr time)))) - (nth 2 time) - 0))) - ;; Add - (if usecs (setq micro (+ micro usecs))) - (if (floatp secs) - (setq micro (+ micro (floor (* 1000000 (- secs (floor secs))))))) - (setq low (+ low (floor secs))) - - ;; Normalize - (setq low (+ low (/ micro 1000000))) - (setq micro (mod micro 1000000)) - (setq high (+ high (/ low 65536))) - (setq low (logand low 65535)) - - (list high low (and (/= micro 0) micro)))) - -(defun timer-inc-time (timer secs &optional usecs) - "Increment the time set in TIMER by SECS seconds and USECS microseconds. -SECS may be a fraction." - (let ((time (itimer-value timer))) - (setq time (+ time secs (if (and usecs (fboundp 'lisp-float-type)) - (/ usecs (float 1000000)) - 0))) - (set-itimer-value timer time))) - -(defun timer-set-time-with-usecs (timer time usecs &optional delta) - "Set the trigger time of TIMER to TIME. -TIME must be in the internal format returned by, e.g., `current-time'. -If optional third argument DELTA is a non-zero integer, make the timer -fire repeatedly that many seconds apart." - (let ((list (list nil nil nil))) - (setcar list (car time)) - (setcar (nthcdr 1 list) (if (consp (cdr time)) - (car (cdr time)) - (cdr time))) - (setcar (nthcdr 2 list) usecs) - (set-itimer-value timer (itimer-time-difference list (current-time))) - (set-itimer-restart timer delta) - timer)) - -(defun timer-set-function (timer function &optional args) - "Make TIMER call FUNCTION with optional ARGS when triggering." - (set-itimer-function timer function) - (set-itimer-function-arguments timer args) - (set-itimer-uses-arguments timer t) - timer) - -(defun timer-activate (timer) - "Put TIMER on the list of active timers." - (activate-itimer timer)) - -(defun timer-activate-when-idle (timer) - "Arrange to activate TIMER whenever Emacs is next idle." - (set-itimer-is-idle timer t) - ;(set-itimer-uses-arguments timer nil) - ;(unless (memq timer timer-idle-list) - ;(setq timer-idle-list (cons timer timer-idle-list))) - (activate-itimer timer)) - -;; can't do this, different kind of timer -;;(defalias 'disable-timeout 'cancel-timer) - -(defun cancel-timer (timer) - "Remove TIMER from the list of active timers." - ;(setq timer-idle-list (delq timer timer-idle-list)) - (delete-itimer timer)) - -(defun cancel-function-timers (function) - "Cancel all timers scheduled by `run-at-time' which would run FUNCTION." - (interactive "aCancel timers of function: ") - (let ((p itimer-list)) - (while p - (if (eq function (itimer-function p)) - (progn - (setq p (cdr p)) - (delete-itimer (car p))) - (setq p (cdr p)))))) - -;;;###autoload -(defun run-at-time (time repeat function &rest args) - "Perform an action after a delay of SECS seconds. -Repeat the action every REPEAT seconds, if REPEAT is non-nil. -TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds -from now, or a value from `encode-time'. -REPEAT may be an integer or floating point number. -The action is to call FUNCTION with arguments ARGS. - -This function returns a timer object which you can use in `cancel-timer'." - (interactive "sRun at time: \nNRepeat interval: \naFunction: ") - - ;; Special case: nil means "now" and is useful when repeating. - (if (null time) - (setq time (current-time))) - - ;; Handle numbers as relative times in seconds. - (if (numberp time) - (setq time (timer-relative-time (current-time) time))) - - ;; Handle relative times like "2 hours and 35 minutes" - (if (stringp time) - (let ((secs (timer-duration time))) - (if secs - (setq time (timer-relative-time (current-time) secs))))) - - ;; Handle "11:23pm" and the like. Interpret it as meaning today - ;; which admittedly is rather stupid if we have passed that time - ;; already. (Though only Emacs hackers hack Emacs at that time.) - (if (stringp time) - (progn - (require 'diary-lib) - (let ((hhmm (diary-entry-time time)) - (now (decode-time))) - (if (>= hhmm 0) - (setq time - (encode-time 0 (% hhmm 100) (/ hhmm 100) (nth 3 now) - (nth 4 now) (nth 5 now) (nth 8 now))))))) - - (or (consp time) - (error "Invalid time format")) - - (or (null repeat) - (numberp repeat) - (error "Invalid repetition interval")) - - (let ((timer (timer-create))) - (timer-set-time timer time repeat) - (timer-set-function timer function args) - (timer-activate timer) - timer)) - -;;;###autoload -(defun run-with-timer (secs repeat function &rest args) - "Perform an action after a delay of SECS seconds. -Repeat the action every REPEAT seconds, if REPEAT is non-nil. -SECS and REPEAT may be integers or floating point numbers. -The action is to call FUNCTION with arguments ARGS. - -This function returns a timer object which you can use in `cancel-timer'." - (interactive "sRun after delay (seconds): \nNRepeat interval: \naFunction: ") - (apply 'run-at-time secs repeat function args)) - -;;;###autoload -(defun run-with-idle-timer (secs repeat function &rest args) - "Perform an action the next time Emacs is idle for SECS seconds. -If REPEAT is non-nil, do this each time Emacs is idle for SECS seconds. -SECS may be an integer or a floating point number. -The action is to call FUNCTION with arguments ARGS. - -This function returns a timer object which you can use in `cancel-timer'." - (interactive - (list (read-from-minibuffer "Run after idle (seconds): " nil nil t) - (y-or-n-p "Repeat each time Emacs is idle? ") - (intern (completing-read "Function: " obarray 'fboundp t)))) - (let ((timer (timer-create))) - (timer-set-function timer function args) - (timer-set-idle-time timer secs repeat) - (timer-activate-when-idle timer) - timer)) - -(defun with-timeout-handler (tag) - (throw tag 'timeout)) - -;;;###autoload (put 'with-timeout 'lisp-indent-function 1) - -;;;###autoload -(defmacro with-timeout (list &rest body) - "Run BODY, but if it doesn't finish in SECONDS seconds, give up. -If we give up, we run the TIMEOUT-FORMS and return the value of the last one. -The call should look like: - (with-timeout (SECONDS TIMEOUT-FORMS...) BODY...) -The timeout is checked whenever Emacs waits for some kind of external -event \(such as keyboard input, input from subprocesses, or a certain time); -if the program loops without waiting in any way, the timeout will not -be detected." - (let ((seconds (car list)) - (timeout-forms (cdr list))) - `(let ((with-timeout-tag (cons nil nil)) - with-timeout-value with-timeout-timer) - (if (catch with-timeout-tag - (progn - (setq with-timeout-timer - (run-with-timer ,seconds nil - 'with-timeout-handler - with-timeout-tag)) - (setq with-timeout-value (progn . ,body)) - nil)) - (progn . ,timeout-forms) - (cancel-timer with-timeout-timer) - with-timeout-value)))) - -(defun y-or-n-p-with-timeout (prompt seconds default-value) - "Like (y-or-n-p PROMPT), with a timeout. -If the user does not answer after SECONDS seconds, return DEFAULT-VALUE." - (with-timeout (seconds default-value) - (y-or-n-p prompt))) - -(defvar timer-duration-words - (list (cons "microsec" 0.000001) - (cons "microsecond" 0.000001) - (cons "millisec" 0.001) - (cons "millisecond" 0.001) - (cons "sec" 1) - (cons "second" 1) - (cons "min" 60) - (cons "minute" 60) - (cons "hour" (* 60 60)) - (cons "day" (* 24 60 60)) - (cons "week" (* 7 24 60 60)) - (cons "fortnight" (* 14 24 60 60)) - (cons "month" (* 30 24 60 60)) ; Approximation - (cons "year" (* 365.25 24 60 60)) ; Approximation - ) - "Alist mapping temporal words to durations in seconds") - -(defun timer-duration (string) - "Return number of seconds specified by STRING, or nil if parsing fails." - (let ((secs 0) - (start 0) - (case-fold-search t)) - (while (string-match - "[ \t]*\\([0-9.]+\\)?[ \t]*\\([a-z]+[a-rt-z]\\)s?[ \t]*" - string start) - (let ((count (if (match-beginning 1) - (string-to-number (match-string 1 string)) - 1)) - (itemsize (cdr (assoc (match-string 2 string) - timer-duration-words)))) - (if itemsize - (setq start (match-end 0) - secs (+ secs (* count itemsize))) - (setq secs nil - start (length string))))) - (if (= start (length string)) - secs - (if (string-match "\\`[0-9.]+\\'" string) - (string-to-number string))))) - -(provide 'timer) - -;;; timer.el ends here diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index 62d0d01..4e0a483 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -223,7 +223,7 @@ want this is beyond me, but here goes: Create the group by saying -`G V my.virtual.newsgroupnnvirtual^rec\.aquaria\.*' +`G m my.virtual.newsgroupnnvirtual^rec\.aquaria\.*' This will create the group "nnvirtual:my.virtual.newsgroup", which will collect all articles from all the groups in the "rec.aquaria" diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 995a68d..e9fd32b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,18940 +1,1927 @@ -2004-01-04 Lars Magne Ingebrigtsen +2004-05-01 Lars Magne Ingebrigtsen - * gnus.el: No Gnus v0.1 is released. + * gnus.el: No Gnus v0.2 is released. -2004-01-04 Lars Magne Ingebrigtsen +2004-05-01 Lars Magne Ingebrigtsen - * gnus.el: No Gnus v0.1 is released. + * gnus-agent.el (gnus-agent-read-agentview): Inline + gnus-uncompress-range. -2004-01-04 Lars Magne Ingebrigtsen +2004-05-01 TSUCHIYA Masatoshi - * gnus.el: No Gnus v0.0 is released. + * spam.el (spam-bsfilter-path): Use `executable-find' instead of + `exec-installed-p'. -2004-01-04 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - (gnus-version): No. - -2004-01-04 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.10.6 is released. - -2004-01-04 Kai Grossjohann - - * gnus-sum.el (gnus-summary-print-article): Doc fix. - -2004-01-04 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2004-01-04 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.10.5 is released. - -2004-01-03 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-face-from-file): Message 9. - -2004-01-03 Romain FRANCOISE - - * gnus-fun.el (gnus-face-from-file): Use gnus-message. - -2004-01-03 Reiner Steib - - * gnus-art.el (gnus-button-mid-or-mail-heuristic): Treat Gmane - addresses specially. Fix returned value and messages. - - * mm-decode.el (mm-enable-external): New variable. - (mm-display-part): Use it. - (mm-display-external): Fix message in case of nil handle. - - * Update copyright for several files. - - * spam-report.el (spam-report-gmane): Adjust verbosity. - Delete trailing whitespace. Update copyright. - - * spam.el: Fix many (but not all) checkdoc complaints. - Delete trailing whitespace. - - * message.el (message-header-synonyms): Defcustom. - (message-get-reply-headers): Catch `Original-To'. - (message-carefully-insert-headers): Added comment. - - * gnus-sum.el (gnus-summary-make-menu-bar): Improved "Washing" menu. - -2004-01-03 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-select-newsgroup): Use cat. - - * gnus-agent.el (gnus-agent-cat-enable-undownloaded-faces): New - cat. - - * gnus.el (gnus-user-agent): Moved here. - - * gnus-msg.el (gnus-user-agent): Moved from here. - - * gnus.el (gnus-version-number): Bump. - -2004-01-03 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.10.4 is released. - -2004-01-02 Reiner Steib +2004-04-30 TSUCHIYA Masatoshi - * gnus.el (gnus-mode-line-buffer-identification): Show version in - help-echo. - (gnus-read-group): Allow most group names. Changed warning. + * gnus.el (spam-process, spam-autodetect-methods): Add + bsfilter and bsfilter-headers. -2004-01-02 Lars Magne Ingebrigtsen + * spam.el (spam-bsfilter): New customize group. + (spam-use-bsfilter, spam-use-bsfilter-headers, spam-bsfilter-path) + (spam-bsfilter-header, spam-bsfilter-probability-header) + (spam-bsfilter-spam-switch, spam-bsfilter-ham-switch) + (spam-bsfilter-spam-strong-switch, spam-bsfilter-ham-strong-switch) + (spam-bsfilter-database-directory): New options. + (spam-install-hooks, spam-list-of-processors, spam-list-of-checks) + (spam-list-of-statistical-checks, spam-registration-functions): + Add `spam-use-bsfilter' and `spam-use-bsfilter-headers'. + (spam-bsfilter-score): New command. + (spam-check-bsfilter-headers, spam-check-bsfilter) + (spam-bsfilter-register-with-bsfilter) + (spam-bsfilter-register-spam-routine) + (spam-bsfilter-unregister-spam-routine) + (spam-bsfilter-register-ham-routine) + (spam-bsfilter-unregister-ham-routine): New functions. + (spam-generic-score): Supprt bsfilter; Accept an optional argument + to recalcurate spam score even if scoring header has already been + added. + (spam-bogofilter-score, spam-spamassassin-score): Accept an + optional argument to recalcurate spam score even if scoring header + has already been added. - * gnus-dired.el (gnus-dired-mode-map): Change keymaps. +2004-04-29 Jesper Harder -2004-01-02 Arne J,Ax(Brgensen + * nnrss.el (nnrss-get-namespace-prefix): Use string= to compare + strings! Reported by David D. Smith . + (nnrss-check-group, nnrss-read-group-data): Hash on Subject if + link is missing. - * smime.el (smime-crl-check): Doc fix. +2004-04-28 Jesper Harder -2004-01-02 Edwin Steiner + * html2text.el (html2text-replace-list): Add & and '. + (html2text-get-attr): Rewrite. - * gnus-nocem.el (gnus-nocem-enter-article): Use the real group - hashtb (tiny patch). + * message.el (message-setup-1): Remove redundant put-text-property + on mail-header-separator. -2004-01-02 Kai Grossjohann +2004-04-27 Teodor Zlatanov - * nnml.el (nnml-save-mail): Grok compressed articles. From - Michael Albinus . + * gnus-registry.el (gnus-registry-cache-whitespace) + (gnus-registry-action, gnus-registry-spool-action) + (gnus-registry-split-fancy-with-parent): changed message levels + from 5 to 3 or 7, as needed -2004-01-02 Teodor Zlatanov + * spam.el (spam-summary-prepare-exit) + (spam-mark-junk-as-spam-routine, spam-fetch-field-fast) + (spam-split, spam-find-spam, spam-log-undo-registration) + (spam-check-blackholes, spam-enter-ham-BBDB): changed message + level from 5 to 6 - * spam.el (spam-ham-copy-or-move-routine): use spam-list-articles - (spam-list-articles): rewritten to only check a mark once per - invocation +2004-04-26 Katsumi Yamaoka -2004-01-01 Simon Josefsson + * gnus-ems.el: Autoload appt-select-lowest-window (revert + 2004-03-04 change). - * mml-sec.el (mml-default-encrypt-method) - (mml-default-sign-method): Defcustom. +2004-04-25 Jesper Harder -2003-12-31 Lars Magne Ingebrigtsen + * spam-stat.el (spam-stat-score-buffer): Simplify mapcar usage. + Use mapc when appropriate. - * mml.el (mml-generate-mime-1): Remove extra ). + * sieve-manage.el (sieve-manage-open): do. - * gnus-group.el (gnus-group-set-current-level): Signal errors on - topic lines. - (gnus-group-set-current-level): Fix fix. + * nnweb.el (nnweb-insert-html): do. -2003-12-31 Jeremy Maitin-Shepard + * nnvirtual.el (nnvirtual-catchup-group, nnvirtual-partition-sequence) + (nnvirtual-partition-sequence, nnvirtual-create-mapping): do. - * mml.el (mml-generate-mime-1): Use mml-compute-boundary (tiny - change). + * nnspool.el (nnspool-request-group): do. -2003-12-30 Reiner Steib + * nnrss.el (nnrss-opml-export, nnrss-find-el, nnrss-order-hrefs): + do. - * gnus-group.el: Removed `(when t ...)' around `gnus-define-keys'. - (gnus-group-group-map): Added `gnus-group-read-ephemeral-group' - (already in previous commit inadvertently). - (gnus-group-make-menu-bar): Added `gnus-group-read-ephemeral-group'. - (gnus-group-read-ephemeral-group): Made interactive. + * nnml.el (nnml-request-update-info): do. - * gnus-score.el (gnus-score-find-trace): Added comment on sync - with `gnus-score-edit-file-at-point'. + * nnmh.el (nnmh-request-group, nnmh-request-list-1, nnmh-active-number) + (nnmh-request-create-group, nnmh-update-gnus-unreads): do. - * gnus-logic.el (gnus-score-advanced): Ditto. + * nnimap.el (nnimap-request-close, nnimap-acl-edit) + (nnimap-request-set-mark): do. - * gnus-score.el (gnus-score-edit-file-at-point): Fix for - advanced scoring. + * nnfolder.el (nnfolder-request-update-info): do. -2003-12-30 Simon Josefsson + * mm-view.el (mm-pkcs7-signed-magic, mm-pkcs7-enveloped-magic): + do. - * gnus-score.el (gnus-score-edit-file-at-point): Use - gnus-point-at-*, for portability. + * mml.el (mml-destroy-buffers, mml-compute-boundary-1): do. -2003-12-30 Reiner Steib + * gnus-uu.el (gnus-uu-find-articles-matching): do. - * gnus-art.el (gnus-treat-body-boundary): Fix doc-string and - custom type. - (gnus-button-mid-or-mail-regexp): Don't be too restrictive. - Suggested by Felix Wiemann . - (gnus-button-alist): Added "M-x ... RET" and "mid:" buttons. - Added comments about relevant RFCs. + * gnus-topic.el (gnus-topic-check-topology, gnus-topic-remove-group): + do. - * gnus-sum.el (gnus-summary-mode): Untabify doc-string. - (gnus-summary-goto-article): Allow `%40'. - (gnus-summary-refer-article): Convert `%40' to `@'. + * gnus-sum.el (gnus-summary-fetch-faq, gnus-read-move-group-name): + do. -2003-12-30 Simon Josefsson + * gnus-score.el (gnus-score-load-file, gnus-sort-score-files): do. - * smime.el (smime-crl-check): New. - (smime-verify-region): Use it. From Arne J,Ax(Brgensen - in <87llpk9v5q.fsf@seamus.arnested.dk> (tiny - change). + * gnus-nocem.el (gnus-nocem-scan-groups): do. -2003-12-30 Reiner Steib + * gnus-int.el (gnus-start-news-server): do. - * gnus-score.el (gnus-score-edit-file-at-point): Consider the - whole match element. From Karl Pfl,Ad(Bsterer . - (gnus-score-find-trace): Use it. Added `f' and `t' commands, - added quick help. With some suggestions from Karl Pfl,Ad(Bsterer - . + * gnus-group.el (gnus-group-make-kiboze-group) + (gnus-group-browse-foreign-server): do. - * gnus-util.el (gnus-emacs-version): Added doc-string. +2004-04-22 Teodor Zlatanov - * mml.el (mml-minibuffer-read-disposition): New function. - (mml-attach-file): Use it. - (mml-preview): Added MIME preview to gnus-buffers. + * spam.el (spam-necessary-extra-headers): get the extra headers we + may need for spam sorting and scoring + (spam-user-format-function-S): a user format function suitable for + general use + (spam-article-sort-by-spam-status): sorting function for summary + sorting + (spam-extra-header-to-number): get a score from a header + (spam-summary-score): get a numeric score from the headers + (spam-generic-score): oops, function doc in wrong place + (spam-initialize): take symbols when it's run, and install the + extra headers that spam-necessary-extra-headers thinks we need -2003-12-30 Jesper Harder +2004-04-21 Teodor Zlatanov - * gnus-sum.el (gnus-summary-make-menu-bar): Add ellipses. + * spam.el (spam-summary-prepare-exit): logic and message fix. + Reported by bojohan+news@dd.chalmers.se (Johan Bockg,Ae(Brd). -2003-12-30 Lars Magne Ingebrigtsen +2004-04-17 Jesper Harder - * gnus-start.el (gnus-get-unread-articles): Inline gnus-server-get-method. - (gnus-get-unread-articles): Cache methods. - (gnus-get-unread-articles-in-group): Indent. + * gnus-sum.el (gnus-set-global-variables) + (gnus-build-all-threads, gnus-get-newsgroup-headers) + (gnus-article-get-xrefs, gnus-summary-best-group) + (gnus-summary-next-article, gnus-summary-enter-digest-group) + (gnus-summary-set-bookmark, gnus-offer-save-summaries) + (gnus-summary-update-info, gnus-kill-or-deaden-summary): Use + with-current-buffer. - * gnus.el (gnus-version-number): Bump. - (gnus-secondary-method-p): Extend servers to methods before comparing. - (gnus-secondary-method-p): Revert. +2004-04-16 Teodor Zlatanov -2003-12-30 Lars Magne Ingebrigtsen + * spam.el (spam-summary-prepare-exit): simplified logic + (spam-fetch-article-header): read the article header if it's not + available + (spam-list-articles): simplified logic + (spam-filelist-register-routine): found bug with unregister-list - * gnus.el: Gnus v5.10.3 is released. + * gnus-registry.el: clarified comments at beginning -2003-12-29 Simon Josefsson +2004-04-16 Jesper Harder - * gnus-agent.el (gnus-agentize): Improve auto-agentizing logic. - Suggested by Steinar Bang . - (gnus-agent-auto-agentize-methods): Customize. + * message.el (message-cater-to-broken-inn): Remove. + (message-shorten-references): Make sure the total folded length of + References is shorter than 998 characters to cater to a bug in INN + 2.3. Also, don't pretend that references aren't folded -- this + hasn't worked for a while. -2003-12-29 Kevin Greiner - * gnus.el (gnus-server-to-method): Fixed bug in 2003-12-22 - check-in. +2004-04-15 Kevin Greiner + + * gnus-agent.el (gnus-agentize): + gnus-agent-send-mail-real-function no longer set to current value + of message-send-mail-function but rather a lambda that calls + message-send-mail-function. The change makes the agent real-time + responsive to user changes to message-send-mail-function. -2003-12-28 Adrian Lanz +2004-04-15 Kevin Greiner + + * legacy-gnus-agent.el + (gnus-agent-convert-to-compressed-agentview): Fixed typos with + help from Florian Weimer - * mail-source.el (mail-source-fetch-imap): Prevent storing of - identical entries for imap mail sources, when retrieving mail - messages from an imap server within the same Gnus session several - times (tiny change). +2004-04-15 Katsumi Yamaoka -2003-12-28 Jesper Harder + * nnmail.el (nnmail-cache-insert): Revert last change. - * mm-view.el (mm-text-html-washer-alist): Use - mm-inline-wash-with-stdin for w3m-standalone. +2004-04-14 Katsumi Yamaoka - * mm-decode.el (mm-text-html-renderer): Add w3m-standalone. + * nnmail.el (nnmail-cache-insert): Always check whether + nnmail-cache-ignore-groups matches a group name. - * mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before - encrypting. +2004-04-13 Teodor Zlatanov -2003-12-28 Jesper Harder + * spam.el (spam-fetch-field-fast, spam-generate-fake-headers) + (spam-find-spam, spam-log-processing-to-registry) + (spam-log-registered-p, spam-log-unregistration-needed-p) + (spam-log-undo-registration): use gnus-message instead of + gnus-error, none of these errors are fatal - * mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding. - From Ivan Boldyrev (tiny change). + * gnus-registry.el (gnus-registry-clean-empty-function) + (gnus-registry-clean-empty): remove only empty entries without + extra data -2003-12-26 Katsumi Yamaoka +2004-04-12 Teodor Zlatanov - * dgnushack.el: Add an advice to byte-optimize-form-code-walker to - avoid the warning ``...called for effect'' for the pop form when - running Emacs 21.3. + * spam-stat.el (spam-stat-buffer-change-to-spam) + (spam-stat-buffer-change-to-non-spam): change (error) to + (gnus-message 8) invocation -2003-12-26 Jesper Harder +2004-04-12 Katsumi Yamaoka - * mm-bodies.el (mm-body-encoding): Don't use 7bit if the body - contains "^From " and mm-use-ultra-safe-encoding is true. - -2003-12-25 Jesper Harder - - * mml1991.el (mml1991-pgg-sign): Encode and decode according to - CTE header. Don't insert gpg output as unibyte. - -2003-12-25 Katsumi Yamaoka - - * lpath.el: Remove display-time-event-handler and open-ssl-stream; - add delete-extent for Emacs; rearrange bindings assuming w3 may - not be available and XEmacs without the file-coding feature may be + * nntp.el (nntp-via-netcat-command): New variable. + (nntp-via-netcat-switches): New variable. + (nntp-open-via-rlogin-and-netcat): New function. + (nntp-open-connection-function): Doc fix. + (nntp-telnet-command): Doc fix. + (nntp-end-of-line): Doc fix. + (nntp-via-rlogin-command): Doc fix. + (nntp-via-user-name): Doc fix. + (nntp-via-address): Doc fix. + +2004-04-09 Katsumi Yamaoka + + * mml2015.el (mml2015-use): Avoid the "Recursive load suspected" + error in Emacs 21.1. + +2004-04-08 Reiner Steib + + * gnus-start.el (gnus-get-unread-articles): Fix last commit. + +2004-04-07 Kevin Greiner + * gnus-agent.el (gnus-agent-total-fetched-hashtb): New variable. + (gnus-agent-with-refreshed-group): New macro. + (gnus-agent-rename-group): New function. + (gnus-agent-delete-group): New function. + (gnus-agent-save-group-info): Use gnus-command-method when + `method' parameter is nil. Don't write nil entries into the + active file. + (gnus-agent-get-group-info): New function. + (gnus-agent-fetch-articles): Use + gnus-agent-update-files-total-fetched-for to increment disk space used. + (gnus-agent-fetch-headers, gnus-agent-save-alist): Use + gnus-agent-update-view-total-fetched-for to increment disk space + used. + (gnus-agent-get-local): Added optional parameters to avoid calling + gnus-group-real-name and gnus-find-method-for-group. + (gnus-agent-set-local): Delete stored entry if either min, or max, + are nil. + (gnus-agent-fetch-session): Reworded error/quit messages. On + quit, use gnus-agent-regenerate-group to record existance of any + articles fetched to disk before the quit occurred. + (gnus-agent-expire-group-1): Use gnus-agent-with-refreshed-group, + gnus-agent-update-view-total-fetched-for, and + gnus-agent-update-files-total-fetched-for to decrement disk space + used. + (gnus-agent-retrieve-headers): Use + gnus-agent-update-view-total-fetched-for to increment disk space + used. + (gnus-agent-regenerate-group): Replace gnus-group-update-group + with gnus-agent-update-files-total-fetched-for to decrement disk + space and fresh group buffer. + (gnus-agent-inhibit-update-total-fetched-for): New variable. + (gnus-agent-need-update-total-fetched-for): New variable. + (gnus-agent-update-files-total-fetched-for): New function. + (gnus-agent-update-view-total-fetched-for): New function. + (gnus-agent-total-fetched-for): New function. + + * gnus-cache.el (gnus-cache-save-buffers): Use + gnus-cache-update-overview-total-fetched-for to change disk space + used by this group. + (gnus-cache-possibly-enter-article): Use + gnus-cache-update-file-total-fetched-for to increment disk space + used by this group. + (gnus-cache-possibly-remove-article): Use + gnus-cache-update-file-total-fetched-for to decrement disk space + used by this group. + (gnus-cache-generate-nov-databases): Purge total fetched cache. + (gnus-cache-rename-group): New function. + (gnus-cache-delete-group): New function. + (gnus-cache-inhibit-update-total-fetched-for): New variable. + (gnus-cache-need-update-total-fetched-for): New variable. + (gnus-cache-with-refreshed-group): New macro. + (gnus-cache-update-file-total-fetched-for): New function. + (gnus-cache-update-overview-total-fetched-for): New function. + (gnus-cache-rename-group-total-fetched-for): New function. + (gnus-cache-delete-group-total-fetched-for): New function. + (gnus-cache-total-fetched-for): New function. + + * gnus-group.el (): Require gnus-sum and autoload functions to + resolve warnings when gnus-group.el compiled alone. + (gnus-group-line-format): Documented new %F + (size of Fetched data) group line format; identifies disk space + used by agent and cache. + (gnus-group-line-format-alist): Defined new F format. + (gnus-total-fetched-for): New function. + (gnus-group-delete-group): No longer update + gnus-cache-active-altered as gnus-request-delete-group now keeps + the cache in sync. + (gnus-group-list-active): Let the agent store a server's active + list if currently plugged. + + * gnus-int.el (gnus-request-delete-group): Use + gnus-cache-delete-group and gnus-agent-delete-group to keep the + local disk in sync with the server. + (gnus-request-rename-group): Use + gnus-cache-rename-group and gnus-agent-rename-group to keep the + local disk in sync with the server. + + * gnus-start.el (gnus-get-unread-articles): Cosmetic + simplification to logic. + + * gnus-util.el (gnus-rename-file): New function. + +2004-04-07 Jesper Harder + + * rfc2047.el (rfc2047-encoded-word-regexp): Remove unnecessary + '+'. Reported by Stefan Wiens . + + * mm-util.el (mm-image-load-path): Handle nil in load-path. + From Christian Neukirchen . + +2004-04-06 Jesper Harder + + * gnus-cache.el (gnus-cache-save-buffers): Check if buffer is + alive. Reported by Laurent Martelli . + +2004-04-03 Jesper Harder + + * gnus.el (gnus-getenv-nntpserver): Strip whitespace. + +2004-04-02 Teodor Zlatanov + + * spam.el (spam-set-difference): new function to replace + gnus-set-difference in spam.el + (spam-summary-prepare-exit): use spam-set-difference + +2004-03-29 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-cache-file): updated to use + gnus-dribble-directory OR gnus-home-directory OR ~ + (gnus-registry-split-fancy-with-parent): fixed doc + +2004-03-27 Katsumi Yamaoka + + * message.el (message-exchange-point-and-mark): Use + message-mark-active-p. Suggested by Jesper Harder + . -2003-12-24 Katsumi Yamaoka - - * dgnushack.el (dgnushack-compile): Increase the value for - max-specpdl-size when compiling Gnus with Emacs 20. - -2003-12-22 Kevin Greiner - * gnus-int.el (gnus-open-server): Fixed the server status such - that an agentized server, when opened offline, has a status of - offline. Also fixes bug whereby the agent's backend was called - twice to open each server. - - * gnus-start.el (gnus-get-unread-articles-in-group): Autoload - gnus-agent-possibly-alter-active rather than inline to resolve - compiler warnings. - - * gnus.el (gnus-server-to-method): Added fallback of iterating - over gnus-newsrc-alist to resolve names of foreign servers. - Should fix recent agent bug. - -2003-12-22 Reiner Steib - - * gnus-score.el (gnus-summary-lower-score) - (gnus-summary-increase-score): Mention symbolic prefix in the - doc-string. Suggested by Karl Pfl,Ad(Bsterer . - -2003-12-21 Jesper Harder - - * gnus-agent.el (gnus-agent-read-agentview): Use - car-less-than-car. - -2003-12-20 Artem Chuprina (tiny change) - - * message.el (message-yank-buffer): Bind message-reply-buffer to - a buffer rather than a string. - -2003-12-19 Jesper Harder - - * gnus-msg.el (gnus-summary-followup): Correct documentation. - -2003-12-18 Jesper Harder - - * gnus-msg.el (gnus-inews-add-send-actions): `yanked' can be a - list of lists. Reported by Dmitri Paduchikh . - -2003-12-18 Reiner Steib - - * mm-url.el (mm-url-insert-file-contents-external) - (mm-url-insert-file-contents): Added doc-strings. Autoload. - -2003-12-18 Jesper Harder - - * gnus-cus.el (defvar): defvar - gnus-agent-cat-disable-undownloaded-faces. - -2003-12-17 Katsumi Yamaoka - - * message.el (message-forward-subject-name-subject): Use - gnus-extract-address-components instead of - mail-header-parse-address because it may be called with non-ascii - text. - -2003-12-16 Per Abrahamsen - - * nnmail.el (nnmail-split-fancy): The widget now supports - restrictions. - -2003-12-16 Katsumi Yamaoka +2004-03-26 Katsumi Yamaoka - * nnheader.el (nnheader-find-etc-directory): Find the newest one. + * message.el (message-exchange-point-and-mark): Don't activate + region if it was inactive. Suggested by Hiroshi Fujishima + . -2003-12-16 Simon Josefsson +2004-03-25 Katsumi Yamaoka - * sha1-el.el (autoload): Don't use ignore-errors. - (sha1-use-external): Use condition-case. Suggested by Katsumi - Yamaoka . + * gnus-art.el (article-display-face): Display Faces in the same + order as X-Faces. -2003-12-15 Katsumi Yamaoka +2004-03-24 Katsumi Yamaoka - * nnmail.el (nnmail-split-fancy): Make it customizable with Emacs - 20 as well. + * nndoc.el (nndoc-forward-type-p): Recognize envelope From_. -2003-12-15 Simon Josefsson +2004-03-23 Katsumi Yamaoka - * sha1-el.el (autoload): Ignore errors for - executable-find. (XEmacs ecrypto does not require sh-script where - executable.el is located.) - (sha1-use-external): Likewise. + * gnus-art.el (gnus-mime-recompute-hierarchical-structure): Remove. + (gnus-mime-multipart-functions): Revert 2004-03-19 change. + (gnus-article-mime-hierarchy): Remove. + (gnus-article-mime-hierarchy-next): Remove. + (gnus-article-mode): Revert 2004-03-19 change. + (gnus-article-setup-buffer): Revert 2004-03-19 change. + (gnus-insert-mime-button): Revert 2004-03-19 change. + (gnus-mime-accumulate-hierarchy): Remove. + (gnus-mime-enter-multipart): Remove. + (gnus-mime-leave-multipart): Remove, + (gnus-mime-display-part): Revert 2004-03-19 change. + (gnus-mime-display-alternative): Revert 2004-03-19 change. - * sha1-el.el (sha1): Add defgroup. - (sha1-maximum-internal-length, sha1-program, sha1-use-external) - (sha1-program): Use 'sha1sum' from GNU CoreUtils instead of OpenSSL. - (sha1): Autoload. + * mml.el (mml-preview): Revert 2004-03-19 change. - * nndraft.el (nndraft-request-move-article): Copy definition of - nnmh-request-move-article instead of calling it, because the nnmh - version uses nnmh-request-article which isn't the same as the - nndraft version. +2004-03-18 Helmut Waitzmann (tiny change) -2003-12-13 Teodor Zlatanov + * gnus-sum.el (gnus-newsgroup-variables): Doc fix. - * spam.el: added some gnus-registry autoloads - (spam-split-symbolic-return): makes spam-split return 'spam - instead of the value of spam-split-group when spam is detected - (spam-split-symbolic-return-positive): makes spam-split return - 'ham instead of nil when ham is detected - (spam-autodetect-recheck-messages): tells spam.el whether it - should recheck all messages in a group, or only the unseen ones - (spam-split-last-successful-check): spam-split will set this to - the last successful check; this was seen as a cleaner approach - than returning a cell like '(spam spam-use-bogofilter) - (spam-list-of-checks): documentation appended - (spam-split): accomodate the spam-split-symbolic-return and - spam-split-symbolic-return-positive variables - (spam-find-spam): new function called when the summary is built - (spam-log-registered-p): checks if a ham or spam registration has - already been done for an article - (spam-check-regex-headers, spam-check-blackholes, spam-check-BBDB) - (spam-check-ifile, spam-check-stat, spam-check-whitelist) - (spam-check-blacklist, spam-check-bogofilter-headers) - (spam-check-spamoracle): respect the spam-split-symbolic-return - and spam-split-symbolic-return-positive variables - (spam-initialize): add spam-find-spam to gnus-summary-prepare-hook - (spam-unload-hook): remove spam-find-spam from - gnus-summary-prepare-hook +2004-03-22 Katsumi Yamaoka - * gnus.el (spam-autodetect, spam-autodetect-methods): new - configuration items for spam autodetection + * mm-decode.el (mm-save-part): Bind enable-multibyte-characters to + t while entering a file name using the mm-with-multibyte macro. + Suggested by Hiroshi Fujishima . -2003-12-12 Reiner Steib + * mm-util.el (mm-with-multibyte): New macro. - * gnus-draft.el (gnus-draft-mode-map): Bind `e' to - `gnus-draft-edit-message'. We still have `B w' for - `gnus-summary-edit-article'. +2004-03-19 Katsumi Yamaoka -2003-12-12 Katsumi Yamaoka + * gnus-art.el (gnus-mime-recompute-hierarchical-structure): New + user option. + (gnus-mime-multipart-functions): Doc and customization fix. + (gnus-article-mime-hierarchy): New variable. + (gnus-article-mime-hierarchy-next): New variable. + (gnus-article-mode): Make gnus-article-mime-hierarchy buffer-local. + (gnus-article-setup-buffer): Set gnus-article-mime-hierarchy and + gnus-article-mime-hierarchy-next to nil. + (gnus-insert-mime-button): Show hierarchy numbers. + (gnus-mime-accumulate-hierarchy): New function. + (gnus-mime-enter-multipart): New function. + (gnus-mime-leave-multipart): New function. + (gnus-mime-display-part): Recompute hierarchical MIME structure. + (gnus-mime-display-alternative): Show hierarchy numbers. - * nnheaderxm.el (nnheader-xmas-run-at-time): Use a simple function - definition if there is not a bug in start-itimer. + * mml.el (mml-preview): Set gnus-article-mime-hierarchy and + gnus-article-mime-hierarchy-next to nil. - * pgg.el (pgg-run-at-time): Ditto. +2004-03-19 Steve Youngs -2003-12-11 Kevin Greiner + * dns.el: Don't require gnus-xmas. - * gnus-agent.el (gnus-agent-possibly-alter-active): New Function. - (gnus-agent-regenerate-group): When necessary, alter the group's - active range to include articles newly recognized as being - downloaded. - (gnus-agent-regenerate): Removed code that updated the agent's - active file as the new gnus-agent-possibly-alter-active function - obsolesced it. +2004-03-17 Jesper Harder - * gnus-cus.el (gnus-agent-customize-category): Added missing - agent-disable-undownloaded-faces parameter. - - * gnus-start.el (gnus-activate-group): Backed out my 2003-11-29 - patch as it was too late at adjusting the active range. - (gnus-get-unread-articles-in-group): Added call to new - gnus-agent-possibly-alter-active to adjust the active range. + * mml.el (mml-generate-mime-1): Don't use format=flowed with + inline PGP. + (mml-menu): Disable mml-quote-region if mark is inactive. -2003-12-10 Jesper Harder +2004-03-17 Katsumi Yamaoka - * message.el (message-get-reply-headers): Narrow to headers. + * gnus-agent.el (gnus-agent-regenerate-group): Activate the group + when the group's active is not available. -2003-12-10 Teodor Zlatanov +2004-03-15 Katsumi Yamaoka - * spam.el (spam-disable-spam-split-during-ham-respool): new - variable. From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) - (spam-ham-copy-or-move-routine): respect - spam-disable-spam-split-during-ham-respool. From - lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) - (spam-split-disabled): new variable. From - lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) - (spam-split): respect spam-split-disabled. From - lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) + * gnus-agent.el (gnus-agent-read-agentview): Add a missing arg to + error. -2003-12-10 Katsumi Yamaoka + * gnus-sum.el (gnus-read-header): Don't remove a header for the + parent article of a sparse article in the thread hashtb. From + Stefan Wiens . - * nnheaderxm.el (nnheader-xmas-run-at-time): Make it work - correctly for the first argument. +2004-03-12 Reiner Steib - * pgg.el (pgg-run-at-time): New function. - (pgg-add-passphrase-cache): Use it. + * imap.el (imap-store-password): New variable. + (imap-interactive-login): Use it. + Suggested by Mark Plaksin . -2003-12-10 Simon Josefsson +2004-03-12 Katsumi Yamaoka - * pgg-parse.el (pgg-decode-packets): Rewrite to handle corrupt - input. - (pgg-decode-armor-region): Don't parse packet if decoding fail. + * gnus-art.el (gnus-article-read-summary-keys): Restore new + window-start and hscroll to summary window. -2003-12-09 Teodor Zlatanov +2004-03-12 Kevin Greiner - * spam.el (spam-check-bogofilter): run in the correct buffer. - From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly). - (spam-bogofilter-database-directory): correct customization - group. From Xavier Maillard . + * gnus-start.el (gnus-convert-old-newsrc): Only write the + conversion message to newsrc-dribble when an actual conversion is + performed. -2003-12-09 Per Abrahamsen +2004-03-10 Malcolm Purvis (tiny change) - * nnmail.el (nnmail-lazy, nnmail-split-fancy): New widgets. - (nnmail-split-fancy): Use it. + * spam-stat.el (spam-stat-coding-system): Use mm-coding-system-p. -2003-12-08 Joel Ray Holveck (tiny change) +2004-03-10 Katsumi Yamaoka - * gnus-sum.el (gnus-summary-save-parts-1): Consider the "name" - parameter of Content-Type. + * mm-decode.el (mm-complicated-handles): New function reviving + former definition of mm-multiple-handles. -2003-12-08 Katsumi Yamaoka + * gnus-art.el (gnus-mime-save-part-and-strip): Use it. + (gnus-mime-delete-part): Use it. - * gnus-util.el: Revert 2003-12-03 change, instead, provide the - compiler macro for rmail-select-summary if rmail is not available, - and bind rmail-summary-displayed and rmail-maybe-display-summary - in order to silence the compiler even if tm is not available. +2004-03-09 Kevin Greiner -2003-12-08 Simon Josefsson + * gnus-agent.el (gnus-agent-read-local): Bind + nnheader-file-coding-system to gnus-agent-file-coding-system to + avoid the implicit assumption that they will always be equal. + (gnus-agent-save-local): Bind buffer-file-coding-system, not + coding-system-for-write, as the with-temp-file macro first prints + to a buffer then saves the buffer. - * flow-fill.el (fill-flowed-encode-tests, fill-flowed-test): Add. +2004-03-09 Katsumi Yamaoka -2003-12-08 Jesper Harder + * gnus-art.el (gnus-article-edit-part): New function. + (gnus-mime-save-part-and-strip): Use it; do query instead of + signaling an error; don't use mm-multiple-handles. + (gnus-mime-delete-part): Ditto. - * gnus-msg.el (gnus-extended-version): Bind float-output-format to - nil. +2004-03-08 Kevin Greiner -2003-12-08 Simon Josefsson + * gnus-agent.el (gnus-agent-read-agentview): Removed support for + old file versions. + (gnus-group-prepare-hook): Removed function that converted list + form of gnus-agent-expire-days to group properties. - * mml-smime.el (mml-smime-sign): Replace CRLF with LF in OpenSSL - output. Reported by Arne J,Ax(Brgensen . + * gnus-int.el: Autoload gnus-agent-regenerate-group. + (gnus-request-accept-article): Re-indented. -2003-12-07 Simon Josefsson + * gnus-start.el (gnus-convert-old-newsrc): Registered new + converters to handle old agent file formats. Added logic for a + "backup before upgrading warning". + (gnus-convert-mark-converter-prompt): Developers can mark + functions as needing (default), or not needing, + gnus-convert-old-newsrc's "backup before upgrading warning". + (gnus-convert-converter-needs-prompt): Tests whether the user + should be protected from potentially irreversable changes by the + function. - * pgg-gpg.el (pgg-gpg-recipient-arg): Add. - (pgg-gpg-encrypt-region): Use it. Tiny patch from Lloyd Zusman - . - (pgg-gpg-recipient-argument): Doc fix. Renamed fro p-g-r-a. - (pgg-gpg-encrypt-region): Update. + * legacy-gnus-agent.el (): New. Provides converters that are only + loaded when gnus-convert-old-newsrc needs to call them. + +2004-03-08 Katsumi Yamaoka -2003-12-07 Jesper Harder + * mail-source.el (mail-source-touch-pop): Doc fix. - * spam.el (spam-check-spamoracle, spam-spamoracle-learn): Don't - use = or zerop to test the return value of call-process, because - it can be a string. + * message.el (message-smtpmail-send-it): Doc fix. - * mail-source.el (mail-source-fetch-with-program): do. +2004-03-05 Jesper Harder - * mailcap.el (mailcap-viewer-passes-test): do. + * sha1-el.el (sha1-maximum-internal-length): Doc fix. - * gnus-uu.el (gnus-uu-treat-archive, gnus-uu-post-encode-mime) - (gnus-uu-post-encode-file): do. + * nnmail.el (nnmail-split-fancy): do. - * gnus-soup.el (gnus-soup-pack, gnus-soup-unpack-packet): do. + * gnus-kill.el (gnus-kill, gnus-execute): do. - * message.el (message-fix-before-sending): Fix detection of - non-printables. Don't replace unencodable utf-8. +2004-03-05 Per Abrahamsen -2003-12-05 Jesper Harder + * gnus-sum.el (gnus-widget-reversible-match) + (gnus-widget-reversible-to-internal) + (gnus-widget-reversible-to-external): New functions. + (gnus-widget-reversible): New widget. + (gnus-article-sort-functions, gnus-thread-sort-functions): Use it. - * mm-url.el (mm-url-predefined-programs): Add user-agent for wget. - (mm-url-insert-file-contents-external): Signal an error if program - fails. +2004-03-05 Kai Grossjohann -2003-12-04 Teodor Zlatanov + * gnus-sum.el (gnus-thread-sort-functions) + (gnus-article-sort-functions): Document `(not F)' items. - * spam-report.el (spam-report-gmane): iterate over articles - instead of a single one; remove interactive usage +2004-03-04 Teodor Zlatanov -2003-12-03 Katsumi Yamaoka + * spam.el (spam-use-gmane-xref): new backend + (spam-gmane-xref-spam-group): variable to control the name of the + Gmane spam group + (spam-blackhole-servers, spam-blackhole-good-server-regex) + (spam-regex-headers-spam, spam-regex-headers-ham) + (spam-regex-body-spam, spam-regex-body-ham): clarified docs + (spam-list-of-checks): added spam-use-gmane-xref to list of + backends and checks + (spam-check-gmane-xref): function for spam-use-gmane-xref - * dns.el: Fix misplaced eval-when-compile. + * gnus.el (spam-autodetect-methods): add spam-use-gmane-xref as + an autodetect method - * gnus-util.el: Require alist and provide tm-view when compiling - with XEmacs. +2004-03-04 Kevin Greiner -2003-12-03 Steve Youngs + * gnus-int.el (gnus-request-accept-article): Inform the agent that + articles are being added to a group. + (gnus-request-replace-article): Inform the agent that articles + need to be uncached as the cached contents are no longer valid. + +2004-03-04 Katsumi Yamaoka - * gnus-xmas.el: Add autoloads for macros defined in gnus.el. - From Jerry James . + * binhex.el: Don't autoload executable-find. - * gnus-util.el: Get rmail definitions when compiling. - From Jerry James . + * canlock.el: Don't autoload mail-fetch-field. - * dns.el: Require gnus-xmas at compile time instead of trying to - autoload `gnus-xmas-open-network-stream' because it wasn't picking - up the macro. - From Jerry James . + * dgnushack.el: Autoload c-mode for XEmacs. -2003-12-01 Kevin Greiner - * gnus-agent.el (gnus-agent-consider-all-articles): Updated - docstring. - (gnus-predicate-implies-unread, gnus-predicate-implies-unread-1): - Fixed implementation such that the predicate `true' no longer - evaluates to t. + * gnus-ems.el: Don't autoload appt-select-lowest-window. -2003-12-01 Teodor Zlatanov + * gnus-msg.el: Don't autoload news-reply-mode, news-setup, + rmail-dont-reply-to and rmail-output. - * spam.el (spam-check-bogofilter): check the bogofilter headers - AFTER the save-excursion scope is over. From Adrian Lanz - . - (spam-fetch-field-message-id-fast): doc fix + * gnus-score.el: Don't autoload ffap-string-at-point. -2003-12-01 Simon Josefsson + * gnus-setup.el: Don't autoload sc-cite-original. - * gnus-agent.el (gnus-agent-expire-days): Doc fix. + * imap.el: Don't autoload base64-decode-string, + base64-encode-string and md5. -2003-11-30 Simon Josefsson + * message.el: Autoload rmail-dont-reply-to, rmail-msg-is-pruned + and rmail-msg-restore-non-pruned-header. - * gnus-agent.el (gnus-agent-expire-group-1): Bind message-log-max - when messaging "X % completed" to inhibit logging them to the - message buffer. - (gnus-agent-expire-group-1): Mention group name in messages. - (gnus-agent-expire-group-1): Only print a message for an article - when there actually was something done to it. + * mm-decode.el: Don't autoload executable-find. - * mm-util.el (mm-enable-multibyte): Call set-buffer-multibyte with - 'to argument. Fixes something or other in Emacs 22, and is - backwards compatible. From Kenichi Handa . + * mm-url.el: Don't autoload executable-find. - * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Custom fix. + * mm-view.el: Don't autoload diff-mode. -2003-11-30 Lars Magne Ingebrigtsen + * nndb.el: Don't autoload news-reply-mode, news-setup, + cancel-timer and telnet. - * gnus-agent.el (gnus-agent-covered-methods): Remove nil methods. + * password.el: Don't autoload run-at-time for Emacs. -2003-11-29 Kevin Greiner - * gnus-start.el (gnus-activate-group): The active range of the - group must include the articles known to the agent. + * sha1-el.el: Don't autoload executable-find. - * gnus.el (gnus-agent-method-p): Accept a server name as the - method being tested. + * sieve-mode.el: Don't autoload c-mode. -2003-11-29 Alexander Kreuzer (tiny change) + * uudecode.el: Don't autoload executable-find. - * nnrss.el (nnrss-check-group): Set xml when nnrss-use-local is t. +2004-03-04 Kevin Greiner -2003-11-29 Jesper Harder + * gnus-agent.el (gnus-agent-file-header-cache): Removed. + (gnus-agent-possibly-alter-active): Avoid null in numeric + comparison. + (gnus-agent-set-local): Refuse to save null in local object table. + (gnus-agent-regenerate-group): The REREAD parameter can now be a + list of articles that will be marked as unread. - * gnus-group.el (gnus-group-make-menu-bar): Add - gnus-group-make-rss-group. +2004-03-04 Katsumi Yamaoka -2003-11-28 Reiner Steib + * rfc2047.el (rfc2047-encoded-word-regexp): Mismatched paren. - * message.el: Added custom-manual links to all variables that have - an index entry in the message manual. - (message-generate-headers-first): Fixed doc-string. +2004-03-04 Jesper Harder -2003-11-27 Katsumi Yamaoka + * rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231 + language tags. - * gnus-msg.el (gnus-summary-yank-message): Don't bind - gnus-display-mime-function to nil so that non-ascii text is - decoded and attachments are not shown. - - * message.el (message-cite-original-without-signature): Replace - the value of message-reply-headers with the yanked article since - it may be a different article from the original. - (message-cite-original): Ditto. - -2003-11-25 Teodor Zlatanov - - * spam.el (spam-blacklist-ignored-regexes): new variable, so - blacklisting can ignore certain regular expressions (e.g. the - user's e-mail address) - (spam-bogofilter-spam-strong-switch, - spam-bogofilter-ham-strong-switch): options used when articles are - already registered as the opposite classification - (spam-old-ham-articles, spam-old-spam-articles): lists of ham and - spam articles, generated when a summary buffer is entered, and - consulted when it's exited so we know what articles are changing - state from spam to ham or vice-versa - (spam-xor): everyone needs a little convenience - (spam-list-of-processors): lookup table for old-style spam/ham - exits processors - (spam-group-processor-p): support old-style and new-style spam/ham - exit processors - (spam-group-processor-multiple-p): handle new-style spam/ham exit - processors - (spam-summary-prepare): use spam-old-{ham,spam}-articles; change - logic to iterate over list of processors instead of manual - individual lookup, unregister any articles that change from ham to - spam or vice-versa in the course of the summary buffer usage; use - the new spam-register-routine - (spam-ham-copy-routine, spam-ham-move-routine, - spam-mark-spam-as-expired-and-move-routine): check that the list - of groups is not nil, because apply doesn't like to apply a - function across nil - (spam-registration-functions): variable for looking up spam/ham - registration/unregistration functions based on a spam-use-* symbol - (spam-classification-valid-p, spam-process-type-valid-p) - (spam-registration-check-valid-p) - (spam-unregistration-check-valid-p): convenience functions - (spam-registration-function, spam-unregistration-function): look - up the registration/unregistration function based on a - classification and the check (spam-use-* symbol) - (spam-list-articles): generate list of spam/ham articles from a - given list of articles - (spam-register-routine): do the heavy work of registering and - unregistering articles, using all the articles in the group or - specific ones as needed - (spam-generic-register-routine): removed, no longer used - (spam-log-unregistration-needed-p, spam-log-undo-registration): - handle article registration/unregistration with a given spam/ham - processor and group - (BBDB, ifile, spam-stat, blacklists, whitelists, spam-report, - bogofilter, spamoracle): rewrite registration/unregistration - functions to take a list of articles and the unregister option. - Much hilarity ensues. - (spam-initialize): spam-stat-maybe-{save,load} already respect spam-use-stat - (spam-stat-register-ham-routine, spam-stat-register-spam-routine): - don't load and save unnecessarily - - * spam-stat.el (spam-stat-dirty): new variable, set when the stats - database is modified - (spam-stat-buffer-is-spam, spam-stat-buffer-is-non-spam) - (spam-stat-buffer-change-to-spam, spam-stat-to-hash-table) - (spam-stat-buffer-change-to-non-spam): set spam-stat-dirty when - needed - (spam-stat-save): respect spam-stat-dirty, unless the force - parameter is specified - (spam-stat-load): clear spam-stat-dirty - - * gnus.el (gnus-install-group-spam-parameters): marked the - old-style exit processors as obsolete in the docs, added the - new-style exit processors while the old ones are still allowed - - -2003-11-25 Jesper Harder - - * gnus-art.el (article-hide-boring-headers): Don't hide Reply-To - unless its list of addresses is identical to From. - -2003-11-25 Katsumi Yamaoka - - * dgnushack.el (mapc): Add the compiler macro for Emacs 20. - -2003-11-24 Kevin Greiner - * gnus-srvr.el (gnus-server-insert-server-line): The server names - used in gnus-agent are different (for example, the native server - uses the alias "native") from the names in gnus-srvr. - Compensating by adding a second text property storing the name - expected by gnus-agent. - (gnus-server-named-server): New function. - * gnus-agent.el (gnus-agent-remove-server, gnus-agent-add-server): - No longer expect an argument as it was ignored anyway. Uses the - new gnus-server-named-server function to get gnus-agent compatible - names from the server buffer. - -2003-11-20 Kevin Greiner - - * gnus.el (gnus-agent-covered-methods): Documented use of - named servers, not methods, to identity agentized groups. - Users may now change their server configurations without having - the server become "unagentized". - (gnus-agent-covered-methods): Removed from gnus-variable-list to - avoid storing two copies of gnus-agent-covered-methods, one in - .newsrc.eld and the other in agent/lib/servers. - (gnus-server-to-method): Do not cache server for the nil method. - (gnus-method-to-server): New function. Associate named server - with all, even foreign, methods. - (gnus-agent-method-p, gnus-agent-method-p-cache): Incorporated - simple last-response cache to offset performance lose of having to - always convert methods to named servers. - * gnus-agent.el (gnus-agent-expire-days): Removed obsolete - documentation. - (gnus-agentize, gnus-agent-add-server, gnus-agent-remove-server): - Modified to support new definition of gnus-agent-covered-method. - (gnus-agent-read-servers): Rewritten to convert old method data - into server names. - (gnus-agent-read-servers-validate) - (gnus-agent-read-servers-validate-native): New functions. - (gnus-agent-write-servers): No longer use gnus-method-simplify as - it failed to simplify foreign methods. - (gnus-agent-close-connections, gnus-agent-synchronize-flags) - (gnus-agent-possibly-synchronize-flags, gnus-agent-fetch-session) - (gnus-agent-regenerate): Uses new gnus-agent-covered-methods - function as gnus-agent-covered-methods variable no longer provides - methods. - (gnus-agent-covered-methods): New function - (gnus-agent-expire-group, gnus-agent-expire): Final message will, - if gnus-verbose is greater than 4, report statistics of NOV - entries and files deleted as well as total bytes recovered. - (gnus-agent-expire-done-message): New function - (gnus-agent-unread-articles): Bug fix. No longer drops last - unread article onto read list. - (gnus-agent-regenerate-group): Changed prompt to use typical - style. - (gnus-agent-group-covered-p): Rewrote to internally use - gnus-agent-method-p. - * gnus-int.el (gnus-start-news-server): Partially convert old - gnus-agent-covered-methods to new format so that gnus-open-server - functions correctly. - * gnus-srvr.el (gnus-server-insert-server-line): Replaced - gnus-agent-covered-methods with gnus-agent-method-p. - * gnus-start.el (gnus-clear-system): Added - gnus-agent-covered-methods to compensate for removing it from - gnus-variable-list. - (gnus-setup-news): Complete conversion of old - gnus-agent-covered-methods to new format so that secondary and - foreign servers can be correctly opened. - -2003-11-20 Teodor Zlatanov - - * spam.el (spam-ham-copy-or-move-routine): add respooling - support, not working well yet - - * gnus.el (ham-process-destination): make 'respool option the - only one, so it can't be chosen together with other groups - -2003-11-19 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-track-extra): make it a set of - choices instead of a boolean - (gnus-registry-track-subject-p, gnus-registry-track-sender-p): - new convenience functions - (gnus-registry-split-fancy-with-parent): use convenience - functions, also don't return extra tracking info if sender or - subject is found in more than one groups - (gnus-registry-add-group): use new convenience functions to - decide if sender and subject should be tracked - - * gnus.el (ham-process-destination): add 'respool option, - unused by spam.el yet - -2003-11-19 Katsumi Yamaoka - - * gnus-score.el (gnus-decay-score): Return a surely smaller value - than the argument in XEmacs. - -2003-11-18 Reiner Steib - - * message.el (message-insert-to): Don't use `gnus-message'. - (message-header-synonyms): New variable. - (message-carefully-insert-headers): Use it (check for synonyms). - Added doc-string. From Sam Steingold . - -2003-11-17 Lars Magne Ingebrigtsen - - * html2text.el (html2text-remove-tags): Remove the tag in a - simpler way to avoid inflooping. - -2003-11-17 Simon Josefsson - - * imap.el (imap-gssapi-auth-p): Don't check capability (some - servers remove AUTH=GSSAPI from capability response returned after - successful authentication). - -2003-11-16 Jesper Harder - - * gnus.el (gnus-getenv-nntpserver): Fix regexp and simplify. - Reported by Artem Chuprina . - -2003-11-14 Simon Josefsson - - * mm-util.el (mm-charset-synonym-alist): Map BIG5-HKSCS to BIG5 - when it isn't available. - -2003-11-13 Alex Schroeder - - * nnrss.el (nnrss-check-group): Use dc:contributor if neither - rss:author nor dc:creator is provided. - -2003-11-13 Katsumi Yamaoka +2004-03-03 Per Abrahamsen - * mm-decode.el (mm-dissect-buffer): Save start="" value - contained in Content-Type header of multipart/related messages. + * gnus-agent.el (gnus-agent-read-local, gnus-agent-save-local): + Don't bind "obarray". - * mm-view.el (mm-w3m-cid-retrieve-1): New function. - (mm-w3m-cid-retrieve): Use it. + * gnus-sum.el (gnus-thread-sort-functions): Added + `gnus-thread-sort-by-most-recent-number' and + `gnus-thread-sort-by-most-recent-date'. + Reported by Kai Grossjohann . - * mml.el (mml-generate-mime-1): Add start="" to Content-Type. - (mml-insert-mime-headers): Insert Content-ID header. - (mml-insert-mml-markup): Insert start="" value. +2004-03-03 Katsumi Yamaoka -2003-11-12 Teodor Zlatanov + * gnus-cus.el (gnus-agent-customize-category): Mismatched paren. - * nnml.el (nnml-request-accept-article): pass sender to - nnmail-cache-insert +2004-03-02 Kevin Greiner - * nnmh.el (nnmh-request-accept-article): pass sender to - nnmail-cache-insert + * gnus-cus.el (gnus-agent-customize-category): Removed + ignore-errors macro reference that required cl to be loaded at + run-time. - * nnmbox.el (nnmbox-request-accept-article): pass sender to - nnmail-cache-insert + * gnus-range.el (gnus-sorted-range-intersection): Now accepts + single-interval range of the form (min . max). Previously the + range had to look like ((min . max)). Likewise, return + (min . max) rather than ((min . max)). + (gnus-range-map): Use gnus-range-normalize to accept + single-interval range. - * nnfolder.el (nnfolder-request-accept-article): pass sender to - nnmail-cache-insert + * gnus-sum.el (gnus-summary-highlight-line): Articles stored in + the cache, but not the agent, now appear with their usual face. - * nnbabyl.el (nnbabyl-request-accept-article): pass sender to - nnmail-cache-insert + * dgnushack.el (loaddir): New variable that is bound to the + directory containing the dgnushack.el file. Use loaddir, rather + than srcdir, to update load-path. Change lets dgnushack compile + code in directories other than GNUS/lisp. - * nnmail.el (nnmail-cache-insert): accept sender parameter and - pass it to the nnmail-spool-hook +2004-03-01 Katsumi Yamaoka - * gnus-registry.el (gnus-registry-track-extra): clarify doc - (gnus-registry-action): add sender lexical var and pass it to - gnus-registry-add-group - (gnus-registry-spool-action): take a sender parameter, pass to - gnus-registry-add-group - (gnus-registry-split-fancy-with-parent): trace by sender in - addition to subject - (gnus-registry-fetch-sender-fast): new function - (gnus-registry-add-group): accept sender parameter + * lpath.el: Don't bind w3m-safe-url-regexp. -2003-11-11 Teodor Zlatanov + * gnus-art.el (gnus-article-wash-html-with-w3m): Don't make the + w3m-safe-url-regexp variable buffer-local. - * spam.el (spam-ham-copy-routine, spam-ham-move-routine) - (spam-mark-spam-as-expired-and-move-routine): allow for the - groups to be a list of a single item + * mm-view.el (mm-inline-text-html-render-with-w3m): Ditto. - * gnus.el (gnus-install-group-spam-parameters): - ham-process-destination and spam-process-destination allow lists now +2004-02-27 Simon Josefsson -2003-11-10 Reiner Steib + * gnus-sum.el (gnus-move-group-prefix-function): Add, default to + gnus-group-real-prefix. + (gnus-summary-move-article): Use it, instead of + gnus-group-real-prefix. - * message.el (message-insert-to): Do error out when the user - requested no Cc. Don't insert empty To. Can be added to - `message-setup-hook' now. From Sam Steingold . - (message-mode-field-menu): Moved some entries, added - `message-insert-wide-reply'. - (message-change-subject): Fixed comment. +2004-02-27 Katsumi Yamaoka -2003-11-10 Simon Josefsson + * lpath.el: Bind w3m-safe-url-regexp. - * pgg-def.el (pgg-encrypt-for-me): Change default from nil to t. + * gnus-art.el (gnus-article-wash-html-with-w3m): Make the + w3m-safe-url-regexp variable buffer-local and set it as the value + of mm-w3m-safe-url-regexp. -2003-11-09 Simon Josefsson + * mm-view.el (mm-inline-text-html-render-with-w3m): Ditto. - * pgg-gpg.el (pgg-gpg-encrypt-region): Cache passphrase under hex - key id too (for decryption). - (pgg-gpg-sign-region): Likewise. + * gnus-msg.el (gnus-setup-message): Ignore an article copy while + parsing gnus-posting-styles when the message is not for replying. -2003-11-09 Simon Josefsson + * dgnushack.el: Autoload sgml-mode for XEmacs. - * pgg-gpg.el (pgg-gpg-all-secret-keys): New variable. - (pgg-gpg-lookup-all-secret-keys): New function. - (pgg-gpg-select-matching-key): Likewise. - (pgg-gpg-decrypt-region): Use new functions. From Satyaki Das - . - -2003-11-07 Teodor Zlatanov - - * nnmail.el (nnmail-cache-insert): make sure that the - nnmail-spool-hook is called with a valid newsgroup name (though - it may be wrong) - - * gnus.el (gnus-group-real-prefix): return nil if group is not a - string, instead of triggering an error - -2003-11-06 Teodor Zlatanov - - * gnus.el (gnus-group-guess-full-name-from-command-method): new function - - * gnus-registry.el (gnus-registry-fetch-group): use long names if - requested - (gnus-registry-split-fancy-with-parent): when long names are in - use, strip the name if we're in the native server, or else return nothing - (gnus-registry-spool-action, gnus-registry-action): use - gnus-group-guess-full-name-from-command-method instead of - gnus-group-guess-full-name - - * spam.el (spam-mark-spam-as-expired-and-move-routine) - (spam-ham-copy-or-move-routine): prevent article deletions or - moves unless the backend allows it - - * gnus.el (gnus-install-group-spam-parameters): fixed parameters - to list spamoracle as well, suggested by Jean-Marc Lasgouttes - - - * spam.el (spam-spamoracle): doc change, suggested by Jean-Marc - Lasgouttes - -2003-11-04 Katsumi Yamaoka - - * gnus-score.el (gnus-decay-score): Protect against arithmetic - errors. Tiny patch from Norbert Koch . - -2003-10-31 Teodor Zlatanov - - * spam.el - (spam-log-processing-to-registry): improved message and comments - (spam-log-unregistration-needed-p): new function - (spam-ifile-register-spam-routine) - (spam-ifile-register-ham-routine, spam-stat-register-spam-routine) - (spam-stat-register-ham-routine) - (spam-blacklist-register-routine) - (spam-whitelist-register-routine) - (spam-bogofilter-register-spam-routine) - (spam-bogofilter-register-ham-routine) - (spam-spamoracle-learn-ham, spam-spamoracle-learn-spam): change - spam-log-processing-to-registry invocations appropriately - -2003-10-31 Simon Josefsson - - * imap.el (imap-kerberos4-open): Ignore output from ATHENA imtest. - Tiny patch from Derek Atkins . - (imap-process-connection-type): Improve docstring. Suggested by - Derek Atkins . - -2003-10-31 Teodor Zlatanov - - * spam.el (autoload): autoload the gnus-registry functions we'll - need - (spam-log-to-registry): new variable for interfacing with the - gnus-registry - (spam-install-hooks): variable had the wrong customization group - (spam-fetch-field-message-id-fast): convenience function for fetch - a message ID quickly - (spam-log-processing-to-registry): new function - (spam-ifile-register-spam-routine) - (spam-ifile-register-ham-routine, spam-stat-register-spam-routine) - (spam-stat-register-ham-routine) - (spam-blacklist-register-routine) - (spam-whitelist-register-routine) - (spam-bogofilter-register-spam-routine) - (spam-bogofilter-register-ham-routine) - (spam-spamoracle-learn-ham, spam-spamoracle-learn-spam): add - spam-log-processing-to-registry invocations - - * gnus-registry.el: fixed docs in the preface to mention - gnus-registry-initialize - (gnus-registry-store-extra): remove cached extra entry - information when new extra entry is stored - -2003-10-29 Simon Josefsson - - * message.el (message-forward-make-body-plain): Fix ARG=1 mode - after separating m-f-m-b. - -2003-10-29 Simon Josefsson - - * message.el (message-forward-make-body-plain): Remove ignored - headers. Tiny patch from Andre Srinivasan . - (message-forward-make-body-plain): Fix ARG=1. - -2003-10-28 Jesper Harder - - * message.el (message-forward-subject-name-subject) - (message-forward-subject-author-subject): Decode non-ASCII - newsgroup names. - (autoload): Autoload gnus-group-decoded-name. - -2003-10-27 Simon Josefsson - - * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): New optional - parameter key, overrides the key id used to store passphrase - under (uses true key id from gpg output if nil). - (pgg-gpg-encrypt-region): Search for passphrase using user suplied - string STR, instead of (pgg-lookup-key STR t). - (pgg-gpg-encrypt-region): Store passphrase under user suplied - string, instead of real key id taken from gpg output. - (pgg-gpg-decrypt-region): Likewise. - (pgg-gpg-sign-region): Likewise. - * pgg.el (pgg-decrypt-region): Don't set pgg-default-user-id. - -2003-10-27 Romain FRANCOISE - - * gnus-art.el (gnus-article-goto-prev-page): Doc fix. - -2003-10-27 Simon Josefsson - - * mm-bodies.el (mm-body-encoding): Don't use QP when message body - only consists of short lines and ASCII, when - mm-use-ultra-safe-encoding. Refer to 'About foo' thread in - gnus-bug, e.g. , for more discussion. - This make it possible to pipe the raw RFC 822 message into 'gpg' - and have the signature work. Potential problem: what if message - contain data that would be dash-escaped by OpenPGP - implementations? Then PGP 2.x might not be able to parse the raw - RFC 822 message correctly. If that problem is worth fixing, it - should be fixed by detecting the situation, instead of applying QP - to everything. Based on discussion with "John A. Martin" - . - -2003-10-27 Teodor Zlatanov - - * spam.el (spam-mark-spam-as-expired-and-move-routine) - (spam-ham-copy-or-move-routine): don't ask when deleting copied - articles, and use move instead of copy when possible - (spam-split): added the option of specifying a string as a - spam-split parameter; such a string will override - spam-split-group temporarily. - - * nnmail.el (nnmail-cache-insert): protect from nil message IDs, - but should we do something else? + * nnrss.el (nnrss-opml-export): Use + mm-set-buffer-file-coding-system instead of + set-buffer-file-coding-system. - * gnus-registry.el (gnus-registry-spool-action): protect from nil - message IDs +2004-02-27 Jesper Harder -2003-10-26 Simon Josefsson + * spam-stat.el: Pedantic docstring and whitespace fixes (courtesy + of checkdoc.el). + * nnrss.el: do. + * gnus-mlspl.el: do. + * gnus-ml.el: do. + * gnus-srvr.el: do. - * gnus-art.el (gnus-button-alist): Allow & in mailto URLs. - (gnus-header-button-alist): Likewise. - (gnus-url-mailto): Handle ?to parameters. Replace \r\n with \n. - Reverse parameter list to use same order as in the URL. Reported - by f95-msv@f.kth.se (M,Ae(Brten Svantesson). + * nnrss.el (nnrss-opml-export): Turn on sgml-mode. -2003-10-25 Teodor Zlatanov +2004-02-27 Kevin Ryde (tiny change) - * spam.el (spam-move-spam-nonspam-groups-only): documentation fix - for the variable + * gnus.el (gnus-group, gnus-summary, gnus-summary-sort): + Corrections to custom-manual links. -2003-10-25 Steve Youngs + * gnus-art.el (gnus-article): Ditto. - * Makefile.in (clean-some): Remove auto-autoloads.* and - custom-load.* as well. - (distclean): Ditto. + * mm-decode.el (mime-display, mime-security): Ditto. - * dgnushack.el (dgnushack-make-load): Add a local vars section to - the dummy gnus-load.el. +2004-02-26 Jesper Harder -2003-10-24 Teodor Zlatanov + * flow-fill.el: Typo. - * spam.el (spam-ham-copy-or-move-routine): do not delete if copy - is t, also don't intepret the list of groups as a list of lists - (spam-mark-spam-as-expired-and-move-routine) - (spam-ham-copy-or-move-routine): delete articles only if 1 or - more groups were specified (and "copy" was not specified for - spam-ham-copy-or-move-routine) (fixed twice) +2004-02-26 Andrew Cohen -2003-10-24 Katsumi Yamaoka + * spam-wash.el: New file. - * nndoc.el (nndoc-guess-type): Reverse the sort order. Suggested - by ARISAWA Akihiro . - (nndoc-dissect-buffer): Don't miss even-numbered articles. +2004-02-26 Mark A. Hershberger -2003-10-24 Steve Youngs + * nnrss.el (nnrss-opml-import, nnrss-opml-export): New functions. - * dgnushack.el (dgnushack-gnus-load-file): Set to - "auto-autoloads.el" if building with XEmacs. - (dgnushack-cus-load-file): Set to "custom-load.el" if building - with XEmacs. - (dgnushack-make-cus-load): We don't delete the resulting file if - building with XEmacs so byte-compile it. - (dgnushack-make-load): When building with XEmacs do nothing except - byte-compile the autoload file and create a dummy gnus-load.el - file. +2004-02-26 Teodor Zlatanov -2003-10-23 Katsumi Yamaoka + * spam.el (spam-summary-prepare-exit): gnus-set-difference needs + to be run with new-articles as LIST1, not LIST2 + (spam-registration-functions): add spam-use-ham-copy as a nil + registration backend - * message.el (message-make-fqdn): Bind case-fold-search. - Suggested by Christopher Richards . +2004-02-26 Jesper Harder -2003-10-23 Teodor Zlatanov + * spam-stat.el (spam-stat-washing-hook): New option. + (spam-stat-buffer-words): Use it. + (spam-stat-process-directory, spam-stat-test-directory): Use + insert-file-contents-literally. + (spam-stat-coding-system): New variable. + (spam-stat-load, spam-stat-save): Use it. - * gnus.el (spam-process-destination, ham-process-destination): - allow multiple groups as a choice +2004-02-25 Katsumi Yamaoka - * spam.el (spam-check-blackholes): remove "[IP address]" - requirement, now just "IP address" is enough for detection for - blackhole checking - (spam-check-blackholes): oops, the dots were not escaped - (spam-mark-spam-as-expired-and-move-routine): added multiple group - support (multiple copies, then delete) - (spam-ham-copy-routine): new function - (spam-ham-move-routine): new function - (spam-ham-copy-or-move-routine): new function (used to be - spam-ham-move-routine), handle multiple groups - (spam-summary-prepare-exit): call the new functions + * spam-report.el (spam-report-plug-agent): Quote + spam-report-url-to-file and spam-report-url-ping-plain. -2003-10-23 Simon Josefsson +2004-02-25 Reiner Steib - * flow-fill.el (fill-flowed-encode, fill-flowed): Autoload. + * gnus-art.el (gnus-button-alist, gnus-header-button-alist): Allow + / in mailto URLs. -2003-10-22 Katsumi Yamaoka +2004-02-24 Reiner Steib - * gnus-art.el (gnus-emphasis-strikethru): Use the :strike-through - attribute in Emacs. + * spam-report.el (spam-report-process-queue): Fix interactive use. + (spam-report-url-ping-temp-agent-function, spam-report-plug-agent) + (spam-report-unplug-agent): Doc fixes. + (spam-report-url-ping-mm-url, spam-report-url-to-file) + (spam-report-agentize, spam-report-deagentize): Autoload -2003-10-21 Katsumi Yamaoka +2004-02-24 Katsumi Yamaoka - * message.el (message-bounce): Don't erase except bounced header. + * dgnushack.el (with-syntax-table): Redefine it for XEmacs 21.5. -2003-10-21 Teodor Zlatanov + * message.el (message-setup-fill-variables): Add mml tags to + paragraph-start and paragraph-separate. Suggested by Andrew Korty + . + (message-mode): Don't modify paragraph-separate there. - * spam.el (spam-reverse-ip-string): new function to reverse an IP - address in a string - (spam-check-blackholes): use spam-reverse-ip-string +2004-02-17 Katsumi Yamaoka -2003-10-21 Katsumi Yamaoka + * compface.el (uncompface-use-external): Default to undecided. + (uncompface-use-external-threshold): New variable. + (uncompface-float-time): New macro. + (uncompface): Determine whether to use the external decoder if + uncompface-use-external is undecided. - * gnus-art.el (gnus-narrow-to-page): Clear as well as set the - value for gnus-page-broken. +2004-02-15 Lars Magne Ingebrigtsen - * gnus-sum.el (gnus-summary-beginning-of-article): Use - gnus-break-pages instead of gnus-page-broken. - (gnus-summary-end-of-article): Use gnus-break-pages instead of - gnus-page-broken; narrow to the end of a page beforehand. - (gnus-summary-toggle-header): Use gnus-break-pages instead of - gnus-page-broken; remove delimiter buttons unless gnus-break-pages - is non-nil. + * mm-view.el (mm-inline-image-emacs): Don't insert blank lines + after images. -2003-10-21 Lars Magne Ingebrigtsen + * gnus-art.el (gnus-mime-display-single): Remove dead code. - * gnus-picon.el (gnus-picon-transform-address): Protect against - errors. +2004-02-14 Jesper Harder -2003-10-20 Katsumi Yamaoka + * nnrss.el (nnrss-request-article, nnrss-find-el): Cleanup. - * gnus-msg.el (nnspool-rejected-article-hook): Remove defvar. - (xemacs-codename): Move defvar to gnus-util.el. + * html2text.el (html2text-get-attr, html2text-fix-paragraph): do - * gnus-util.el (xemacs-codename): Defvar when compiling. + * gnus-sum.el (gnus-summary-limit-to-age) + (gnus-summary-limit-children): do. -2003-10-20 Lars Magne Ingebrigtsen + * gnus-int.el (gnus-request-scan): do. - * spam-report.el (spam-report-url-ping-plain): Include a - User-Agent. + * gnus-group.el (gnus-group-suspend): do. - * gnus-msg.el (gnus-extended-version): Use it. + * gnus-cus.el (gnus-agent-cat-prepare-category-field): do. - * gnus-util.el (gnus-emacs-version): Separated out into own - function. + * gnus-cite.el (gnus-cite-parse-attributions): do. -2003-10-19 Reiner Steib + * gnus-agent.el (gnus-summary-set-agent-mark) + (gnus-agent-regenerate-group): do. - * message.el (message-mode-field-menu): Added - message-generate-unsubscribed-mail-followup-to. - (message-forward-subject-fwd): Avoid double "Fwd: " - (message-change-subject): Added comment. + * deuglify.el (gnus-article-outlook-unwrap-lines): do. -2003-10-19 Lars Magne Ingebrigtsen + * binhex.el (binhex-decode-region-internal): do. - * gnus-sum.el (gnus-nov-parse-line): Remove condition-cases. +2004-02-12 Katsumi Yamaoka - * mml.el (mml-insert-mime): Quote mml. + * gnus-fun.el (gnus-face-properties-alist): New user option. + (gnus-display-x-face-in-from): Use it. -2003-10-19 Katsumi Yamaoka + * gnus-art.el (article-display-face): Ditto. - * gnus-sum.el (gnus-remove-odd-characters): Use - mm-subst-char-in-string instead of subst-char-in-string. - (gnus-summary-refer-article): Use gnus-replace-in-string instead - of replace-regexp-in-string. + * compface.el (uncompface-use-external): Default to nil. -2003-10-19 Jesper Harder +2004-02-12 Jesper Harder - * gnus-uu.el (gnus-uu-uustrip-article): Really strip directory - from file name. + * nntp.el (nntp-erase-buffer): New function. + (nntp-retrieve-data, nntp-send-command) + (nntp-send-buffer, nntp-retrieve-groups, nntp-handle-authinfo) + (nntp-possibly-change-group): Use it. -2003-10-18 Jesper Harder + * nnnil.el (nnnil-retrieve-headers, nnnil-request-list): Use + with-current-buffer. - * gnus-sum.el (gnus-summary-save-parts-last-directory): Default - to mm-default-directory. - (gnus-summary-save-parts-1): Use mm-file-name-rewrite-functions. +2004-02-12 TAKAI Kousuke -2003-10-18 Lars Magne Ingebrigtsen + * compface.el: Merge the ELisp-based uncompface program. + (compface): New customization group. + (uncompface-use-external): New user option. + (uncompface): Call uncompface-internal if uncompface-use-external + is nil. + (uncompface-internal): New function. Note that there are also + some other functions and variables added for this function. - * pop3.el (pop3-read-response): Check whether the process is - alive. +2004-02-10 Jesper Harder - * gnus-sum.el (gnus-summary-refer-article): Strip spaces. + * nnrss.el (nnrss-read-group-data): Initialize nnrss-group-hashtb + if necessary. - * rfc2047.el (rfc2047-encode-region): Do error out on invalid - strings. +2004-02-09 Teodor Zlatanov - * nntp.el (nntp-retrieve-headers-with-xover): Get error messages - right. + * spam-report.el (spam-report-unplug-agent) + (spam-report-plug-agent, spam-report-deagentize) + (spam-report-agentize, spam-report-url-ping-temp-agent-function): + support for the Agent in spam-report: when unplugged, report to a + file; when plugged, submit all the requests - * gnus-agent.el (gnus-agent-read-servers): Remove sit-for. + * spam.el (spam-register-routine): improved message about + registration - * gnus-art.el (article-treat-dumbquotes): Doc fix. +2004-02-09 Jesper Harder - * message.el (message-field-value): New function. - (message-insert-disposition-notification-to): Use Reply-To, too. + * rfc2047.el (rfc2047-qp-or-base64): New function to reduce + dependencies. + (rfc2047-encode): Use it. - * imap.el (imap-mailbox-status): Upcase STATUS commands. + * gnus-art.el (gnus-button-marker-list): Move before first + reference. - * gnus-sum.el (gnus-remove-odd-characters): New function. - (gnus-nov-parse-line): Use it. + * imap.el (imap-parse-flag-list, imap-parse-body-extension) + (imap-parse-body): Fix format string mismatch. -2003-10-18 Matt Swift + * gnus-score.el (gnus-summary-increase-score): do. - * mm-decode.el (mm-inline-media-tests): Recognize pjpeg as jpeg. + * nnrss.el (nnrss-close): New function. -2003-10-18 Romain FRANCOISE +2004-02-08 Jesper Harder - * message.el (message-forward-make-body): does both - m-f-make-body-mml and m-f-make-body-plain, resulting in a strange - message buffer. + * nnrss.el (nnrss-make-filename): New function. + (nnrss-request-delete-group, nnrss-read-server-data) + (nnrss-save-server-data, nnrss-read-group-data) + (nnrss-save-group-data): Use it. + (nnrss-save-server-data, nnrss-save-group-data): Use gnus-prin1. + (nnrss-read-server-data, nnrss-read-group-data): Use load. + (nnrss-group-hashtb): Make it a hash table rather than an obarray. -2003-10-18 Lars Magne Ingebrigtsen +2004-02-07 Jesper Harder - * gnus-art.el (gnus-narrow-to-page): Only break page if it's - broken. + * mml.el (mml-compute-boundary-1): Don't uncompress files. - * nnrss.el (nnrss-find-rss-via-syndic8): Return nil if xml-rpc - isn't available. +2004-02-06 Jesper Harder - * message.el (message-hidden-headers): Doc fix. + * mml.el (mml-mode, mml-x-dnd-attach-file): Attach drop and drag + files. -2003-10-18 Jesper Harder + * message.el (message-generate-headers-first): Don't quote nil + and t in docstrings. - * gnus-msg.el (gnus-summary-resend-message-edit): Avoid error when - fields aren't found. + * imap.el (imap-id): do. -2003-10-18 Simon Josefsson + * gnus-agent.el (gnus-agent-consider-all-articles) + (gnus-agent-queue-mail): do. - * message.el (message-forward-make-body-plain) - (message-forward-make-body-mime, message-forward-make-body-mml) - (message-forward-make-body-digest-plain) - (message-forward-make-body-digest-mime) - (message-forward-make-body-digest): New, derived from - message-forward-make-body. - (message-forward-make-body): Use them. - (message-forward-show-mml): New default 'best. - (message-forward-make-body): Support it. +2004-02-05 Reiner Steib -2003-10-18 Lars Magne Ingebrigtsen + * spam-report.el (spam-report-process-queue): New function. + Process requests from `spam-report-requests-file'. + (spam-report-process-queue): Doc fix. - * gnus-art.el (gnus-article-mode): Set gnus-page-broken to nil. - (gnus-article-prepare): Don't set to t. - (gnus-narrow-to-page): Set to t if we break. +2004-02-05 Teodor Zlatanov -2003-06-11 Daniel N,Ai(Bri + * spam.el (spam-register-routine) + (spam-log-processing-to-registry, spam-log-registered-p) + (spam-log-unregistration-needed-p, spam-log-undo-registration): + change "check" to "spam-check" for semi-clarity - * message.el (message-resend): Generate Resent-Message-ID header. +2004-02-05 Jesper Harder -2003-10-18 Lars Magne Ingebrigtsen + * pop3.el: Require nnheader. - * gnus-art.el (gnus-article-next-page): Don't go to the next line - before checking end-of-buffer. - (gnus-mime-delete-part): Don't insert parts twice. + * mml-smime.el: Require cl. Autoload message-fetch-field. -2003-10-17 Lars Magne Ingebrigtsen + * mml-sec.el (mml-signencrypt-style): Don't depend on Gnus. - * gnus-art.el (article-update-date-lapsed): Make sure point - doesn't move around (much). + * gnus-picon.el: Require cl. -2003-07-28 Vasily Korytov + * gnus-fun.el: Require gnus-ems and gnus-util. - * mail-source.el (mail-source-keyword-map): List "cur" before - "new" for maildirs. + * gnus.el (gnus-method-to-server): Move defsubst before first use. -2003-10-17 Lars Magne Ingebrigtsen + * gnus-diary.el (gnus-diary-header-schedule): caddr -> car (cddr - * gnus-sum.el (gnus-summary-enter-digest-group): ogroup, nor - group. + * gnus-art.el (gnus-article-edit-mode): Define before first + reference. - * gnus-msg.el (gnus-inews-insert-archive-gcc): Use the parent - name for gcc-self. - (gnus-inews-insert-archive-gcc): Paren mistake. +2004-02-04 Jesper Harder - * gnus-sum.el (gnus-summary-enter-digest-group): Add - parent-group. + * gnus-uu.el (gnus-uu-check-correct-stripped-uucode): Simplify. + (gnus-uu-post-encoded): Use point-at-bol. - * gnus-art.el (gnus-ignored-headers): Add more headers. + * gnus-topic.el (gnus-group-active-topic-p): do. - * rfc2047.el (rfc2047-encode): See which encoding is shorter -- - base64 or QP. + * gnus-start.el (gnus-newsrc-to-gnus-format): do. - * nnmail.el (nnmail-article-group): Default to "bogus". + * gnus-group.el (gnus-group-kill-region): do. - * mail-source.el (mail-source-delete-incoming): Change to nil. + * gnus-art.el (article-date-ut): do. -2003-10-16 Katsumi Yamaoka + * message.el (message-fetch-field): Remove redundant + case-fold-search binding. + (message-narrow-to-field): Simplify. - * mail-source.el (mail-source-fetch-imap): Fix mismatched parens. +2004-02-03 Reiner Steib -2003-10-16 Lars Magne Ingebrigtsen + * spam.el (spam-directory): Derive from `gnus-directory'. - * mail-source.el (defvar): Add post/pre/scripts. - (mail-source-fetch-imap): Use them. + * spam-report.el (spam-report-url-to-file) + (spam-report-requests-file): New function and variable for offline + reporting. + (spam-report-url-ping-function): Add `spam-report-url-to-file' + and user defined function. + (spam-report-url-ping-mm-url): Remove doubled slash. - * nndraft.el (nndraft-request-move-article): Fix infinite - recursion. +2004-02-03 Teodor Zlatanov - * gnus-group.el (gnus-group-mark-regexp): Jump to groups. + * spam.el (spam-list-of-processors): fixed spamassassin variable names -2003-10-16 Ed L. Cashin +2004-02-03 Jesper Harder - * imap.el (imap-interactive-login): Set imap-password to nil if - login fails. + * spam.el (spam-check-spamoracle, spam-spamoracle-learn): Fix + format string mismatch. -2003-10-16 Lars Magne Ingebrigtsen + * sieve.el (sieve-deactivate-all): do. - * message.el (message-inserted-headers): New variable. - (message-mode): Make local. - (message-mode): Set all the local action variables to nil. + * nnfolder.el (nnfolder-request-set-mark, nnfolder-save-marks): do. -2003-10-16 Katsumi Yamaoka + * nnlistserv.el (nnlistserv-kk-wash-article): do. - * mm-decode.el (mm-inline-text-html-with-images): Doc fix. - (mm-w3m-safe-url-regexp): Doc fix. + * nnml.el (nnml-request-set-mark, nnml-save-marks): do. -2003-10-12 Jesper Harder + * mm-bodies.el (mm-7bit-chars): Don't include \r. - * gnus-sum.el (gnus-summary-respool-query): Don't narrow to head, - it's done by nnmail-article-group. +2004-02-02 Teodor Zlatanov - * gnus-uu.el (gnus-uu-grab-articles): Fix misplaced parens. - From Mark Hood (tiny change) + * spam.el (spam-list-of-checks): added spam-use-BBDB-eclusive to + the list of checks -2003-10-10 Jesper Harder +2004-01-31 Jesper Harder - * mm-decode.el (mm-file-name-delete-gotchas): Avoid infloop in - XEmacs. + * rfc2047.el (rfc2047-pad-base64): Deal with more cases of invalid + padding. -2003-10-10 Teodor Zlatanov +2004-01-27 Simon Josefsson - * spam.el (spam-initialize): new function, does the spam-face - update and all the hooks, replaces spam-install-hooks-function + * mm-view.el (mm-fill-flowed): Add. + (mm-inline-text): Use it. Tiny patch from Ralf Angeli + . - * gnus-registry.el (gnus-registry-initialize): new autoloaded - function to explicitly initialize the registry +2004-01-27 Teodor Zlatanov -2003-10-10 Katsumi Yamaoka + * spam.el (spam-spamassassin-register-ham-routine) + (spam-spamassassin-register-spam-routine): fixed function names - * mm-decode.el (mm-w3m-safe-url-regexp): Doc fix. +2004-01-27 Katsumi Yamaoka - * mm-view.el (mm-w3m-mode-map): Doc fix. - (mm-inline-text-html-render-with-w3m): Add a comment. + * gnus.el (gnus-tmp-grouplens): Remove. + (gnus-summary-line-format): Remove grouplens. -2003-10-10 Lars Magne Ingebrigtsen + * gnus-group.el (gnus-group-line-format): Ditto. - * gnus-group.el: Remove superfluous eval-when-compiles. + * gnus-spec.el (gnus-format-specs): Ditto. + (gnus-update-format-specifications): Flush the group format spec + cache if there's the grouplens stuff. + (gnus-parse-simple-format): Replace %l with the empty string. -2003-10-10 Jesper Harder +2004-01-27 Steve Youngs - * gnus-group.el (gnus-group-suspend): Reset gnus-backlog-articles. + * gnus-spec.el (gnus-parse-simple-format): Fix setq value + omission. + From Jerry James -2003-10-08 Lars Magne Ingebrigtsen +2004-01-26 Katsumi Yamaoka - * dns.el (query-dns): Don't error out on malformed resolv files. + * gnus-msg.el (gnus-summary-resend-message-edit): Call mime-to-mml. + Suggested by Hiroshi Fujishima . -2003-10-06 Jesper Harder +2004-01-25 Paul Jarc - * gnus.el (gnus-group-faq-directory): Update .tw entry. From - Albert Chun-Chieh Huang + * nnmaildir.el (nnmaildir--num-file, nnmaildir--mkfile, + nnmaildir--emlink-p, nnmaildir--eexist-p, nnmaildir--new-number): + New macros and functions. + * nnmaildir.el (nnmaildir--group-maxnum, nnmaildir--update-nov): + Handle > NLINK_MAX messages. + * nnmaildir.el (nnmaildir-request-set-mark): Use + nnmaildir--emlink-p and nnmaildir--eexist-p. -2003-10-03 Teodor Zlatanov +2004-01-25 Alex Schroeder - * spam.el (spam-check-blackholes): exit the loop if matches are - found (idea from Adrian Lanz ) - (spam-check-bogofilter-headers, spam-check-blackholes, spam-check-BBDB) - (spam-from-listed-p): use nnmail-fetch-field instead of message-fetch-field - + * spam-stat.el (spam-stat-process-directory-age): New option. + (spam-stat-process-directory): Use it. -2003-10-03 Katsumi Yamaoka +2004-01-24 Hiroshi Fujishima (tiny change) - * mm-decode.el (mm-attachment-file-modes): Change the default - value into 384 from ?\600 which doesn't mean an integer in XEmacs. + * spam-stat.el (spam-stat-reduce-size): Set spam-stat-dirty. + (spam-stat-save): Accept prefix argument. -2003-10-03 Jesper Harder +2004-01-23 Paul Jarc - * mm-decode.el (mm-file-name-delete-control) - (mm-file-name-delete-gotchas): New functions. - (mm-file-name-rewrite-functions): Use them. - (mm-attachment-file-modes): New option. - (mm-save-part-to-file): Use it. + * nnmaildir.el (nnmaildir-request-set-mark): Handle the "too many + links" error. -2003-10-02 Reiner Steib +2004-01-23 Katsumi Yamaoka - * spam.el (spam-install-hooks-function): Added Autoload cookie. + * dgnushack.el: Advise byte-optimize-form-code-walker to optimize + the rest of the and/or forms. -2003-10-02 Jesper Harder +2004-01-23 Jesper Harder - * pgg-def.el (pgg-default-keyserver-address): Change to - subkeys.pgp.net. From Michael Shields + * gnus.el (gnus-tmp-grouplens): Define for the sake of backward + compatibility with old .newsrc.eld files. -2003-10-01 Simon Josefsson + * gnus-xmas.el (gnus-xmas-grouplens-menu-add): Remove. - * message.el (message-idna-to-ascii-rhs-1): RHS can be terminated - by ',', as in 'foo@example.org, bar@example.org'. + * gnus-sum.el (gnus-summary-line-format-alist): Remove grouplens. -2003-10-01 Jesper Harder + * gnus-start.el (gnus-1): do. - * message.el (message-send): Fix reversed logic of supersedes - check. + * gnus-group.el (gnus-group-line-format-alist): do. -2003-09-30 Reiner Steib + * gnus.el (gnus-use-grouplens, gnus-visual): do. - * gnus-art.el (gnus-article-view-part-as-charset): Doc fix, - suggested by Norbert Koch . + * gnus-gl.el: Remove. -2003-09-29 Katsumi Yamaoka +2004-01-23 Kevin Greiner - * gnus-topic.el (gnus-topic-goto-missing-topic): Revert 2003-02-09 - change in order to correct the position where an invisible topic - (because gnus-topic-display-empty-topics is nil) may be inserted. + * gnus-sum.el (gnus-adjust-marks): Now correctly handles a list of + marks consisting of a single range {for example, (3 . 5)} rather + than a list of a single range { ((3 . 5)) }. -2003-09-22 Katsumi Yamaoka +2004-01-23 Jesper Harder - * message.el (message-ignored-supersedes-headers): Add X-Payment. + * spam-stat.el (spam-stat-store-gnus-article-buffer): Use + with-current-buffer. + (spam-stat-store-current-buffer): Use insert-buffer-substring to + avoid consing a string. -2003-09-20 Jesper Harder + * mm-util.el (mm-charset-synonym-alist): Add ks_c_5601-1987. + Remove obsolete entries for big5 and gb2312. - * rfc2047.el (rfc2047-encode): Limit line length to 76 characters. +2004-01-22 Kevin Greiner -2003-09-20 Simon Josefsson + * gnus-sum.el (gnus-adjust-marks): Avoid splicing null INTO the + uncompressed list. - * tls.el (tls-process-connection-type): Doc fix. +2004-01-22 Jesper Harder - * imap.el (imap-starttls-open): Rewrite, should support both old - starttls.el and new starttls.el that uses GNUTLS. + * spam-stat.el (spam-stat-strip-xref): New function. + (spam-stat-process-directory): Use it. -2003-09-18 Katsumi Yamaoka + * gnus-util.el (gnus-fetch-field): Don't bind case-fold-search + here -- it's done in message-fetch-field. - * gnus-art.el (gnus-treat-display-x-face): Use set-default instead - of custom-set-default which isn't available in old XEmacsen. +2004-01-21 Kevin Greiner -2003-09-17 Jesper Harder + * gnus-agent.el (gnus-agent-queue-mail, + gnus-agent-prompt-send-queue): New variables. + (gnus-agent-send-mail): Use gnus-agent-queue-mail. + * gnus-draft.el (gnus-group-send-queue): Pass the group name + "nndraft:queue" along to gnus-draft-send. Use + gnus-agent-prompt-send-queue. + (gnus-draft-send): Rebind gnus-agent-queue-mail to nil when group + is "nndraft:queue". Suggested by Gaute Strokkenes + - * gnus-msg.el (gnus-summary-resend-message-edit): Don't convert - to MML. MIME -> MML -> MIME does not work for PGP/MIME. + * gnus-agent.el (agent-disable-undownloaded-faces): Removed + (agent-enable-undownloaded-faces): Added + (gnus-agent-cat-groups): Use eval-and-compile, not + eval-when-compile, to define gnus-agent-set-cat-groups as the setf + method of gnus-agent-cat-groups even when the buffer has been + evaled. + (gnus-agent-save-active,gnus-agent-save-active-1): Merged to + delete gnus-agent-save-active-1. + (gnus-agent-save-groups): Deleted. Identical to + gnus-agent-save-active. + (gnus-agent-write-active): No longer adjust agent's copy of active + file as agent's adjustments are now stored in their own + file. Removed optional parameter. + (gnus-agent-possibly-alter-active): Ignore groups of unagentized + servers. Add use of min/max range limits from server's local + file. + (gnus-agent-save-alist): Removed unused optional argument. + (gnus-agent-load-local,gnus-agent-read-and-cache-local), + (gnus-agent-read-local,gnus-agent-save-local,gnus-agent-get-local), + (gnus-agent-set-local): A per-server file that keeps min/max range + limits for articles known to the agent. Provides a fast mechanism + for altering many active ranges. + (gnus-agent-expire-group,gnus-agent-expire): No longer save the + active file (local makes it unnecessary). + (gnus-agent-regenerate-group): Fixed XEmacs compatibility. + + * gnus-cus.el (agent-disable-undownloaded-faces): Removed + (agent-enable-undownloaded-faces): Added + + * gnus-draft.el (gnus-draft-send): Bind gnus-agent-queue-mail to + disable it when sending to "nndraft:queue". + (gnus-group-send-queue): Add safety check to avoid sending queue + when unplugged. + + * gnus-group.el (gnus-group-catchup): Use new + gnus-sequence-of-unread-articles, not + gnus-list-of-unread-articles, to avoid exhausting memory with huge + numbers of articles. Use gnus-range-map to avoid having to + uncompress the unread list. + (gnus-group-archive-directory, + gnus-group-recent-archive-directory): Fixed invalid ange-ftp + reference. - * message.el (message-bounce, message-forward-show-mml): do. + * gnus-range.el (gnus-range-map): Iterate over list or sequence. + (gnus-sorted-range-intersection): Intersection of two ranges + without requiring that they first be uncompressed. + + * gnus-start.el (gnus-activate-group): Unless blocked by the + caller, possibly expand the active range to include both cached + and agentized articles. + (gnus-convert-old-newsrc): Rewrote in anticipation of having + multiple version-dependent converters. + (gnus-groups-to-gnus-format): Replaced gnus-agent-save-groups with + gnus-agent-save-active. + (gnus-save-newsrc-file): Save dirty agent range limits. + + * gnus-sum.el (gnus-select-newgroup): Replaced inline code with + gnus-agent-possibly-alter-active. + (gnus-adjust-marked-articles): Faster handling of simple lists -2003-09-13 Jesper Harder - - * rfc2047.el (rfc2047-charset-encoding-alist): Add viscii. - (rfc2047-encode): Add factors for big5, gb2312 and euc-kr. - - * nnweb.el (nnweb-google-parse-1): Fix parsing. - -2003-09-12 Jesper Harder - - * gnus-group.el (gnus-group-fetch-control): ISC changed - compression from .Z to .gz. - - * rfc2047.el (rfc2047-header-encoding-alist): Add "Approved" to - address-mime. - -2003-09-11 Jesper Harder - - * rfc2047.el (rfc2047-encode): Restrict encoded-words to 75 - characters. - -2003-09-10 Jesper Harder - - * gnus.el (gnus-group-charter-alist): Update. - -2003-09-10 Teodor Zlatanov - - * spam-report.el: use mm-url.el functions for external URL - loading when the built-in HTTP GET is insufficient (e.g. proxies - are in the way). From Eric Knauel - . - (spam-report-url-ping-function): new option, defaults to the - built-in HTTP GET (spam-report-url-ping-plain) - (spam-report-url-ping): calls spam-report-url-ping-function now - (spam-report-url-ping-plain): new function, does what - spam-report-url-ping used to do - (spam-report-url-ping-mm-url): function that delegates to - mm-url.el (autoloaded) - -2003-09-08 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-delete-id): function to - completely delete an ID, including all the cache hashtables - (gnus-registry-delete-group): use gnus-registry-delete-id - (gnus-registry-simplify-subject): only run if the argument is a - string, return nil otherwise - -2003-09-07 Jesper Harder - - * gnus-msg.el (gnus-summary-resend-bounced-mail): Docstring fix. - -2003-09-05 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-split-fancy-with-parent): yet - another error *sigh* - - * gnus-registry.el (gnus-registry-fetch-extra-entry): don't use - puthash unless gnus-registry-entry-caching is on - (gnus-registry-split-fancy-with-parent): misplaced parenthesis - made everything a part of the 'else' - (gnus-registry-save): used 'entry-caching' instead of 'caching' - -2003-09-05 Jesper Harder - - * gnus-art.el (gnus-button-alist): Improve Info regexp. - -2003-09-04 Teodor Zlatanov - - * gnus-registry.el: added brief explanation of basics - (gnus-registry-track-extra): new variable for tracking of message - subjects - (gnus-registry-entry-caching): caching parameter, used for extra - data - (gnus-registry-minimum-subject-length): minimum subject length - before it's considered when tracing subjects - (gnus-registry-save): accomodate extra data entry caching - (gnus-registry-action): change function name, add the subject and - pass it to gnus-registry-add-group - (gnus-registry-spool-action): change function name, add the - subject and pass it to gnus-registry-add-group - (gnus-registry-split-fancy-with-parent): add subject tracking - (gnus-registry-register-message-ids): pass subject to - gnus-registry-add-group - (gnus-registry-simplify-subject) - (gnus-registry-fetch-simplified-message-subject-fast): new - functions - (gnus-registry-fetch-extra, gnus-registry-fetch-extra-entry): add - extra data entry caching - (gnus-registry-add-group): handle the extra subject parameter - (gnus-registry-install-hooks, gnus-registry-unload-hook): fix the - gnus-register-* function names - - * nnmail.el (nnmail-cache-insert): add subject parameter, pass it - on to the nnmail-spool-hook - - * nnbabyl.el (nnbabyl-request-accept-article): added subject to - nnmail-cache-insert call - - * nndiary.el (nndiary-request-accept-article): added subject to - nnmail-cache-insert call - - * nnfolder.el (nnfolder-request-accept-article): added subject to - nnmail-cache-insert call - - * nnimap.el (nnimap-split-articles): added subject to - nnmail-cache-insert call - (nnimap-request-accept-article): added subject to - nnmail-cache-insert call - - * nnmbox.el (nnmbox-request-accept-article): added subject to - nnmail-cache-insert call - - * nnmh.el (nnmh-request-accept-article): added subject to - nnmail-cache-insert call - - * nnml.el (nnml-request-accept-article): added subject to - nnmail-cache-insert call - -2003-09-04 Jesper Harder - - * gnus-art.el (gnus-button-handle-info-url) - (gnus-button-handle-info-url-gnome) - (gnus-button-handle-info-url-kde, gnus-button-alist): Handle GNOME - and KDE style Info URLs. - - * gnus-util.el (gnus-url-unhex-string): Don't replace "+" with " ". - -2003-09-02 Jesper Harder - - * rfc2047.el (rfc2047-fold-region): Don't fold at the beginning - of the field. - -2003-09-01 Simon Josefsson - - * mml.el (mml-insert-mime-headers-always): New variable. - (mml-insert-mime-headers): Use it. Based on (tiny) patch from - Lars Balker Rasmussen . - -2003-08-30 Simon Josefsson - - * mail-source.el (mail-source-fetch-imap): Pass correct buffer to - imap-open, reverts 2003-03-17 change. Reverse remove before - calling gnus-compress-sequence. From Gaute Strokkenes - (tiny change). - -2003-08-29 Simon Josefsson - - * gnus-group.el (gnus-group-delete-group): Doc fix. Suggested by - Jochen K,A|(Bpper . - -2003-08-29 Katsumi Yamaoka - - * gnus-art.el (article-display-x-face): Make it possible to set - the gnus-article-x-face-command variable to the lambda form. - -2003-08-27 Simon Josefsson - - * mm-decode.el (mm-remove-part): Try to kill external displayers - cleanly first (if it refuses, C-g aborts loop and kill process - unconditionally). Also make sure process is dead before we remove - the files it may be using. Reported by David Coe - . +2004-01-21 Jesper Harder + + * spam-stat.el (spam-stat-test-directory): New optional argument + displays a list of files detected. Suggested by Andrew Cohen + . + (spam-stat-buffer-words-with-scores): Don't narrow and change + syntax table here. Reported by Andrew Cohen . + +2004-01-20 Teodor Zlatanov + + * spam.el (gnus-summary-mode-map): make spam-generic-score the + default scoring function + (spam-generic-score): calls spam-spamassassin-score if + spam-use-spamassassin or spam-use-spamassassin-headers is on; + spam-bogofilter-score otherwise. + + From Hubert Chan : + + * spam.el (spam-use-spamassassin, spam-use-spamassassin-headers) + (spam-install-hooks, spam-spamassassin, spam-spamassassin-path) + (spam-spamassassin-arguments) + (spam-spamassassin-spam-flag-header) + (spam-spamassassin-positive-spam-flag-header) + (spam-spamassassin-spam-status-header, spam-sa-learn-path) + (spam-sa-learn-rebuild, spam-sa-learn-spam-switch) + (spam-sa-learn-ham-switch, spam-sa-learn-unregister-switch) + (spam-list-of-processors, spam-list-of-checks) + (spam-list-of-statistical-checks, spam-registration-functions) + (spam-check-spamassassin-headers, spam-check-spamassassin) + (spam-spamassassin-score) + (spam-spamassassin-register-with-sa-learn) + (spam-spamassassin-register-spam-routine) + (spam-spamassassin-register-ham-routine) + (spam-assassin-register-spam-routine) + (spam-assassin-register-ham-routine): add SpamAssassin support + (spam-bogofilter-score): fix to show article before scoring + + * gnus.el (spam-process, spam-autodetect-methods): add + spamassassin and spamassassin-headers -2003-08-27 Jesper Harder - - * gnus-cache.el (gnus-cache-generate-active): Fix bug in - replacement. From Vagn Johansen (tiny - change). - -2003-08-25 Katsumi Yamaoka - - * gnus-art.el: Don't use defvaralias. - (gnus-treat-display-x-face): Warn if the obsolete variable - `gnus-treat-display-xface' exists. - -2003-08-25 Jesper Harder - - * gnus-art.el (gnus-treat-display-face): Fix typo. - (gnus-treat-display-xface): Rename to gnus-treat-display-x-face - (reported by Jochen K,A|(Bpper ) - -2003-08-24 Jesper Harder - - * gnus-art.el (gnus-header-button-alist, gnus-button-alist): Fix - type. - -2003-08-22 Jesper Harder - - * message.el (message-make-forward-subject-function): Fix - customize mismatch. - - * gnus.el (gnus-message-archive-method): do. - -2003-08-20 Reiner Steib - - * gnus.el (gnus-read-group): Offer to continue only if the invalid - char is `/' and add more information for the user. - - * gnus-art.el (gnus-button-alist): Add `+' (gnus-button-handle-man). - (gnus-header-button-alist): Added `In-Reply-To'. - - * nnimap.el (nnimap-open-connection): Allow different user names - on the same server (and in the same authinfo file). - -2003-08-20 Jesper Harder - - * gnus-sieve.el (gnus-sieve-crosspost): Fix type. - - * message.el (message-make-forward-subject-function): Add - message-forward-subject-name-subject to choices. - - * gnus-art.el (gnus-article-edit-done, gnus-article-edit-exit): - Redisplay article after editing. - -2003-08-20 Simon Josefsson - - * gnus.el (gnus-read-group): Added check to ask confirmation if - Group name contains invalid character. You can use '/' in IMAP, - but not in filenames. G m cannot know what the user is creating, - so let user decide. See thread m2oeysiev3.fsf@naima.lensflare.org. - Tiny patch from letters@hotpop.com (Jari Aalto+mail.linux). - -2003-08-13 Reiner Steib - - * gnus-score.el (gnus-summary-score-effect): Fix interactive use. - -2003-08-10 Teodor Zlatanov - - * gnus-draft.el (gnus-draft-send-all-messages): ask if all drafts - should be sent unless gnus-expert-user is on - -2003-08-09 Jesper Harder - - * pgg-gpg.el (pgg-gpg-extra-args): Fix customization type. - -2003-08-07 Jesper Harder - - * pgg-gpg.el (pgg-gpg-process-region): Bind - default-enable-multibyte-characters to nil. - -2003-08-07 Katsumi Yamaoka - - * canlock.el (canlock-password): Fix customization type. - (canlock-password-for-verify): Ditto. - * deuglify.el (gnus-outlook-deuglify-unwrap-min): Ditto. - (gnus-outlook-deuglify-unwrap-max): Ditto. - (gnus-outlook-deuglify-unwrap-stop-chars): Ditto. - * gnus-sum.el (gnus-sum-thread-tree-root): Ditto. - (gnus-sum-thread-tree-false-root): Ditto. - (gnus-sum-thread-tree-single-indent): Ditto. - * message.el (message-archive-note): Ditto. - (message-subscribed-address-file): Ditto. - (message-user-fqdn): Ditto. - * spam-report.el (spam-report-gmane-regex): Ditto. - * spam.el (spam-blackhole-good-server-regex): Ditto. - - * gnus-start.el (gnus-save-killed-list): Fix last change. - * message.el (message-courtesy-message): Ditto. - -2003-08-07 Jesper Harder - - * gnus-art.el (gnus-header-face-alist): Revert previous change. - (gnus-header-newsgroups-face): Explain that it's only used for - crossposts. - -2003-08-07 Katsumi Yamaoka - - * gnus-registry.el (gnus-registry-max-entries): Fix customization - type. - * gnus-score.el (gnus-adaptive-word-length-limit): Ditto. - * gnus.el (gnus-refer-article-method): Ditto. - * message.el (message-courtesy-message): Ditto. - -2003-08-06 Jesper Harder - - * gnus-art.el (gnus-header-face-alist): Fix "Newsgroups" entry. - From Chunyu Wang (tiny patch) - -2003-08-05 Katsumi Yamaoka - - * gnus-start.el (gnus-save-killed-list): Fix customization type. - * gnus-sum.el (gnus-thread-hide-subtree): Ditto. - * gnus.el (gnus-use-long-file-name): Ditto. - -2003-08-04 Jesper Harder - - * gnus-group.el (gnus-group-rename-group): Don't allow renaming to - an existing name. - - * gnus-sum.el (gnus-summary-highlight): Add uncached to docstring. - - * nnmail.el (nnmail-large-newsgroup): Docstring fix. - - * nntp.el (nntp-large-newsgroup): do. - - * nnspool.el (nnspool-large-newsgroup): do. - - * gnus-cus.el (gnus-group-parameters): Typo. - -2003-07-31 Simon Josefsson - - * mml-sec.el (mml-signencrypt-style-alist): Use separate S/MIME - method by default (revert partial 2003-07-10 patch). - -2003-07-28 Dave Love - - * pgg-gpg.el, pgg-pgp.el, pgg-pgp5.el: Require cl when compiling. - -2003-07-26 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-install): add an initial - registry read to the loading when gnus-registry-install is set - -2003-07-26 Kai Gro,A_(Bjohann - - * flow-fill.el (fill-flowed): Empty lines separate paragraphs - even if the preceding line ends with a soft break. Tiny patch - from Mark Thomas . - -2003-07-25 Teodor Zlatanov - - * spam.el (spam-use-regex-body, spam-regex-body-spam) - (spam-regex-body-ham): new variables, default to nil/empty/empty - (spam-install-hooks): added spam-use-regex-body to list or - pre-install conditions - (spam-list-of-checks): added spam-use-regex-body and - spam-check-regex-body to list of checks - (spam-list-of-statistical-checks): added spam-use-regex-body to - list of statistical checks - (spam-check-regex-body): invokes spam-check-regex-headers with - appropriate variable masking - (spam-check-regex-headers): changes to print "body" or "header" - where appropriate - -2003-07-25 Jesper Harder - - * smime.el (smime-ask-passphrase): Use read-passwd rather than - comint-read-noecho. The former is more secure. - -2003-07-24 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-cache-whitespace): make "adding - whitespace" message level 5 instead of 4 - (gnus-registry-clean-empty-function): new function to remove empty - registry entries - (gnus-registry-clean-empty): new variable to enable cleaning the - registry when saving it by calling gnus-registry-clean-empty-function - - * spam.el (spam-summary-prepare-exit): use spam-process-ham-in-spam-groups - (spam-process-ham-in-spam-groups): new variable - -2003-07-24 Jesper Harder - - * pgg-gpg.el (pgg-gpg-process-region): Add "--yes" to options. - - * pgg-gpg.el, pgg-pgp.el, pgg-pgp5.el, pgg.el: Reapply changes - from 2003-04-03 to fix security problem. See - http://www.debian.org/security/2003/dsa-339 - -2003-07-23 Teodor Zlatanov - - * gnus.el (gnus-install-group-spam-parameters): add the - gnus-ticked-mark to the possible choices of ham marks - - * spam.el (spam-process-ham-in-nonham-groups): new variable - (spam-summary-prepare-exit): use spam-process-ham-in-nonham-groups - -2003-07-23 Jesper Harder - - * rfc2047.el (rfc2047-header-encoding-alist): Add Mail-Followup-To - and Mail-Copies-To to address-mime. - (rfc2047-narrow-to-field): Use rfc2047-point-at-bol. - -2003-07-19 Jesper Harder - - * mm-util.el (mm-coding-system-priorities): Docstring improvement. - -2003-07-17 Jesper Harder + * gnus-registry.el (gnus-registry-split-fancy-with-parent): + Suppress unnecessary messages. From Nevin Kapur + . - * gnus-sum.el (gnus-thread-latest-date): Move condition-case to - the right place. +2004-01-20 Jesper Harder -2003-07-14 Simon Josefsson + * spam-stat.el (spam-stat-to-hash-table): Use :size keyword in + make-hash-table. - * mail-source.el (mail-source-fetch-imap): Don't assume - imap-error-text returns something. +2004-01-19 Katsumi Yamaoka -2003-07-12 Nevin Kapur + * canlock.el (base64-encode-string): Don't autoload it. - * nnimap.el (nnimap-request-newgroups): Use the pattern in - nnimap-list-pattern instead of "*". +2004-01-16 Katsumi Yamaoka -2003-07-10 Simon Josefsson + * run-at-time.el: Remove useless (require 'itimer), + eval-and-compile and (featurep 'xemacs). - * mml-sec.el (mml-signencrypt-style-alist): Use "combined" by - default. Improve docstring. +2004-01-16 Jesper Harder -2003-07-10 Kai Gro,A_(Bjohann + * gnus-msg.el (gnus-post-news): Use blank Newsgroups line if + GROUP is a virtual group. - * imap.el (imap-arrival-filter): Fix test for missing process - buffer. +2004-01-16 Steve Youngs -2003-07-09 Kai Gro,A_(Bjohann - From Gaute B Strokkenes (tiny patch). + * gnus.el: Autoload `message-y-or-n-p'. - * imap.el (imap-wait-for-tag): Clarify comment. Use timeout zero - for second, after-process-has-died, accept-process-output. - (imap-arrival-filter): If PROC has no buffer, do nothing. +2004-01-15 Jesper Harder -2003-07-09 Jesper Harder + * pgg-parse.el: Remove unnecessary (require 'custom). - * flow-fill.el: Docstring and message fixes. + * pgg-def.el: do. - * deuglify.el: do. + * nnmail.el: do. - * gnus-int.el: do. + * gnus-undo.el: do. - * gnus-msg.el: do. + * gnus-picon.el: do. * gnus-util.el: do. - * gnus-draft.el: do. - - * gnus-start.el: do. - - * gnus.el: do. - - * gnus-group.el: do. - - * gnus-art.el: do. - - * gnus-sum.el: do. - - * mail-source.el (mail-source-movemail): Handle non-numerical - return values. - -2003-07-08 Jesper Harder - - * mailcap.el (mailcap-parse-args-syntax-table) - (mailcap-viewer-passes-test): Docstring fix. - - * mm-bodies.el (mm-long-lines-p): Docstring fix. - - * mm-decode.el (mm-w3m-safe-url-regexp, mm-verify-option) - (mm-decrypt-option, mm-handle-set-external-undisplayer) - (mm-file-name-replace-whitespace): Docstring fix. - - * mm-uu.el (mm-uu-emacs-sources-regexp): Docstring fix. - (mm-uu-pgp-signed-test): Fix message. - - * mml.el (mml-tweak-sexp-alist): Docstring fix. - (mml-parse-1, mml-insert-mime-headers): Fix message. - - * message.el (message-archive-header) - (message-subscribed-address-functions) - (message-subscribed-addresses, message-subscribed-regexps) - (message-canlock-generate) - (message-generate-new-buffer-clone-locals): Docstring fixes. - -2003-07-07 Kai Gro,A_(Bjohann - - * imap.el (imap-wait-for-tag): After the process has died, look - for more output still pending. From Gaute B Strokkenes - (tiny patch). - -2003-07-07 Teodor Zlatanov - - * spam.el (spam-bogofilter-score): redisplay article normally - after spam-bogofilter-score is called - -2003-07-06 Jesper Harder - - * message.el (message-send-mail-with-sendmail): Handle - non-numeric return values. - - * gnus-sum.el (gnus-print-buffer): Apply emphasis. - From Michael Piotrowski (tiny change). - - * gnus-start.el (gnus-clear-system): Revert change from - 2003-06-19. - -2003-07-04 Dave Love - - * rfc2047.el (rfc2047-q-encode-region): Exclude especials from - characters not encoded, and make the list more legible. +2004-01-15 Reiner Steib -2003-07-04 Jesper Harder + * gnus-sum.el (gnus-pick-line-number): Add autoload. - * message.el (message-make-from): Revert change from 2002-01-08. +2004-01-15 Katsumi Yamaoka -2003-06-29 Lars Magne Ingebrigtsen + * mm-decode.el (mm-multiple-handles): Recognize a string as a mime + handle, as well as a list. - * nnheader.el (nnheader-init-server-buffer): Don't add - nntp-server-buffer to list of Gnus buffers. + * mm-view.el (mm-w3m-cid-retrieve-1): Call itself recursively. + Suggested by ARISAWA Akihiro . + (mm-w3m-cid-retrieve): Simplify. -2003-06-25 Teodor Zlatanov +2004-01-14 Kai Grossjohann - * spam.el (spam-parse-list): prevent empty ("") strings + * message.el (message-kill-to-signature): Allow prefix arg to + specify number of lines to keep before signature. From Vasily + Korytov. + (message-kill-to-signature): Change docstring. -2003-06-24 Teodor Zlatanov +2004-01-14 Katsumi Yamaoka - * spam.el (spam-parse-list): use gnus-extract-address-components - instead of ietf-drums-parse-addresses - (spam-from-listed-p): let* was unnecessary + * canlock.el: Always require sha1-el. + (canlock-sha1): Bind sha1-maximum-internal-length to nil. -2003-06-24 Lars Magne Ingebrigtsen + * message.el: Autoload sha1 only when compiling. - * gnus-ems.el (gnus-put-image): Mark the right text segment with - gnus-image-category. + * lpath.el: Bind eudc-protocol for both Emacs and XEmacs; fbind + eudc-expand-inline for XEmacs. - * gnus-srvr.el (gnus-browse-unsubscribe-group): Strip prefix from - native groups. +2004-01-13 Katsumi Yamaoka - * gnus-topic.el (gnus-group-prepare-topics): Update topic line - format specs. + * message.el (message-canlock-generate): Require sha1-el. - * gnus-picon.el: Written by moi, moi, moi. +2004-01-13 Jesper Harder - * gnus-group.el (gnus-group-kill-group): Clean up. + * message.el (message-expand-name): Silence the byte compiler. -2003-06-23 Teodor Zlatanov + * lpath.el: Add detect-coding-system. - * spam.el (spam-from-listed-p, spam-parse-list): use - ietf-drums-parse-addresses to extract the address portion of the - whitelist/blacklist file if it looks like an address can be found + * dgnushack.el (dgnushack-compile): Remove obsolete check for + cus-edit. -2003-06-23 Didier Verna +2004-01-13 Simon Josefsson - * gnus-ems.el (gnus-put-image): New argument CATEGORY. Add it as a - text property. - (gnus-remove-image): New argument CATEGORY. Only remove if - category matches. - * gnus-xmas.el (gnus-xmas-put-image): - (gnus-xmas-remove-image): Ditto, with extents. - * gnus-art.el (gnus-delete-images): Pass CATEGORY argument to - gnus-[xmas-]remove-image. - (article-display-face): Don't always act as a toggle. Call - `gnus-put-image' with CATEGORY argument. - (article-display-x-face): Call `gnus-put-image' with CATEGORY - argument. - * smiley.el (smiley-region): Ditto. - * gnus-fun.el (gnus-display-x-face-in-from): Ditto. - * gnus-picon.el (gnus-picon-insert-glyph): Ditto. - (gnus-treat-mail-picon): Don't always act as a toggle. - * gnus-picon.el (gnus-treat-newsgroups-picon): Ditto. + * gnus-score.el (gnus-score-edit-all-score): Fix prototype. + Invoke gnus-score-mode. Reported by + bojohan+news@dd.chalmers.se (Johan Bockg,Ae(Brd). -2003-06-23 Didier Verna + * gnus-range.el (gnus-compress-sequence): Doc fix. Suggested by + Jim Blandy (tiny change). - * gnus-art.el (article-display-face): Check for existence of the - original article buffer before switching to it. +2004-01-12 Jesper Harder -2003-06-20 Jesper Harder + * gnus-srvr.el (gnus-browse-foreign-server): Reduce consing. - * mm-util.el (mm-append-to-file): Say "Appended to". Suggested by - Dan Jacobson . +2004-01-12 Teodor Zlatanov - * mm-view.el (mm-inline-message): Bind - gnus-original-article-buffer to the buffer in the mml handle - holding the message. + * spam.el (spam-get-article-as-string): updated to use + gnus-request-article-this-buffer, much simpler + (spam-get-article-as-buffer): removed -2003-06-20 Katsumi Yamaoka +2004-01-12 Kai Grossjohann - * message.el (sender, from): No need to bind them. + * message.el (message-expand-name): Use EUDC if the user uses + that. -2003-06-19 Teodor Zlatanov +2004-01-12 Jesper Harder - * spam.el (spam-enter-list): search-forward specified wrong - -2003-06-19 Lars Magne Ingebrigtsen - - * gnus-art.el: Comment fix. - -2003-06-20 Jesper Harder - - * gnus-msg.el (gnus-configure-posting-styles): Remove unused - variable. From Jan Rychter . - - * spam.el (spam-spamoracle-learn): insert-string is obsolete. - -2003-06-19 Teodor Zlatanov - - * spam.el (spam-enter-list): do not enter duplicate addresses into - the whitelist/blacklist - -2003-06-19 Jesper Harder + * rfc2047.el (rfc2047-parse-and-decode, rfc2047-decode): Use a + character for the encoding to avoid consing a string. + + * rfc2047.el (rfc2047-decode-string): Don't cons a string + unnecessarily. - * nnheader.el (nnheader-init-server-buffer): Add - nntp-server-buffer to gnus-buffers. + * mm-util.el (mm-replace-chars-in-string): Remove. - * gnus-start.el (gnus-clear-system): Now we don't need to kill - nntp-server-buffer separately. + * rfc2047.el (rfc2047-decode): Use mm-subst-char-in-string instead + of mm-replace-chars-in-string. -2003-06-18 Didier Verna +2004-01-11 Jesper Harder - * gnus-art.el (article-display-face): Correctly toggle between - display and hiding. Handle multiple Face headers. + * gnus.sum.el (gnus-remove-odd-characters): Don't cons two new + strings. -2003-06-17 Dave Love + * mm-util.el (mm-subst-char-in-string): Support inplace. - * nnimap.el: Require cl when compiling. + * gnus-sum.el (gnus-summary-remove-list-identifiers): Don't cons + a new string in every iteration. Use shy groups. - * message.el (message-fix-before-sending): Reinstate nullifying - the invisible text property. - (sender, from): Defvar when compiling. - (message-is-yours-p): Remove autoload cookie. +2004-01-10 Jesper Harder -2003-06-17 Reiner Steib + * gnus-start.el (gnus-subscribe-newsgroup, gnus-start-draft-setup) + (gnus-group-change-level, gnus-kill-newsgroup) + (gnus-check-bogus-newsgroups, gnus-get-unread-articles-in-group) + (gnus-get-unread-articles, gnus-make-articles-unread) + (gnus-make-ascending-articles-unread): Use accessor + macros (gnus-group-entry, gnus-group-unread, gnus-info-marks etc.) + to get group information for improved readability. - * gnus-util.el (gnus-extract-address-components): Added - doc-string. + * gnus-srvr.el (gnus-browse-unsubscribe-group): do. -2003-06-16 Kai Gro,A_(Bjohann + * gnus-soup.el (gnus-soup-group-brew): do. - * nnml.el (nnml-current-group-article-to-file-alist): Don't read - overview when using compressed files. From Michael Albinus - . + * gnus-msg.el (gnus-put-message): do. -2003-06-16 Katsumi Yamaoka + * gnus-move.el (gnus-group-move-group-to-server): do. - * gnus-sum.el (gnus-summary-refer-parent-article): Extract - Message-ID from In-Reply-To header. + * gnus-kill.el (gnus-batch-score): do. -2003-06-16 Katsumi Yamaoka + * gnus-group.el (gnus-group-prepare-flat, gnus-group-delete-group) + (gnus-group-update-group-line, gnus-group-insert-group-line-info) + (gnus-group-update-group, gnus-group-read-group) + (gnus-group-make-group, gnus-group-make-help-group) + (gnus-group-make-archive-group, gnus-group-make-directory-group) + (gnus-group-make-empty-virtual, gnus-group-sort-selected-flat) + (gnus-group-sort-by-unread, gnus-group-catchup) + (gnus-group-unsubscribe-group, gnus-group-kill-group) + (gnus-group-yank-group, gnus-group-set-info) + (gnus-group-list-groups): do. - * message.el (message-is-yours-p): Narrow to head; extract from - and sender by itself. - (message-cancel-news, message-supersede): Remove useless things. + * gnus.el (gnus-generate-new-group-name): do. -2003-06-15 Reiner Steib + * gnus-delay.el (gnus-delay-send-queue): do. - * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Bind - `gnus-article-emulate-mime'. + * nnvirtual.el (nnvirtual-catchup-group): do. -2003-06-15 Kai Gro,A_(Bjohann - From Tommi Vainikainen . + * nnkiboze.el (nnkiboze-generate-group, nnkiboze-generate-group): + do. - * message.el (message-is-yours-p): New function. Separated common - code from message-cancel-news and message-supersede. Added - matching code which uses message-alternative-emails regexp as last - resort. - (message-cancel-news, message-supersede): Use message-is-yours-p. + * gnus-topic.el (gnus-topic-find-groups, gnus-topic-clean-alist) + (gnus-group-prepare-topics, gnus-topic-check-topology): do. + + * gnus-sum.el (gnus-update-read-articles, gnus-select-newsgroup) + (gnus-mark-xrefs-as-read, gnus-compute-read-articles) + (gnus-summary-walk-group-buffer, gnus-summary-move-article) + (gnus-group-make-articles-read): do. + +2004-01-09 Jesper Harder -2003-06-13 Kai Gro,A_(Bjohann + * gnus-art.el (article-decode-mime-words, article-babel) + (gnus-article-highlight-signature, gnus-article-add-buttons) + (gnus-signature-toggle): Use gnus-with-article-buffer. + + * gnus-art.el (gnus-article-highlight-headers) + (gnus-article-add-buttons-to-head): Use gnus-with-article-headers. + + * gnus-art.el (gnus-mm-display-part, gnus-article-wash-status) + (gnus-article-set-globals, gnus-request-article-this-buffer) + (gnus-button-message-id, gnus-article-maybe-hide-headers) + (gnus-mime-view-part-externally, gnus-mime-view-part-internally) + (gnus-mime-display-alternative): Use with-current-buffer. - * nnimap.el (nnimap-split-articles): Narrow the right buffer to - the headers. From Niklas Morberg . +2004-01-09 Teodor Zlatanov -2003-06-12 Dave Love + * spam.el (spam-generate-fake-headers): rewrite to be simpler, + also under 80 char limit, and call gnus-error if needed + (spam-fetch-article-header): finally fixed - it was a + buffer-local variable (gnus-newsgroup-data) + (spam-find-spam): use spam-generate-fake-headers, forget about + spam-insert-fake-headers + (spam-insert-fake-headers): removed - * nnheader.el (nnheader-functionp): Deleted. +2004-01-09 Jesper Harder - * nnmail.el (nnmail-split-fancy-syntax-table): Define all in - defvar. - (nnmail-version): Deleted. - (nnmail-check-duplication, nnmail-expiry-target-group): Don't use - nnheader-functionp. + * deuglify.el (gnus-article-outlook-unwrap-lines) + (gnus-outlook-rearrange-article) + (gnus-outlook-repair-attribution-outlook) + (gnus-outlook-repair-attribution-block) + (gnus-outlook-repair-attribution-other): Remove redundant + save-excursion. -2003-06-10 Teodor Zlatanov +2004-01-09 Teodor Zlatanov - * spam.el (spam-check-bogofilter-headers): fix for when the score - is requested but the message is not spam + * spam.el (spam-fetch-field-fast, spam-fetch-field-from-fast) + (spam-fetch-field-subject-fast) + (spam-fetch-field-message-id-fast, spam-generate-fake-headers) + (spam-fetch-article-header): new functions to deal with Gnus + internals for fast retrieval of article header data + (spam-initialize): put spam-find-spam in the gnus-summary-prepared-hook -2003-06-09 Teodor Zlatanov - From Eric - +2004-01-09 Jesper Harder - * spam.el (spam-use-spamoracle): new variable - (spam-install-hooks): add spamoracle to the list of conditions - for activation of spam-install-hooks - (spam-spamoracle): new variable customization group - (spam-spamoracle, spam-spamoracle): new variables - (spam-group-spam-processor-spamoracle-p) - (spam-group-ham-processor-spamoracle-p): new functions - (spam-summary-prepare-exit): added spamoracle ham/spam exit processing - (spam-list-of-checks, spam-list-of-statistical-checks): add - spam-use-spamoracle - (spam-check-spamoracle, spam-spamoracle-learn) - (spam-spamoracle-learn-ham, spam-spamoracle-learn-spam): new functions + * pop3.el (pop3-md5): Remove. + (pop3-apop): Replace pop3-md5 with md5. - * gnus.el (gnus-group-spam-exit-processor-spamoracle) - (gnus-group-ham-exit-processor-spamoracle): new variables for SpamOracle - (spam-process, ham-process): added spamoracle spam/ham processors + * mm-bodies.el: base64 is always built-in. -2003-06-08 Jesper Harder + * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Use + with-current-buffer. - * message.el (message-beginning-of-line): Docstring improvement. - Suggested by Michael R. Wolf +2004-01-08 Katsumi Yamaoka -2003-06-07 Lars Magne Ingebrigtsen + * canlock.el (canlock-insert-header): Remove excessive grouping in + regexp. - * gnus-sum.el (gnus-summary-make-menu-bar): Removed ["Add buttons" - gnus-summary-display-buttonized t] + * gnus-sum.el (gnus-summary-read-document): Ditto. -2003-06-07 Kai Gro,A_(Bjohann + * gnus-uu.el (gnus-uu-part-number): Ditto. - * nnmail.el (nnmail-split-fancy-match-partial-words): Doc string - fix. Reported by Johan Bockg,Ae(Brd . + * html2text.el (html2text-remove-tags): Ditto. + (html2text-format-tags): Ditto. + (html2text-format-single-elements): Ditto. -2003-06-07 Jesper Harder + * mml.el (mml-parse-1): Ditto. - * message.el (message-beginning-of-line): Docstring improvement. +2004-01-08 Jesper Harder -2003-06-06 Jesper Harder + * gnus-sum.el (gnus-summary-update-mark): Revert previous change. - * gnus-srvr.el (gnus-browse-foreign-server): Parse garbage NNTP - groups correctly. + * gnus-group.el (gnus-group-mark-group): Fix for multibyte marks. -2003-06-06 Kai Gro,A_(Bjohann - From Benjamin Rutt . + * gnus-sum.el (gnus-summary-update-mark): Fix for multibyte marks. - * message.el (message-fetch-field): Augment documentation to state - the narrowed-to-headers restriction. - (message-change-subject, message-reduce-to-to-cc) - (message-generate-unsubscribed-mail-followup-to) - (message-insert-importance-high, message-insert-importance-low) - (message-insert-or-toggle-importance) - (message-insert-disposition-notification-to): Narrow to headers - before calling message-fetch-field or message-remove-header. + * gnus-util.el (gnus-replace-in-string): Remove Emacs 20 code. -2003-06-06 Teodor Zlatanov +2003-11-15 Simon Josefsson - * gnus-registry.el (gnus-registry-trim): fix for when - gnus-registry-max-entries is nil + * pgg-gpg.el (pgg-gpg-lookup-all-secret-keys) + (pgg-gpg-lookup-key): Use regexp match instead of + split-string (split-string is different between emacs 21.2 and + 21.4). Reported by ultrasoul@ultrasoul.com (David D. Smith). -2003-06-05 Lars Magne Ingebrigtsen +2004-01-08 Jesper Harder - * qp.el (quoted-printable-decode-region): Don't error out on - malformed text. + * gnus-art.el (gnus-mime-view-all-parts) + (gnus-article-part-wrapper, gnus-article-view-part): Use + with-current-buffer. -2003-06-04 Lars Magne Ingebrigtsen +2004-01-07 Teodor Zlatanov - * rfc2047.el (rfc2047-encode-region): Don't error out on invalid - strings. + * spam.el (spam-disable-spam-split-during-ham-respool) + (spam-spamoracle-database, spam-cache-lookups) + (spam-split-last-successful-check, spam-clear-cache, spam-xor) + (spam-group-ham-mark-p, spam-group-spam-mark-p) + (spam-group-ham-marks, spam-group-spam-marks) + (spam-group-spam-contents-p, spam-group-ham-contents-p) + (spam-list-of-processors, spam-list-of-statistical-checks): doc + fix, also add spam-use-blackholes to the statistical checks + (spam-fetch-field-fast): new interface to fetching fields, may + become a macro + (spam-fetch-field-from-fast, spam-fetch-field-subject-fast) + (spam-fetch-field-message-id-fast): use spam-fetch-field-fast + (spam-insert-fake-headers): fake an article when needed + (spam-find-spam): fake article when possible + (spam-check-blackholes, spam-check-BBDB, spam-from-listed-p) + (spam-check-bogofilter-headers): use message-fetch-field instead + of nnmail-fetch-field -2003-06-04 Jesper Harder +2004-01-07 Reiner Steib - * mml1991.el (mml1991-pgg-sign): Insert pgg output as unibyte. - From: Ivan Boldyrev (tiny - change) + * gnus-score.el (gnus-score-find-trace): Add `k' (kill-buffer). -2003-06-03 Dave Love +2004-01-07 Teodor Zlatanov - * gnus-soup.el (gnus-soup-send-packet): Don't use - message-functionp. + * spam.el (spam-split): do not require spam-use-CHECK to be + enabled if that check is passed to spam-split explicitly; also + fix so 'spam doesn't get converted to spam-split-group when + spam-split-symbolic-return is t + (spam-find-spam): find registrations of the article and use those + instead of re-running spam-split to find the spam/ham + classification of the article + (spam-log-processing-to-registry, spam-log-registered-p) + (spam-log-unregistration-needed-p, spam-log-undo-registration): + use gnus-error instead of gnus-message + (spam-log-registration-type): new function to determine the + classification of a message based on registry entries; will + return nil if both 'spam and 'ham are found + (spam-check-BBDB): expand all the BBDB macros here so we can have + a reasonably fast local cache without the loading errors + (spam-cache-lookups): set to t by default + (spam-find-spam): don't try to guess spam-cache-lookups + (spam-enter-whitelist, spam-enter-blacklist): also clear the + spam-caches entry + (spam-filelist-build-cache, spam-filelist-check-cache): better + caching of whitelist/blacklist entries + (spam-check-whitelist, spam-check-blacklist): invoke + spam-from-listed-p with a type, not a cache variable + (spam-from-listed-p): wrap around spam-filelist-check-cache + +2004-01-07 Jesper Harder + + * message.el (message-cite-prefix-regexp): Use with-syntax-table. + + * nnmail.el (nnmail-split-fancy): do. + + * mml.el (mml-parse): do. + + * gnus-score.el (gnus-enter-score-words-into-hashtb) + (gnus-score-adaptive): do. + +2004-01-07 Katsumi Yamaoka + + * gnus-art.el (gnus-treat-emphasize): Ignore Emacs version number. + (gnus-mime-button-map): Don't set keymap parent. + (gnus-button-ctan-directory-regexp): Use shy grouping. + (gnus-prev-page-map): Don't set keymap parent. + (gnus-prev-page-map): Remove duplicated one. + (gnus-next-page-map): Don't set keymap parent. + (gnus-mime-security-button-map): Ditto. + + * nnheader.el (nnheader-directory-files-is-safe): Ignore Emacs + version number. + + * sha1-el.el (sha1-string-external): Use with-temp-buffer. + +2004-01-07 Katsumi Yamaoka + + * canlock.el (canlock-sha1-function): Remove. + (canlock-sha1-function-for-verify): Remove. + (canlock-openssl-program): Remove. + (canlock-openssl-args): Remove. + (canlock-ignore-errors): Remove. + (canlock-sha1-with-openssl): Remove. + (canlock-sha1): Use sha1 instead of to call canlock-sha1-function. + (canlock-verify): Don't use canlock-ignore-errors. + + * sha1-el.el (sha1-string-external): Make it can return a string + in binary form. + (sha1-region-external): Ditto. + (sha1-string-internal): Ditto. + (sha1-region-internal): Ditto. + (sha1-region): Ditto. + (sha1-string): Ditto. + (sha1): Ditto. - * gnus.el (gnus-agent-cache): Doc fix. - (gnus-other-frame): Quote lambda used as hook. +2004-01-07 Lars Magne Ingebrigtsen - * message.el: Doc fixes. - (message-functionp): Deleted. Callers changed. - (message-fix-before-sending): Highlight with overlays. Clarify - `illegible text' messages. - (rmail-enable-mime-composing, gnus-message-group-art): Defvar when - compiling. - (gnus-find-method-for-group, nnvirtual-find-group-art): Autoload. + * spam.el (spam-report-articles-gmane): New command. -2003-06-03 Kai Gro,A_(Bjohann +2004-01-07 Katsumi Yamaoka - * nnmail.el (nnmail-split-fancy-match-partial-words): New user - option. - (nnmail-split-it): Obey it. Don't let-bind regexp twice. + * gnus.el: Don't make unnecessary *Group* buffer when loading. - * message.el (message-fetch-field): Mention narrow-to-headers - requirement. + * run-at-time.el (run-at-time-saved): Remove. + (run-at-time): Doc fix. -2003-06-03 Jesper Harder +2004-01-07 Jesper Harder - * gnus-xmas.el (gnus-xmas-create-image): Use - insert-file-contents-literally. From: Eric Eide - + * gnus-sum.el (gnus-summary-limit-to-replied): New command. + (gnus-summary-limit-map): Add it. + (gnus-summary-make-menu-bar): do. -2003-06-02 Teodor Zlatanov +2004-01-06 Teodor Zlatanov - * gnus-registry.el (gnus-registry-fetch-group): always return the - short name of the group + * spam.el (spam-cache-lookups, spam-caches, spam-clear-cache): + first attempt at some caching support (done for BBDB only now) + (spam-find-spam): set spam-cache-lookups if there are more than 2 + addresses to be checked + (spam-clear-cache-BBDB): new function, to be invoked by + bbdb-change-hook, and triggering spam-clear-cache of 'spam-use-BBDB + (spam-check-BBDB): check and use the caches, if + spam-cache-lookups is on + remove superfluous (provide) -2003-06-02 Jesper Harder +2004-01-06 Reiner Steib - * gnus-cus.el (defvar): Silence byte-compiler warnings. + * gnus-art.el (gnus-treat-ansi-sequences): Changed default. - * gnus-sum.el (gnus-get-newsgroup-headers): Unfold headers. +2004-01-07 Steve Youngs -2003-05-31 Jesper Harder + * run-at-time.el (run-at-time-saved): Move to after the definition + of `run-at-time'. - * gnus-art.el (article-unsplit-urls): Use gnus-treat-article - rather than gnus-display-mime-function. + * dgnushack.el: Autoload `font-lock-fontify-buffer' in XEmacs. -2003-05-30 Teodor Zlatanov +2004-01-06 Katsumi Yamaoka - * gnus-registry.el (gnus-registry-use-long-group-names): new variable - (gnus-registry-add-group): use it - (gnus-registry-trim-articles-without-groups): new variable - (gnus-registry-delete-group): use it - (gnus-registry-unload-hook): uninstall all the hooks + * gnus-art.el (gnus-article-wash-html-with-w3m): Don't use + mm-w3m-local-map-property. - * spam.el (spam-install-hooks-function, spam-unload-hook): new - functions so users that load spam.el for customization don't get - all the hooks installed - (spam-install-hooks): new variable, set to t by default if user - has one of the spam-use-* variables set + * mm-view.el (mm-w3m-mode-map): Remove. + (mm-w3m-local-map-property): Remove. + (mm-inline-text-html-render-with-w3m): Don't use + mm-w3m-local-map-property. - * spam-stat.el (spam-stat-install-hooks, spam-stat-unload-hook): new - functions so users that load spam-stat.el for customization don't get - all the hooks installed +2004-01-06 Lars Magne Ingebrigtsen -2003-05-30 Dave Love + * run-at-time.el: New file. - * rfc2047.el (rfc2047-decode): Don't use - mm-with-unibyte-current-buffer. + * dgnushack.el (dgnushack-compile): Don't compile run-at-time + under Emacs. - * qp.el (quoted-printable-decode-string): Use - mm-with-unibyte-buffer. + * gnus.el ((fboundp 'gnus-set-text-properties)): Remove definition + of gnus-set-text-properties. -2003-05-29 Teodor Zlatanov + * gnus-uu.el (gnus-uu-save-article): Ditto. - * gnus-registry.el (gnus-registry-save): allow forced saving even - when registry is not dirty. Use gnus-registry-trim to shorten the - gnus-registry-alist. - (gnus-registry-max-entries): new variable - (gnus-registry-trim): new function, trim gnus-registry-alist to - size gnus-registry-max-entries, sorting by entry mtime so the - newest entries stick around + * gnus-salt.el (gnus-carpal-setup-buffer): Ditto. - * gnus-start.el (gnus-gnus-to-quick-newsrc-format): instead of - just one specific variable, allow a list of specific variables + * gnus-cite.el (gnus-cite-parse): Ditto. -2003-05-28 Dave Love + * gnus-art.el (gnus-button-push): Use set-text-properties instead + of gnus-. - * rfc2047.el (rfc2047-encode-region): Skip ASCII at beginning and - end of region. + * gnus-xmas.el (run-at-time): Require run-at-time. -2003-05-28 Jesper Harder + * gnus.el: Changed calls to nnheader-run-at-time and + password-run-at-time throughout to use run-at-time directly. - * lpath.el: Add put-char-table and get-char-table. + * password.el: Removed definition of run-at-time. -2003-05-28 Teodor Zlatanov + * nnheaderxm.el: Remove definition of run-at-time. - * gnus-registry.el (gnus-registry-dirty): flag for modified registry - (gnus-registry-save, gnus-registry-read) - (gnus-registry-store-extra, gnus-registry-clear): use it (note - that gnus-registry-store-extra is invoked for all modifications to - set the mtime, so gnus-registry-dirty only needs to be set there) +2004-01-05 Karl Pfl,Ad(Bsterer -2003-05-23 Simon Josefsson + * mml.el (mml-minibuffer-read-disposition): Show attachment type + in prompt (tiny change) - * mml1991.el (mml1991-pgg-sign): Use mml-sender instead of - message-sender. +2004-01-06 Steve Youngs - * gnus-art.el (gnus-use-idna): Check if idna-program is installed. + * messagexmas.el (message-xmas-redefine): Alias + `message-make-caesar-translation-table' to + ``message-xmas-make-caesar-translation-table' regardless of XEmacs + version. - * message.el (message-use-idna): Ditto. + * gnus-xmas.el (gnus-xmas-set-text-properties): Removed. + (gnus-xmas-define): Don't alias `gnus-set-text-properties' to + `gnus-xmas-set-text-properties'. + (gnus-xmas-redefine): Don't alias `gnus-completing-read' to + `gnus-xmas-completing-read'. + (gnus-xmas-completing-read): Removed. + (gnus-xmas-open-network-stream): Removed. -2003-05-20 Dave Love + * gnus-ems.el (gnus-mode-line-modified): Don't conditionalise on + XEmacs version. - * rfc2047.el (rfc2047-q-encoding-alist): Deleted. - (rfc2047-q-encode-region): Don't use it. - (rfc2047-encode-message-header) <(eq method 'mime)>: Bind - rfc2047-encoding-type to `mime'. - (rfc2047-encode-string, rfc2047-encode): Doc fix. + * dns.el (dns-make-network-process): Use `open-network-stream' + instead of `gnus-xmas-open-network-stream'. -2003-05-20 Jesper Harder + * dgnushack.el: Remove some XEmacs 21.1 specific stuff. - * message.el (message-send-mail): Don't insert a courtesy copy - notice in base64 encoded messages. + * .cvsignore: Add auto-autoloads.el, custom-load.el. -2003-05-16 Katsumi Yamaoka +2004-01-06 Jesper Harder - * gnus-sum.el (gnus-summary-move-article): Don't copy expirable - marks if the destination group is not auto-expirable. + * gnus-art.el (gnus-mime-display-alternative) + (gnus-insert-mime-button, gnus-insert-mime-security-button) + (gnus-insert-prev-page-button, gnus-insert-next-page-button): + Don't use gnus-local-map-property. -2003-05-14 Katsumi Yamaoka + * gnus-util.el (gnus-local-map-property): Remove. - * dgnushack.el (assq-delete-all): Removed the compiler macro. + * mm-view.el (mm-view-pkcs7-decrypt): Replace + gnus-completing-read-maybe-default with completing-read. -2003-05-14 Kevin Greiner + * gnus-util.el (gnus-completing-read): do. + (gnus-completing-read-maybe-default): Remove. - * gnus-agent.el (gnus-agentize): Updated documentation to match - usage. - (gnus-agent-expire-group-1): Do not skip over a group when the - force argument is set. - * gnus.el (gnus-agent): Updated documentation to reflect that - gnus-agent now defaults to t. +2004-01-06 Steve Youngs -2003-05-14 Lars Magne Ingebrigtsen + * password.el: Only autoload `run-at-time' if not XEmacs. + Only autoload the itimer functions if XEmacs. - * gnus.el (gnus-version-number): Bump. +2004-01-06 Katsumi Yamaoka -2003-05-14 Lars Magne Ingebrigtsen + * gnus-xmas.el (gnus-xmas-define): Defun char-width for non-MULE + XEmacsen. - * gnus.el: Gnus v5.10.2 is released. + * dgnushack.el: Autoload executable-find for XEmacs. -2003-05-14 Lars Magne Ingebrigtsen +2004-01-06 Jesper Harder - * mail-source.el (mail-source-delete-incoming): Changed to t. + * gnus-art.el (gnus-read-string): Remove. + (gnus-summary-pipe-to-muttprint): Replace gnus-read-string with + read-string. - * rfc2047.el (rfc2047-syntax-table): Funcall. +2004-01-05 Teodor Zlatanov - * lpath.el ((featurep 'xemacs)): Added set-char-table-range. - ((featurep 'xemacs)): No, don't. + * netrc.el: autoload password-read + (netrc): new configuration group + (netrc-encoding-method, netrc-openssl-path): configuration + variables for encoding and decoding of files with symmetric + ciphers + (netrc-encode): assistant function to encode a file with + netrc-encoding-method + (netrc-parse): added interactive parameter, added optional + decoding if netrc-encoding-method is non-nil but otherwise + behavior is standard + (netrc-encrypting-method, netrc-encrypt, netrc-parse): + s/encode/encrypt/ everywhere - * rfc2047.el (rfc2047-encodable-p): Use the header charset. + * spam.el: remove executable-find autoload - * gnus-sum.el (gnus-summary-reselect-current-group): Supply - leave-hidden. +2004-01-05 Jesper Harder -2003-05-14 Jonathan Kamens + * gnus-registry.el: Remove Emacs 20 hash table compatibility code. - * gnus-sum.el (gnus-summary-exit): Added `leave-hidden'. (Tiny - patch.) + * gnus-uu.el (gnus-uu-post-encoded): bury-buffer is always fbound. -2003-05-13 Lars Magne Ingebrigtsen +2004-01-05 Reiner Steib - * gnus-registry.el (gnus-registry-store-extra-entry): Use - gnus-assq-delete-all. + * gnus-art.el (gnus-treat-ansi-sequences, + article-treat-ansi-sequences): New variable and function. + Suggested by Dan Jacobson . - * gnus-xmas.el (gnus-xmas-assq-delete-all): New function. + * gnus-sum.el (gnus-summary-wash-map, gnus-summary-make-menu-bar): + Use it. - * message.el (message-ignored-bounced-headers): Add Delivered-To. +2004-01-05 Jesper Harder - * 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. + * mm-util.el (mm-quote-arg): Remove. - * 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. + * mm-decode.el (mm-mailcap-command): Replace mm-quote-arg with + shell-quote-argument. - * gnus-sum.el (gnus-summary-local-variables): Clean up. + * gnus-uu.el (gnus-uu-command): do. - * gnus-fun.el (gnus-display-x-face-in-from): Don't use centering - since none of the other image things do. + * gnus-sum.el (gnus-summary-insert-pseudos): do. -2003-05-13 Katsumi Yamaoka + * ietf-drums.el (ietf-drums-token-to-list): Replace mm-make-char + with make-char. - * dgnushack.el (assq-delete-all): New compiler macro for Emacs 20. + * mm-util.el (mm-make-char): Remove. -2003-05-12 Katsumi Yamaoka + * mml.el (mml-mode): Replace gnus-add-minor-mode with + add-minor-mode. - * lpath.el: Fbind find-coding-system. + * gnus-undo.el (gnus-undo-mode): do. - * dgnushack.el (dgnushack-make-load): Remove redundant format call - in message. Suggested by Yoichi NAKAYAMA . - * pop3.el (pop3-movemail): Ditto. + * gnus-topic.el (gnus-topic-mode): do. -2003-05-12 Colin Marquardt (tiny change) + * gnus-sum.el (gnus-dead-summary-mode): do. - * gnus.el (gnus-agent): Docstring fix. + * gnus-start.el (gnus-slave-mode): do. -2003-05-12 Teodor Zlatanov + * gnus-salt.el (gnus-binary-mode, gnus-pick-mode): do. - * gnus-registry.el (gnus-registry-install): new variable - (gnus-registry-fetch-extra, gnus-registry-fetch-extra-entry) - (gnus-registry-store-extra-entry, gnus-registry-delete-group) - (gnus-registry-add-group): add a modification timestamp to each entry - (gnus-registry-install-hooks): new function + * gnus-ml.el (gnus-mailing-list-mode): do. -2003-05-12 Kevin Greiner + * gnus-gl.el (gnus-grouplens-mode): do. - * gnus-agent.el (gnus-agent-cat-name): Eval macro while compiling. - (gnus-agent-cat-disable-undownloaded-faces): New function. - Accessor for new agent property - 'agent-disable-undownloaded-faces'. - gnus-cus.el (gnus-agent-parameters): Added - agent-disable-undownloaded-faces and corrected documentation. - (gnus-agent-cat-prepare-category-field, - gnus-agent-customize-category): Changed to avoid creating free - references to each field's symbol. - gnus-sum.el (gnus-summary-use-undownloaded-faces): New local variable. - (gnus-select-newgroup): Initialize it. - (gnus-summary-highlight-line): Use it. + * gnus-draft.el (gnus-draft-mode): do. -2003-05-12 Dave Love + * gnus-dired.el (gnus-dired-mode): do. - * mm-util.el (mm-read-charset): Deleted. - (mm-coding-system-mime-charset): New. - (mm-read-coding-system, mm-mule-charset-to-mime-charset) - (mm-charset-to-coding-system, mm-mime-charset) - (mm-find-mime-charset-region): Use it. - (mm-default-multibyte-p): Fix non-mule case. + * gnus-ems.el (gnus-add-minor-mode): Remove. - * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-bol): Eval - and compile. - (rfc2047-syntax-table): Fix building table to work in Emacs 22. - (rfc2047-unfold-region): Delete unused var `leading'. + * gnus-spec.el (gnus-correct-length, gnus-correct-substring): + Replace gnus-char-width with char-width. -2003-05-12 Simon Josefsson + * gnus-ems.el (gnus-char-width): Remove. - * pgg.el (pgg-temp-buffer-show-function): Reuse existing visible - output window if one is available. Tiny patch from Ville Skytt,Ad(B - . + * gnus-spec.el (gnus-correct-length, gnus-correct-substring): + Replace gnus-char-width with char-width. -2003-05-11 Lars Magne Ingebrigtsen + * gnus-ems.el (gnus-char-width): Remove. - * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Added - space. + * spam-stat.el (with-syntax-table): Remove with-syntax-table + definition. + Remove Emacs 20 hash table compatibility code. -2003-05-11 Jesper Harder + * rfc2047.el (with-syntax-table): Remove with-syntax-table Emacs + 20 compatibility code. - * gnus-sum.el (gnus-summary-enter-digest-group): Don't do article - washing etc. - (gnus-handle-ephemeral-exit): Don't reload article after exiting. + * spam.el (spam-point-at-eol): Replace with point-at-eol. - * nndoc.el (nndoc-type-alist): `mime-digest' should be before - `mime-parts'. + * smime.el (smime-point-at-eol): Replace with point-at-eol. -2003-05-10 Jesper Harder + * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-eol): Replace + with point-at-{eol,bol}. - * gnus-cite.el (gnus-article-hide-citation-maybe): Make toggling - work. Update mode-line. + * netrc.el (netrc-point-at-eol): Replace with point-at-eol. -2003-05-10 Lars Magne Ingebrigtsen + * imap.el (imap-point-at-eol): Replace with point-at-eol. - * gnus.el (gnus-logo-color-alist): Added no colours. + * flow-fill.el (fill-flowed-point-at-bol, + fill-flowed-point-at-eol): Replace with point-at-{eol,bol}. -2003-05-09 Dave Love + * gnus-util.el (gnus-point-at-bol, gnus-point-at-eol): Remove. + Replace with point-at-{eol,bol} throughout all files. - * utf7.el (mm-util): Require. - (utf7-direct-encoding-chars, utf7-imap-direct-encoding-chars): - Defconst, not defvar. - (utf7-utf-16-coding-system): New. - (utf7-encode-internal): Hoist concat out of loop. - (utf7-fragment-encode): Use mm-with-unibyte-current-buffer. - (utf7-get-u16char-converter) [utf7-utf-16-coding-system]: New - case. - (utf7-latin1-u16-char-converter): Encode the region. - (utf7-u16-latin1-char-converter): Decode the region. - (utf7-encode, utf7-decode): Fix multibyteness. +2004-01-05 Katsumi Yamaoka - * mm-bodies.el (mm-body-7-or-8): Don't special-case mule. - (mm-encode-body): Use mm-read-coding-system, not mm-read-charset. - (mm-uu-yenc-decode-function): Defvar when compiling. - (mm-encode-body, mm-decode-body): Doc fix. + * ntlm.el (ntlm-string-as-unibyte): New macro. + (ntlm-build-auth-response): Use it. -2003-05-09 Teodor Zlatanov + Remove Emacs 20 stuff: + * dgnushack.el (dgnushack-compile): Don't modify max-specpdl-size. + (butlast, mapc, remove): Remove the compiler macros. + * gnus-msg.el (gnus-summary-news-other-window): Use remove instead + of delq and copy-sequence. + * gnus-art.el (popup-menu): Remove the compiler macro. + * nnmail.el (nnmail-split-fancy): Don't support customizing with + Emacs 20. - * gnus-registry.el (gnus-registry-unregistered-group-regex): - removed in favor of the group/topic/global variables - (gnus-registry-register-message-ids): fixed test to omit - gnus-registry-unregistered-group-regex +2004-01-05 Simon Josefsson - * gnus.el (gnus-variable-list): removed gnus-registry-alist and - gnus-registry-headers-alist from the list - (gnus-registry-headers-alist): removed - (registry-ignore): new parameter, with accompanying - gnus-registry-ignored-groups global variable + * ntlm.el: Fix namespace. Change smb-passwd-hash into + ntlm-smb-passwd-hash, smb-owf-encrypt into ntlm-smb-owf-encrypt, + smb-passwd-hash into ntlm-smb-passwd-hash, smbdes-e-p16 into + ntlm-smb-des-e-p16, smbdes-e-p24 into ntlm-smb-des-e-p24, smbhash + into ntlm-smb-hash, smb-sp8 into ntlm-smb-sp8, smb-str-to-key into + ntlm-smb-str-to-key, smb-dohash into ntlm-smb-dohash, smb-perm1 + into ntlm-smb-perm1, smb-perm2 into ntlm-smb-perm2, smb-perm3 into + ntlm-smb-perm3, smb-perm4 into ntlm-smb-perm4, smb-perm5 into + ntlm-smb-perm5, smb-perm6 into ntlm-smb-perm6, smb-sc into + ntlm-smb-sc, smb-sbox into ntlm-smb-sbox, string-permute into + ntlm-string-permute, string-lshift into ntlm-string-lshift, + string-xor into ntlm-string-xor. Suggested by + Jesper Harder . - * gnus-start.el (gnus-clear-system): no need to clear the - registry, we can do it ourselves - (gnus-gnus-to-quick-newsrc-format): extra parameters so it can be - used by gnus-registry.el - - * gnus-registry.el (gnus-registry-cache-file): new file variable - (gnus-registry-cache-read, gnus-registry-cache-save): new - functions - (gnus-registry-cache-whitespace): new function. From Dan - Christensen - (gnus-registry-save, gnus-registry-read): use the new - gnus-registry-cache-{read|save} functions, and change the name - from gnus-registry-translate-{from|to}-alist - (gnus-registry-clear): fixed so it doesn't refer to old function name + * ntlm.el: Don't include poem. -2003-05-09 Jesper Harder + * md4.el (print-int32, print-string-hexa): Remove. Suggested by + Jesper Harder . - * gnus-picon.el (gnus-picon-transform-address): Parse the encoded - address. + * sasl-ntlm.el, ntlm.el, md4.el: New files. -2003-05-08 Teodor Zlatanov + * hmac-md5.el (md5-binary): Fix byte compile warning. (This + probably breaks emacs with DL patch, but do we care? Is anyone + still using the DL stuff?) - * gnus-start.el (gnus-clear-system): added gnus-registry-alist to - the list of cleared variables + * sieve-manage.el: Use the password package. + (sieve-manage-read-passwd): Remove. + (sieve-manage-interactive-login): Use password. Re-add + condition-case around loop. - * gnus-registry.el (gnus-registry-split-fancy-with-parent): - nnmail-split-fancy-with-parent-ignore-groups can be a single regex - in addition to a list of regexes. + * pgg.el (pgg-passphrase-cache, pgg-run-at-time): Remove. + (pgg-add-passphrase-cache, pgg-remove-passphrase-cache): Use + the password package. - * spam.el (spam-use-regex-headers): docstring fix. From Niklas - Morberg +2003-02-19 Simon Josefsson -2003-05-08 Kai Gro,A_(Bjohann + * sieve-manage.el (sieve-sasl-auth): Quote optional initial SASL + token. - * gnus-sum.el (gnus-summary-next-page): Mention - `gnus-article-skip-boring' in docstring. +2002-08-07 Simon Josefsson -2003-05-08 Jesper Harder + * sieve-manage.el (require): Use SASL, not RFC2104/MD5. + (sieve-manage-authenticators): + (sieve-manage-authenticator-alist): Add some SASL mechs. + (sieve-sasl-auth): New function. + (sieve-manage-cram-md5-auth): + (sieve-manage-plain-auth): Rewrite using SASL library. + (sieve-manage-digest-md5-p, sieve-manage-digest-md5-auth) + (sieve-manage-scram-md5-p, sieve-manage-scram-md5-auth) + (sieve-manage-ntlm-p, sieve-manage-ntlm-auth) + (sieve-manage-login-p, sieve-manage-login-auth): Add wrappers. - * rfc2231.el (rfc2231-parse-string): "=" should have whitespace - syntax here. +2004-01-05 Simon Josefsson - * ietf-drums.el (ietf-drums-syntax-table): "=" should not have - whitespace syntax class when parsing email addresses. + * sasl.el, sasl-cram.el, sasl-digest.el, hmac-md5.el, hmac-def.el: + New files. - * message.el (message-forward-subject-name-subject): Don't use - mail-decode-encoded-word-string before parsing from. +2004-01-04 Lars Magne Ingebrigtsen -2003-05-07 ShengHuo ZHU + * gnus-group.el (gnus-no-groups-message): Update. - * message.el (message-setup-1): Setup alternative email before - generate-headers. + * gnus-sum.el (gnus-summary-insert-new-articles): Remove . - (message-forward-subject-name-subject): Fix the case when the - field "from" doesn't exist. +2003-11-09 Simon Josefsson -2003-05-07 Dave Love + * imap.el: Support for ID IMAP extension (RFC 2971). + (imap-local-variables): Add imap-id. + (imap-id): New variable. + (imap-id): New function. + (imap-parse-response): Parse untagged ID response. + * nnimap.el (nnimap-id): New variable. + (nnimap-open-connection): Use it. - * rfc2047.el (rfc2047-encode-region): Skip \n as whitespace. +2003-12-28 Simon Josefsson - * mm-util.el (mm-find-mime-charset-region): Expurgate utf-16 from - possible values. + * gnus-score.el (gnus-score-edit-all-score): New. + * gnus-group.el (gnus-group-score-map): Bind it to W e. -2003-05-07 Jesper Harder +2004-01-04 Simon Josefsson - * message.el (message-kill-to-signature): Fix. + * password.el: Add. -2003-05-06 Jesper Harder +2004-01-04 Mario Lang - * gnus-sum.el (gnus-auto-goto-ignores): Docstring fix. + * dns.el: Add support for AAAA records (see RFC 3596) - * gnus-art.el (gnus-mime-display-multipart-as-mixed) - (gnus-mime-display-multipart-related-as-mixed) - (gnus-button-mid-or-mail-heuristic-alist): do. + * Fix typo PRT -> PTR -2003-05-05 Dave Love + * Parse MX, PTR and SOA replies (see RFC 1035) - * mm-util.el (mm-default-multibyte-p): New. - (mm-coding-system-p): Maybe use find-coding-systems. - -2003-05-04 Dave Love - - * rfc2047.el (with-syntax-table): Define if necessary. - (rfc2047-syntax-table): Fix last change for XEmacs. - (rfc2047-parse-and-decode): Revert last change. - -2003-05-03 Jesper Harder - - * gnus.el: Don't test for `mm-guess-mime-charset'. - - * mm-util.el (mm-guess-mime-charset): Remove. Not used any more. - - * gnus.el (gnus-default-charset): Set default value to - `undecided'. - - * gnus-art.el (article-decode-charset): Don't supply 4th arg to - mm-decode-body. - - * mm-bodies.el (mm-decode-coding-region-safely): Remove. - (mm-decode-body): Don't use mm-decode-coding-region-safely. - -2003-05-03 Vasily Korytov (tiny change) - - * gnus-util.el (gnus-multiple-choice): Add ", ?". - -2003-05-03 Dave Love - - * rfc2047.el (rfc2047-syntax-table): Don't call make-char-table - with 2 args. - (rfc2047-decode-string): Don't set the buffer multibyte before - calling buffer-string. - - * mm-encode.el (mm-long-lines-p): Autoload. - (mm-encode-content-transfer-encoding): Doc fix. Don't make buffer - unibyte. Signal error on unknown encoding. - (mm-encode-buffer, mm-qp-or-base64): Doc fix. - - * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-eol): New. - Callers of gnus- versions changed to use them. - (rfc2047-header-encoding-alist): Add `address-mime' part. Doc - fixes. - (rfc2047-encoding-type): New. - (rfc2047-encode-message-header): Use mm-charset-to-coding-system. - Don't include header name field in encoding. Add `address-mime' - case and bind rfc2047-encoding-type for `mime' case. - (rfc2047-encodable-p): Deleted. - (rfc2047-syntax-table): New. - (rfc2047-encode-region, rfc2047-encode): Rewritten to take account - of rfc2047 rules with respect to rfc2822 tokens and to do encoding - in place rather than by passing strings. - (rfc2047-encode-string): Doc fix. - (rfc2047-q-encode-region): Don't use - mm-with-unibyte-current-buffer. - (rfc2047-encoded-word-regexp): eval-and-compile. - (rfc2047-decode-region): Avoid concatenation in loop. - (rfc2047-parse-and-decode): Remove useless disjunction. - -2003-05-02 Dave Love - - * rfc2047.el (rfc2047-q-encode-region, rfc2047-decode): Use - mm-with-unibyte-current-buffer. - (ietf-drums, gnus-util): don't require. - - * sieve.el (sieve-manage-mode-menu): Define before use. - - * mml-smime.el (message-narrow-to-headers): Autoload. - - * mm-util.el (mm-coding-system-p): Don't override nil from - coding-system-p. - (mm-mule4-p, mm-disable-multibyte-mule4) - (mm-with-unibyte-current-buffer-mule4): Deleted. - (mm-multibyte-p): Use defun, not defalias. - (mm-make-temp-file): Moved to group at top of file. - (mm-point-at-eol, mm-point-at-bol): New. - - * gnus-cite.el (gnus-art): Require. - - * gnus-ems.el (gnus-get-buffer-create) - (nnheader-find-etc-directory, message-text-with-property): - Autoload. - (gnus-tmp-unread, gnus-tmp-replied, gnus-tmp-score-char) - (gnus-tmp-indentation, gnus-tmp-opening-bracket, gnus-tmp-lines) - (gnus-tmp-name, gnus-tmp-closing-bracket, gnus-tmp-subject-or-nil) - (gnus-check-before-posting): Only defvar when compiling. - - * gnus-int.el (gnus-agent-expire): Autoload, don't defun. - - * gnus-util.el (rmail-default-rmail-file, mm-text-coding-system): - Defvar when compiling. - (gnus-output-to-rmail): Require mm-util. - - * mail-source.el (mail-source-callback): Use mm-make-temp-file. - (mail-source-make-complex-temp-name): Deleted. - - * message.el (message-use-idna): Use mm-coding-system-p. - (message-tokenize-header, message-make-organization) - (message-make-from): Use with-temp-buffer. - (message-set-work-buffer): Deleted. - (message-fill-paragraph): Use `if' not `and' for compiler warning. - (message-check-news-header-syntax): Remove useless lambda. - (message-forward-make-body): Use mm-disable-multibyte, - mm-with-unibyte-current-buffer, mm-enable-multibyte. - (message-replace-chars-in-string): Deleted. - - * mm-extern.el (mm-extern-local-file): Use mm-disable-multibyte. - (mm-extern-url): Use mm-with-unibyte-current-buffer, - mm-disable-multibyte. - (mm-extern-anon-ftp): Use mm-disable-multibyte. - - * mml1991.el (mml1991-mailcrypt-encrypt, mml1991-gpg-encrypt): Use - mm-with-unibyte-current-buffer. - - * mml2015.el (mml): Require. - (mml2015-mailcrypt-encrypt, mml2015-gpg-encrypt): Use - mm-with-unibyte-current-buffer. - - * nnheader.el (gnus-util): Require. - - * nntp.el (format-spec, format-spec-make, open-tls-stream): - Autoload. - - * rfc2231.el (mail-header-remove-comments, mm-encode-body) - (mail-header-remove-whitespace): Autoload. - - * sieve-manage.el (starttls-negotiate): Autoload. - -2003-05-01 Lars Magne Ingebrigtsen - - * nnrss.el (nnrss-find-rss-via-syndic8): Indent. - -2003-05-01 Mark A. Hershberger - - * nnrss.el (nnrss-find-rss-via-syndic8): Don't error out. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2003-05-01 Teodor Zlatanov - - * spam-report.el (spam-report-gmane-regex): docstring fix. From - Jon Ericson (tiny change) - - * gnus.el (gnus-install-group-spam-parameters): docstring fix. - From Jon Ericson (tiny change) - - * gnus-registry.el (gnus-registry-fetch-extra) - (gnus-registry-store-extra, gnus-registry-group-count): new functions - (gnus-registry-fetch-group, gnus-registry-delete-group) - (gnus-registry-add-group): changed to work with extra data element - if present - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.10.1 is released. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.24 is released. - -2003-05-01 Lars Magne Ingebrigtsen - - * dgnushack.el (when): Check whether defadvice is fbound. - -2003-05-01 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-unregistered-group-regex): new variable - (gnus-registry-register-message-ids): use it - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - - * gnus.el: Update copyright for several files. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.23 is released. - -2003-05-01 Lars Magne Ingebrigtsen - - * spam-stat.el (spam-stat-test-directory): Compare against zero. - -2003-05-01 Trey Jackson (tiny change) - - * spam-stat.el (spam-stat-test-directory): Skip 0 length files. - -2003-05-01 Lars Magne Ingebrigtsen - - * message.el (message-forward-subject-name-subject): Decode - string when forwarding. - -2003-05-01 Oystein Viggen - - * dgnushack.el (when): Add defadvice. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.22 is released. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.21 is released. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2003-05-01 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.20 is released. - -2003-05-01 Vasily Korytov - - * gnus-dired.el (gnus-dired-mode-map): Move to C-c C-l. - -2003-04-30 Mark A. Hershberger - - * mm-url.el (mm-url-insert-file-contents): set url-current-object - in the case where mm-url-use-external is set. - - * nnrss.el (nnrss-request-article): Change the messages created to - multipart/alternative. Hopefully fixes a problem interaction with - w3m. - (nnrss-find-rss-via-syndic8): Better handling if xml-rpc.el isn't - around. - -2003-05-01 Lars Magne Ingebrigtsen - - * message.el (message-check-news-header-syntax): Alter "posting" - message. - - * nnrss.el (nnrss-node-text): Don't use char classes. - -2003-05-01 David Z. Maze - - * nnrss.el (nnrss-find-rss-via-syndic8): Have an `error' branch - in condition-case. - -2003-05-01 Lars Magne Ingebrigtsen - - * message.el (message-required-headers): Remove In-Reply-To. - - * gnus-int.el (gnus-open-server): Revert changes. - -2003-04-30 Kai Gro,A_(Bjohann - - * gnus-int.el (gnus-open-server): Try to open unagentized servers - even when unplugged. - -2003-04-30 Reiner Steib - - * gnus-art.el (gnus-button-prefer-mid-or-mail): Fixed typo in - doc-string. - -2003-05-01 Steve Youngs - - * lpath.el: Add a section for non-Mule XEmacsen. - fbind `find-charset-string' and `coding-system-base' in that - section. - - * gnus-util.el (gnus-completing-read-maybe-default): New. - (gnus-completing-read): Use it. - - * mm-view.el (mm-view-pkcs7-decrypt): Ditto. - - * gnus-art.el (gnus-read-string): New. - (gnus-summary-pipe-to-muttprint): Use it. - - * gnus-xmas.el (gnus-xmas-open-network-stream): New. - - * dns.el (dns-make-network-process): Use it. - - Take care of some differences between XEmacs 21.1 and newer - versions of XEmacs. - -2003-04-30 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-split-fancy-with-parent): added - diagnostic message - (gnus-registry-grep-in-list): don't run when word is nil - (gnus-registry-fetch-message-id-fast): new function - (gnus-registry-delete-group, gnus-registry-add-group): make sure - the id and group are not nil - (gnus-registry-register-message-ids): new function - (gnus-register-action): optimized logical flow - (gnus-summary-prepare-hook): added gnus-registry-register-message-ids - -2003-04-30 Kai Gro,A_(Bjohann - - * gnus-delay.el (gnus-delay-article): Call - `gnus-agent-queue-setup' to create the delay group. - - * gnus-agent.el (gnus-agent-queue-setup): Support optional arg - for the (queue) group name. - -2003-04-30 Simon Josefsson - - * mm-util.el (mm-charset-to-coding-system): Use user specified - charset unless coding-system-get is fboundp. - -2003-04-30 Kevin Greiner - - * gnus-agent.el (gnus-agent-cat-defaccessor, gnus-agent-cat-name): - Wrapped in eval-when-compile. - (gnus-agent-mode): Bind gnus-agent-go-online to nil as you - shouldn't be asked twice to go online with each server. - (gnus-agent-get-undownloaded-list, gnus-agent-fetch-articles, - gnus-agent-crosspost, gnus-agent-flush-cache, - gnus-agent-fetch-session, gnus-agent-unread-articles, - gnus-agent-uncached-articles, gnus-agent-regenerate-group, - gnus-agent-group-covered-p): Expanded pop macros used for - effect. Avoids compilation warning in emacs 21.3. - - * gnus-int.el (gnus-open-server): Restructured to only open - nnagent when gnus-plugged is nil. - -2003-04-30 Katsumi Yamaoka - - * lpath.el: Fbind string-to-multibyte. - -2003-04-30 Steve Youngs - - * dgnushack.el: Add some missing autoloads for XEmacs 21.1. - -2003-04-29 Teodor Zlatanov - - * gnus-registry.el (gnus-registry-fetch-group): faster - (gnus-registry-delete-group): new function - (gnus-registry-add-group): new function - (gnus-register-spool-action): use it - (gnus-register-action): use it - (gnus-registry-translate-from-alist) - (gnus-registry-translate-to-alist): remove the headers registry - for now - -2003-04-29 Reiner Steib - - * gnus-art.el (gnus-button-alist): Fixed CTAN regexp. - -2003-04-29 Teodor Zlatanov - - * spam-report.el (spam-report-gmane): gnus-summary-article-number - is not necessary, just use the function parameter - -2003-04-29 Karl Pflysterer - - * spam-stat.el (spam-stat-save): No longer font-locks the file - when saving - -2003-04-29 Katsumi Yamaoka - - * canlock.el: Bind mail-header-separator when compiling (XEmacs - provides it in mail-lib/auto-autoloads.el). - -2003-04-29 Simon Josefsson - - * mml2015.el (mml2015-pgg-sign): Use mml-sender instead of - message-sender. - - * mml.el (mml-generate-mime-1): Set mml-sender too. - -2003-04-29 Jesper Harder - - * gnus-sum.el (gnus-summary-display-while-building): Docstring fix. - - * mm-url.el (mm-url-use-external): do. - -2003-04-29 Simon Josefsson - - * canlock.el (mail-fetch-field): Autoload it (fix xemacs compile - warnings). - - * sieve-mode.el (c-mode): Ditto. - - * pgg.el (run-at-time): Ditto. - - * mm-url.el (require): Require timer when compiling for - with-timeout macro (fix xemacs compile warnings). - -2003-04-28 Dave Love - - * gnus-util.el (nnheader): Don't require. - (Nnheader-narrow-to-headers, nnheader-replace-chars-in-string): - Autoload. - - * spam.el: Require cl when compiling. - - * dns.el: Require cl when compiling. - -2003-04-28 Jesper Harder - - * gnus-art.el (gnus-article-goto-next-page) - (gnus-article-goto-prev-page): Revert 2003-02-12 change to make - gnus-pick-mode work. - -2003-04-28 Steve Youngs - - * Makefile.in (FLAGS): Use @FLAGS@. - -2003-04-27 Reiner Steib - - * gnus-art.el (gnus-mime-display-multipart-as-mixed) - (gnus-mime-display-multipart-alternative-as-mixed) - (gnus-mime-display-multipart-related-as-mixed): Added doc-strings, - allow customization. - -2003-04-27 Kevin Greiner - - * dgnushack.el (dgnushack-compile-verbosely): New function. Not - currently called (See source for explanation). - -2003-04-27 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-catchup): Don't mark ticked messages. - (gnus-summary-mark-read-and-unread-as-read): Take an optional - mark. - - * gnus.el (gnus-version-number): Bump. - -2003-04-27 06:47:31 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.19 is released. - -2003-04-27 Kevin Greiner - - * gnus-registry.el (gnus-register-spool-action): Replaced literal - carriage-return character with its escape sequence. - -2003-04-27 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-catchup-from-here): Doc fix. - - * nnrss.el (nnrss-node-text): Use only one - gnus-replace-in-string. - - * gnus.el: Remove gnus-functionp throughout. - - * gnus-util.el (gnus-functionp): Removed. - - * gnus-msg.el (gnus-summary-wide-reply-with-original): Doc fix. - - * message.el (message-required-headers): Add In-Reply-To. - -2003-04-27 Marshall T. Vandegrift - - * gnus-fun.el (gnus-face-from-file): Bind coding-system-for-read - to binary. - -2003-04-27 Jesper Harder - - * mml.el (mml-preview): do. - - * message.el (message-mode): do. - - * gnus-undo.el (gnus-undo-mode): do. - - * gnus-topic.el (gnus-topic-mode): do. - - * gnus-sum.el (gnus-summary-mode, gnus-summary-edit-article): do. - - * gnus-msg.el (gnus-setup-message) - (gnus-inews-add-send-actions, gnus-configure-posting-styles): do. - - * gnus-gl.el (gnus-grouplens-mode): do. - - * gnus-art.el (gnus-mime-save-part-and-strip) - (gnus-mime-delete-part): Use it. - - * gnus-util.el (gnus-make-local-hook): New function. - -2003-04-25 Simon Josefsson - - * nnrss.el (nnrss-node-text): Don't use a star. - (nnrss-node-text): Use g-r-i-s, not g-r-r-i-s which doesn't exist. - -2003-04-24 Dave Love - - * mm-encode.el (mm-long-lines-p): Autoload. - (mm-encode-content-transfer-encoding): Don't try to make buffer - unibyte before decoding. Don't ignore errors for base64 encoding. - - * qp.el (quoted-printable-decode-region): Use mm-insert-byte. - Signal error on malformed text, as for base64. - (quoted-printable-encode-region): DTRT in Emacs 22. - - * mm-util.el (mm-make-temp-file, mm-insert-byte): New. - (mm-auto-save-coding-system): Consider utf-8-emacs. - (mm-mime-mule-charset-alist, mm-mule-charset-to-mime-charset) - (mm-charset-to-coding-system, mm-mime-charset) - (mm-find-mime-charset-region): Check for :mime-charset coding - systems property. - - * mml-sec.el (mml2015, mml1991): Don't require. - (mml2015-sign, mml2015-encrypt, mml1991-sign, mml1991-encrypt) - (message-goto-body, mml-insert-tag): Autoload. - - * mm-decode.el (mm-tmp-directory): Re-write to help avoid warnings. - - * gnus-start.el (message-make-date): Autoload rather than - requiring message. - - * gnus-group.el (gnus-group-name-charset-group-alist): Use - mm-coding-system-p. - (gnus-cache-active-altered): Defvar when compiling. - (gnus-group-delete-group): Re-write to help avoid warnings. - - * gnus-art.el (gnus-use-idna): Use mm-coding-system-p. - - * pgg.el: Split eval-when-compile forms. - -2003-04-24 Reiner Steib - - * gnus-group.el (gnus-large-ephemeral-newsgroup) - (gnus-fetch-old-ephemeral-headers): News variables. - (gnus-group-read-ephemeral-group): Use them. - -2003-04-24 Simon Josefsson - - * sieve.el (sieve-upload): Don't use replace-regexp-in-string. - - * nnrss.el (nnrss-node-text): Ditto. - -2003-04-24 Katsumi Yamaoka - - * gnus-msg.el (gnus-inews-do-gcc): Make sure the obsolete variable - gnus-inews-mark-gcc-as-read exists. - -2003-04-23 Simon Josefsson - - * gnus-sieve.el (gnus-sieve-generate): Rewrite regexp search so it - doesn't exceed the regexp stack space. - -2003-04-23 Jesper Harder - - * gnus-msg.el (gnus-inews-mark-gcc-as-read): Don't defvar it. - - * gnus-art.el (gnus-article-hide-pgp-hook): do. - -2003-04-23 Reiner Steib - - * mml.el (mml-preview): Bind `=', RET, and mouse-2. - -2003-04-23 Jesper Harder - - * mm-bodies.el (mm-decode-body): Don't override supplied charset. - -2003-04-23 Katsumi Yamaoka - - * dgnushack.el (merge, copy-list): Remove compiler macros. - (butlast): Add a compiler macro. - -2003-04-22 Paul Jarc - - * gnus-util.el (gnus-merge): Added "type" argument to match CL - merge and gnus-sum.el's expectations. - -2003-04-21 Reiner Steib - - * gnus-art.el (gnus-button-url-regexp): Added nntp. - - * message.el (message-generate-headers-first): Default to - '(references). - - * gnus-art.el (gnus-mime-delete-part): Require confirmation. - -2003-04-21 Jesper Harder - - * smime.el (smime-decrypt-region): Insert From header. - -2003-04-21 Kai Gro,A_(Bjohann - - * gnus-fun.el (gnus-face-from-file, gnus-convert-png-to-face): - Max length of header is 726, not 740. From Gaute B Strokkenes - . - -2003-04-20 Jesper Harder - - * nndb.el, mml1991.el: Fix license template. - -2003-04-20 Simon Josefsson - - * nnimap.el (nnimap-split-articles): Don't download body unless - required. - - * imap.el (imap-gssapi-open, imap-ssl-open): Erase buffer before - starting process, like imap-kerberos4-open does. - - * mml-smime.el, rfc1843.el, dig.el, smime.el, uudecode.el: Fix - license template. - - * mml-sec.el: Fix license template. - - * gnus-sieve.el, sieve.el, sieve-manage.el, sieve-mode.el: Fix - license template. - - * pgg-def.el, pgg.el, pgg-gpg.el, pgg-parse.el, pgg-pgp5.el, - pgg-pgp.el: Fix license template. - -2003-04-19 Jesper Harder - - * gnus-sum.el (gnus-summary-delete-article): Improve docstring. - -2003-04-19 Teodor Zlatanov - - * spam.el (spam-move-spam-nonspam-groups-only): dumb typo fix - -2003-04-18 Teodor Zlatanov - - * spam.el (spam-split): allow a particular check as a parameter, - e.g. (: spam-split 'spam-use-bogofilter) - (spam-mark-only-unseen-as-spam): new parameter, see doc - (spam-mark-junk-as-spam-routine): use - spam-mark-only-unseen-as-spam, simplify routine to take advantage - of gnus-newsgroup-unread as well as gnus-newsgroup-unseen - -2003-04-17 Teodor Zlatanov - - * gnus.el (gnus-group-short-name, gnus-group-prefixed-p): new functions - (gnus-group-guess-full-name): don't prefix the group twice - - * nnmail.el (nnmail-split-fancy-with-parent): docstring fix - - * gnus-registry.el (gnus-registry-clear) - (gnus-registry-fetch-group, gnus-registry-grep-in-list) - (gnus-registry-split-fancy-with-parent): new functions - (gnus-register-spool-action, gnus-register-action): simplified the format - (gnus-registry): new customization group - (gnus-registry-unfollowed-groups): new variable - -2003-04-17 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-button-alist): Add nntp: urls. - (gnus-header-button-alist): Ditto. - -2003-04-17 Dave Love - - * gnus-util.el (gnus-string-equal): Revert last change. - -2003-04-17 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-browse-make-menu-bar): Fix typo. - -2003-04-17 Mike Woolley - - * gnus-sum.el (gnus-sum-thread-tree-false-root): New variable. - -2003-04-15 Michael Shields - - * gnus-art.el (article-hide-boring-headers): Hide Reply-To: if - the broken-reply-to group parameter is set. Idea from Vasily - Korytov . - -2003-04-17 Steve Youngs - - * dgnushack.el: 'setenv' is in env.el for XEmacsen <= 21.4, but in - process.el in XEmacsen >= 21.5. - -2003-04-17 Steve Youngs - - * dgnushack.el: Add a whole swag of autoloads and defaliases to - satisfy the byte-compiler when building with XEmacs. - - * lpath.el (maybe-bind): Add 'w3-meta-content-type-charset-regexp' - and 'w3-meta-charset-content-type-regexp' in XEmacs. The upstream - W3 doesn't have these. - - * mailcap.el: Maybe require 'lpr in XEmacs. - -2003-04-16 Simon Josefsson - - * mml2015.el (mml2015-pgg-sign): Bind pgg-default-user-id to MML - sender tag, if available. - -2003-04-16 Teodor Zlatanov - - * gnus-registry.el (gnus-register-action) - (gnus-register-spool-action, hashtable-to-alist) - (gnus-registry-translate-from-alist, alist-to-hashtable) - (gnus-registry-translate-to-alist, gnus-registry-headers-hashtb): - new variables and function fixes - - * gnus.el (gnus-registry-headers-alist): new variable to hold - article header data - (gnus-variable-list): save gnus-registry-headers-alist - - * spam-report.el (Module): new module for spam reporting - - * gnus.el (spam-process): added - gnus-group-spam-exit-processor-report-gmane to the list of choices - (gnus-install-group-spam-parameters): defined new spam exit processor - - * spam.el (autoload): autoload spam-report-gmane when needed - (spam-report-gmane-register-routine): glue for spam-report.el - (spam-group-spam-processor-report-gmane-p): glue for the - gnus-group-spam-exit-processor-report-gmane spam processor - (spam-summary-prepare-exit): check the report-gmane spam processor - and run spam-report-gmane-register-routine if it's active - - From John Wiegley - - * spam.el (spam-bogofilter-score): check bogofilter headers before - checking bogofilter itself - -2003-04-16 Dave Love - - * gnus-agent.el: Wrap defsetf in eval-when-compile. - (gnus-agent-cat-defaccessor): Don't use gensym. - - * mml1991.el: Require cl, mm-util when compiling. - (quoted-printable-decode-region, quoted-printable-encode-region): - Autoload. - - * pgg.el: Require cl when compiling. - - * nnmail.el (gnus): Require. - - * gnus-util.el: Move provide to end. - (gnus-string-equal): Maybe use compare-strings. - (gnus-merge): New. - - * gnus-sum.el (gnus-summary-prepare-threads): Don't use copy-list. - (gnus-summary-insert-articles): Use gnus-merge. - - * gnus-fun.el: Require cl and mm-util when compiling. - - * gnus-diary.el (gnus-diary-delay-format-french) - (gnus-diary-delay-format-english): Don't use setf with nthcdr. - - * nndiary.el (nndiary-compute-reminders): Don't use setf with - nthcdr. - -2003-04-16 Kevin Greiner - - * gnus-agent.el (gnus-agent-make-cat): Added optional parameter to - specify a predicate other than false. - (gnus-category-read): Use the new feature to create a 'default' - category with a 'short' predicate. - -2003-04-16 Lars Magne Ingebrigtsen - - * message.el (message-unique-id): Comment change. - - * gnus-art.el (gnus-article-next-page-1): New function. - (gnus-article-next-page): Use it. - -2003-04-15 Teodor Zlatanov - - * spam.el (spam-split): added save-restriction to save-excursion - -2003-04-15 Reiner Steib - From Julien Avarre - - * gnus-fun.el: Fixed autoload cookie. - -2003-04-15 Paul Jarc - From Remi Letot - - * nnmaildir.el (nnmaildir-request-scan): Use gnus-remove-if - instead of remove-if. - -2003-04-14 Katsumi Yamaoka - - * gnus-msg.el (gnus-summary-news-other-window): Use delq and - copy-sequence instead of remove which is a cl run-time function in - Emacs 20. - -2003-04-14 Jesper Harder - - * gnus-msg.el (gnus-summary-news-other-window): Make a buffer - local copy of gnus-discouraged-post-methods with the current - method removed. - -2003-04-14 Simon Josefsson - - * mailcap.el (mailcap-mime-data): Add application/pgp-keys. - -2003-04-13 Reiner Steib - - * mm-util.el (mm-sort-coding-systems-predicate): Convert elements - of `mm-coding-system-priorities' to base coding system. - - * gnus-sum.el: Added coding cookie ("middle dot" in - gnus-summary-morse-message). - -2003-04-13 Simon Josefsson - - * gnus-art.el (article-fill-long-lines) - (article-verify-x-pgp-sig, article-decode-group-name) - (gnus-mime-button-menu): Split >80 character lines. - -2003-04-13 Jesper Harder - - * gnus-sum.el (gnus-summary-local-variables): Use defvar since - we're let-binding it. - - * nnmbox.el (nnmbox-mbox-buffer): It's not a constant. - -2003-04-13 Lars Magne Ingebrigtsen - - * message.el (message-hide-headers): Don't do intangible. - - * gnus.el (gnus-group-prefixed-name): Comment out the test for - colon. - - * gnus-srvr.el (gnus-browse-read-group): Don't give the real name - to the ephemeral entry, but the prefixed name. - - * gnus.el (gnus-group-prefixed-name): Clean up. - -2003-04-13 Kevin Greiner - - * gnus-agent.el (gnus-agent-group-pathname): Bind - gnus-command-method so that gnus-agent-directory will always - return a valid directory. - * gnus-cache.el (gnus-cache-enter-article): Remove article from - gnus-newsgroup-undownloaded so that the summary will display the - article as downloaded. - (gnus-cache-remove-article): If the article isn't in the agent, - remove it from gnus-newsgroup-undownloaded so that the summary - will display the article as undownloaded. - -2003-04-13 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2003-04-13 01:12:01 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.18 is released. - -2003-04-13 Lars Magne Ingebrigtsen - - * gnus-draft.el (gnus-draft-send): Add message-hidden-headers. - -2003-04-12 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-next-page): Use - gnus-article-over-scroll. - (gnus-article-over-scroll): New variable. - - * message.el (message-newline-and-reformat): Place a boundary - before filling. - (message-make-forward-subject-function): Changed default to - message-forward-subject-name-subject. - (message-forward-subject-name-subject): New function. - - * nnimap.el (nnimap-split-fancy): Ditto. - - * gnus-sum.el (gnus-summary-line-message-size): Ditto. - - * gnus-cus.el (gnus-group-parameters): Removed "which see". - - * mml.el (mml-minibuffer-read-file): Bind - completion-ignored-extensions to nil. - - * message.el (message-fix-before-sending): Comment fix. - (message-fix-before-sending): Make hidden headers visible. - (message-hide-headers): Bind after-change-functions to nil. - (message-forbidden-properties): Put invisible and intangible - back. - (message-strip-forbidden-properties): Ignore message-hidden text. - - * gnus-msg.el: Hide headers. - - * message.el (message-hidden-headers): New variable. - (message-hide-headers): New function. - (message-hide-header-p): New function. - (message-hide-header-p): Change logic. - (message-forbidden-properties): Remove intangible nil invisible - nil. - (message-hide-headers): Narrow to headers. - - * lpath.el (featurep): Bind Info-directory, Info-menu. - -2003-04-12 Jesper Harder - - * mm-bodies.el (mm-body-charset-encoding-alist): UTF-16 *must* be - encoded. - (mm-encode-body): Don't corrupt UTF-16. - (mm-body-encoding): Pay attention to mm-body-charset-encoding-alist. - -2003-04-10 Kevin Greiner - - * gnus-agent.el (gnus-agent-get-undownloaded-list): Articles in - the CACHE are now detected and handled the same as an article - downloaded into the agent. - (gnus-agent-group-path): Modified to match nnmail-group-pathname - so that the agent front-end and back-end (nnagent) always use the - same directory. - (gnus-agent-group-pathname): New function. Wrapper for - nnmail-group-pathname. - (gnus-agent-expire-unagentized-dirs): New variable. May be - customized to disable gnus-agent-expire-unagentized-dirs. - (gnus-agent-expire-unagentized-dirs): Expand gnus-agent-directory - as the directories in gnus-agent-expire-current-dirs were - expanded. - -2003-04-10 Jesper Harder - - * gnus-sum.el (gnus-summary-make-menu-bar): Disable "Encrypt - body" entry in read only groups. - -2003-04-09 Jesper Harder - - * gnus-sum.el (gnus-summary-make-menu-bar): Disable "Import file" - and "Create article" items in non-editable groups. - -2003-04-09 Kevin Greiner - - * gnus-agent.el (gnus-agent-write-active): Added option of - replacing, rather than updating, the agent's active file. Do NOT - use the fully qualified group name as gnus-active-to-gnus-format - blindly prefixes group names with server names. - (gnus-agent-save-group-info): Merge BOTH min/max of current active - range, was just merging min, with specified active range. - (gnus-agent-expire): Save agent's active ranges after - expiring all groups. - (gnus-agent-expire-group-1): Update min of agent's active range to - min article currently fetched. - (gnus-agent-expire-unagentized-dirs): Avoid asking to delete the - same ancestor multiple times. - - * gnus-async.el (gnus-asynchronous): Moved defcustom of - gnus-asynchronous away from defgroup of gnus-asynchronous. This - seems to fix an intermittant error in which loading gnus-async - fails to define gnus-asynchronous (the variable). - - * gnus-sum.el: Concur with Steve Young, 5th argument to 'load' is - non-essential. Removed on all platforms. - (gnus-select-newsgroup): When the agent is active, expand the - group's active range to include fetched articles that are no - longer in the server's active range. - - * gnus-util.el (gnus-with-output-to-file): Removed all of the - print-* bindings as they should be handled by the function doing - the printing. - -2003-04-09 Jesper Harder - - * mm-uu.el (mm-uu-copy-to-buffer): buffer-file-coding-system - might be unbound in non-MULE XEmacsen. - -2003-04-08 Jesper Harder - - * mm-uu.el (mm-uu-diff-groups-regexp, mm-uu-type-alist) - (mm-uu-diff-extract, mm-uu-diff-test): New functionality: - recognize diffs. - - * mm-bodies.el (mm-decode-body): Use the supplied charset - unconditionally if `code-pages' hasn't been loaded. - -2003-04-07 Jesper Harder - - * gnus-art.el (article-verify-x-pgp-sig): Don't use - `insert-buffer', the docstring says "This function is meant for - the user to run interactively. Don't call it from programs!" - - * mm-extern.el (mm-extern-mail-server): do. - - * mml1991.el (mml1991-mailcrypt-sign, mml1991-mailcrypt-sign) - (mml1991-gpg-sign, mml1991-gpg-encrypt, mml1991-pgg-sign) - (mml1991-pgg-encrypt): do. - - * pgg.el (pgg-decrypt-region): do. - - * mm-view.el (mm-view-pkcs7-decrypt): do. - - * mml-smime.el (mml-smime-verify): do. - - * mml.el (mml-insert-mime, mml-preview): do. - - * mml2015.el (mml2015-gpg-decrypt-1, mml2015-gpg-sign) - (mml2015-gpg-encrypt, mml2015-pgg-clear-decrypt) - (mml2015-pgg-encrypt): do. - -2003-04-06 Katsumi Yamaoka - - * mm-bodies.el (mm-decode-body): Silence XEmacs when compiling. - -2003-04-06 Jesper Harder - - * mm-uu.el (mm-uu-copy-to-buffer): Copy - `buffer-file-coding-system' to the new buffer. - (mm-uu-pgp-signed-extract-1): Don't copy - `buffer-file-coding-system' here. - - * mm-bodies.el (mm-decode-body): last-coding-system-used doesn't - exist in XEmacs. - (mm-decode-body): Add missing quote. - - * mm-uu.el (mm-uu-pgp-signed-extract-1): Set - buffer-file-coding-system. - - * mm-bodies.el (mm-decode-body): Set buffer-file-coding-system to - last-coding-system-used. - - * mml2015.el (mml2015-pgg-clear-verify): Encode the text - according to buffer-file-coding-system. - - * pgg-gpg.el (pgg-gpg-process-region): Revert previous change. - - * pgg-pgp.el (pgg-pgp-process-region, pgg-pgp-verify-region) - (pgg-pgp-snarf-keys-region): do. - - * pgg-pgp5.el (pgg-pgp5-verify-region) - (pgg-pgp5-snarf-keys-region, pgg-pgp5-process-region): do. - - * pgg.el (pgg-make-temp-file, pgg-temporary-file-directory): do. - -2003-04-05 Teodor Zlatanov - - * spam.el (spam-split): (save-excursion) around (widen) - (spam-ham-move-routine): Use spam-group-ham-mark-p, not - spam-group-spam-mark-p (from Michael Shields ) - -2003-04-05 Steve Youngs - - * gnus-sum.el: XEmacs doesn't support the 5th arg to 'load', so - don't use it when loading gnus-sum.el if we're in XEmacs. - -2003-04-05 Kevin Greiner - - * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound - print-escape-nonascii to fix more characters in compiled format - specs. - -2003-04-05 Jesper Harder - - * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): - Fix customization type. - -2003-04-04 Kevin Greiner - - * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound - print-quoted, print-readably, print-escape-multibyte, and - print-level to match original behavior of gnus-prin1. This should - repair the format of .newsrc.eld when using compiled format specs. - -2003-04-04 Jesper Harder - - * gnus-group.el (tool-bar-map): defvar it. - - * gnus-art.el (tool-bar-map): do. - - * gnus-sum.el (tool-bar-map): do. - -2003-04-03 Jesper Harder - - * earcon.el (earcon-regexp-alist): catmeow is a wav file. - -2003-04-03 Reiner Steib - - * gnus-art.el (gnus-button-ctan-directory-regexp): Changed meaning - and value. - (gnus-button-alist): Use it. - -2003-04-03 Jesper Harder - - * pgg-gpg.el (pgg-gpg-process-region): do. - - * pgg-pgp.el (pgg-pgp-process-region, pgg-pgp-verify-region) - (pgg-pgp-snarf-keys-region): do. - - * pgg-pgp5.el (pgg-pgp5-verify-region) - (pgg-pgp5-snarf-keys-region, pgg-pgp5-process-region): Use it. - - * pgg.el (pgg-make-temp-file): New function. `make-temp-name' is - unsafe. - (pgg-temporary-file-directory): Remove. - -2003-04-02 Katsumi Yamaoka - - * lpath.el: Fbind Info-directory and Info-menu. - -2003-04-02 Reiner Steib - - * gnus-util.el (gnus-message): Added doc-string. - - * gnus-score.el (gnus-score-find-trace): Changed behavior of `q'. - (gnus-score-edit-file-at-point): Goto first match when using `e'. - -2003-04-01 Reiner Steib - - * gnus-art.el (gnus-button-ctan-directory-regexp): New variable. - (gnus-button-alist): Use it. Changed CTAN and "setq" entries. - -2003-04-01 Katsumi Yamaoka - - * nntp.el (nntp-via-rlogin-command-switches): Doc fix. - (nntp-open-via-rlogin-and-telnet): Disable the telnet linemode. - -2003-03-31 Kevin Greiner - - * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound - print-escape-newlines to print escape sequences rather than - literal newline characters. - -2003-03-31 Reiner Steib - - * gnus-art.el (gnus-button-valid-fqdn-regexp): Use - `message-valid-fqdn-regexp' for initialization. - (gnus-button-handle-info-url): Renamed and extended version of - `gnus-button-handle-info'. - (gnus-button-message-level): Renamed from `gnus-button-mail-level' - (gnus-button-handle-symbol, gnus-button-handle-library) - (gnus-button-handle-info-keystrokes): New functions. - (gnus-button-browse-level): New variable. - (gnus-button-alist): Use them. Added levels. - (gnus-header-button-alist): Added levels. - -2003-03-31 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2003-03-31 20:08:19 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.17 is released. - -2003-03-31 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-unload): Removed. - - * pop3.el (pop3-read-response): Use - nnheader-accept-process-output. - (pop3-retr): Ditto. - - * mm-view.el (mm-text-html-renderer-alist): Add -nolist to Lynx. - (mm-text-html-washer-alist): Ditto. - -2003-03-31 Simon Josefsson - - * imap.el (imap-gssapi-program): Also try GNU SASL. - (imap-gssapi-open): Accept GNU SASL greeting. - (imap-read-timeout): New. - (imap-wait-for-tag): Use it. - -2003-03-31 Lars Magne Ingebrigtsen - - * nntp.el (nntp-accept-process-output): Use new function. - - * nnheader.el (nnheader-read-timeout): New variable. - (nnheader-accept-process-output): New function. - - * nntp.el (nntp-read-timeout): Removed. - - * gnus-sum.el (gnus-summary-prepare-threads): Add comment. - -2003-03-30 Katsumi Yamaoka - - * gnus-cache.el (gnus-cache-braid-nov): Revoke last change. - -2003-03-30 Simon Josefsson - - * message.el (message-idna-inside-rhs-p): Narrow to header before - searching. - - * gnus-art.el (article-decode-idna-rhs): More restrictive regexp. - -2003-03-30 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-process-mmdf-mail-format): Indent. - -2003-03-28 Vasily Korytov - - * message.el (message-make-in-reply-to): Use - mail-extract-address-components to determine sender's - name/address. - -2003-03-30 Lars Magne Ingebrigtsen - - * nndoc.el (nndoc-type-alist): Move mime-parts further ahead. - - * gnus-registry.el (gnus-registry-translate-to-alist): Make a - valid lambda. - (gnus-registry-translate-from-alist): Ditto. - - * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bind - print-length to nil. - - * gnus-sum.el (gnus-summary-highlight-line-0): Indent. - - * gnus-fun.el (gnus-fun-ppm-change-string): New function. - (gnus-grab-cam-face): Use it. - -2003-03-28 Paul Jarc - - * nnmaildir.el (nnmaildir-request-set-mark) - (nnmaildir-close-group): Allow each mark directory in a group to - have its own inode for mark files, to accommodate AFS. - -2003-03-28 Teodor Zlatanov - - * gnus-start.el (gnus-read-newsrc-el-hook): new hook called by - gnus-read-newsrc-el-file - (gnus-read-newsrc-el-file): call the gnus-read-newsrc-el-hook - - * gnus-registry.el (gnus-registry-translate-to-alist) - (gnus-registry-translate-from-alist, alist-to-hashtable) - (hashtable-to-alist): new functions - (gnus-register-spool-action): add a spool item to the registry - - * gnus.el (gnus-variable-list): added gnus-registry-alist to the - list of saved variables - (gnus-registry-alist): new variable - -2003-03-27 Simon Josefsson - - * gnus-art.el (article-decode-group-name): Be correct instead of - smart. - -2003-03-27 Katsumi Yamaoka - - * lpath.el: Bind url-current-object for Emacs; bind - gnus-agent-expire-current-dirs for XEmacs; fbind open-ssl-stream - for both Emacsen. - -2003-03-27 Jesper Harder - - * gnus-sum.el (gnus-article-loose-mime) - (gnus-article-emulate-mime): Move to gnus-article-mime customize - group. - - * gnus-msg.el (gnus-mailing-list-groups): Fix customize type and - doc string. - -2003-03-26 Kevin Ryde - - * gnus-sum.el (gnus-summary-find-for-reselect): Renamed from - gnus-summary-find-uncancelled, skip temporary articles inserted by - "refer" functions. - -2003-03-26 Vasily Korytov - - * smiley.el (smiley-buffer): New function. - -2003-03-26 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-selected-article): Replaced - gnus-summary-update-line (which updated the article's face) with - gnus-summary-update-download-mark (which updates the article's - face by calling gnus-summary-update-line AND updates the download - mark to show that the article was fetched). - -2003-03-23 Kevin Greiner - - * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Provides - option of deleting agent directories for groups/servers that are - not currently agentized. - (gnus-agent-expire): Use gnus-agent-expire-unagentized-dirs. - - * gnus-int.el (gnus-open-server): Report backend errors in - condition handler. - -2003-03-23 Simon Josefsson - - * message.el (message-idna-to-ascii-rhs-1): Don't continue outside - header. - - * rfc2047.el (rfc2047-header-encoding-alist): Make Followup-To - same as Newsgroups. - - * nntp.el (nntp-open-connection-function): Mention - nntp-open-tls-stream. - (nntp-open-tls-stream): New function. - - * tls.el: New file. - - * nnimap.el (nnimap-server-port, nnimap-stream): Say TLS/SSL - instead of SSL. - (nnimap-stream): Add other streams, link to imap variables. - (nnimap-authenticator): Add other authenticator, link to imap - variables. - - * imap.el: Autoload open-tls-stream. - (imap-streams): Add tls in front of ssl. - (imap-stream-alist): Add tls. - (imap-default-tls-port): New variable. - (imap-tls-p, imap-tls-open): New functions. - -2003-03-22 ShengHuo ZHU - - * mm-url.el (mm-url-insert-file-contents): parse url only if - results is a list. - -2003-03-22 Lars Magne Ingebrigtsen - - * mail-source.el (mail-source-fetch-imap): Revert. - -2003-03-22 Svend Tollak Munkejord - - * deuglify.el (gnus-outlook-repair-attribution-outlook): Use a - less strict regexp. - -2003-03-22 Lars Magne Ingebrigtsen - - * mail-source.el (mail-source-fetch-imap): Use buffer name for - more imap function. - -2003-03-21 Simon Josefsson - - * gnus-art.el (article-decode-group-name): Replace Newsgroups and - Followup-To data inline. - -2003-03-21 Jesper Harder - - * gnus-art.el (gnus-treat-display-xface): Don't enable if - icontopbm isn't available. - -2003-03-21 Kevin Greiner - - * gnus-int.el (gnus-open-server): Catch errors in backend's - open-server method. Returns nil rather than crashing startup. - - * gnus-sum.el (eval-when-compile): Modified to resolve - compile-time warnings. - - * gnus-uu.el (gnus-uu-mark-series): Added informative msg. - Reports length of series so that the user can compare N with a - subject that should, if the entire series is present, contain - '(.../N)'. - (gnus-uu-delete-work-dir): Avoid hanging when O/S forbids deletion - of temp file (Win-XP may leave the temp file locked when the - uudecode process fails). - -2003-03-20 ShengHuo ZHU - - * message.el (message-split-line): Ignore error. - - * lpath.el (split-line): Avoid split-line warning message. - -2003-03-20 Kim F. Storm - - * message.el (message-split-line): New function. - (message-mode-map): Remap split-line to message-split-line. - -2003-03-20 Katsumi Yamaoka - - * message.el (message-make-overlay): Defalias it to make-overlay. - (message-delete-overlay): Defalias it to delete-overlay. - (message-overlay-put): Defalias it to overlay-put. - (message-idna-to-ascii-rhs-1): Use them. - - * messagexmas.el (message-xmas-redefine): Defalias some overlay - functions to extent functions. - -2003-03-20 Reiner Steib - - * message.el (message-check-news-header-syntax): Fixed regexp. - -2003-03-20 ShengHuo ZHU - - * rfc2231.el (rfc2231-decode-encoded-string): Downcase charset. - - * mm-url.el (mm-url-insert): Move url-current-object stuff into - mm-url-insert-file-contents. - - * nnrss.el (nnrss-fetch): Fetch the local stuff. - (nnrss-check-group): Use it. - -2003-03-20 Mark A. Hershberger - - * nnrss.el: Primitive XML Name-space support. This means that RSS - feeds like Kevin Burton's[1] can now be read in Gnus. - - Implemented support for Mark Pilgrim's RSS Autodiscovery.[2] This - means that if you want to read the RSS feed for example.com, all - you have to do is hit "G R http://www.example.com/ RET" and - nnrss.el will find and the feed listed on the site or (if you have - loaded xml-rpc.el) look it up on syndic8.com. - - Marked the message as HTML (by adding a Content-Type header) so - that Gnus will render it as html if the user wants that. - - Implemented the ability to save nnrss-group-alist so that any new - feeds the you subscribe to will be found the next time you start - up. - - Implemented support for RSS 2.0 elements (author, pubDate). - - Prefer for over where both - elements exist. - - * mm-url.el (mm-url-insert): Set url-current-object. - - * gnus-group.el (gnus-group-make-rss-group): New function. - -2003-03-20 Katsumi Yamaoka - - * message.el (message-idna-to-ascii-rhs-1): Don't use replace-* - for highlight overlays. - -2003-03-20 Katsumi Yamaoka - - * gnus-cache.el (gnus-cache-braid-nov): Test if a line looks like - a NOV. - -2003-03-20 Simon Josefsson - - * message.el (message-use-idna): Disable if UTF-8 unavailable. - (message-idna-to-ascii-rhs): Use it. - - * gnus-art.el (gnus-use-idna): Disable if UTF-8 unavailable. - -2003-03-19 Teodor Zlatanov - - * spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p) - (spam-group-ham-marks, spam-group-spam-marks): new functions - (spam-spam-marks, spam-ham-marks): removed in favor of the - spam-marks and ham-marks parameters - (spam-generic-register-routine, spam-ham-move-routine): use the - new spam-group-{spam,ham}-mark-p functions - - * gnus.el (spam-marks, ham-marks): new group parameters with - default values same as the old spam-spam-marks and spam-ham-marks - -2003-03-19 Simon Josefsson - - * gnus-art.el (gnus-article-decode-hook): Add IDNA. - (gnus-use-idna): New variable. - (article-decode-idna-rhs): New function. - - * message.el (message-use-idna): New variable. - (message-mode-field-menu): Add entry for IDNA. - (message-idna-inside-rhs-p, message-idna-to-ascii-rhs-1) - (message-idna-to-ascii-rhs): New function. - (message-generate-headers): Invoke IDNA code. - -2003-03-19 Paul Jarc - - * nnmaildir.el (nnmaildir--system-name): New function. - (nnmaildir-request-accept-article): Use it. - -2003-03-19 Katsumi Yamaoka - - * gnus-util.el (gnus-byte-compile): Make it work silently as the - gnus-compile function does. - - * gnus-sum.el (gnus-summary-highlight-line-0): Revoke the last - bogus change. - -2003-03-19 Jesper Harder - - * mm-util.el (mm-mule-charset-to-mime-charset): Test if - sort-coding-systems is defined. - -2003-03-18 Paul Jarc - - * nnmaildir.el (nnmaildir-open-server, nnmaildir-request-scan) - (nnmaildir-request-create-group, nnmaildir-request-delete-group): - Replace create-directory with target-prefix. - -2003-03-18 Jesper Harder - - * mm-bodies.el (mm-decode-coding-region-safely): Don't use - find-charset-string which is slooow in XEmacs. - -2003-03-18 Katsumi Yamaoka - - * gnus-sum.el (gnus-summary-highlight-line-0): Silence the byte- - compiler under XEmacs. - -2003-03-18 Jesper Harder - - * gnus-art.el (gnus-treat-highlight-signature): Make the default - work for multipart/signed where the message text isn't `last'. - -2003-03-18 Katsumi Yamaoka - - * mm-view.el (mm-setup-w3m): Set w3m-display-inline-images to - the value of mm-inline-text-html-with-images. - (mm-inline-text-html-render-with-w3m): Don't bind - w3m-display-inline-images. - - * gnus-art.el (gnus-article-wash-html-with-w3m): Don't bind - w3m-display-inline-images. - - * lpath.el: Bind w3m-display-inline-images; bind mm-w3m-mode-map - regardless of an Emacs flavor. - -2003-03-18 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump. - -2003-03-18 00:38:22 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.16 is released. - -2003-03-18 Lars Magne Ingebrigtsen - - * lpath.el (featurep): Bind mm-w3m-mode-map. - -2003-03-17 Paul Jarc - - * nnmail.el (nnmail-cache-primary-mail-backend): Not all - 'respool-able backends define a global nnchoke-get-new-mail - variable. - -2003-03-17 Reiner Steib - - * gnus-art.el (gnus-mime-delete-part): New function. - (gnus-mime-action-alist, gnus-mime-button-commands): Use it. - -2003-03-17 Lars Magne Ingebrigtsen - - * message.el (message-check-news-header-syntax): Don't push - groups twice onto list of unknown groups. - - * nndoc.el (nndoc-type-alist): Move exim-bounce a bit further - back. - - * nnheader.el (nnheader-find-etc-directory): Doc fix. - - * gnus-msg.el (gnus-inews-add-send-actions): Don't restore window - config unless the summary buffer exists. - - * gnus-sum.el (gnus-summary-next-group): Semi-exit group first to - that target group is computed correctly when articles are marked - as read by Xref handling. - - * mail-source.el (mail-source-fetch-imap): Pass buffer-name to - imap-open. - - * message.el (message-send-mail): Add courtesy string to Bcc's, - too. - - * gnus-cite.el (gnus-cited-line-p): New function. - -2003-03-15 Jesper Harder - - * mm-bodies.el (mm-decode-body): Add new optional parameter, - force, to use the supplied charset unconditionally. - - * gnus-art.el (article-decode-charset): Use it. - -2003-03-14 Jesper Harder - - * mm-bodies.el (mm-decode-coding-region-safely): New function. - (mm-decode-body): Use it. - - * rfc2047.el (rfc2047-decode-region): do. - (rfc2047-decode-string): Guess coding system if the default is - invalid. - -2003-03-12 Paul Jarc - - * nnmaildir.el (nnmaildir-request-update-info): Pretend missing - articles are marked 'read, so we get correct article counts. - -2003-03-13 Katsumi Yamaoka - - * gnus-art.el (gnus-insert-mime-button): Exclude a newline from - the button. - (gnus-insert-prev-page-button): Ditto. - (gnus-insert-next-page-button): Ditto. - (gnus-insert-mime-security-button): Ditto. - - * mm-view.el (mm-inline-image-emacs): Open the bottom of an image - one line. Suggested by Greg Klanderman . - (mm-inline-image-xemacs): Ditto. - -2003-03-12 Paul Jarc - - * nnmaildir.el (nnmaildir--parse-filename, nnmaildir--sort-files, - nnmaildir--scan, nnmaildir-request-accept-article): Changes for - the recent filename uniqueness discussion. - -2003-03-12 Katsumi Yamaoka - - * mm-view.el (mm-inline-image-emacs): Make it delete an excessive - newline next time. - (mm-inline-image-xemacs): Ditto. - -2003-03-10 Jesper Harder - - * gnus-agent.el (gnus-agent-synchronize-flags-server): Don't use - kill-line. - -2003-03-09 Jesper Harder - - * gnus-msg.el (gnus-inews-insert-archive-gcc): Don't use - kill-line. - -2003-03-09 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetched-hook): New variable. Just - fixing the code to match the documentation. - (gnus-agent-fetch-selected-article): Replaced - gnus-summary-update-article-line with gnus-summary-update-line as - the former did not correctly recalculate the thread indentation. - (gnus-agent-find-parameter): The agent-predicate, if not found - anywhere else, defaults to the value of gnus-agent-predicate. - (gnus-agent-fetch-session): Fixed typo; now executes - gnus-agent-fetched-hook rather than the undocumented - gnus-agent-fetch-hook. - (gnus-agent-fetch-group-1): Removed part of 2003-03-06 fix. The - default agent predicate is now provided by - gnus-agent-find-parameter. - (gnus-agent-message): New macro. This macro avoids potentially - costly parameter evaluation when the message's level is too high - to display. - (gnus-agent-expire-group-1): Disabled undo tracking in temp - overview buffer. Uses new gnus-agent-message macro to reduce - overhead of optional messages. Reversed message levels to - emphasize percent completion messages. Detailed messages of - little use except when debugging code. - -2003-03-08 Teodor Zlatanov - - * spam.el (spam-ham-move-routine): use - spam-mark-ham-unread-before-move-from-spam-group - (spam-mark-ham-unread-before-move-from-spam-group): new variable - -2003-03-07 Teodor Zlatanov - - * spam.el: load nnimap.el when compiling - (spam-setup-widening): use - nnimap-split-download-body-default instead of - nnimap-split-download-body which is a user-customizable variable - -2003-03-07 Simon Josefsson - - * nnimap.el (nnimap-split-download-body-default): New, holds - default for n-s-d-b. - (nnimap-split-download-body): Add new setting (symbol default), - which uses contents of n-s-d-b-d, and made it the default. - -2003-03-07 Teodor Zlatanov - - * spam.el (spam-use-hashcash): new variable - (spam-list-of-checks): added spam-use-hashcash with associated - spam-check-hashcash - (spam-check-hashcash): new function, installed iff hashcash.el is - loaded - (spam-setup-widening): don't use (return) - -2003-03-06 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-group-1): Added default - predicate of `false' to avoid an error when a group defines no - predicate. Fixed typo that disabled agent scoring (i.e. the - low/high predicates should now work). - -2003-03-06 Teodor Zlatanov - - * spam.el: add spam-maybe-spam-stat-load to - gnus-get-top-new-news-hook, remove it from gnus-get-new-news-hook - (spam-bogofilter-register-with-bogofilter): use - spam-bogofilter-spam-switch and spam-bogofilter-ham-switch - (spam-bogofilter-spam-switch, spam-bogofilter-ham-switch): new - custom variables to replace "-s" and "-n" - - * gnus-group.el (gnus-group-get-new-news): call the new - gnus-get-top-new-news-hook hook - - * gnus-start.el (gnus-get-top-new-news-hook): new hook, run ONLY - by gnus-get-new-news, NOT by gnus-group-get-new-news-this-group - -2003-03-06 Lars Magne Ingebrigtsen - - * mm-uu.el (mm-uu-pgp-encrypted-test): Fix message. - -2003-03-06 Katsumi Yamaoka - - * gnus-cus.el (gnus-group-customize): Don't use delete-if which is - a cl run-time function. - -2003-03-06 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-group-1): Added missing binding - on gnus-agent-short-article. - (gnus-category-read): Replaced CL function mapcar* with new macro: - gnus-mapcar. - * gnus-util.el (gnus-mapcar): New macro. Generalizes mapcar to - support functions that accept multiple parameters. A separate - sequence must be provided for each parameter in the function. - Iteration stops when the end of the shortest list is reached. - -2003-03-06 Jesper Harder - - * nnimap.el (nnimap-request-accept-article): Use delete-region. - - * html2text.el (html2text-clean-dtdd, html2text-delete-tags) - (html2text-delete-single-tag, html2text-clean-anchor) - (html2text-remove-tags): Use delete-region. - (html2text-fix-paragraphs): Simplify. - - * mml1991.el (mml1991-mailcrypt-sign, mml1991-mailcrypt-encrypt) - (mml1991-gpg-sign, mml1991-gpg-encrypt, mml1991-pgg-sign) - (mml1991-pgg-encrypt, mml1991-pgg-encrypt): Use delete-region, not - kill-region. - -2003-03-04 John Paul Wallington - - * gnus-agent.el (gnus-agent-enable-expiration) - (gnus-agent-article-alist, gnus-agent-article-alist) - (gnus-agent-cat-defaccessor): Doc fixes. - -2003-03-04 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-function-implies-unread-1): Grok - byte-compiled functions. - -2003-03-04 Kevin Greiner - - * gnus-sum.el (gnus-auto-goto-ignores): New variable. Provides - customization between new maneuvering (which permits selecting - undownloaded articles) and old maneuvering (which skipped over - undownloaded articles) behaviors. - (gnus-summary-find-next): Pass through the unread and subject - parameters when calling gnus-summary-find-prev. - (gnus-summary-find-next,gnus-summary-find-prev): Apply - gnus-auto-goto-ignores to filter out unacceptable articles. - -2003-03-04 Jesper Harder - - * mail-source.el (mail-source-read-passwd): Remove. `read-passwd' - exists in all supported Emacs versions, so we don't need this - compatibility function. - (mail-source-fetch-pop, mail-source-check-pop) - (mail-source-fetch-webmail): Use read-passwd. - - * nntp.el (nntp-send-authinfo, nntp-send-nosy-authinfo) - (nntp-open-telnet, nntp-open-via-telnet-and-telnet): Use - read-passwd. - - * nnwarchive.el (nnwarchive-open-server): Use read-passwd. - - * imap.el (imap-read-passwd): Remove. - (imap-interactive-login): Use read-passwd. - - * canlock.el (canlock-read-passwd): Remove. - (canlock-insert-header, canlock-verify): Use read-passwd. - - * sieve-manage.el (sieve-manage-read-passwd): Remove. - (sieve-manage-interactive-login): Use read-passwd. - - * pop3.el (pop3-read-passwd): Remove. - (pop3-movemail, pop3-get-message-count, pop3-apop): Use - read-passwd. - - * pgg.el (pgg-read-passphrase): Simplify. - -2003-03-04 Kevin Greiner - - * gnus-agent.el (gnus-agent-mode): Fixed the mode line reports - 'plugged' when actually 'unplugged' bug. - (gnus-category-read): Ignore nil values when converting an - old-format category so that the new-format category will default - those attributes to the global variables. - -2003-03-03 Reiner Steib - - * mail-source.el (mail-source-delete-old-incoming-confirm): Fixed - doc-string. - -2003-03-03 Jesper Harder - - * nnrss.el (nnrss-decode-entities-unibyte-string): Use `buffer-string'. - * nndoc.el (nndoc-dissect-mime-parts-sub): do. - * nndb.el (nndb-request-accept-article, nndb-status-message): do. - * mm-url.el (mm-url-decode-entities-string): do. - * mml1991.el (mml1991-mailcrypt-sign, mml1991-gpg-sign): do. - * mm-decode.el (mm-find-raw-part-by-type): do. - * message.el (message-send-mail-partially) - (message-send-mail-with-sendmail): do. - * gnus-uu.el (gnus-uu-save-article, gnus-uu-reginize-string): do. - * gnus-kill.el (gnus-pp-gnus-kill): do. - * gnus-art.el (gnus-article-treat-unfold-headers) - (gnus-article-encrypt-body): do. - -2003-02-24 Reiner Steib - - * mail-source.el (mail-source-delete-incoming): Allow integer value. - (mail-source-delete-old-incoming-confirm): New variable. - (mail-source-delete-old-incoming): Use it. New function. - (mail-source-callback): Call `mail-source-delete-old-incoming' if - `mail-source-delete-incoming' is a nonnegative integer. - -2003-03-03 Reiner Steib - - * gnus-msg.el (gnus-extended-version): Fix for 'emacs-gnus-config. - (gnus-user-agent): Fixed typo. - -2003-03-03 Kevin Greiner - - * gnus-agent.el (gnus-agent-enable-expiration): Fixed documentation. - (gnus-agent-expire-group-1): Removed invalid (interactive) specifier. - -2003-03-03 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-articles): Fix nil message. - (gnus-agent-fetch-session): Allow debugging to take place. - -2003-03-03 Jesper Harder - - * gnus-sum.el (gnus-highlight-selected-summary) - (gnus-article-get-xrefs, gnus-summary-show-thread): Use - `gnus-point-at-bol' and `gnus-point-at-eol' instead of - `(progn (beginning-of-line) (point))'. It's shorter, faster, - and makes it clear that we don't need the side effect. - * gnus-util.el (gnus-delete-line): do. - * gnus-xmas.el (gnus-group-add-icon): do. - * nnmail.el (nnmail-article-group, nnmail-cache-fetch-group): do. - * nntp.el (nntp-send-authinfo-from-file): do. - * nnml.el (nnml-header-value): do. - * nnheader.el (nnheader-insert-references): do. - * gnus-cite.el (gnus-article-highlight-citation) - (gnus-cite-parse): do. - * gnus-score.el (gnus-score-followup): do. - * gnus-draft.el (gnus-draft-send): do. - * gnus-group.el (gnus-group-highlight-line): do. - * gnus-cache.el (gnus-cache-braid-nov): do. - * nnfolder.el (nnfolder-retrieve-headers) - (nnfolder-request-article): do. - * gnus-art.el (article-hide-boring-headers) - (gnus-article-hide-header): do. - - * nnheader.el (nnheader-find-nov-line): Use gnus-delete-line. - * nnml.el (nnml-request-replace-article): do. - * nnmbox.el (nnmbox-request-move-article, nnmbox-delete-mail): do. - * nnfolder.el (nnfolder-request-move-article): do. - * gnus-cache.el (gnus-cache-possibly-remove-article): do. - * gnus-art.el (gnus-mm-display-part): do. - - * gnus-art.el (gnus-article-goto-part): Use gnus-goto-char. - -2003-03-02 Kevin Greiner - - * nntp.el (nntp-possibly-change-group): Avoid calling - process-buffer on nil (Which happened when you lost your - connection while fetching); instead signal a "Server Closed - Connection" error. - -2003-03-02 Kevin Greiner - - * gnus-agent.el (gnus-agent-enable-expiration): New - variable. Either ENABLE or DISABLE. Sets default behavior for - selecting which groups are expired. - (gnus-agent-cat-set-property, gnus-agent-cat-defaccessor, - gnus-agent-set-cat-groups): Provides abstract interface for - accessing agent category. Category now implemented by an alist. - (gnus-agent-add-group, gnus-agent-remove-group, - gnus-category-insert-line, gnus-category-edit-predicate, - gnus-category-edit-score, gnus-category-edit-groups, - gnus-category-copy, gnus-category-add, gnus-group-category): Use - new agent category abstraction. - (gnus-agent-find-parameter): New function. Search for agent - configuration parameter first in the group's parameters, then its - topics (if any), and then the group's category. If not found - anywhere, use the original defined constants. - (gnus-agent-fetch-headers, gnus-agent-fetch-group-1): Use new - gnus-agent-find-parameter. - (gnus-agent-fetch-headers, gnus-agent-uncached-articles): Clearing - gnus-agent-cache now blocks retrieving headers and articles from - the local cache. Fetched content is still added to the cache - before being returned. - (gnus-agent-fetch-session): Use error-message-string to generate - displayed error message. - (gnus-agent-customize-category): New Command. 'e' in category - buffer opens category customization buffer. - (gnus-category-read): Reads either positional or alist format; - returns alist format. - (gnus-category-write): Writes category file compatible with - current, and previous, versions of gnus-agent. - (gnus-category-make-function, gnus-category-make-function-1): - Corrected documentation; parameter is predicate NOT category. - (gnus-predicate-implies-unread): Now works in more cases per the - todo comment. - (gnus-function-implies-unread-1): New function. Supports - gnus-predicate-implies-unread. - (gnus-agent-expire-group): Command now provides default of group - under point. - (gnus-agent-expire-group-1): Obeys new agent-enable-expiration and - agent-days-until-old parameters. No longer supports - gnus-agent-expire-days being set to an alist. - (gnus-agent-request-article): Now performs its own checks of - gnus-agent, gnus-agent-cache, and gnus-plugged rather than - assuming that the caller will do them correctly. - (): Added one-time hook to gnus-group-prepare-hook. Detects when - gnus-agent-expire-days is set to an alist. Converts said alist - into group parameter so that gnus-agent-expire-days will not be - needed. - * gnus-art.el (gnus-request-article-this-buffer): Conditional - checks surrounding gnus-agent-request-article removed; now - performed by gnus-agent-request-article. - * gnus-cus.el (gnus-agent-parameters): New variable. List of - customizable group/topic parameters that regulate the agent. - (gnus-group-customize): Uses gnus-agent-parameters. Replaced - kill-buffer with gnus-kill-buffer to remove the killed buffer from - the list of gnus buffers. - (gnus-trim-whitespace): Removes leading and trailing whitespace - from multiline strings. - (gnus-agent-cat-prepare-category-field, - gnus-agent-customize-category): Constructs a category - customization buffer. - * gnus-int.el (gnus-retrieve-headers, - gnus-request-expire-articles): No longer checks gnus-agent-cache - as it is handled internally by the agent. - (gnus-request-head, gnus-request-body): Conditional checks - surrounding gnus-agent-request-article removed; now performed by - gnus-agent-request-article. - - * gnus-start.el (): Added defvar statements to resolve compilation - warnings. - (gnus-long-file-names): New function. Isolates platform dependent - msdos-long-file-names. - (gnus-save-startup-file-via-temp-buffer): New variable. Provides - option of writing directly to file. Avoids memory exhausted - errors when .newsrc.eld is huge. - (gnus-save-newsrc-file): Uses new - gnus-save-startup-file-via-temp-buffer. - (gnus-gnus-to-quick-newsrc-format): Rewritten to write to - standard-output. - (gnus-display-time-event-handler): Changed to alias from a defun - to avoid a compile-time warning when display-time-event-handler is - not defined. - * gnus-util.el (gnus-with-output-to-file): New macro. Binds - standard-output such that prin1 and princ will write directly to a - file. - - * gnus.el (gnus-agent-cache): Expanded documentation. - (gnus-summary-high-undownloaded-face): Removed second bold keyword - so that this face is actually bold. - - * nnkiboze.el (nnkiboze-request-article): Only use the cache when - gnus-use-cache has been set. - -2003-03-02 Jesper Harder - - * nnvirtual.el (nnvirtual-update-xref-header): Simplify. - -2003-03-01 Jesper Harder - - * gnus-art.el (gnus-article-refer-article): Be more permissive. - -2003-03-01 ShengHuo ZHU - - * spam.el: Fix typo. - -2003-03-01 Satyaki Das - (Trivial patch.) - - * pgg-gpg.el (pgg-gpg-process-region): Insert process status into - errors-buffer. This produces a nicer error message in case of - problems. - -2003-03-01 Teodor Zlatanov - - * spam.el (spam-maybe-spam-stat-load, spam-maybe-spam-stat-load): - load stats iff spam-use-stat is on - - * spam.el: add spam-maybe-spam-stat-load to gnus-startup hook, - also use spam-maybe-spam-stat-load and spam-maybe-spam-stat-save - instead of spam-stat-load and spam-stat-save in the - gnus-get-new-news-hook and gnus-save-newsrc-hook, respectively - -2003-03-01 ShengHuo ZHU - - * mm-view.el (mm-inline-text): Ignore errors from enriched-decode. - -2003-03-01 Lars Magne Ingebrigtsen - - * message.el (message-make-fqdn): Protect against nil user-mail. - -2003-02-28 Vasily Korytov - - * gnus-art.el (gnus-boring-article-headers): New values: - 'to-list and 'cc-list. - -2003-02-28 Teodor Zlatanov - - * spam.el (spam-setup-widening): new function to set - nnimap-split-download-body, we add it to gnus-get-new-news-hook - (spam-list-of-statistical-checks): list of statistical splitter - checks - (spam-split): added a widen call when a statistical check is - enabled - -2003-02-28 Reiner Steib - - * gnus-msg.el (gnus-user-agent): Changed default to - 'emacs-gnus-type, renamed 'full. - -2003-02-28 ShengHuo ZHU - - * nnfolder.el (nnfolder-request-accept-article): Don't use - mail-header-unfold-field. - -2003-02-27 ShengHuo ZHU - - * imap.el (imap-ssl-open): Don't depend on ssl.el. - * nntp.el (nntp-open-ssl-stream): Don't depend on ssl.el. - -2003-02-26 Teodor Zlatanov - - * spam.el: add spam-stat-load to gnus-get-new-news-hook - (spam-split): remove spam-stat-load call - -2003-02-26 Simon Josefsson - - * gnus-sum.el (gnus-summary-toggle-header): Run - gnus-article-decode-hook instead of calling a-decode-encoded-words - directly (the latter is run as part of the former). - -2003-02-26 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-expire-group): Remove debug. - -2003-02-25 Jesper Harder - - * message.el (message-sendmail-envelope-from): New option. - (message-sendmail-envelope-from): New function. - (message-send-mail-with-sendmail): Use it. - -2003-02-25 Reiner Steib - - * gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): Added - compensation for TDMA addresses. - -2003-02-24 Reiner Steib - - * gnus-msg.el (gnus-user-agent): New variable. - (gnus-version-expose-system): Removed. Obsoleted by - `gnus-user-agent'. - (gnus-extended-version): Use `gnus-user-agent'. - -2003-02-24 Teodor Zlatanov - - * spam.el (spam-stat-register-spam-routine, - spam-stat-register-ham-routine): remove spam-stat-save - (spam-stat hook): add spam-stat-save to the gnus-save-newsrc-hook - -2003-02-24 Kevin Greiner - - * gnus-group.el (gnus-topic-mode-p): Fixed free variable - reference. - -2003-02-24 Kevin Greiner - - * nnheader.el (nnheader-find-nov-line): Changed midpoint - calculation to avoid integer overflow. - -2003-02-24 Reiner Steib - - * gnus-start.el (gnus-backup-startup-file): Fixed custom type. - -2003-02-24 Ted Zlatanov - * spam.el: disabled spam-get-article-as-filename - - From Michael Shields - - * gnus-group.el (gnus-group-is-exiting-without-update-p): New. - * gnus-sum.el (gnus-summary-exit-no-update): Use it. - * gnus-sum.el (gnus-summary-expire-articles): Use it. - * spam.el (spam-summary-prepare-exit): Use it. - * gnus.el (gnus-install-group-spam-parameters): New. - * spam.el (spam-group-ham-processor-copy-p): New. - * spam.el (spam-summary-prepare-exit): Support for ham copying. - * spam.el (spam-mark-spam-as-expired-and-move-routine): Fix bug - that would cause the current message to be moved if the group had - no spam. - * spam.el (spam-ham-move-routine): New `copy' argument. - -2003-02-24 Kai Gro,A_(Bjohann - From Martin Thornquist - - * gnus-topic.el (gnus-topic-select-group): Select last group if - after last group. - * gnus-group.el (gnus-group-select-group): Ditto. - -2003-02-24 Katsumi Yamaoka - - * gnus-art.el (popup-menu): Compiler macro for Emacs 20. - (gnus-article-refer-article): Use gnus-point-at-(b|e)ol instead of - point-at-(b|e)ol which aren't available in Emacs 20. - - * gnus-registry.el (puthash): Alias to cl-puthash for Emacs 20. - -2003-02-23 Kevin Greiner - - * gnus-start.el (gnus-activate-group): Re-enabled the catch error - clause of the condition-case statement. Errors connecting to a - server no longer terminate gnus. - - * gnus-agent.el (gnus-agent-toggle-plugged): Renamed parameter to - make its use obvious. Added no-nothing case to avoid - opening(closing) servers when already open(closed). - (gnus-agent-while-plugged): Added macro to facilitate internal use - of gnus-agent-toggle-plugged. - (gnus-agent-fetch-group): Use new gnus-agent-while-plugged to - temporarily open servers. - (gnus-agent-get-undownloaded-list): Sort list of article numbers - as sorting gnus-newsgroup-headers is wrong. - (gnus-agent-summary-fetch-group): Use new gnus-agent-while-plugged - to temporarily open servers. Corrected logic to handle setting - gnus-agent-mark-unread-after-downloaded. - (gnus-agent-fetch-articles): Now handles headers with missing - article sizes and/or missing article lengths. Now clears the - message buffer when finished. - (gnus-agent-fetch-group-1): Position point before calling - gnus-summary-set-agent-mark. - (gnus-get-predicate): Corrected description, parameter is - predicate not category. - (gnus-agent-expire-group): Adapted the gnus-agent-expire-* code to - provide a separate single group expiration function. - (gnus-agent-regenerate-group): Now clears the message buffer when - finished. - -2003-02-23 Kai Gro,A_(Bjohann - - * gnus.el (gnus-agent-target-move-group-header): New variable. - * gnus-draft.el (gnus-draft-send): If special header - "X-Gnus-Agent-Target-Move-Group" is present, do like Gcc into - that group, instead of performing the regular sending functions. - -2003-02-23 Katsumi Yamaoka - - * gnus-xmas.el (gnus-xmas-mime-button-menu): Accept a prefix arg. - -2003-02-20 Reiner Steib - - * message.el (message-user-fqdn, message-valid-fqdn-regexp): New - variables. - (message-make-fqdn): Use it. Improved validity check. - -2003-02-23 Lars Magne Ingebrigtsen - - * message.el (message-user-mail-address): Check whether - user-mail-address looks valid. - - * gnus-msg.el (gnus-mailing-list-followup-to): New function. - - * gnus-util.el (gnus-fetch-original-field): New function. - -2003-02-23 Kai Gro,A_(Bjohann - - * message.el (message-mode): \\(...\\) around additional - paragraph-separate alternative. - -2003-02-23 Jesper Harder - - * gnus-art.el (gnus-mime-button-commands): Add ellipsis. - (gnus-mime-button-menu): Define MIME popup menu with easy-menu to - display key bindings. - (gnus-mime-button-menu): Rewrite. - -2003-02-23 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-button-url-regexp): Removed `. - -2003-02-23 Max Froumentin - - * gnus-art.el (gnus-button-url-regexp): Remove `, enter '. - -2003-02-23 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-mime-action-on-part): Require a match - interactively. - - * gnus-start.el (gnus-save-newsrc-file): Use - gnus-backup-startup-file. - (gnus-backup-startup-file): New variable. - -2003-02-22 Lars Magne Ingebrigtsen - - * gnus.el (gnus-summary-buffer-name): Moved function here. - - * gnus-draft.el (defun): Remove debug. - -2003-02-22 Jesper Harder - - * gnus-sum.el (gnus-summary-refer-article): Skip method if we - can't open server. - -2003-02-22 Lars Magne Ingebrigtsen - - * gnus-draft.el (defun): Configure posting styles. - - * gnus-start.el (gnus-get-unread-articles-in-group): Make sure - the entry for the group exists before we alter it. - -2003-02-22 Kai Gro,A_(Bjohann - - * message.el (message-mode): MML tags separate paragraphs. Small - change from David S Goldberg . - - * gnus-agent.el (gnus-agent-get-undownloaded-list): Sort - `gnus-newsgroup-headers'. - - * gnus-art.el (gnus-article-refer-article): Grok more message id - formats. From Karl Pfl,Ad(Bsterer . - -2003-02-22 Jesper Harder - - * mm-decode.el (mm-path-name-rewrite-functions): Doc fix: don't - use "path name". - -2003-02-21 Teodor Zlatanov - - * gnus-sum.el (gnus-summary-move-article) - (gnus-summary-expire-articles): send data header for article, not - just article ID - - * gnus-registry.el (gnus-registry-hashtb, gnus-register-action) - (gnus-register-spool-action): added hashtable of message ID keys - with message motion data - -2003-02-21 Florian Weimer - From Reiner Steib . - - * gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): New - variable, used in `gnus-button-mid-or-mail-heuristic'. - (gnus-button-mid-or-mail-heuristic): New function derived from - Florian Weimer's Perl script. - (gnus-button-handle-mid-or-mail): Allow a function instead of - 'guess. - (gnus-button-guessed-mid-regexp): Removed. - -2003-02-20 Katsumi Yamaoka - - * message.el (message-resend): Bind message-setup-hook to nil; - remove X-Draft-From header. - -2003-02-20 Jesper Harder - - * gnus-sum.el (gnus-simplify-subject-fully, gnus-subject-equal) - (gnus-newsgroup-undownloaded) - (gnus-summary-save-parts-default-mime, gnus-auto-select-next): - Doc fixes. - -2003-02-17 John Paul Wallington - - * gnus.el (gnus-shell-command-separator, gnus-email-address) - (gnus-default-charset, gnus-other-frame-parameters): Doc fixes. - -2003-02-20 Jesper Harder - - * gnus-spec.el (gnus-xmas-format): Use insert instead of - insert-string which is obsolete in Emacs 21.4. - - * message.el (message-cross-post-followup-to-header): do. - - * spam.el (spam-ifile-register-with-ifile) - (spam-stat-register-spam-routine) - (spam-stat-register-ham-routine) - (spam-bogofilter-register-with-bogofilter): do. - - * mailcap.el (mailcap-mime-data): Fix typo. - - * gnus-topic.el (gnus-topic-make-menu-bar): Add ellipsis. - -2003-02-19 Reiner Steib - - * gnus-cite.el (gnus-cite-unsightly-citation-regexp) - (gnus-cite-parse): Renamed `gnus-unsightly-citation-regexp' to - `gnus-cite-unsightly-citation-regexp'. - -2003-02-19 Katsumi Yamaoka - - * gnus-msg.el (gnus-copy-article-buffer): Copy an article header - even if there's just a header. - -2003-02-19 Jesper Harder - - * message.el (message-fix-before-sending): Fix highlighting of - illegible and invisible text. - - * gnus-util.el (gnus-multiple-choice): Separate choices with - ",,A (B". Suggested by Dan Jacobson . - -2003-02-18 Jesper Harder - - * gnus-sum.el (gnus-summary-exit-no-update): Use gnus-kill-buffer. - -2003-02-18 Teodor Zlatanov - - * spam.el (spam-ham-move-routine) - (spam-mark-spam-as-expired-and-move-routine): use - gnus-summary-kill-process-mark and gnus-summary-yank-process-mark - around process-mark manipulation on the group - -2003-02-17 Kai Gro,A_(Bjohann - - * gnus-sum.el (gnus-summary-make-menu-bar): Add MIME/Multipart - submenu. - -2003-02-17 Lars Magne Ingebrigtsen - - * mail-source.el (mail-source-fetch): Reverse the return value of - the continuation question. - -2003-02-16 Lars Magne Ingebrigtsen - - * nndraft.el (nndraft-request-move-article): Bind - nnmh-allow-delete-final to t. - -2003-02-14 ShengHuo ZHU - - * mm-uu.el (mm-uu-uu-filename): Fix use of character constant. - -2003-02-11 Stefan Monnier - - * nntp.el (nntp-accept-process-output): Don't use point-max to get - the buffer's size. - -2003-01-31 Joe Buehler - - * nnheader.el: Added cygwin to system-type comparisons. - -2003-01-27 Juanma Barranquero - - * imap.el (imap-mailbox-status): Fix typo. - -2003-02-14 ShengHuo ZHU - - * gnus-art.el (gnus-article-prepare): Don't set agent mark if - online. - -2003-02-14 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-group-make-menu-bar): Include all - commands. - * gnus-sum.el: Small change from Frank Weinberg - : - (gnus-auto-center-group): New variable. - (gnus-summary-read-group-1): Use it. - (gnus-summary-next-group): Fix docstring. - -2003-02-13 Katsumi Yamaoka - - * gnus-util.el (gnus-faces-at): Simplify. - -2003-02-13 Teodor Zlatanov - - * spam.el (spam-ham-move-routine) - (spam-mark-spam-as-expired-and-move-routine): made the article - move conditional, so it's not called even if there's nothing to move - -2003-02-13 Kai Gro,A_(Bjohann - - * message.el (message-unix-mail-delimiter): Accept any whitespace - after the email address and before the date; do not require the - space character. From Kurt B. Kaiser . - -2003-02-13 Katsumi Yamaoka - - * gnus-art.el (gnus-article-only-boring-p): Make sure that the - gnus-article-boring-faces variable is bound; use gnus-faces-at. - - * gnus-util.el (gnus-faces-at): New macro. - -2003-02-13 Michael Shields - - * gnus-cite.el - (gnus-cite-attribution-suffix, gnus-cite-parse): - Better handling for Microsoft citation styles. - (gnus-unsightly-citation-regexp): New. - -2003-02-12 Michael Shields - - * gnus-art.el (article-strip-banner): Strip both per-group and - per-user-address banners. - (article-really-strip-banner): New. - -2003-02-12 Michael Shields - - * gnus-sum.el (gnus-article-goto-next-page, - gnus-article-goto-prev-page): Call gnus-summary-*-page, instead of - relying on the summary bindings of `n' and `p'. - -2003-02-12 Michael Shields - - * gnus-art.el (gnus-article-only-boring-p): New. - (gnus-article-skip-boring): New. - * gnus-cite.el (gnus-article-boring-faces): New. - * gnus-sum.el (gnus-summary-next-page): Use - gnus-article-only-boring-p. - -2003-02-12 Teodor Zlatanov - - * spam.el (spam-mark-spam-as-expired-and-move-routine) - (spam-ham-move-routine): unmark all articles before marking those - of interest and calling gnus-summary-move-article - -2003-02-12 Jesper Harder - - * gnus.el (gnus-kill-buffer): Move to gnus.el because it's - logically the complement of gnus-get-buffer-create and - gnus-add-buffer. - - * gnus-util.el (gnus-kill-buffer): do. - - * nnmail.el: Autoload gnus-kill-buffer. - -2003-02-11 Kevin Greiner - - * gnus-agent.el (gnus-summary-set-agent-mark): Added call to - gnus-summary-goto-subject as gnus-summary-update-mark operates on - the current LINE. - (gnus-agent-summary-fetch-group): Minimized the number of times - that the article is updated in the buffer. - -2003-02-11 Teodor Zlatanov - - * spam.el (spam-ham-move-routine): use the process-mark instead of - gnus-current-article when moving articles - (spam-mark-spam-as-expired-and-move-routine): ditto, use the process-mark - -2003-02-11 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-expire-articles): Recursive. - (gnus-topic-catchup-articles): Ditto. - (gnus-topic-mark-topic): Reverse recursive logic. - -2003-02-11 Jesper Harder - - * gnus-sum.el (gnus-summary-refer-thread): Handle case where - gnus-refer-thread-limit is t. - -2003-02-10 Jesper Harder - - * mm-util.el (mm-mule-charset-to-mime-charset): Use - sort-coding-systems to prefer utf-8 over utf-16. - -2003-02-09 Kevin Greiner - - * gnus-agent.el (gnus-agent-expire-days): - gnus-request-move-article depends on gnus-agent-expire to clean up - the cache after moving the article. Therefore, g-a-e-d can NOT - default to nil or can gnus-agent-expire be disabled by doing so. - If you don't want to run gnus-agent-expire, don't call it. - (gnus-agent-expire): The broken test to disable gnus-agent-expire - when g-a-e-d was NOT nil was removed. - (gnus-agent-article-name): Removed unnecessary input test as - article IDs are always strings. - (gnus-agent-regenerate-group): Added check to protect against - servers that generate absurdly long article IDs. Valid IDs are - less than 10 digits to avoid overflow errors. Fixed logic error - when ensuring that the final article ID is present in the new - alist. - -2003-02-09 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-goto-missing-topic): Just move to the - next line after finding the parent. - -2003-02-08 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bumped. - -2003-02-08 23:23:27 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.15 is released. - -2003-02-08 Michael Welsh Duggan - - * nnmail.el (nnmail-split-it): If a message ends up matching the - same mailbox more than once, it will cause duplicates to appear - in the mailbox. - -2003-02-08 Simon Josefsson - - * gnus-sum.el (gnus-summary-select-article): Remove blink removal - code that only worked under Emacs. - - * pgg-gpg.el (pgg-gpg-process-region): Don't blink. From Satyaki - Das . - -2003-02-08 Jesper Harder - - * gnus-art.el (gnus-article-refer-article): Use - gnus-replace-in-string. - - * gnus-util.el (gnus-map-function): Remove unneeded let-binding. - (gnus-remove-duplicates): do. - -2003-02-07 Teodor Zlatanov - - * gnus-int.el (gnus-internal-registry-spool-current-method): new variable - (gnus-request-scan): set - gnus-internal-registry-spool-current-method to gnus-command-method - before a request-scan operation - - * gnus-registry.el (regtest-nnmail): use - gnus-internal-registry-spool-current-method - -2003-02-07 Lars Magne Ingebrigtsen - - * mail-source.el (mail-source-fetch): Typo fix. - -2003-02-07 Teodor Zlatanov - - * nnmail.el (nnmail-spool-hook): new hook - (nnmail-cache-insert): call nnmail-spool-hook - - * gnus-registry.el: new file with examples of using the hooks - - * gnus.el (gnus-registry): added registry customization group - (gnus-group-prefixed-name): improve function to return full group - name optionally - (gnus-group-guess-prefixed-name): shortcut to - gnus-group-prefixed-name, using just the group name - (gnus-group-full-name): always get a group's full name - (gnus-group-guess-full-name): shortcut, using just the group name - - * gnus-sum.el (gnus-summary-article-move-hook) - (gnus-summary-article-delete-hook) - (gnus-summary-article-expire-hook): new hooks - (gnus-summary-move-article, gnus-summary-expire-articles) - (gnus-summary-delete-article): invoke the new hooks - -2003-02-07 Frank Weinberg - - * gnus-art.el (gnus-article-refer-article): Strip leading "news:" - from message-ID - -2003-02-07 Jesper Harder - - * gnus-util.el (gnus-run-hooks): Use save-current-buffer. - -2003-02-07 John Paul Wallington - - * mm-util.el (mm-delete-duplicates, mm-append-to-file) - (mm-write-region, mm-detect-coding-region): Doc fixes. - -2003-02-07 Lars Magne Ingebrigtsen - - * mail-source.el (mail-source-fetch): Ignore errors. - (mail-source-ignore-errors): New variable. - - * gnus-sum.el (gnus-summary-refer-thread): Don't re-fetch current - articles. - - * gnus-msg.el (gnus-version-expose-system): Change default. - -2003-02-07 Vasily Korytov - - * gnus-msg.el (gnus-version-expose-system): New variable. - -2003-02-07 Simon Josefsson - - * mml-sec.el (mml-unsecure-message): Don't use kill-region. Tiny - patch from deskpot@myrealbox.com (Vasily Korytov). - -2003-02-02 Lars Magne Ingebrigtsen - - * gnus-art.el (article-display-face): Get the Face header from - the current buffer. - -2003-02-06 Katsumi Yamaoka - - * gnus-art.el (gnus-mime-view-part-internally): Bind - buffer-read-only to nil. - -2003-02-05 Katsumi Yamaoka - - * gnus-agent.el (gnus-agent-expire-1,2): Pass the dir argument - from g-a-e-1 to g-a-e-2. - -2003-02-05 Teodor Zlatanov - - * spam.el (spam-check-BBDB): no need to regexp-quote the argument - of bbdb-search-simple, use spam-use-BBDB-exclusive - (spam-check-whitelist): use spam-use-whitelist-exclusive - (spam-use-whitelist-exclusive): new variable affecting - spam-use-whitelist - (spam-use-BBDB-exclusive): new variable affecting spam-use-BBDB - -2003-02-05 Simon Josefsson - - * gnus-agent.el (gnus-agent-expire-days): Change default to nil. - (gnus-agent-expire): Don't expire if g-a-e-d is nil. - (gnus-agent-expire): Move most code into gnus-agent-expire-1. - (gnus-agent-expire-1): New. - (gnus-agent-expire-1): Move code into gnus-agent-expire-2. - (gnus-agent-expire-2): New. - -2003-02-05 Jesper Harder - - * gnus-util.el (gnus-delete-if): Rename to gnus-remove-if. - "delete-if" is misleading because it isn't actually destructive. - - * gnus-topic.el (gnus-group-prepare-topics): Use new name. - - * nnmail.el (nnmail-purge-split-history): do. - - * gnus-win.el (gnus-get-buffer-window): do. - - * gnus-sum.el (gnus-simplify-whitespace): Remove unnecessary - let-binding. - (gnus-simplify-all-whitespace): do. - -2003-02-05 Katsumi Yamaoka - - * gnus-delay.el (gnus-delay-article): Fix binding of the - nndraft:delayed group. - -2003-02-04 Teodor Zlatanov - - * gnus.el (spam group parameters): change 'other to 'const in - the group parameter definitions to soothe XEmacs - -2003-02-04 Kai Gro,A_(Bjohann - - * gnus-delay.el (gnus-delay-article): Really create - nndraft:delayed group if it doesn't exist. - -2003-02-04 Jesper Harder - - * gnus-sum.el (gnus-summary-search-article): Speed up by - disabling various visual features while searching. - (gnus-summary-recenter): Test gnus-auto-center-summary first. - -2003-02-03 Jesper Harder - - * spam.el (spam-list-of-checks): Don't quote nil and t in - docstrings. From the elisp manual: - - When a documentation string refers to a Lisp symbol, write - it [..] with single-quotes around it. [..] There are two - exceptions: write t and nil without single-quotes. - - * messcompat.el (message-from-style): do. - - * message.el (message-send-mail): do. - - * gnus-util.el (gnus-use-byte-compile): do. - - * gnus-score.el (gnus-score-lower-thread): do. - - * gnus-int.el (gnus-server-unopen-status): do. - - * gnus.el (gnus-define-group-parameter, gnus-large-newsgroup) - (large-newsgroup-initial, gnus-install-group-spam-parameters): do. - - * gnus-cus.el (gnus-group-customize, gnus-score-parameters) - (gnus-group-parameters): do. - - * gnus-art.el (gnus-article-mime-match-handle-function): do. - - * mm-decode.el (mm-text-html-renderer): do. - -2003-02-02 Katsumi Yamaoka - - * nnheader.el (nnheader-directory-separator-character): Change the - way to compute the dafault value. - -2003-02-02 Jesper Harder - - * gnus-art.el (gnus-button-handle-describe-key): Implement it. - (gnus-button-alist): Fix regexp for describe-key. - (gnus-button-handle-describe-function) - (gnus-button-handle-describe-variable) - (gnus-button-handle-apropos, gnus-button-handle-apropos-command) - (gnus-button-handle-apropos-variable) - (gnus-button-handle-apropos-documentation): Docstring fix. - - * gnus-util.el (gnus-kill-buffer): Use get-buffer. - -2003-02-01 Lars Magne Ingebrigtsen - - * gnus-draft.el (gnus-group-send-queue): Bind gnus-posting-styles - to nil. - - * nnmail.el: Removed gnus-util autoload. - - * gnus.el: Use gnus-prin1-to-string throughout. - - * gnus-util.el (gnus-prin1-to-string): Bind print-length and - print-level. - - * gnus-art.el (article-display-x-face): Removed grey x-face stuff. - (gnus-treat-display-grey-xface): Removed. - - * gnus-fun.el (gnus-grab-cam-face): New. - (gnus-convert-image-to-gray-x-face): Removed. - (gnus-convert-gray-x-face-to-xpm): removed. - (gnus-convert-gray-x-face-region): Removed. - (gnus-grab-gray-x-face): Removed. - - * nnmail.el (nnmail-expiry-wait-function): Doc indent. - -2003-01-31 Jesper Harder - - * gnus-util.el (gnus-kill-buffer): Functions in gnus-util - shouldn't depend on the rest of Gnus, so test if gnus-buffers is - bound. - - * nnmail.el (nnmail-cache-close): Use gnus-kill-buffer. - -2003-01-30 Jesper Harder - - * gnus-cite.el (gnus-cite-reply-regexp, gnus-cite-always-check): - Remove -- these are bogus options which are never used. - -2003-01-29 Jesper Harder - - * gnus-art.el (gnus-article-mode): Use summary tool bar. - -2003-01-27 Teodor Zlatanov - - * spam.el (spam-check-blackholes) - (spam-blackhole-good-server-regex): new variable to skip some IPs - when checking blackholes; use it - (spam-check-bogofilter-headers) - (spam-bogofilter-bogosity-positive-spam-header): new variable, in - case more X-Bogosity is used than just "Yes/No" - (spam-ham-move-routine): semi-fixed, only first article is - properly moved now - -2003-01-27 Jesper Harder - - * gnus-util.el (gnus-kill-buffer): Remove buffer from gnus-buffers - as well. - - * gnus-sum.el (gnus-select-newsgroup): Use gnus-kill-buffer. - - * gnus-score.el (gnus-score-headers, gnus-score-find-bnews): do. - - * gnus-start.el (gnus-save-newsrc-file, gnus-clear-system): do. - - * gnus-bcklg.el (gnus-backlog-shutdown): do. - - * gnus-srvr.el (gnus-server-exit, gnus-browse-exit): do. - -2003-01-26 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-face-encode): New function. - (gnus-convert-png-to-face): Use it. - - * gnus-sum.el (gnus-summary-make-menu-bar): Added M-& to marks. - -2003-01-26 Jesper Harder - - * mm-decode.el (mm-dissection-list): Remove. - (mm-dissect-singlepart): Don't push to mm-dissection-list, it's - only used in mm-remove-all-parts. - (mm-remove-all-parts): Remove it, it's never called. - -2003-01-25 Simon Josefsson - - * gnus-group.el (gnus-group-make-group): Report errors. - - * nnimap.el (nnimap-request-create-group): Ditto. - - * sieve-manage.el (sieve-manage-is-okno): Parse literal strings. - - * sieve.el (sieve-upload): Fix error printing. - - * mm-encode.el (mm-qp-or-base64): Always QP iff - mm-use-ultra-safe-encoding and cleartext PGP. - - * gnus-sum.el (gnus-summary-select-article): Inhibit - redisplay (mainly for secured messages). - - * nnmail.el (nnmail-article-group): Copy body too (but don't - process it). - -2003-01-25 Jesper Harder - - * gnus-art.el (gnus-article-setup-buffer): Reset - gnus-button-marker-list. - -2003-01-25 Lars Magne Ingebrigtsen - - * nntp.el (nntp-read-timeout): Default to using a second delay - under Microsoft Windows. - -2003-01-24 Lars Magne Ingebrigtsen - - * nnheader.el (nnheader-directory-separator-character): New - variable. - -2003-01-24 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-max-fetch-size) - (gnus-agent-article-alist, gnus-agent-get-undownloaded-list) - (gnus-agent-catchup, gnus-agent-summary-fetch-group) - (gnus-agent-fetch-articles, gnus-agent-backup-overview-buffer) - (gnus-agent-flush-cache, gnus-agent-fetch-headers) - (gnus-agent-braid-nov, gnus-agent-load-alist) - (gnus-agent-article-alist-save-format) - (gnus-agent-read-agentview, gnus-agent-save-alist) - (gnus-agent-fetch-group-1, gnus-agent-expire) - (gnus-agent-uncached-articles, gnus-agent-retrieve-headers) - (gnus-agent-regenerate-group): Reformat to keep under eighty - columns. Reword docstrings so that first line is under eighty - chars and a complete sentence. Still need to work on the rear - end of the file, in particular gnus-agent-expire. - -2003-01-24 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agentize): Indent. - - * gnus.el (gnus-version-number): Bumped. - -2003-01-24 20:32:44 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.14 is released. - -2003-01-24 Kai Gro,A_(Bjohann - - * gnus-sum.el (gnus-summary-prepare-threads): Reset state for %B - before beginning. Tiny patch from Mark Thomas - . - -2003-01-24 Teodor Zlatanov - - * spam.el (spam-check-blackholes, spam-split) - (spam-mark-junk-as-spam-routine, spam-summary-prepare-exit): added - gnus-message calls to show to users what spam.el is doing - -2003-01-24 Jesper Harder - - * gnus-msg.el (gnus-message-replysign) - (gnus-message-replyencrypt): Fix typo. - -2003-01-24 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-mime-security-show-details): Toggle showing - details. - -2003-01-23 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-press-button): let* -> let. - (gnus-mime-security-show-details): Cleaned up. - (gnus-mime-security-press-button): Save excursion. - (gnus-insert-mime-security-button): Clean up. - - * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Doc fix. - - * gnus-async.el (gnus-async-wait-for-article): Don't use a - timeout. - - * nntp.el (nntp-accept-process-output): Removed timeout. - (nntp-read-timeout): New variable. - (nntp-accept-process-output): Use it. - - * gnus-sum.el (gnus-data-find-list): Remove *. - -2003-01-23 Kevin Greiner - - * gnus-sum.el (gnus-summary-first-subject): Fixed bug that I - introduced on 2002-01-22. - (gnus-summary-first-unseen-or-unread-subject): Ditto. - -2003-01-23 Teodor Zlatanov - - * spam.el (spam-check-regex-headers, spam-list-of-checks) - (spam-regex-headers-spam, spam-regex-headers-ham): added spam/ham - checks of incoming mail based on simple header regexp matching - -2003-01-22 Teodor Zlatanov - - * gnus-sum.el (gnus-spam-mark): set to `$' - -2003-01-22 Kevin Greiner - - * gnus-agent.el (gnus-agent-get-undownloaded-list): Now computes - gnus-newsgroup-unfetched, the list of articles whose headers have - not been fetched from the server. - - * gnus-sum.el (gnus-summary-find-next): Removed undownloaded - parameter as it never worked due to a bug. Added check to prevent - selection of any article in the gnus-newsgroup-unfetched list. - (gnus-summary-find-prev): Added check to prevent selection of any - article in the gnus-newsgroup-unfetched list. - (gnus-summary-first-subject): Documented API. Modified - implementation so that constraints are handled independently. - Added check to prevent selection of any article in the - gnus-newsgroup-unfetched list. - (gnus-summary-first-unseen-subject): Updated parameters in - gnus-summary-first-subject call to match new API. - (gnus-summary-first-unseen-or-unread-subject): Ditto. - (gnus-summary-catchup): Do not mark unfetched articles as read. - -2003-01-22 Jesper Harder - - * gnus-art.el (gnus-treat-strip-pgp, gnus-article-hide-pgp-hook): - make-obsolete-variable allows only two arguments in XEmacs and - Emacs 20. - - * gnus-sum.el (gnus-summary-wash-hide-map): Remove - gnus-article-hide-pgp. - (gnus-summary-make-menu-bar): do. - - * gnus-art.el (gnus-treat-strip-pgp): Make obsolete. - (gnus-treatment-function-alist): Remove gnus-treat-strip-pgp and - gnus-article-hide-pgp. - (article-hide-pgp): Remove. - (gnus-article-hide): Remove gnus-article-hide-pgp. - - * gnus.el: Remove gnus-article-hide-pgp - -2003-01-21 Lars Magne Ingebrigtsen - - * message.el (message-required-headers): Doc fix. - -2003-01-21 Teodor Zlatanov - - * spam.el (spam-group-ham-processor-bogofilter-p): fixed bug - (spam-ifile-register-ham-routine, spam-ifile-ham-category): new - option to make ifile a purely binary classifier - -2003-01-21 Lars Magne Ingebrigtsen - - * mml-sec.el (mml-secure-sign-pgpauto): Renamed. - (mml-secure-encrypt-pgpmime): Removed double. - - * gnus-sum.el (gnus-summary-mark-article-as-replied): Added - debugging statements. - -2003-01-21 Andreas Fuchs - - * mml-sec.el (mml-sign-alist): Added pgpauto. - -2003-01-21 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bumped version number. - -2003-01-21 07:15:41 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.13 is released. - -2003-01-21 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-button-url-regexp): Removed |. - - * message.el (message-send-hook): Doc fix. - - * gnus-win.el (gnus-buffer-configuration): Display article - instead of article-copy when `reply'. - -2003-01-21 Jesper Harder - - * gnus.el (gnus-format): Change customize group to gnus. - (gnus-cache): Add link. - (gnus-group-charter-alist): Fix docstring. - -2003-01-20 Jesper Harder - - * mailcap.el (mailcap-print-command): lpr-command might be - unbound in XEmacs. - -2003-01-18 Kevin Greiner - - * gnus-agent.el (gnus-agent-regenerate-group): Added interactive form. - - * gnus-sum.el (gnus-summary-update-article-line): Fixed - calculation of net characters added for use in the gnus-data - structure. - -2003-01-18 Kai Gro,A_(Bjohann - - * nnmail.el (nnmail-process-unix-mail-format): Improve error - message. Suggested by Jari Aalto. - -2003-01-17 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-followup-with-original): Clean up. - (gnus-article-reply-with-original): Ditto. - - * gnus-sum.el (gnus-summary-catchup): Make sure downloadable, - read articles don't become unread. - -2003-01-17 Simon Josefsson - - * gnus-fun.el (gnus-x-face-from-file): - (gnus-face-from-file): Suggest image format in minibuffer prompt. - - * gnus-fun.el (gnus-convert-image-to-x-face-command) - (gnus-convert-image-to-face-command): Doc fix. - -2003-01-17 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-convert-face-to-png): Protect against errors. - -2003-01-17 Jesper Harder - - * gnus-art.el (gnus-mime-print-part): Use mm-save-part-to-file to - avoid encoding problems. - - * mailcap.el (mailcap-ps-command): New variable. - (mailcap-mime-data): Add print entry where applicable. Use - pdftotext on a tty. - -2003-01-16 ShengHuo ZHU - - * gnus-sum.el (gnus-alter-header-function): Add type and group. - -2003-01-16 Simon Josefsson - - * gnus-fun.el (gnus-convert-image-to-x-face-command) - (gnus-convert-image-to-face-command, gnus-x-face-from-file) - (gnus-face-from-file): Doc fix; don't mention image format. - -2003-01-16 Teodor Zlatanov - - * spam.el (spam-get-article-as-filename): new function (unused for now) - (spam-get-article-as-buffer): new function - (spam-get-article-as-string): use spam-get-article-as-buffer - (spam-summary-prepare-exit): fixed bug, noticed by Malcolm Purvis - -2003-01-15 ShengHuo ZHU - - * gnus-agent.el: Don't use `path'. - From the GNU coding standards: - - Please do not use the term ``pathname'' that is used in Unix - documentation; use ``file name'' (two words) instead. We use - the term ``path'' only for search paths, which are lists of - directory names. - - * nnsoup.el (nnsoup-file-name): Ditto. - - * nnmail.el (nnmail-pathname-coding-system): Ditto. - (nnmail-group-pathname): Ditto. - - * nnimap.el (nnimap-group-overview-filename): Ditto. - - * nnheader.el (nnheader-pathname-coding-system): Ditto. - (nnheader-group-pathname): Ditto. - - * nnfolder.el (nnfolder-group-pathname): Ditto. - - * gnus.el (gnus-home-directory): Ditto. - - * gnus-group.el (gnus-group-icon-list): Ditto. - -2003-01-16 Jesper Harder - - * gnus-art.el (gnus-mime-print-part): Use mm-handle-media-type. - - * message.el (message-mode-menu): Use it. - (message-mode-menu): Deactivate "Yank Original" if there's no - reply buffer. - - * messagexmas.el (message-xmas-redefine): Redefine in XEmacs. - - * message.el (message-mark-active-p): New function. - -2003-01-15 Teodor Zlatanov - - * spam.el (spam-use-bogofilter-headers, spam-bogofilter-header) - (spam-bogofilter-database-directory): new variables - (spam-check-bogofilter-headers, spam-check-bogofilter) - (spam-bogofilter-register-with-bogofilter) - (spam-bogofilter-register-spam-routine) - (spam-bogofilter-register-ham-routine) - (spam-group-ham-processor-bogofilter-p): new functions for the new - Bogofilter interface - (spam-summary-prepare-exit): use the new Bogofilter functions - (spam-list-of-checks): added spam-use-bogofilter-headers - (spam-bogofilter-score): rewrote function - (spam-check-bogofilter): optional score parameter, uses - spam-check-bogofilter-headers better - (spam-check-bogofilter-headers): optional score parameter - - * gnus.el (gnus-install-group-spam-parameters): new variable, t by - default, in the gnus-start customization group. Used to disable - the spam-*/ham-* parameters. - (gnus-group-ham-exit-processor-bogofilter): new ham processor - -2003-01-15 Jesper Harder - - * gnus-xmas.el (gnus-xmas-redefine): Use region-exists-p in - XEmacs. - - * gnus-ems.el (gnus-mark-active-p): do. - -2003-01-15 Kevin Ryde - - * gnus.texi (Using MIME): Mention auto-compression-mode with - gnus-mime-copy-part. - -2003-01-15 Lars Magne Ingebrigtsen - - * message.el (message-send): Don't warn about duplicates when - superseding. - -2003-01-15 Simon Josefsson - - * nnimap.el (nnimap-split-download-body): New variable. - (nnimap-split-articles): Use it. - -2003-01-14 Kevin Greiner - - * gnus-agent.el (gnus-agent-check-overview-buffer): This data - integrity checker was incorrectly flagging, and removing, articles - whose article number was negative. - (gnus-agent-fetch-group-1): When executed in the group's summary - buffer, refresh each downloaded line to update the status flag and - font. Preserve the value of gnus-newsgroup-headers so that - gnus-agent-fetch-articles can split the requests by size. - (gnus-agent-expire): Corrected day calculation for when - gnus-agent-expire-days contains a list. - -2003-01-14 Lars Magne Ingebrigtsen - - * gnus-audio.el (gnus-audio-au-player): Use executable-find. - -2003-01-13 Jhair Tocancipa Triana - - * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): Use - /usr/bin/play as default player. - (gnus-audio-play): Added ARG-DESCRIPTOR to prompt for a file to play. - -2003-01-14 Katsumi Yamaoka - - * gnus-msg.el (gnus-inews-add-send-actions): Allow a list of - articles to be marked as well. - -2003-01-14 Kevin Greiner - * gnus-agent.el (gnus-agent-get-undownloaded-list): Include the - fictious headers generated by nnagent (ie. Undownloaded Article - ####) in the list of articles that have not been downloaded. - - * gnus-int.el (): Added require declarations to resolve - compile-time warnings. - (gnus-open-server): If the server status is set to offline, - recursively execute gnus-open-server to open the offline backend - (e.g. nnagent). - -2003-01-14 Jesper Harder - - * gnus-art.el (gnus-article-reply-with-original): Use - gnus-mark-active-p. - (gnus-article-followup-with-original): do. - -2003-01-13 Reiner Steib - - * gnus-sum.el: Removed `(when t ...)' around `gnus-define-keys'. - -2003-01-13 Reiner Steib - - * gnus-score.el (gnus-score-edit-file-at-point): New function. - (gnus-score-find-trace): Bind it to `e' key. Added `q' for quit. - -2003-01-13 Romain FRANCOISE - - * gnus-fun.el (gnus-x-face-from-file): Quote file name. - (gnus-face-from-file): Ditto. - -2003-01-13 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-articles-to-read): Don't just apply - gnus-alter-articles-to-read-function to the unread articles. - -2003-01-13 Reiner Steib - - * deuglify.el (gnus-article-outlook-unwrap-lines) - (gnus-article-outlook-repair-attribution) - (gnus-article-outlook-rearrange-citation): New function names, - renamed from "gnus-outlook-" to "gnus-article-outlook-". Changed - doc-string. - - * gnus-sum.el (gnus-summary-mode-map): Use new function names, - removed `W k' key binding (use `W Y f' instead). - (gnus-summary-make-menu-bar): Use new function names. - -2003-01-13 Simon Josefsson - - * gnus-fun.el (gnus-random-x-face): Doc fix. - (gnus-insert-random-x-face-header): New function. - -2003-01-13 Jesper Harder - - * gnus-sum.el (gnus-summary-make-menu-bar): Deactivate items if - mark is not active. - - * gnus-msg.el (gnus-inews-do-gcc): Comment. - - * gnus-ems.el (gnus-mark-active-p): New function. - - * gnus-group.el (gnus-topic-mode-p): New function. - (gnus-group-make-menu-bar): Show more key bindings in topic mode. - Deactivate items if mark is not active. - -2003-01-12 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bumped version. - (gnus-summary-line-format): Doc fix. - -2003-01-12 22:02:49 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.12 is released. - -2003-01-12 Lars Magne Ingebrigtsen - - * mail-source.el (mail-sources): Removed autoload to make it - compile under XEmacs. - -2003-01-12 Raymond Scholz - - * gnus-msg.el (gnus-confirm-mail-reply-to-news): May be a - regexp or a function too. - (gnus-confirm-treat-mail-like-news): New variable. Ask for - confirmation even if the original article is mail. - -2003-01-12 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-inews-add-send-actions): Get the right - articles to be marked when not yanking. - -2003-01-12 Fran,Ag(Bois-David Collin - - * mm-decode.el (mm-get-part): Use mm-with-unibyte-current-buffer. - -2003-01-12 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-face-from-file): Autoload. - - * gnus-cite.el (gnus-cite-delete-overlays): Protect against more - errors. - -2003-01-12 Simon Josefsson - - * sieve.el (sieve-upload-and-bury): New. Suggested by - kai.grossjohann@uni-duisburg.de (Kai Gro,A_(Bjohann). - - * sieve-mode.el (sieve-mode-map): Bind s-u-a-b to C-c C-c. - Suggested by kai.grossjohann@uni-duisburg.de (Kai Gro,A_(Bjohann). - -2003-01-12 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-ignored-headers): Don't include the ^ and : - in every string. - - * gnus.el (gnus-version-number): Bumped version number. - -2003-01-12 13:46:20 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.11 is released. - -2003-01-12 Jesper Harder - - * message.el (message-fetch-reply-field): Narrow to headers. - - * gnus-msg.el (gnus-inews-do-gcc): Don't try to mark GCC's as read - if Gnus isn't alive. - -2003-01-11 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-group-1): Remove downloadable - marks from articles that are already stored in the agent. - (gnus-agent-backup-overview-buffer): New debug tool. Creates a - backup copy of an invalid .overview file for later analysis. - -2003-01-12 Gregorio Gervasio, Jr. - - * gnus-sum.el (gnus-summary-exit): Reverse change to make group - exit work with two frames. - -2003-01-11 Fran,Ag(Bois-David Collin - - * message.el (message-forward-make-body): Use mule4. - -2003-01-11 Lars Magne Ingebrigtsen - - * message.el (message-mode-map): Move wide-reply command. - -2003-01-10 Reiner Steib - - * deuglify.el (gnus-outlook-deuglify-attrib-verb-regexp): Added - castellano. - (gnus-outlook-display-hook): New variable. - (gnus-outlook-display-article-buffer): New function. - (gnus-outlook-unwrap-lines, gnus-outlook-repair-attribution) - (gnus-outlook-deuglify-article): Made them interactive and added - optional arg. Use `g-o-d-a-b'. - (gnus-article-outlook-deuglify-article): Use `g-o-d-a-b'. - - * gnus-sum.el: Added autoloads. - (gnus-summary-mode-map): Added gnus-summary-wash-deuglify-map. - (gnus-summary-make-menu-bar): Added "(Outlook) Deuglify" menu. - -2003-01-11 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-display-mime): Use the mime emulation - variable. - - * gnus-sum.el (gnus-article-emulate-mime): New variable. - - * gnus-start.el (gnus-read-newsrc-el-file): Make sure that the - newsrc-alist is initialized properly. - - * mail-source.el (mail-sources): Autoload. - - * gnus-sum.el (gnus-summary-make-false-root-always): Default to - nil. - - * gnus-msg.el (gnus-configure-posting-styles): Make sure we don't - insert two newlines. - - * message.el (message-check-news-header-syntax): Compute the - header length correctly. - -2003-01-10 Kevin Greiner - - * gnus-agent.el (gnus-agent-expire): Do not remove article from - alist when keeping fetched article file. - (gnus-agent-retrieve-headers): When parsing response for article - numbers, use the same algorithm as gnus-agent-braid-nov to protect - against garbage in the server's response. - - * gnus-int.el (gnus-request-expire-articles, - gnus-request-move-article): Only expire when the group's server - has been agentized. - -2003-01-10 Lars Magne Ingebrigtsen - - * gnus-cite.el (gnus-cite-delete-overlays): Protect against - errors when deleting overlays. - - * gnus-score.el (gnus-score-followup): Allow tracing. - - * gnus-art.el (gnus-treat-display-face): New variable. - (article-display-face): New command. - - * gnus-fun.el (gnus-face-from-file): New function. - (gnus-convert-face-to-png): Ditto. - - * gnus-art.el (gnus-ignored-headers): Added Face. - -2003-01-10 Simon Josefsson - - * nndraft.el (nndraft-request-group): Avoid crash in - directory-files when draft directory doesn't exists. - - * gnus-sum.el (gnus-select-article-hook): Add :option. - -2003-01-10 Teodor Zlatanov - - * spam.el (spam-use-stat): new variable - (spam-group-spam-processor-stat-p) - (spam-group-ham-processor-stat-p): new convenience functions - (spam-summary-prepare-exit): add spam/ham processors to sequence - (spam-list-of-checks): add spam-use-stat to list of checks - (spam-split): conditionally load the spam-stat tables - (spam-stat-register-spam-routine, spam-stat-register-ham-routine, - spam-check-ifile): new functions - - * spam-stat.el (spam-stat): typo fix - (spam-stat-install-hooks): new variable - (spam-stat-split-fancy-spam-group): added documentation clarification - (spam-stat-split-fancy-spam-threshhold): new variable - (spam-stat-install-hooks): make hooks conditional - (spam-stat-split-fancy): use spam-stat-split-fancy-spam-threshhold - - * gnus.el (gnus-group-ham-exit-processor-stat, spam-process): add - spam-stat ham/spam processor symbols - -2003-01-10 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-read-newsrc-el-file): Make sure the .eld - file exists. - -2003-01-10 Simon Josefsson - - * gnus-sum.el (gnus-summary-read-group-1): Don't select first - undownloaded/downloadable only when unplugged. - -2003-01-10 Jesper Harder - - * gnus-srvr.el (gnus-browse-foreign-server): Optimize inner loop. - -2003-01-09 Teodor Zlatanov - - * spam.el (spam-check-ifile): fixed call-process-region to use the - db parameter only if it's set - (spam-ifile-register-with-ifile): ditto - -2003-01-09 Alex Schroeder - - * spam-stat.el (spam-stat-save): Set spam-stat-ngood and - spam-stat-nbad before creating the hash table. - (spam-stat-reset): Set spam-stat-ngood and spam-stat-nbad to 0. - Changed copyright statement to FSF. - -2003-01-09 Kevin Greiner - - * gnus-agent.el (gnus-agent-catchup): Do not mark cached nor - processable articles as read. - (gnus-agent-summary-fetch-series): Remove processable and - downloadable marks on all downloaded articles in the series. - - * nntp.el (nntp-report): Throw error after reporting the problem. - (nntp-accept-process-output): Corrected error check to report an - error when the process is nil. - -2003-01-09 Simon Josefsson - - * message.el (message-tool-bar-map): Add preview. - -2003-01-09 Jesper Harder - - * mml.el (mml-preview): Get rid of MIME handles and buffers after - previewing. - -2003-01-08 Paul Jarc - - * nnmaildir.el (nnmaildir--grp-add-art): Fix wrong-type-argument - bug when the (n+1)th article to be added to a group has a smaller - number than the n articles already added. - -2003-01-08 Jesper Harder - - * message.el (message-mode-field-menu): Use backquote. - -2003-01-08 Teodor Zlatanov - - * spam.el: fixed the BBDB autoloads again, using - bbdb-search-simple now (which is not a macro, thank god) - - * lpath.el (bbdb-search): removed function from maybe-fbind list - - * gnus.el (ham-process-destination): added new parameter for - destination of ham articles found in spam groups at summary exit - - * spam.el (spam-get-ifile-database-parameter): use spam-ifile-database-path - (spam-check-ifile, spam-ifile-register-with-ifile): use spam-get-ifile-database-parameter - (spam-ifile-database-path): added new parameter for ifile's database - (spam-move-spam-nonspam-groups-only): new parameter to determine - if spam should be moved from all groups or only some - (spam-summary-prepare-exit): fixed logic to use - spam-move-spam-nonspam-groups-only when deciding to invoke - spam-mark-spam-as-expired-and-move-routine; always invoke that - routine after the spam has been expired-or-moved in case there's - some spam left over; use spam-ham-move-routine in spam groups - (spam-ham-move-routine): new function to move ham articles to the - ham-process-destinations group parameter - -2003-01-08 Lars Magne Ingebrigtsen - - * gnus-spec.el (gnus-parse-complex-format): %~ => ~*. - - * gnus-agent.el (gnus-agent-fetch-selected-article): Use - gnus-summary-update-article-line. - -2003-01-08 Simon Josefsson - - * nnmail.el (nnmail-expiry-target-group): Request group, create it - not successful. - -2003-01-08 Katsumi Yamaoka - - * lpath.el (bbdb-records): Fbind it for both Emacs and XEmacs. - -2003-01-07 Teodor Zlatanov - - * spam.el (spam-check-ifile): fixed the spam-ifile-all-categories - logic, finally - -2003-01-08 Lars Magne Ingebrigtsen - - * gnus-spec.el (gnus-parse-format): %C is a complex format. - (gnus-parse-format): Change to %~. - - * message.el (message-generate-headers): Don't generate optional - empty headers. - -2003-01-07 Reiner Steib - - * message.el (message-cross-post-default) - (message-cross-post-note-function, message-shoot-gnksa-feet) - (message-strip-subject-trailing-was, message-change-subject) - (message-mark-insert-file, message-cross-post-followup-to) - (message-cross-post-followup-to, message-mode-map) - (message-generate-unsubscribed-mail-followup-to) - (message-make-mail-followup-to): Minor changes to doc-strings and - error messages. Updated copyright line. - - * message.el (message-make-mail-followup-to, - message-generate-unsubscribed-mail-followup-to): New function - names. Renamed functions: "-mft" -> "-mail-followup-to". - (message-make-mft, message-gen-unsubscribed-mft): Removed function - names. - - * mml.el (mml-preview-insert-mail-followup-to): New function name. - (mml-preview-insert-mft): Removed function name. - (mml-preview): Use new function names. - - * gnus-art.el (gnus-article-edit-mode-map): Use new function names. - - * message.el (message-mode-field-menu): Moved header related - commands from "Message" to "Field" menu. - -2003-01-07 Reiner Steib - - * message.el (message-generate-headers-first): Added customization - if variable is a list. - -2003-01-07 Michael Shields - - * gnus-art.el (gnus-article-next-page): Correctly handle the case - where the last line of the article is the last line of the window. - -2003-01-08 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-debug): Use ignore-errors. - - * gnus-agent.el (gnus-agent-fetch-selected-article): Use - `gnus-summary-update-line'. - -2003-01-08 Simon Josefsson - - * gnus-art.el (gnus-unbuttonized-mime-types) - (gnus-buttonized-mime-types): Doc fix. - -2003-01-08 Jesper Harder - - * mm-decode.el (mm-inline-media-tests): .xpm is 'x-xpixmap'. - -2003-01-07 ShengHuo ZHU - - * nnrss.el (nnrss-group-alist): Add and clear up. - -2003-01-07 Teodor Zlatanov - - * spam.el: removed unnecessary condition-case for loading bbdb-com.el - - * lpath.el (bbdb-search): added BBDB functions for a better way to - fix missing functions - - * spam.el (spam-check-ifile): if should be an unless - - * spam.el: define 'ignore alias for spam-BBDB-register-routine, - spam-enter-ham-BBDB, and bbdb-create-internal initially to hush up warnings - (spam-ifile-all-categories): doc string fixed to be less than 80 chars - -2003-01-07 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-make-menu-bar): Added - gnus-summary-refer-thread to thread menu. - -2003-01-07 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-group-1): When fetching within a - summary buffer, articles that cannot be fetched are marked as - canceled. - - * nntp.el (nntp-with-open-group): The quit signal handler must - propagate the quit signal to the next outer handler so that the - caller knows that the request aborted abnormally. - -2003-01-07 Teodor Zlatanov - - * spam.el (spam-check-ifile, spam-ifile-register-with-ifile) - (spam-ifile-register-spam-routine) - (spam-ifile-register-ham-routine): added ifile functionality that - does not use ifile-gnus.el to classify and register articles - (spam-get-article-as-string): convenience function - (spam-summary-prepare-exit): added ifile spam and ham registration - (spam-ifile-all-categories, spam-ifile-spam-category) - (spam-ifile-path, spam-ifile): added customization options - - * gnus.el (gnus-group-ham-exit-processor-ifile): added ifile ham - exit processor - (spam-process): added gnus-group-ham-exit-processor-ifile to the - list of choices - -2003-01-07 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-followup): Also score immediate - followups. - -2003-01-06 Lars Magne Ingebrigtsen - - * nnweb.el (nnweb-asynchronous-p): Changed to nil. - -2003-01-07 Simon Josefsson - - * message.el (message-mode-menu): Fix receipt balloon help. - -2003-01-07 Jesper Harder - - * gnus-msg.el (gnus-group-post-news): Don't assume that "" will - always be interpreted as news. - -2003-01-07 Simon Josefsson - - * gnus-sieve.el (gnus-sieve-script): Use the crosspost argument to - gnus-sieve-script, instead of the global variable - gnus-sieve-crosspost. One-line patch from Steinar Bang - . - -2003-01-06 Kevin Greiner - - * gnus.el: Renamed gnus-summary-*-uncached-face as - gnus-summary-*-undownloaded-face to avoid confusing the agent with - the cache. - - * gnus-sum.el: Ditto. - -2003-01-06 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-group): Modified to permit execution - in either the group or summary buffer. - New command "JS", in summary buffer, will fetch articles per the - group's category, predicate, and processable flags. - (gnus-agent-summary-fetch-series): Rewritten to call - gnus-agent-session-fetch-group once with all articles in the - series. - (gnus-agent-summary-fetch-group): Fixed bug and modified code to - return list of fetched articles. - (gnus-agent-fetch-articles): Split fetch list into sublists such - that the article buffer is only slightly larger than - gnus-agent-max-fetch-size. Added unwind-protect to ensure that - the group's article alist is saved. - (gnus-agent-fetch-headers): The 'killed' and 'cached' marks no - longer result in the agent trying to fetch an article. - (gnus-agent-fetch-group-1): Can now be called in either the group - or summary buffer. Removed the max-fetch-size code that I added - on 2002-12-13 as that capability is now part of - gnus-agent-fetch-articles. Added code to update summary buffer. - When called in the group buffer, articles that can not be fetched - are AUTOMATICALLY MARKED AS READ. - - * gnus-sum.el (): Modified eval-when-compile to minimize - misleading compilation warnings. - (gnus-update-summary-mark-positions): Changed code to use - gnus-undownloaded-mark rather than gnus-downloaded-mark. - - * nnheader.el (nnheader-insert-nov-file): Do not try to insert an - empty file as the parser assumes that the file isn't empty. - - * nntp.el (nntp-send-string): The process-send-string call can, - because it performs I/O on the process, change the process' state - from open to closed. If this happens, call nntp-report - immediately to report the broken connection. - (nntp-report): Rewritten to avoid needing a global variable to - determine the appropriate course of action. Instead, two function - implementations are provided and the nntp-report function value is - bound to the appropriate implementation. - (nntp-retrieve-data): Moved nntp-report call to end of implementation. - (nntp-with-open-group): Now binds nntp-report's function cell - rather than binding gnus-with-open-group-first-pass. Added a - condition-case to detect a quit during a nntp command. When the - quit occurs, the current connection is closed as a fetch articles - request could have several megabytes queued up for reading. - (nntp-retrieve-headers): Bind articles to itself. If - nntp-with-open-group repeats this command, I must have access to - the original list of articles. - (nntp-retrieve-groups): Ditto for groups. - (nntp-retrieve-articles): Ditto for articles. - (*): Replaced nntp-possibly-change-group calls to - nntp-with-open-group forms in all, but one, occurrance. - (nntp-accept-process-output): Bug fix. Detect when called with - null process. - -2003-01-06 Jesper Harder - - * mm-util.el (mm-find-mime-charset-region): Don't do Latin-9 hack - if we don't need to. - (mm-iso-8859-x-to-15-region): Fix misplaced parenthesis. - -2003-01-06 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-make-web-group): Pass the select - method on to group-create. - (gnus-group-line-format-alist): %U is an integer. - - * gnus-sum.el (gnus-summary-exit-no-update): Don't update - ephemeral groups. - (gnus-summary-read-group-1): Ditto. - (gnus-group-make-articles-read): Ditto. - - * mm-url.el (mm-url-program): Doc fix. - - * message.el (message-mode-map): Rebound - message-insert-wide-reply. - -2003-01-05 Katsumi Yamaoka - - * gnus-xmas.el (gnus-xmas-group-startup-message): Bind the oort - color as `gnus-group-startup-message' does. - -2003-01-05 Teodor Zlatanov - - * spam.el: fixed line lengths to 80 chars or less - - * gnus-sum.el (gnus-read-mark-p): added the spam-mark as a - "not-read" mark - (gnus-summary-mark-forward): added the spam-mark to the list of - marks not to be marked as "read" when viewed - -2003-01-05 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-inews-make-draft): Quote article-reply. - - * gnus-group.el (gnus-number-of-unseen-articles-in-group): - Protect against unactive groups. - - * message.el (message-check-news-header-syntax): Check long - header lines. - (message-check-news-header-syntax): Update `start'. - - * gnus-group.el (gnus-group-expire-articles): Doc fix. - (gnus-group-line-format): %U. - (gnus-group-line-format-alist): ?U. - (gnus-number-of-unseen-articles-in-group): New function. - - * nntp.el (nntp-accept-process-output): Use a 0.1 second timeout. - - * gnus.el (gnus-version-number): Bump version number. - -2003-01-05 01:53:30 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.10 is released. - -2003-01-05 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Fix version number. - -2003-01-05 01:40:09 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.08 is released. - -2003-01-04 Jesper Harder - - * mm-util.el: Add mm-string-make-unibyte. - - * gnus-group.el (gnus-group-jump-to-group): Make it work for - UTF-8 groups. - -2003-01-04 Lars Magne Ingebrigtsen - - * gnus.el (gnus-variable-list): Write gnus-format-specs last. - - * gnus-sum.el (gnus-summary-goto-subjects): Fix typo. - -2003-01-04 Kevin Ryde - - * gnus-art.el (gnus-mime-jka-compr-maybe-uncompress): New - function. - -2003-01-04 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-exit): Bind gnus-group-is-exiting-p. - (gnus-summary-read-group-1): Update group line. - (gnus-summary-exit-no-update): Update group on exit. - - * gnus-group.el (gnus-group-line-format): Add %*. - (gnus-group-line-format-alist): Ditto. - (gnus-group-insert-group-line): Set it. - (gnus-group-is-exiting-p): New variable. - (gnus-group-insert-group-line): Use it. - -2003-01-03 Teodor Zlatanov - - * spam.el (spam-enter-ham-BBDB, spam-BBDB-register-routine): - enable BBDB ham processing - (spam-blacklist-register-routine): enable blacklist spam processing - (spam-whitelist-register-routine): enable whitelist ham processing - (spam-fetch-field-from-fast): fast fetching of the "from" field - from (gnus-data-list) - (spam-summary-prepare-exit): works completely now - (spam-use-blacklist): oops, should be nil by default - (spam-summary-prepare-exit): spam-use-PROCESSOR is only for - split processing now; before it was for summary exit as - well but that's done with the spam-contents and spam-process - parameters now - -2003-01-03 Jesper Harder - - * mml.el (mml-insert-tag): Don't quote non-ASCII unibyte - characters. - -2003-01-02 Teodor Zlatanov - - * spam.el (spam-group-spam-contents-p, spam-group-ham-contents-p) - (spam-group-processor-p, spam-group-processor-bogofilter-p) - (spam-group-processor-ifile-p, spam-group-processor-blacklist-p) - (spam-group-processor-whitelist-p, spam-group-processor-BBDB-p) - (spam-mark-spam-as-expired-and-move-routine) - (spam-generic-register-routine, spam-BBDB-register-routine) - (spam-ifile-register-routine, spam-blacklist-register-routine) - (spam-whitelist-register-routine): new functions - (spam-summary-prepare-exit): added summary exit processing (expire - or move) of spam-marked articles for spam groups; added slots for - all the spam-*-register-routine functions - -2003-01-03 Lars Magne Ingebrigtsen - - * pop3.el (pop3-retr): Wait 500 msecs. - (pop3-read-response): Ditto. - - * gnus-msg.el (gnus-setup-message): Get the evaliation order - right. - (gnus-inews-make-draft): New function. - (gnus-setup-message): Use it. - - * message.el (message-required-headers): Add From. - -2003-01-02 Katsumi Yamaoka - Trivial patch from Norbert Koch . - - * gnus-msg.el (gnus-gcc-externalize-attachments): Fix typo. - -2003-01-02 Lars Magne Ingebrigtsen - - * message.el (message-generate-headers): Let header formatters do - their work. - -2003-01-02 Raymond Scholz - - * deuglify.el (gnus-article-outlook-deuglify-article): - Rehighlight, reapply treatments and call - `gnus-article-prepare-hook'. Suggested by Niels Olof Bouvin. - (gnus-outlook-repair-attribution-block): Recognize cited - attributions. Suggested by Niklas Morberg. - -2003-01-02 Pete Kazmier - - * gnus-art.el (gnus-treat-predicate): Check condition first. - -2003-01-02 Jesper Harder - - * lpath.el: Add url-http-file-exists-p. - - * gnus-group.el (gnus-group-fetch-charter): Use - http://TLH.news-admin.org/charters/GROUPNAME as a fallback. - -2003-01-02 Lars Magne Ingebrigtsen - - * message.el (message-draft-headers): Also generate From to get a - nicer draft buffer summary. - - * gnus-xmas.el (gnus-xmas-read-event-char): Take an optional - parameter. - - * gnus-art.el (article-wash-html): Clean up. - (article-wash-html): Typo fix. - - * gnus-msg.el (gnus-summary-mail-forward): Clean up. - (gnus-summary-mail-forward): To many lists of lists. - - * gnus-art.el (article-wash-html): Clean up. - -2003-01-02 pete-temp - - * gnus-art.el (gnus-treat-wash-html): New variable. - -2003-01-02 Lars Magne Ingebrigtsen - - * message.el (message-check-news-header-syntax): Allow posting. - (message-check-news-header-syntax): Fix logic for sure, this - time. - -2003-01-02 Matthieu Moy - - * message.el (message-check-news-header-syntax): Check syntax of - continuation headers. - -2003-01-02 Reiner Steib - - * gnus-art.el (gnus-button-url-regexp, - (gnus-button-mid-or-mail-regexp, gnus-button-alist, - (gnus-header-button-alist): Regexps are case insensitive here. - -2003-01-02 Simon Josefsson - - * dig.el (query-dig): Doc fix. - -2003-01-02 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetch-selected-article): Update whole - summary buffer line, not just the download mark. - -2003-01-02 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-goto-subjects): New function. - (gnus-summary-insert-dormant-articles): New command and - keystroke. - - * gnus-cache.el (gnus-summary-insert-cached-articles): Use new - function for mass insertion of subjects. - - * nndraft.el (nndraft-generate-headers): Don't move point. - - * gnus.el (nnheader): Require nnheader. - - * nndraft.el (nndraft-request-associate-buffer): Use - make-local-variable. - -2003-01-02 Michael Shields - - * nndraft.el (nndraft-request-associate-buffer): Make - write-contents-hooks buffer-local before setting it. - -2003-01-02 Lars Magne Ingebrigtsen - - * gnus.el (gnus-group-parameter-value): Take an extra param. - (gnus-group-fast-parameter): Let group param results be nil. - - * gnus-art.el (gnus-article-forward-header): New function. - (article-date-ut): Use it to remove continuation date headers. - - * gnus-sum.el (gnus-summary-walk-group-buffer): Supply prompt to - read-event. - (gnus-summary-remove-bookmark): Clean up. - (gnus-summary-set-bookmark): Clean up. - - * gnus-util.el (gnus-read-event-char): Take an optional prompt. - - * gnus.el (gnus-group-startup-message): Bind data-directory to - the Gnus etc directory. - -2003-01-01 Teodor Zlatanov - - * spam.el (spam-summary-prepare-exit): added slots for spam- and - ham-processing of articles; use the new - spam-group-(spam|ham)-contents-p functions - (spam-group-spam-contents-p, spam-group-ham-contents-p): new - convenience functions - (spam-mark-junk-as-spam-routine): use the new - spam-group-spam-contents-p function - - * gnus.el (spam-process, spam-contents, spam-process-destination): - added new parameters with corresponding global variables - (gnus-group-spam-exit-processor-ifile, - gnus-group-spam-exit-processor-bogofilter, - gnus-group-spam-exit-processor-blacklist, - gnus-group-spam-exit-processor-whitelist, - gnus-group-spam-exit-processor-BBDB, - gnus-group-spam-classification-spam, - gnus-group-spam-classification-ham): added new symbols for the - spam-process and spam-contents parameters - - * spam.el (spam-ham-marks, spam-spam-marks): changed list - customization and list itself to store mark symbol rather than - mark character. - (spam-bogofilter-register-routine): added logic to generate mark - values list from spam-ham-marks and spam-spam-marks, so (member) - would work. - -2003-01-02 Katsumi Yamaoka - - * message.el (message-cross-post-followup-to): Fix comment. - -2003-01-01 Teodor Zlatanov - - * spam.el (spam-ham-marks, spam-spam-marks): changed list - customization and list itself to store mark symbol rather than - mark character. - (spam-bogofilter-register-routine): added logic to generate mark - values list from spam-ham-marks and spam-spam-marks, so (member) - would work. - -2003-01-01 Raymond Scholz - - * message.el (message-signature-insert-empty-line): New variable. - -2002-12-30 Reiner Steib - - * message.el: Renamed functions and variables: "xpost" -> - "cross-post", "-fup2" -> "-followup-to". - (message-cross-post-old-target, message-cross-post-default, - message-cross-post-note, message-followup-to-note, - message-cross-post-note-function): New variables names. - (message-xpost-old-target, message-xpost-default, - message-xpost-note, message-fup2-note, - message-xpost-note-function): Removed variable names. - (message-cross-post-followup-to-header, - message-cross-post-insert-note, message-cross-post-followup-to): - New function names. - (message-xpost-fup2-header, message-xpost-insert-note, - message-xpost-fup2): Removed function names. - -2002-12-30 Reiner Steib - - * message.el (message-send-mail): Added message-cleanup-headers to - prevent newlines in headers. - -2003-01-01 Lars Magne Ingebrigtsen - - * dns.el (dns-make-network-process): Comment. - - * gnus-sum.el (gnus-summary-display-while-building): Default to - nil. - -2003-01-01 Wes Hardaker - - * gnus-sum.el (gnus-summary-display-while-building): New - variable. - -2003-01-01 Raymond Scholz - - * deuglify.el (gnus-outlook-rearrange-article): Kill overlays - before rearranging the article. - -2003-01-01 Lars Magne Ingebrigtsen - - * nndraft.el (nndraft-generate-headers): New function. - (nndraft-request-associate-buffer): Use it to write headers on - buffer save. - - * message.el (message-generate-headers): Let the function be a - lambda form. - (message-draft-headers): New variable. - - * gnus-msg.el (gnus-inews-make-draft-meta-information): New - function. - (gnus-setup-message): Use it. - - * message.el (message-generate-headers-first): Doc fix. - (message-setup-1): Use new function for getting which headers to - generate. - (message-headers-to-generate): New function. - -2003-01-01 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-save-alist): Make directory. - -2002-12-31 Reiner Steib <4uce.02.r.steib@gmx.net> - - * gnus-sum.el (gnus-summary-limit-to-age): Make prompt string - mention negatives. - -2002-12-31 Raymond Scholz - - * deuglify.el (gnus-outlook-rearrange-article): Use - `transpose-regions' instead of tempering the kill-ring. - (gnus-article-outlook-deuglify-article): Rehighlight article - instead of a complete redisplay. - -2002-12-31 Teodor Zlatanov - - * spam.el: most defvars are defcustoms now - - patches from Michael Shields - - * spam.el (spam-bogofilter-articles): Select the article - body using gnus-summary-show-article t instead of - gnus-summary-select-article; this presents the raw text - without running any hooks. - - * spam.el (spam-bogofilter-articles): Use message-remove-header - to remove headers; the old way incorrectly removed just the first - line of folded headers. - -2002-12-31 Katsumi Yamaoka - - * gnus-start.el (gnus-load): Replace `ding-file' with `file'. - -2002-12-30 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-load): New function. - (gnus-read-newsrc-el-file): Use it. - -2002-12-30 Reiner Steib - - * gnus-art.el (gnus-button-valid-fqdn-regexp): New variable. - (gnus-button-handle-apropos-documentation): New function. - (gnus-button-handle-ctan): New function. - (gnus-button-alist): Use them. Improve some regexps. - (gnus-button-prefer-mid-or-mail): Addition to doc-string. - -2002-12-30 Reiner Steib - - * message.el (message-subscribed-p): New function. - (message-send-mail): Use it. - * mml.el (mml-preview-insert-mft): New function. - (mml-preview): Use it. - -2002-12-30 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-thread-latest-date): Protect against errors - when sorting by date. - - * gnus-art.el (gnus-article-edit-mode): New variable. - (gnus-article-setup-buffer): Warn user about discarding edits. - - * gnus-sum.el (gnus-summary-pipe-output): Clean up. - (gnus-summary-pipe-output): Take a symbolic prefix to save all - headers. - - * mm-uu.el (mm-uu-configure-list): Default to (shar . disabled). - -2002-12-30 Reiner Steib - - * message.el (message-completion-alist): Added "Mail-Followup-To" - and "Mail-Copies-To". - -2002-07-21 Jesper harder - - * gnus-group.el: Add key bindings for - gnus-group-sort-groups-by-real-name and - gnus-group-sort-selected-groups-by-real-name. - -2002-07-21 Jesper harder - - * gnus.texi (Sorting Groups): Add key bindings for - gnus-group-sort-groups-by-real-name and - gnus-group-sort-selected-groups-by-real-name. - -2002-12-30 Teodor Zlatanov - - * spam.el (spam-use-dig): new variable for blackhole checking - through dig.el - (spam-check-blackholes): added dig.el checking functionality and - more verbose reporting; query-dig is autoloaded from dig.el - (spam-use-blackholes): disabled by default - (spam-blackhole-servers): removed rbl.maps.vix.com from the - blackhole servers list - -2002-12-30 Lars Magne Ingebrigtsen - - * message.el (message-required-headers): New variable. - -2002-12-30 Teodor Zlatanov - - * dig.el (query-dig): new function - -2002-12-30 Lars Magne Ingebrigtsen - - * flow-fill.el (fill-flowed): Don't infloop on too long fill - prefixes. - - * dns.el (query-dns): Protect against errors. - - * gnus-msg.el (gnus-article-yanked-articles): New variable. - (gnus-inews-add-send-actions): Mark all answered messages as - answered. - -2002-08-10 Jari Aalto - - * nnmail.el (nnmail-split-it): Added tracing to - `:' split rule - -2002-08-13 Hrvoje Niksic - - * mm-decode.el (mm-mailcap-command): Remove the quotes around '%s' - and "%s" so we don't overquote them. - -2002-08-13 Hrvoje Niksic - - * (mm-display-external): Display the actual command that has been - executed in the echo area. - -2002-12-29 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-display-missing-topic): Bind entry. - - * message.el (message-with-reply-buffer): New macro. - (message-fetch-reply-field): Use it. - (message-insert-wide-reply): New command and keystroke. - (message-carefully-insert-headers): New function. - (message-insert-to): Use new function. - - * gnus-topic.el (gnus-topic-display-missing-topic): New function. - (gnus-topic-goto-missing-group): Use it. - - * message.el (message-required-news-headers): Removed Lines. - (message-reply): Don't insert References first. - (message-followup): Ditto. - (message-make-references): New function. - (message-followup): Set message-reply-headers before generating - the buffer stuff. - -2002-12-29 Jesper Harder - - * mml.el (mml-generate-mime-1): Reverse the order of - encoding/flowing. - -2002-12-29 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-expiry-target-group): Mark articles as read - after moving them. - - * gnus-sum.el (gnus-summary-dummy-line-format): Update format to - fit with newer standard format. - (gnus-summary-make-false-root-always): New variable. - (gnus-gather-threads-by-subject): Use it. - - * message.el (message-get-reply-headers): Take an address list - optional argument. - -2002-12-28 Lars Magne Ingebrigtsen - - * gnus.el (gnus-keep-backlog): Change default to 20. - - * gnus-agent.el (gnus-agent-check-overview-buffer): Start from - start. - (gnus-agent-check-overview-buffer): Remove negative article - numbers. - - * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups): Doc fix. - (nnmail-cache-ignore-groups): Doc fix. - - * nnimap.el (nnimap-debug): Made into a flag and defcustomed. - (nnimap-debug-buffer): New variable. - (nnimap-debug): Use it. - -2002-12-28 Lars Magne Ingebrigtsen - - * gnus.el (gnus-summary-high-uncached-face): New color scheme. - -2002-12-28 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-check-overview-buffer): Sort lines if - they aren't already sorted. - -2002-12-28 Jesper Harder - - * message.el (message-mode-menu): Add ellipses to menu items - expecting user interaction. - (message-mode-field-menu): do. - -2002-12-26 Jesper Harder - - * gnus-sum.el (gnus-summary-highlight-line): Don't bind `list' -- - it isn't used any more. - -2002-12-22 Jesper Harder - - * binhex.el (binhex-decoder-program): Fix docstring. - -2002-12-21 Kai Gro,A_(Bjohann - - * mm-decode.el (mm-mailcap-command): Do not backslash-quote - special chars if the mailcap file uses single quotes around %s. - From Laurent Martelli . - -2002-12-19 Paul Jarc - - * gnus-int.el (gnus-request-update-info): nnchoke-r-u-i might not - return the info object. - -2002-12-18 Paul Jarc - - * gnus-int.el (gnus-request-update-info): Artificially add - (1 . (1- min)) to the read range, in case the backend doesn't - store marks for nonexistent articles. - -2002-12-17 Katsumi Yamaoka - - * binhex.el (binhex-insert-char): Eval-and-compile. - -2002-12-17 Jesper Harder - - * lpath.el: Add tool-bar-local-item-from-menu. - - * message.el (message-tool-bar-local-item-from-menu): New function. - (message-tool-bar-map): Use it. - -2002-12-14 Jesper Harder - - * gnus-uu.el (gnus-uu-digest-headers): Mention nil value in docstring. - - * gnus-art.el (gnus-article-header-rank): Last header in - gnus-sorted-header-list should have higher rank than non-members. - -2002-12-13 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-close-agent): Don't blank out the list of - covered methods. - -2002-12-12 Kai Gro,A_(Bjohann - - * nntp.el (nntp-with-open-group-first-pass): Do not wrap in - eval-when-compile. Suggested by Kevin Greiner. - -2002-12-13 Kevin Greiner - - * gnus-agent.el (gnus-agent-max-fetch-size): New, defcustom. - (gnus-agent-fetch-headers): Initialize gnus-agent-overview-buffer - even though no headers may have been fetched - (gnus-agent-fetch-group-1, and perhaps others, require this - behavior). - (gnus-agent-fetch-group-1): Fetch articles in chucks so that the - server buffer is constrained by gnus-agent-max-fetch-size. - Multiple chunks in the same group may perform arbitrarily large - updates. - -2002-12-12 Kevin Greiner - - * gnus-agent.el (gnus-agent-fetch-selected-article): Added call to - gnus-summary-update-download-mark to update the article in the - summary. - -2002-12-11 Kevin Greiner - - * gnus.el (gnus-summary-high-uncached-face, - gnus-summary-normal-uncached-face, gnus-summary-low-uncached-face) - New faces. - - * gnus-agent.el (gnus-agent-downloaded-article-face): REMOVED. I - added this on 2002-11-23 but it just wasn't working out as - intended. The idea isn't entirely dead, three new faces - gnus-summary-*-uncached-face are being added to gnus.el to provide - the basis for an improved implementation. - (gnus-agent-read-servers): Undo the change made on 2002-11-23. The - proper file to open is lib/servers. - (gnus-summary-set-agent-mark): Expanded documentation. Unmarking - (i.e. removing the article from gnus-newsgroup-downloadable) will - now restore the article's default mark rather than simply setting - no mark. - (gnus-agent-get-undownloaded-list): Corrected documentation. - Added code to set new summary local variable, - gnus-newsgroup-agentized. Reworked impl so that it doesn't create - a temporary list. No longer sets gnus-newsgroup-downloadable. - (gnus-agent-summary-fetch-group): Keep gnus-newsgroup-undownloaded - up to date. Call new gnus-summary-update-download-mark to keep - summary buffer up-to-date. - (gnus-agent-fetch-selected-article): Keep - gnus-newsgroup-undownloaded up to date. - (gnus-agent-fetch-articles): Return list of articles that were - successfully fetched. - (gnus-agent-check-overview-buffer): No more thingatpt. - (gnus-agent-expire): No longer deletes NOV entries of unread - articles. - (gnus-agent-unread-articles): New function. - (gnus-agent-regenerate-group): The article number must be - terminated by a tab character. Added more messages to report - repairs. Inhibit quits while writing changes so it is now safe - have to quit regeneration. Renamed gnus-tmp-downloaded back to - downloaded to 1) resolve the unbound references and 2) avoid - confusing this list with the gnus-tmp-downloaded in gnus-sum.el - - * gnus-art.el (gnus-article-prepare): The agent - downloaded/undownloaded mark is no longer stored as the article's - mark. - - * gnus-salt.el (gnus-tree-highlight-node): Added uncached as - gnus-summary-highlight may use it. Added downloaded as - gnus-summary-highlight was using it. - - * gnus-sum.el (gnus-undownloaded-mark): Changed from ?@ to ?- as - the download mark now follows Kai's +/- convention. - (gnus-downloaded-mark): Added ?+ mark. - (gnus-summary-highlight): Added rules to select - gnus-summary-high-uncached-face, - gnus-summary-normal-uncached-face, and - gnus-summary-low-uncached-face. Removed the - gnus-agent-downloaded-article-face. - (gnus-summary-line-format-alist): Implemented the download flag - format (?O) as named in the manual. This implementation displays - either gnus-undownloaded-mark, gnus-downloaded-mark, or - gnus-no-mark. - (gnus-newsgroup-agentized): New local variable that identifies - which groups are agentized. While the agent is now on by default, - you don't have to agentize every server that you use. - (gnus-update-summary-mark-positions): Completed support for the - download type of mark. - (gnus-summary-insert-line): Added undownloaded to the parameters. - (gnus-summary-prepare-threads): Set gnus-tmp-downloaded for - reference by the gnus-summary-line-format-spec. - - * nntp.el (nntp-with-open-group): This macro handles dropped or - broken connections by opening a new connection and repeating the - failed command. - (nntp-retrieve-headers-with-xover): Some NNTP servers respond to - XOVER commands preceeding the active articles with the nov entry - of the first available article. When gnus connected to such a - server, the unexpected nov entry would result in duplicate lines - in the agent's overview file. This patch fixes the duplicate - lines problem and improves performance by skipping over all - articles IDs that preceed the first nov entry in the server's - reply. - -2002-12-11 Katsumi Yamaoka - - * gnus-sum.el (gnus-tmp-downloaded): New internal variable. - (gnus-summary-highlight): Use it instead of `downloaded'. - (gnus-summary-highlight-line): Ditto. - - * gnus-agent.el (gnus-agent-regenerate-group): Ditto. - -2002-12-11 Lars Magne Ingebrigtsen - - * gnus.el (gnus-variable-list): Add gnus-agent-covered-methods. - - * gnus-agent.el (gnus-agent-check-overview-buffer): Remove debug - calls. - - * gnus-sum.el (gnus-summary-highlight-line): Don't set the - downloaded variable if we're in an uncovered group. - - * gnus-agent.el (gnus-agent-downloaded-article-face): Change the - font to soemthing less noticeable. - (gnus-agent-group-covered-p): New function. - -2002-12-09 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-braid-nov): Remove corrupted lines. - Because of an unknown bug, the group buffer is saved in .overview - file. - -2002-12-09 Kai Gro,A_(Bjohann - - * nntp.el (nntp-send-command): Braino in last commit. Replace - `and' with `or'. - -2002-12-08 Kai Gro,A_(Bjohann - - * nntp.el (nntp-send-command): Assume that echo does not happen - when nntp-open-connection-function is nntp-open-network-stream. - Suggested by Sebastian D.B. Krause . - -2002-12-07 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-retrieve-headers-1): Update the parser. - -2002-12-06 Paul Jarc - - * nnmaildir.el (nnmaildir-request-group): bugfix: don't erase - nntp-server-buffer if we aren't going to write to it. - -2002-12-04 Katsumi Yamaoka - Trivial patch from Itai Zukerman . - - * mm-decode.el (mm-w3m-safe-url-regexp): Fix parenthesis. - -2002-12-04 Katsumi Yamaoka - - * rfc2047.el (rfc2047-decode-region): Remove newlines between - decoded words. - -2002-12-03 Kai Gro,A_(Bjohann - - * gnus.el (fboundp): After loading mm-util, make sure it was the - right one. - -2002-11-29 Kai Gro,A_(Bjohann - - * gnus-art.el (gnus-inhibit-mime-unbuttonizing): Moved here from - gnus-sum. Made into a user option. - - * gnus-sum.el (gnus-simplify-ignored-prefixes) - (gnus-summary-mark-article-as-unread) - -2002-11-29 ShengHuo ZHU - - * time-date.el (date-to-time): Typo. - - * parse-time.el: Typo. - - * nnsoup.el (nnsoup-retrieve-headers): Typo. - - * nnmail.el (nnmail-split, nnmail-process-unix-mail-format): Typos. - - * nnimap.el: - (nnimap-split-rule, nnimap-find-minmax-uid): Typos. - - * mm-encode.el (mm-safer-encoding): Typo. - - * messcompat.el: Typo. - - * message.el (message-face-alist): Typo. - - * imap.el (imap-interactive-login, imap-open): Typos. - - * ietf-drums.el (ietf-drums-text-token, ietf-drums-qtext-token): Typos. - - * gnus.el: Typo. - - * gnus-win.el (gnus-configure-frame): Typo. - - * gnus-util.el (gnus-atomic-progn-assign): Typo. - - * gnus-topic.el (gnus-topic-sort-topics): Typo. - - * gnus-sum.el (gnus-summary-article-number) - (gnus-summary-read-group-1, gnus-summary-mark-article) - (gnus-summary-fetch-faq, gnus-refer-article-methods): Typos. - - * gnus-mule.el (gnus-mule-add-group): Typo. - - * gnus-mlspl.el (gnus-group-split-fancy): Typo. - - * gnus-group.el (gnus-group-fetch-faq): Typo. - - * gnus-art.el (gnus-decode-header-methods): Typo. - - * flow-fill.el: Typo. - -2002-11-19 Stefan Monnier - - * binhex.el (binhex-decode-region): Don't hardcode point-min == 1. - -2002-11-29 Kai Gro,A_(Bjohann - - * gnus-sum.el (gnus-simplify-ignored-prefixes) - (gnus-summary-mark-article-as-unread) - (gnus-mark-article-as-unread, gnus-summary-highlight-line): - Reformatting to avoid long lines. - (gnus-inhibit-mime-unbuttonizing): Moved to gnus-art. - -2002-11-28 Daiki Ueno - - * gnus-agent.el (gnus-agent-fetch-group-1): Article numbers should - be accessed through `mail-header-number'. - -2002-11-27 Kevin Greiner - - * gnus-sum.el (gnus-summary-insert-old-articles): No longer passes - compressed range to gnus-summary-insert-articles. - -2002-11-26 Kevin Ryde - - * gnus-art.el (gnus-mime-copy-part): Look for filename - parameter under content-disposition, not content-type. - - * gnus-sum.el (gnus-summary-find-uncancelled): New function. - (gnus-summary-reselect-current-group): Use it. - -2002-11-26 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-uncached-articles): if - gnus-agent-load-alist fails, return ARTICLES. - - * nnrss.el (nnrss-group-alist): Update the link of Jabber. - -2002-11-26 Kai Gro,A_(Bjohann - - * gnus-sum.el (gnus-summary-insert-old-articles): Remove - superfluous function call. - (gnus-summary-catchup-all, gnus-summary-catchup-all-and-exit): - Add warning to docstring. - -2002-11-26 Katsumi Yamaoka - - * gnus-agent.el: Autoload number-at-point instead. - (gnus-agent-check-overview-buffer): No warning for deactivate-mark. - -2002-11-26 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-check-overview-buffer): Explicitly - require thingatpt (for number-at-point) and protect against - deactivate-mark being unbound (on XEmacs). - -2002-11-25 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-check-overview-buffer): Make debugger - print message on entry. - - From Kevin Greiner . - - * gnus-range.el (gnus-range-difference): New function. - * gnus-sum.el (gnus-summary-insert-old-articles): Use it. - -2002-11-24 Kai Gro,A_(Bjohann - - * gnus-sum.el (gnus-summary-insert-old-articles): Use - gnus-remove-from-range instead of gnus-range-difference which - doesn't exist. - -2002-11-23 Kai Gro,A_(Bjohann - From Kevin Greiner . - - * gnus-agent.el (gnus-agent-downloaded-article-face): New face, - used for showing which articles have been downloaded. - (gnus-agent-article-alist): Format change. Add documentation. - (gnus-agent-summary-mode-map): New keybinding `J s' for fetching - process-marked articles. - (gnus-agent-summary-fetch-series): Command for `J s'. Articles - in the series are individually fetched to minimize lose of - content due to an error/quit. - (gnus-agent-synchronize-flags-server, gnus-agent-add-server): Use - gnus-message instead of message. - (gnus-agent-read-servers): Use file lib/methods instead of - lib/servers. TODO: Why? - (gnus-summary-set-agent-mark): Adapt to new agent-alist format. - (gnus-agent-get-undownloaded-list): Remove articles that appear to - come from the agent. This means that they are not downloaded. - (gnus-agent-fetch-selected-article): Don't use history. - (gnus-agent-save-history, gnus-agent-enter-history) - (gnus-agent-article-in-history-p, gnus-agent-history-path): - Removed function; history is not used anymore. - (gnus-agent-fetch-articles): Fix handling of crossposted articles. - (gnus-agent-crosspost): Started rewrite then realized that a typo - in gnus-agent-fetch-articles ensures that this function is never - called. This will need to be fixed later. - (gnus-agent-check-overview-buffer): Some sanity checks on the - agent overview buffer. This is a safety net used during - development. - (gnus-agent-flush-cache): The gnus-agent-article-alist format has - changed, write a number to the file indicating this. - (gnus-agent-fetch-headers): Rewrite to respect - gnus-agent-consider-all-articles without relying on the - `.fetched' files. Make it fast. - (gnus-agent-braid-nov): Change resulting from - gnus-agent-fetch-headers change. - (gnus-agent-load-alist, gnus-agent-save-alist): Don't use - `.fetched' files. - (gnus-agent-read-agentview): New function, used by - gnus-agent-load-alist. - (gnus-agent-load-fetched-headers): Remove. - (gnus-agent-save-alist): Rewrite to accomodate new format. - (gnus-agent-fetch-group-1): Make sure list of articles is in the - same order as in gnus-newsgroup-headers. - (gnus-agent-expire): Document and implement extra args ARTICLES, - GROUP, FORCE. Do not restrict usage. - (gnus-agent-uncached-articles): New function. - (gnus-agent-retrieve-headers): Use it. - (gnus-agent-regenerate-group): No longer needs to be called from - gnus-agent-regenerate. Individual groups may be regenerated. The - regeneration code now fixes duplicate, and mis-ordered, NOV entries. - The article fetch dates are validated in the article alist. The - article alist is pruned of entries that do not reference existing - NOV entries. All changes are computed then applied with - inhibit-quit bound to t. As a result, it is now safe to quit out of - regeneration. The optional clean parameter has been replaced with - an optional reread parameter. Clean is no longer necessary as - regeneration gets the appropriate setting from - gnus-agent-consider-all-articles. The new reread parameter will - result in fetched, or all, articles being marked as unread. - (gnus-agent-regenerate): Removed code to regenerate the history - file as it is no longer used. - - * gnus-start.el (gnus-make-ascending-articles-unread): New - function, for efficient mass-marking. - - * gnus-sum.el (gnus-summary-highlight): Use new face for - downloaded articles. - (gnus-article-mark): Prefer to indicate read/unread status over - downloaded status. - (gnus-summary-highlight-line-0): New function, maybe rehighlights - line. - (gnus-summary-highlight-line): Use new face for downloaded - articles. - (gnus-summary-insert-old-articles): Improved performance by - replacing the initial LIST of older articles with a compressed - RANGE of older articles. Some servers appear to lie about - their active range so the original list could contain millions - of article numbers. The range is not expanded into a list - until the optional ALL parameter has been applied. - -2002-11-18 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-category-mode): Typo in doc string. - -2002-11-21 Teodor Zlatanov - - * spam.el: - added patch from Andreas Fuchs to prevent apply errors - - * spam.el: added `M s t' and `M s x' key mappings - -2002-11-20 Simon Josefsson - - * gnus-sum.el (gnus-summary-morse-message): Narrow to body. - -2002-11-19 Simon Josefsson - - * gnus-sum.el (gnus-summary-morse-message): Load - morse.el (unmorse-region not autoloaded in Emacs 20 nor XEmacs). - (unmorse-region): Autoload it instead. - -2002-11-18 Simon Josefsson - - * gnus-sum.el (gnus-summary-morse-message): New function. - (gnus-summary-wash-map): Bind to `W m'. - (gnus-summary-make-menu-bar): Add. - - * nnimap.el (nnimap-request-expire-articles): Compress sequence - before storing \Deleted mark on expired articles. - -2002-11-17 Shenghuo Zhu - Trivial patch from Markus Rost - - * gnus-sum.el (gnus-summary-goto-unread): Doc fix - escape open - parens in column 0. - -2002-11-17 Juanma Barranquero - - * nnweb.el (nnweb-google-create-mapping): Fix typo. - - * nnlistserv.el (nnlistserv-kk-create-mapping): Likewise. - - * gnus-nocem.el (gnus-nocem-liberal-fetch): Likewise. - -2002-11-17 ShengHuo ZHU - - * message.el (message-set-auto-save-file-name): Use - make-directory, to avoid the dependence on gnus-util. - -2002-11-16 Simon Josefsson - - * nnimap.el (nnimap-callback-callback-function): - (nnimap-callback-buffer): Removed, these cannot be global but must - be embedded into the callback. - (nnimap-make-callback): New. Embedd article number, callback and - buffer in function. - (nnimap-callback, nnimap-request-article-part): Update. - -2002-11-15 Katsumi Yamaoka - - * mml.el (mml-preview): Bind message-this-is-mail if it is mail. - -2002-11-13 Kai Gro,A_(Bjohann - - * gnus.el (gnus-summary-line-format): Document %C. - -2002-11-11 Simon Josefsson - - * pgg.el (pgg-encrypt, pgg-decrypt, pgg-sign, pgg-verify): Display - output when called interactively. - -2002-11-08 Katsumi Yamaoka - - * gnus-art.el (gnus-article-edit-exit): Kill local variables. - - * message.el (message-draft-coding-system): Improve comment; use - mm-auto-save-coding-system for the default value. - - * nndraft.el (nndraft-request-article): Revert to the state before - 2002-10-29; regexp-quote mail-header-separator. - -2002-11-06 Jesper Harder - - * gnus-draft.el (gnus-draft-setup): Set gnus-message-group-art to - allow editing of drafts from an nnvirtual group. - -2002-11-06 Katsumi Yamaoka - - * nndraft.el (nndraft-request-article): Replace emacs-mule with - mm-auto-save-coding-system. - - * message.el (message-draft-coding-system): Default to - iso-2022-7bit. - - * mm-util.el (mm-auto-save-coding-system): Undo last change to - restore the default value to emacs-mule or escape-quoted. - -2002-11-05 Katsumi Yamaoka - - * gnus-art.el (gnus-article-encrypt-body): Inhibit encrypting of - a delayed or a queued article as well as a draft. - - * gnus-sum.el (gnus-summary-edit-article): Inhibit editing of a - delayed or a queued article in the raw format; treat a delayed - article as a raw article as well as a draft. - (gnus-summary-setup-default-charset): Clear gnus-newsgroup-charset - for the delayed group. - - * nndraft.el (nndraft-request-article): Ignore auto save files for - a delayed or a queued article; don't bother to decode a queued - article; don't bind nnmail-file-coding-system for a queued article. - - * nnmail.el (nnmail-split-fancy-with-parent): Ignore the delayed - and the queue group. - -2002-11-04 Jesper Harder - - * gnus-group.el (gnus-group-delete-group): - gnus-cache-active-hashtb might be void. - -2002-11-02 Simon Josefsson - - * pgg-gpg.el (pgg-gpg-encrypt-region): Makes PGG respect the - setting of the default user ID. From Raymond Scholz - . - -2002-11-01 Jesper Harder - - * mm-bodies.el (mm-body-encoding): Don't return 8bit for 7bit - charset. - -2002-10-31 Ted Zlatanov - From Alex Schroeder - * spam-stat.el (spam-stat-process-directory): add dir to message - (spam-stat-reduce-size): No longer remove words - with values close to 0.5, because the default value is 0.2. - -2002-10-31 Kai Gro,A_(Bjohann - - * gnus-util.el (gnus-user-date-format-alist): Clarify and correct - documentation. - -2002-10-28 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetched-headers) - (gnus-agent-load-fetched-headers) - (gnus-agent-save-fetched-headers): Remove variable and two - functions. Kevin Greiner's version of gnus-agent-fetch-headers - works better. - (gnus-agent-fetch-headers): New implementation from Kevin - Greiner. Uses gnus-agent-article-alist to store information - about fetched messages which aren't on the server anymore. The - trick is to return a list of considered messages to the caller, - but to only fetch those which haven't been fetched yet. - -2002-10-30 Simon Josefsson - - * pgg-def.el (pgg-passphrase-cache-expiry): New, defcustom. - - * pgg.el (pgg-passphrase-cache-expiry): Removed. - -2002-10-30 TSUCHIYA Masatoshi - - * mm-view.el (mm-w3m-local-map-property): Make it work with older - versions of emacs-w3m than 1.3.3. - - * lpath.el: Bind w3m-minor-mode-map. - - * mm-view.el (mm-w3m-mode-command-alist) - (mm-w3m-mode-dont-bind-keys, mm-w3m-mode-ignored-keys): Removed. - (mm-w3m-mode-map): Undefined for Emacs21 and XEmacs. - (mm-setup-w3m): Simplified. - (mm-w3m-local-map-property): New function. - (mm-inline-text-html-render-with-w3m): Use it. - - * gnus-art.el (gnus-article-wash-html-with-w3m): Use - mm-w3m-local-map-property. - -2002-10-29 Katsumi Yamaoka - - * mm-util.el (mm-auto-save-coding-system): Default to - iso-2022-7bit. - - * nndraft.el (nndraft-request-article): Decode an article using - the coding-system emacs-mule if it seems to have been saved using - emacs-mule. - (nndraft-request-replace-article): Use message-draft-coding-system - instead of mm-auto-save-coding-system for the draft or delayed - group. - -2002-10-28 Josh - - * mml.el (mml-mode-map): Fixed keybindings for mml-secure-* - functions. - -2002-10-28 Katsumi Yamaoka - From mah@everybody.org (Mark A. Hershberger). - - * mm-url.el (mm-url-insert-file-contents): Make it return the same - type values ("url" size) regardless of the values of - mm-url-use-external. - -2002-10-26 Kai Gro,A_(Bjohann - - * nnimap.el (nnimap-request-article-part): Try harder to show - group name in debugging message. - -2002-10-25 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-save-fetched-headers): Create - directory if it doesn't exist. - (gnus-agent-fetch-headers): Remove old cruft that tried to - abstain from downloading articles more than once if - gnus-agent-consider-all-articles was true. This is now done - properly via the .fetched files. - -2002-10-25 Katsumi Yamaoka - - * nndraft.el (nndraft-request-article): Treat delayed articles - like drafts. - -2002-10-24 Katsumi Yamaoka - - * gnus-agent.el (gnus-agent-load-alist): Fix parenthesis. - -2002-10-24 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-save-alist, gnus-agent-load-alist): - Remove unused optional arg DIR and corresponding code. - - * nnimap.el (nnimap-request-article-part): Include group name in - debugging output. - -2002-10-24 Paul Jarc - - * gnus-agent.el (gnus-agent-fetch-headers): Add some comments. - -2002-10-23 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetched-headers): New variable, - contains range of headers that have been fetched by the agent - already. Compare gnus-agent-article-alist. - (gnus-agent-file-header-cache): Like - gnus-agent-file-loading-cache, but for gnus-agent-fetched-headers. - (gnus-agent-fetch-headers): Improve comment. Revert to old - seen/recent logic. - Remember which headers have been fetched before and don't fetch - them again the next time round. - (gnus-agent-load-fetched-headers) - (gnus-agent-save-fetched-headers): New functions, for remembering - which headers have been fetched before. - -2002-10-23 Katsumi Yamaoka - - * lpath.el: Remove useless bindings. - -2002-10-22 Jesper Harder - - * gnus-sum.el (gnus-summary-execute-command): Disable visual - features while searching. - -2002-10-22 TSUCHIYA Masatoshi - - * pgg.el (pgg-snarf-keys): Do not refer unbinded local variables. - -2002-10-22 Simon Josefsson - - * pgg.el (pgg-encrypt, pgg-decrypt, pgg-sign, pgg-verify) - (pgg-snarf-keys): Add. - -2002-10-22 Katsumi Yamaoka - - * lpath.el: Fbind bbdb-records. - - * spam.el: Don't autoload bbdb-records. - -2002-10-22 Katsumi Yamaoka - - * spam.el: Set autoload for bbdb-records after loading bbdb-com to - prevent inf-loop. - -2002-10-22 Lars Magne Ingebrigtsen - - * nnslashdot.el: Removed some test lines. - More test. - -2002-10-21 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetch-headers): Remove articles that - are known to be downloaded already. - -2002-10-21 Lars Magne Ingebrigtsen - - * mm-view.el (mm-text-html-renderer-alist): Add w3m-standalone. - (mm-text-html-washer-alist): Ditto. - -2002-10-19 TSUCHIYA Masatoshi - - * nnheader.el (nnheader-remove-body): Fix an error of detecting - boundary between headers and body. - * nnml.el (nnml-parse-head): Ditto. - -2002-10-20 Lars Magne Ingebrigtsen - - * nnslashdot.el (nnslashdot-generate-active): Ignore any bogus - entries. - - * gnus-group.el (gnus-fetch-group): Allow an optional - specification of the articles to select. - - * gnus-srvr.el (gnus-server-prepare): Removed superfluous cdr. - -2002-10-20 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetch-group-1): After fetching - headers from the group, update variable `articles' to contain - only those numbers where headers exist. (When fetching all - articles in a group, Gnus creates lots of numbers where there is - no articles.) - -2002-10-20 Steve Youngs - - * pgg-parse.el (pgg-parse-public-key-algorithm-alist): XEmacs - doesn't have the 'alist custom type, use cons cells instead. - (pgg-parse-symmetric-key-algorithm-alist): Ditto. - (pgg-parse-hash-algorithm-alist): Ditto. - (pgg-parse-compression-algorithm-alist): Ditto. - (pgg-parse-signature-type-alist): Ditto. - - * pgg-gpg.el (pgg-gpg-extra-args): Fix custom mismatch. - - * pgg-pgp5.el (pgg-pgp5-extra-args): Ditto. - - * pgg-pgp.el (pgg-pgp-extra-args): Ditto. - -2002-10-19 Simon Josefsson - - * nnimap.el (nnimap-open-server): Check imap-state in IMAP server - buffer. - -2002-10-18 Kai Gro,A_(Bjohann - - * gnus-spec.el (gnus-make-format-preserve-properties) - (gnus-xmas-format, gnus-parse-simple-format): Preserve text - properties also on XEmacs. `gnus-xmas-format' is like format but - preserves text properties on XEmacs (though it only understands - simple format specs). The variable - `gnus-make-format-preserve-properties' controls whether the - function is used, and is checked in `gnus-parse-simple-format'. - Patch by Paul Moore . - - * gnus-agent.el (gnus-agent-fetch-articles): More debugging - output. - (gnus-agent-consider-all-articles): New variable. - (gnus-agent-get-undownloaded-list): Comment that marks todo item. - (gnus-agent-fetch-headers): Depending on - gnus-agent-consider-all-articles, maybe get all articles. - (gnus-category-predicate-alist, gnus-agent-read-p): New predicate - `read'. - (gnus-predicate-imples-unread): New function. - (gnus-agent-fetch-headers): Optimize to call - gnus-list-of-unread-articles if that is sufficient. - Check unseen and recent instead of seen and recent. - (gnus-agent-fetch-headers): Abstain from calling - gnus-list-range-intersection if range (a . b) would have (> a b). - -2002-10-18 Katsumi Yamaoka - - * message.el (message-send-mail): Make it possible to perform - edebug-defun. - -2002-10-18 Simon Josefsson - - * gnus-art.el (gnus-button-man-handler): Change default to - `manual-entry' (defined in both emacsen). - (gnus-button-man-handler): Remove emacsen difference and use - `manual-entry'. - -2002-10-18 Katsumi Yamaoka - - * spam.el: Wrap autoload settings for bbdb-records, - executable-find and ifile-spam-filter with eval-and-compile. - (spam-display-buffer-contents): Remove. - (spam-bogofilter-score): Merge spam-display-buffer-contents. - -2002-10-17 Ted Zlatanov - - * spam.el (spam-display-buffer-contents): New function. - (spam-bogofilter-score): use spam-display-buffer-contents, patch - from Katsumi Yamaoka . - -2002-10-17 TSUCHIYA Masatoshi - - * nnheader.el (nnheader-parse-naked-head): New function. - (nnheader-parse-head): Use the above function, in order to handle - continuation lines properly. - (nnheader-remove-body): New function. - (nnheader-remove-cr-followed-by-lf): New function. - (nnheader-ms-strip-cr): Use the above function. - - * gnus-agent.el (gnus-agent-regenerate-group): Call - `nnheader-remove-body'; use `nnheader-parse-naked-head' instead of - `nnheader-parse-head'. - * gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. - - * gnus-msg.el (gnus-inews-yank-articles): Do not unfold - continuation lines by itself; call `nnheader-parse-naked-head' - instead of `nnheader-parse-head'. - * nndiary.el (nndiary-parse-head): Ditto. - * nnfolder.el (nnfolder-parse-head): Ditto. - * nnimap.el (nnimap-retrieve-headers-progress): Ditto. - * nnmaildir.el (nnmaildir--update-nov): Ditto. - * nnml.el (nnml-parse-head): Ditto. - -2002-10-17 Steve Youngs - - * gnus-art.el (gnus-button-man-handler): Add 'manual-entry' for - XEmacs, default to it if featurep 'xemacs. - -2002-10-16 Katsumi Yamaoka - - * spam-stat.el: Check for the existence of hash functions instead - of the Emacs version to decide whether to load cl. Suggested by - Kai Gro,A_(Bjohann. - -2002-10-15 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetch-selected-article): Open history - if it isn't open yet. - -2002-10-14 Katsumi Yamaoka - - * gnus-group.el: Require mm-url only when compiling. - (gnus-group-fetch-charter): Require mm-url. - - * spam-stat.el: Require cl for the functions gethash, - hash-table-count, make-hash-table and mapc for Emacs 20. - (puthash): Alias to cl-puthash for Emacs 20. - (with-syntax-table): New macro for Emacs 20. - -2002-10-12 Jesper Harder - - * gnus-spec.el (gnus-pad-form): Use gnus-string-width-function. - -2002-10-11 Ted Zlatanov - - * spam.el (spam-check-ifile): added ifile as a spam checking - backend, and spam-use-ifle as the variable to toggle that check. - -2002-10-12 Simon Josefsson - - * message.el (message-beginning-of-line): New variable. - (message-beginning-of-line): Use it. - -2002-10-11 Ted Zlatanov - - * spam.el: more compilation fixes for BBDB - - * spam-stat.el added code from Alex Schroeder - (spam-stat-reduce-size): Interactive. - (spam-stat-reset): New function. - (spam-stat-save): Interactive. - -2002-10-11 Katsumi Yamaoka - - * gnus.el: Autoload gnus-delay-initialize. - - * message.el: Autoload gnus-delay-article. - -2002-10-11 Jesper Harder - - * gnus-spec.el (gnus-balloon-face-function): Use the help-echo - text property in Emacs. - -2002-10-11 Simon Josefsson - - * mml2015.el (mml2015-pgg-decrypt, mml2015-pgg-clear-decrypt) - (mml2015-pgg-verify, mml2015-pgg-clear-verify): Remove CR. - - * mml1991.el (mml1991-pgg-sign): Remove CR. - -2002-10-10 Simon Josefsson - - * mml2015.el (mml2015-pgg-decrypt): Set gnus details even when - decrypt failed. - (mml2015-trust-boundaries-alist): Removed. - (mml2015-gpg-extract-signature-details): Don't use it. - (mml2015-unabbrev-trust-alist): New. - (mml2015-gpg-extract-signature-details): Use it. - -2002-10-10 Ted Zlatanov - - * spam.el: compilation fixes, spam-check-bbdb function is nil if no - BBDB installed - - * spam-stat.el: added code from Alex Schroeder to do - statistical analysis of spam in Lisp only - -2002-10-10 Simon Josefsson - - * nnimap.el (nnimap-open-server): Re-open server if it isn't in - auth, selected or examine state. - - * pgg-gpg.el (pgg-gpg-verify-region): Filter out stuff into output - buffer and error buffer depending on type of information. - - * mml2015.el (mml2015-gpg-extract-signature-details): Parse - --status-fd stuff even if gpg.el is not used (revert earlier - change). - (mml2015-pgg-{clear-,}verify): Store both output and errors as - gnus details. - (mml2015-pgg-{clear-,}verify): Extract signature info from errors - buffer. - - * pgg.el (pgg-verify-region): Use it. - - * pgg-def.el (pgg-query-keyserver): New variable. - - * pgg.el (pgg-decrypt-region): Bind pgg-default-user-id to - key-identifier in packet. Is this a good idea? - - * mml.el (mml-mode-map): Add security commands that operates on - MIME parts. - (mml-menu): And menu items for them. - - * mml1991.el (mml1991-pgg-encrypt): Remove headers. - - * mml.el (mml-parse-1): Support sender in #secure tags. - - * mml1991.el (mml1991-pgg-sign): Only use message-sender if it is - defined. - - * mml-sec.el (mml-smime-encrypt-buffer): Warn about combined signing. - (mml-pgp-encrypt-buffer): Support combined signing. - - * mml1991.el (mml1991-mailcrypt-encrypt): Support combined signing. - (mml1991-gpg-encrypt): Ditto. - (mml1991-pgg-encrypt): Ditto. - (mml1991-encrypt): Pass sign parameter. - - * mml-sec.el (mml-signencrypt-style-alist): Defcustom. - (mml-signencrypt-style): Mention the variable. - -2002-10-09 Simon Josefsson - - * mml1991.el (mml1991-pgg-sign): Bind pgg-default-user-id, not - pgg-gpg-user-id. - - * pgg.el (pgg-insert-url-with-w3): Ignore errors. - (pgg-fetch-key-function): Nil if w3 is not installed. - -2002-10-08 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetch-selected-article): Bind - gnus-agent-current-history. - -2002-10-06 Simon Josefsson - - * imap.el (imap-parse-status): Don't use read to read token. - -2002-10-05 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-fetch-selected-article): Do nothing - for methods not covered by the agent, and when unplugged. - -2002-10-05 Simon Josefsson - - * pgg-gpg.el (pgg-gpg-encrypt-region): Query passphrase when - signing. - - * gnus-agent.el (gnus-agent-read-servers): If getting method from - a named server fails, ignore the server. - - * mml1991.el (mml1991-pgg-sign): Do QP. - - * pgg-gpg.el (pgg-gpg-encrypt-region): Make signencrypt really - work. - -2002-10-04 Simon Josefsson - - * pgg-gpg.el (pgg-gpg-encrypt-region): Make signencrypt work. - - * pgg-pgp.el (pgg-pgp-verify-region): Inline - binary-write-decoded-region from MEL. - - * pgg.el (pgg-encrypt-region): Support sign. - - * pgg-gpg.el (pgg-gpg-encrypt-region): Ditto. - - * mml2015.el (mml2015-pgg-encrypt): Ditto. - - * pgg.el, pgg-def.el, pgg-parse.el, pgg-gpg.el, pgg-pgp5.el, - pgg-pgp6.el: Moved from ../pgg/. Modifications compared to EMIKO - branch where PGG was taken from in the ChangeLog entries below. - -2002-10-01 Simon Josefsson - - * pgg-pgp.el: Don't require mel. Don't use luna. - (pgg-scheme-pgp-instance, pgg-make-scheme-pgp): Remove. - (pgg-pgp-process-region): Use expand-file-name instead of concat. - (pgg-pgp-process-region): Don't use binary-funcall. - - * pgg-pgp5.el (pgg-pgp5-process-region): Don't use binary-funcall. - - * pgg-gpg.el (pgg-gpg-process-region): Use expand-file-name - instead of concat. - - * pgg-pgp5.el (pgg-pgp5-process-region): Ditto. - -2002-09-29 Simon Josefsson - - * pgg-parse.el (pgg-char-int, pgg-string-as-unibyte): Prevent byte - compile warnings. - - * pgg.el (pgg-decrypt-region): Don't parse packet. - - * pgg.el, pgg-gpg.el, pgg-pgp5.el: Don't depend on luna.el. - -2002-09-29 Daiki Ueno - - * pgg.el: Remove dependency on calist.el. - -2002-09-28 Simon Josefsson - - * pgg.el (pgg-temporary-file-directory): New variable. - (pgg-verify-region): Don't assume set-buffer-multibyte exists. - - * pgg-pgp5.el (pgg-pgp5-process-region, pgg-scheme-verify-region) - (pgg-scheme-snarf-keys-region): Use pgg-temporary-file-directory. - - * pgg-parse.el (pgg-char-int): Defalias. - (pgg-format-key-identifier, pgg-byte-after, pgg-read-byte) - (pgg-read-bytes, pgg-read-body): Use it. - (pgg-decode-packets): Don't use MEL, use base64-*. - (pgg-parse-armor): Don't assume set-buffer-multibyte exists. - (pgg-string-as-unibyte): Defalias. - (pgg-parse-armor-region): Use it. - - * pgg-gpg.el (pgg-gpg-process-region): Use - pgg-temporary-file-directory. - - * luna.el: Don't def-edebug. - - * pgg-pgp5.el (pgg-scheme-verify-region): Inline - binary-write-decoded-region from MEL. - - * pgg-pgp5.el, pgg-gpg.el: Don't require mel. - - * alist.el, calist.el: Don't require product/APEL. - - * pgg-parse.el (top-level): Remove dependency on static.el, - pccl.el, mel.el. - (pgg-parse-crc24, pgg-parse-crc24-string): Only define if - `define-ccl-program' is boundp, instead of using broken. - -2002-10-01 Simon Josefsson - - * message.el (message-required-mail-headers): Remove Lines:. - -2002-10-03 Kai Gro,A_(Bjohann - From Jesper Harder. - - * gnus-group.el (gnus-group-fetch-charter, - gnus-group-fetch-control): Prompt for group if given a prefix - argument. - * gnus-sum.el (t): Add gnus-group-fetch-charter and - gnus-group-fetch-control to summary key map and menu. - -2002-10-03 Paul Jarc - - * nnmaildir.el (nnmaildir--group-maxnum-art): fix maximum article - number when there are no articles. - -2002-10-03 Kai Gro,A_(Bjohann - - * gnus-agent.el (gnus-agent-summary-fetch-group): Optional prefix - arg ALL means to fetch all articles, not only downloadable ones. - (gnus-agent-fetch-selected-article): New function for - gnus-select-article-hook or gnus-mark-article-hook. - -2002-10-02 Katsumi Yamaoka - From Peter von der Ahe . - - * gnus-ems.el (gnus-x-splash): Set coding-system-for-read to - raw-text. - -2002-09-30 Ted Zlatanov - - * spam.el: merged changes from pinard@iro.umontreal.ca (Fran,Ag(Bois - Pinard). - Major revamp of the code, documentation is in comments in the file - for now. - -2002-09-30 Simon Josefsson - - * mml2015.el (mml2015-pgg-clear-verify): Verifying in a unibyte - buffer seem to be needed? - -2002-09-29 Simon Josefsson - - * mml1991.el (pgg-output-buffer, pgg-errors-buffer): Prevent byte - compile warnings. - - * mml1991.el (mml1991-function-alist): Add pgg. - (mml1991-pgg-sign, mml1991-pgg-encrypt): New functions. - (mml1991-pgg-encrypt): Fix recipients querying. - -2002-09-28 Simon Josefsson - - * mml2015.el (autoload): Autoload correct files. Trivial patch - from dme@dme.org. - (mml2015-pgg-decrypt, mml2015-pgg-verify): Make sure either nil or - handle is returned. - -2002-09-27 Katsumi Yamaoka - - * gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news): - Protect against non-existent of `nnimap-mailbox-info'. - -2002-09-27 Simon Josefsson - - * gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news): New. - (gnus-setup-news-hook): Use it. - (gnus-after-getting-new-news-hook): Ditto. - - * nnimap.el (nnimap-fixup-unread-after-getting-new-news): Remove. - -2002-09-27 Katsumi Yamaoka - From Mats Lidell . - - * gnus-art.el (gnus-article-mode-syntax-table): Replace "-" to " ". - -2002-09-27 TSUCHIYA Masatoshi - - * gnus-sum.el (gnus-nov-parse-line): When an error is signaled in - the part to decode encoded words, use raw words instead of decoded - words. - -2002-09-26 ShengHuo ZHU - - * nnimap.el (nnimap-update-unseen): Use gnus-gethash-safe. - - * mm-view.el (mm-w3m-mode-ignored-keys): New variable. - (mm-setup-w3m): Use it. - -2002-09-27 Simon Josefsson - - * gnus-art.el (gnus-article-mode-syntax-table): Make M-. work in - article buffers. - - * nnimap.el (nnimap-fixup-unread-after-getting-new-news): Autoload - it just in case. - (nnimap-update-unseen): New function; update unseen count in - `n-m-info'. - (nnimap-close-group): Call it. - - * gnus-start.el (gnus-setup-news-hook): Add n-f-u-a-g-n-n. - (gnus-after-getting-new-news-hook): Ditto. - - * nnimap.el (nnimap-retrieve-groups): Move the quick mail check - message into verboselevel 9. Change slow mail check message. - (nnimap-retrieve-groups): Use prefixed names in n-mailbox-info. - (nnimap-fixup-unread-after-getting-new-news): New function, to be - used as a hook after getting new mail. - -2002-09-26 Simon Josefsson - - * imap.el (imap-parse-resp-text-code): The UNSEEN value in - SELECT/EXAMINE is first unseen article, not number of unseen - articles. Make them distinct by renaming the former to - `first-unseen' instead of `unseen'. - - * nnimap.el (nnimap-retrieve-groups): Get uidvalidity and unseen - too. - (nnimap-retrieve-groups): Don't used cached data if uidvalidity - changed. - (nnimap-retrieve-groups): Store uidvalidity and unseen data too. - - * gnus-int.el (gnus-server-unopen-status): Defcustom. - - * mml-sec.el (mml-signencrypt-style): Docstring to font-lock - better. - - * mml2015.el (mml2015-pgg-decrypt): Only add security information - if dissecting resulting buffer actually had any information. - -2002-09-26 Katsumi Yamaoka - - * gnus-group.el (gnus-group-sort-by-method): Remove `symbol-name' - because the function `string<' allows symbols. - - * gnus-sum.el (gnus-summary-make-menu-bar): Ditto. - -2002-09-25 ShengHuo ZHU - - * message.el (message-forward-make-body): Revert an early change - because 8-bit utf-8 emails. - -2002-09-25 Bj,Av(Brn Torkelsson - - * gnus-agent.el (gnus-category-line-format): Doc fixes (mostly added - links to Info) - * gnus-art.el (gnus-treat-highlight-signature): - * gnus-art.el (gnus-treat-buttonize): - * gnus-art.el (gnus-treat-buttonize-head): - * gnus-art.el (gnus-treat-emphasize): - * gnus-art.el (gnus-treat-strip-cr): - * gnus-art.el (gnus-treat-unsplit-urls): - * gnus-art.el (gnus-treat-leading-whitespace): - * gnus-art.el (gnus-treat-hide-headers): - * gnus-art.el (gnus-treat-hide-boring-headers): - * gnus-art.el (gnus-treat-hide-signature): - * gnus-art.el (gnus-treat-fill-article): - * gnus-art.el (gnus-treat-hide-citation): - * gnus-art.el (gnus-treat-hide-citation-maybe): - * gnus-art.el (gnus-treat-strip-list-identifiers): - * gnus-art.el (gnus-treat-strip-pgp): - * gnus-art.el (gnus-treat-strip-pem): - * gnus-art.el (gnus-treat-strip-banner): - * gnus-art.el (gnus-treat-highlight-headers): - * gnus-art.el (gnus-treat-highlight-citation): - * gnus-art.el (gnus-treat-date-ut): - * gnus-art.el (gnus-treat-date-local): - * gnus-art.el (gnus-treat-date-english): - * gnus-art.el (gnus-treat-date-lapsed): - * gnus-art.el (gnus-treat-date-original): - * gnus-art.el (gnus-treat-date-iso8601): - * gnus-art.el (gnus-treat-date-user-defined): - * gnus-art.el (gnus-treat-strip-headers-in-body): - * gnus-art.el (gnus-treat-strip-trailing-blank-lines): - * gnus-art.el (gnus-treat-strip-leading-blank-lines): - * gnus-art.el (gnus-treat-strip-multiple-blank-lines): - * gnus-art.el (gnus-treat-unfold-headers): - * gnus-art.el (gnus-treat-fold-headers): - * gnus-art.el (gnus-treat-fold-newsgroups): - * gnus-art.el (gnus-treat-overstrike): - * gnus-art.el (gnus-treat-display-xface): - * gnus-art.el (gnus-treat-display-smileys): - * gnus-art.el (gnus-treat-from-picon): - * gnus-art.el (gnus-treat-mail-picon): - * gnus-art.el (gnus-treat-newsgroups-picon): - * gnus-art.el (gnus-treat-body-boundary): - * gnus-art.el (gnus-treat-capitalize-sentences): - * gnus-art.el (gnus-treat-fill-long-lines): - * gnus-art.el (gnus-treat-play-sounds): - * gnus-art.el (gnus-treat-translate): - * gnus-art.el (gnus-treat-x-pgp-sig): - * gnus-art.el (gnus-mime-button-line-format): - * gnus-art.el (gnus-button-man-level): - * gnus-art.el (gnus-button-emacs-level): - * gnus-cus.el (gnus-group-parameters): - * gnus-gl.el (bbb-build-mid-scores-alist): - * gnus-group.el (gnus-group-line-format): - * gnus-mlspl.el (gnus-group-split-setup): - * gnus-mlspl.el (gnus-group-split): - * gnus-msg.el (gnus-mailing-list-groups): - * gnus-msg.el (gnus-posting-styles): - * gnus-nocem.el (gnus-nocem-issuers): - * gnus-score.el (gnus-score-regexp-bad-p): - * gnus-srvr.el (gnus-server-line-format): - * gnus-topic.el (gnus-topic-line-format): - * gnus.el (gnus-summary-line-format): - * mail-source.el (mail-sources): - * message.el (message-subscribed-address-file): - * nnmail.el (nnmail-split-fancy): - -2002-09-24 Evgeny Roubinchtein - - * mail-source.el(mail-source-run-script): use `functionp' to test - whether the argument `script' is in fact a function. - (mail-sources): adjust the defcustom to allow users to specify a - function or a string as the value of the `:prescript' and - `:postscript' arguments of the `file' and `pop3' mail sources. - -2002-09-25 Paul Jarc - - * nnmaildir.el (nnmaildir--grp-add-art): fix minimum article - number when article 1 does not exist. - -2002-09-25 Kai Gro,b_(Bjohann - - * gnus-art.el (gnus-button-handle-apropos-variable): Fall back to - apropos if apropos-variable does not exist. - (gnus-button-guessed-mid-regexp) - (gnus-button-handle-describe-prefix, gnus-button-alist): Better - regexes. From Reiner Steib. - (gnus-button-handle-describe-function) - (gnus-button-handle-describe-variable): Doc fix. From Reiner Steib. - (gnus-button-handle-describe-key, gnus-button-handle-apropos) - (gnus-button-handle-apropos-command): Doc fix. From Reiner Steib. - -2002-09-25 Mark A. Hershberger - Trivial patch. - - * nnrss.el (nnrss-save-server-data): Save nnrss-group-alist in - the file. - -2002-09-24 ShengHuo ZHU - - * gnus-start.el (gnus-1): Create nndraft:queue, nndraft:drafts. - -2002-09-24 Simon Josefsson - - * mml2015.el (top-level): Require mm-util for mm-make-temp-file. - (mml2015-use): Prefer PGG if installed. - (mml2015-function-alist): Add PGG wrappers. - (mml2015-gpg-extract-signature-details): Check mml2015-use too. - (mml2015-gpg-extract-signature-details): PGG strips "gpg: " - prefix, make regexp optionally skip it. - (mml2015-pgg-decrypt, mml2015-pgg-clear-decrypt) - (mml2015-pgg-verify, mml2015-pgg-clear-verify, mml2015-pgg-sign) - (mml2015-pgg-encrypt): New functions. - (defvar, autoload): Prevent byte-compile warnings. - -2002-09-24 Katsumi Yamaoka - From TSUCHIYA Masatoshi . - - * gnus-art.el (article-strip-banner): Check for the existence of - from header. - -2002-09-23 Kai Gro,b_(Bjohann - - * gnus-art.el (gnus-button-guessed-mid-regexp): Improved regexp. - (gnus-button-alist): Improved regexp for - gnus-button-handle-mid-or-mail (false positives), fixed - gnus-button-handle-man entries. - From Reiner Steib. - -2002-09-23 Paul Jarc - From Josh Huber. - - * nnmaildir.el (nnmaildir--update-nov): fix wrong-type error when - nnmail-extra-headers is non-nil. - -2002-09-23 Paul Jarc - - * nnmaildir.el: Store article numbers persistently. General - revision. - (nnmaildir-request-expire-articles): handle 'immediate and 'never - for nnmail-expiry-wait; delete instead of moving if 'force is - given. - -2002-09-23 Simon Josefsson - Trivial fix from beaker@iavmb.pl (Krzysztof J,Bj(Bdruczyk). - - * smime.el (smime-sign-buffer): Get key and extra certs. - (smime-get-key-with-certs-by-email): Utility function. - -2002-09-21 ShengHuo ZHU - Trivial patch from Micha Wiedenmann - - * gnus-soup.el (gnus-soup-add-article): Mark as read only when the - article exists. - -2002-09-20 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-next-group): Switch to the summary buffer. - -2002-09-20 Kai Gro,b_(Bjohann - From Reiner Steib. - - * gnus-art.el (gnus-button-handle-custom, - gnus-button-handle-mid-or-mail, - gnus-button-handle-describe-{function,variable,key}, - gnus-button-handle-apropos{,command,variable}): New functions. - (gnus-button-prefer-mid-or-mail,gnus-button-guessed-mid-regexp, - gnus-button-{man,emacs,mail}-level): New variables. - (gnus-button-alist): Use the above to buttonize emacs and mail - related links. - -2002-09-18 Juanma Barranquero - - * gnus-int.el (gnus-status-message): Fix spacing. - - * imap.el (imap-continuation): Fix typos. - -2002-09-18 ShengHuo ZHU - - * gnus-msg.el (gnus-configure-posting-styles): Sort results. - - * gnus-art.el (gnus-article-reply-with-original): Correct - with-current-buffer scope. - - * message.el (message-completion-alist): Add Reply-To, From, etc. - -2002-09-18 Simon Josefsson - - * nnimap.el (nnimap-request-expire-articles): Make flag setting - conditional. From Nevin Kapur . - -2002-09-17 Simon Josefsson - - * nnimap.el (nnimap-expiry-target): Don't search for which - articles exists here. - (nnimap-request-expire-articles): Do it here instead. Only expire - when articles are found. Suggested by Nevin Kapur - . - -2002-09-17 Kai Gro,A_(Bjohann - From Reiner Steib . - - * message.el (message-strip-subject-trailing-was) - (message-change-subject, message-add-archive-header) - (message-xpost-fup2-header, message-xpost-insert-note) - (message-xpost-fup2, message-reduce-to-to-cc): New functions - adopted from message-utils.el. Add functions to the keymap, mode - describtion and menu. - (message-change-subject,message-xpost-fup2): Signal error if - current header is empty. - (message-xpost-insert-note): Changed insert position. - (message-archive-note): Ensure to insert note in message body (not - in head). - (message-archive-header, message-archive-note) - (message-xpost-default, message-xpost-note, message-fup2-note) - (message-xpost-note-function): New variables adopted from - message-utils.el. Changed some doc-strings. - (message-mark-insert-{begin,end}): Rename from - message-{begin,end}-inserted-text-mark (message-utils.el), changed - values. - (message-subject-trailing-was-query) - (message-subject-trailing-was-ask-regexp) - (message-subject-trailing-was-regexp): New variables. - (message-to-list-only): Added doc-string and menu entry. - - * message-utils.el: Removed. Functions are now in message.el. - -2002-09-16 ShengHuo ZHU - - * gnus-art.el (gnus-article-reply-with-original, - gnus-article-followup-with-original): Switch to - gnus-summary-buffer before reply/followup. - -2002-09-15 John Paul Wallington - - * gnus-sum.el (gnus-summary-toggle-header): The article window may - not exist. Toggle it anyway. - -2002-09-13 ShengHuo ZHU - - * gnus-msg.el (gnus-copy-article-buffer): Bind mail-header-separator. - - * gnus-art.el (article-fill-long-lines): Fill-paragraph properly. - Trivial patch from Urban Engberg . - - * rfc2047.el (message-posting-charset): Defvar it. - (rfc2047-charset-encoding-alist): Use B for iso-8859-7 and - iso-8859-8. Fix doc. Suggested by Dave Love . - - * mail-source.el (mail-source-fetch): Hide password. - - * gnus-sum.el (gnus-summary-next-group): Semi-exit only when needed. - -2002-09-12 Katsumi Yamaoka - From John Paul Wallington . - - * gnus.el (gnus-visual, gnus-meta): Fix typo. - -2002-09-11 Katsumi Yamaoka - - * gnus-art.el (gnus-article-address-banner-alist): Doc fix. - -2002-09-11 Simon Josefsson - - * nnimap.el (nnimap-expiry-target): Only expiry-target existing articles. - (nnimap-split-rule): Doc fix. - (nnimap-request-expire-articles): Cleanup code. - -2002-09-11 Katsumi Yamaoka - From TSUCHIYA Masatoshi . - - * gnus-art.el (gnus-article-address-banner-alist): New option. - (article-strip-banner): Refer the above option to split banners of - free mail servers, when no group parameter is specified. - -2002-09-10 Katsumi Yamaoka - - * nntp.el (nntp-wait-for-string): Check for a process in the - current buffer instead of `nntp-server-buffer'. - -2002-09-09 Simon Josefsson - - * gnus-art.el (gnus-button-man-handler): New variable. - (gnus-button-alist): Use g-b-handle-man. - (gnus-button-handle-man): New, call g-b-man-handler. - -2002-09-08 Simon Josefsson - - * gnus-art.el (gnus-button-alist): Buttonize man page links. - -2002-09-07 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-dumbquotes-map): Add \230. - -2002-09-06 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-browse-make-menu-bar): Add "d". - - * gnus-sum.el (gnus-summary-limit-to-unseen): New command and - keystroke. - - * gnus-srvr.el (gnus-browse-describe-group): New command and - keystroke. - -2002-09-06 Katsumi Yamaoka - - * gnus-art.el (gnus-article-treat-body-boundary): Don't quote a - value for gnus-decoration property. - -2002-09-06 Kai Gro,b_(Bjohann - - * nnmail.el (nnmail-cache-fetch-group): Don't return "" (empty - string) as group name in case we have a CRLF in the file. - -2002-09-04 Jesper Harder - - * rfc1843.el (rfc1843-decode-loosely): Move to mime customization - group. - (rfc1843-decode-hzp): do. - (rfc1843-newsgroups-regexp): do. - -2002-09-04 Simon Josefsson - - * message.el (message-canlock-generate): Make sure sha1 doesn't - call external programs. - -2002-09-03 Simon Josefsson - - * nntp.el (nntp-wait-for-string): Dont infloop if process died. - - * gnus-agent.el (gnus-agent-batch): Add doc. - -2002-09-03 Josh Huber - - * gnus-msg.el (gnus-summary-handle-replysign): Change the order we - check for signed and encrypted parts. - * mml.el (mml-parse-1): Correct small typo which preventing - setting recipients in a secure tag. - -2002-09-03 Katsumi Yamaoka - - * mm-util.el (mm-coding-system-priorities): Default to a list of - iso-2022-jp and others for the Japanese environment. - -2002-09-03 Katsumi Yamaoka - - * gnus-util.el (gnus-frame-or-window-display-name): Exclude - invalid display names. - -2002-08-30 Simon Josefsson - - * gnus-group.el (gnus-group-fetch-control): Fix typo in last - commit. From Reiner Steib <4uce.02.r.steib@gmx.net>. - -2002-08-26 Jesper Harder - - * gnus.el (gnus-group-charter-alist): New option. - (gnus-group-fetch-control-use-browse-url): New option. - - * gnus-group.el (gnus-group-fetch-charter): New function. - (gnus-group-fetch-control): New function. - Add them to the keymap and menu. Require mm-url. - -2002-08-30 Katsumi Yamaoka - - * gnus-mlspl.el (gnus-group-split-fancy): Doc fix. - From Alex Schroeder . - -2002-08-29 Jesper Harder - - * gnus-group.el (gnus-group-make-menu-bar): Add ellipses to menu - items expecting user interaction. - - * gnus-topic.el (gnus-topic-make-menu-bar): do. - - * gnus-sum.el (gnus-summary-make-menu-bar): do. - - * gnus-srvr.el (gnus-server-make-menu-bar): do. - - * mml.el (mml-menu): do. - -2002-08-28 Katsumi Yamaoka - - * mail-source.el (mail-source-touch-pop): New function. - - * message.el (message-smtpmail-send-it): New function. - (message-send-mail-function): Add it for a candidate. - -2002-08-27 Simon Josefsson - - * gnus-msg.el (posting-charset-alist): Use - gnus-define-group-parameter instead of defcustom. - (gnus-put-message): Handle SPC in GCC. - (gnus-inews-insert-gcc): Ditto. - (gnus-inews-insert-archive-gcc): Ditto. - -2002-08-26 Simon Josefsson - - * gnus-agent.el (gnus-agent-auto-agentize-methods): New variable. - (gnus-agentize): Auto agentize all nntp and nnimap groups. - (gnus-agent-possibly-save-gcc): Autoload. - Suggested by (KOSEKI Yoshinori) . - -2002-08-26 Katsumi Yamaoka - - * gnus.el (gnus-other-frame-function): New user option. - (gnus-other-frame): Use it; add a doc-string; make it work with - the gnuclient program. - - * gnus-util.el (gnus-frame-or-window-display-name): New function. - - * lpath.el: Fbind `frame-parameter', `make-frame-on-display', - `device-connection' and `dfw-device'. - -2002-08-22 Kai Gro,b_(Bjohann - - * gnus-art.el (gnus-emphasis-alist): Strikethru had a lot of false - positives, make it stricter. From Jochen Hein (trivial change). - -2002-08-21 Katsumi Yamaoka - - * gnus.el (gnus-other-frame): Trivial fix. - -2002-08-21 Katsumi Yamaoka - - * gnus.el (gnus-other-frame-parameters): New user option. - (gnus-other-frame-object): New variable. - (gnus-other-frame): Make it search for existing Gnus frame; don't - read new news; delete frame on exit. - - * gnus-util.el (gnus-select-frame-set-input-focus): New function. - - * lpath.el: Fbind w32-focus-frame and x-focus-frame. - -2002-08-20 Katsumi Yamaoka - From $B>.4X(B $B5HB'(B (KOSEKI Yoshinori) . - - * message.el (message-set-auto-save-file-name): Add support for - the Cygwin Emacs; the system-type is `cygwin'. - * nnheader.el (nnheader-file-name-translation-alist): Ditto. - -2002-08-20 ShengHuo ZHU - - * gnus-art.el (gnus-button-url-regexp): Use POSIX regexp if possible. - - * nnmh.el (nnmh-request-list-1): Use %.0f instead of %d to - avoid arithmetic errors. - -2002-08-20 Katsumi Yamaoka - - * gnus-art.el: Don't fbind `gnus-article-replace-with-quoted-text'. - -2002-08-19 Katsumi Yamaoka - - * message.el (message-ignored-supersedes-headers): Add X-Hashcash. - (message-ignored-resent-headers): Add envelope From. - -2002-08-18 Kai Gro,b_(Bjohann - - * gnus.el (gnus-summary-line-format): Document %k specifier. - -2002-08-17 Kai Gro,b_(Bjohann - - * gnus-sum.el (gnus-summary-line-message-size): New function. - (gnus-summary-line-format-alist): Use it. - -2002-08-15 Katsumi Yamaoka - - * gnus-art.el (article-make-date-line): Refer to the value for - `gnus-article-time-format' in the summary buffer. - - * message.el (message-cite-prefix-regexp): Exclude ":" and ",A;(B". - -2002-08-14 Simon Josefsson - - * gnus-art.el (gnus-button-alist): Use ' not ` for default value - quoting. - (gnus-button-alist): Fix doc. - (gnus-header-button-alist): Use ' not ` for default value quoting. - (gnus-header-button-alist): Don't inline gnus-button-url-regexp, - rationale similar to 2002-05-01 change. - (gnus-article-add-buttons-to-head): Evaluate expression. - - * gnus-sum.el (gnus-summary-make-menu-bar): Add MIME button option. - -2002-08-14 Katsumi Yamaoka - - * message.el (message-font-lock-keywords): Refer to the value for - `message-cite-prefix-regexp' dynamically. - -2002-08-13 Katsumi Yamaoka - - * gnus-art.el (gnus-decode-header-methods): Doc fix. - -2002-08-12 Simon Josefsson - - * imap.el (imap-shell-open): Allow non-list `imap-shell-program'. - (imap-shell-open): Skip initial junk before IMAP greeting. - -2002-08-11 Simon Josefsson - - * message-utils.el (message-xpost-default, - message-xpost-fup2-header, message-xpost-fup2): Fixed - Typos. Trivial changes from Reiner Steib - <4uce.02.r.steib@gmx.net>. - -2002-08-09 Simon Josefsson - - * message.el (message-canlock-password): Set - canlock-password-for-verify to newly generated canlock-password. - When Emacs is restarted, Custom makes sure this is set, but during - the same session we must set it manually. - -2002-08-07 Jesper Harder - - * yenc.el: New file. - - * mm-uu.el (mm-uu-yenc-decode-function): New variable. - (mm-uu-type-alist): Add yenc. - (mm-uu-yenc-filename): New function. - (mm-uu-yenc-extract): New function. - - * mm-bodies.el (mm-decode-content-transfer-encoding): Add yenc. - -2002-08-06 ShengHuo ZHU - - * dgnushack.el (merge): Don't use coerce. - -2002-05-27 Jesper Harder - - * mailcap.el (mailcap-mime-data): Test window-system rather than - mm-device-type. - (mailcap-mime-data): Call xdvi and gv with "-safer". - - * mm-util.el: Don't define mm-device-type. - -2002-08-05 Simon Josefsson - - * mm-util.el (mm-coding-system-priorities): coding-system type not - supported everywhere. - -2002-08-04 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bumped version number. - -2002-08-04 01:48:57 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.07 is released. - -2002-08-04 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-thread-sort-functions): Doc fix. - (gnus-article-sort-functions): Doc fix. - (t): New keystroke. - (gnus-article-sort-by-random): New function. - (gnus-thread-sort-by-random): New function. - -2002-08-02 Simon Josefsson - - * gnus-logic.el (gnus-advanced-integer): Swap arguments in - funcall. From Scott A Crosby . - -2002-07-31 Danny Siu - - * nnimap.el (nnimap-split-articles): do not call nnmail-fetch-field - when splitting malformed messages without message-id - -2002-07-28 Kai Gro,b_(Bjohann - From Niklas Morberg . - - * nnweb.el (nnweb-type, nnweb-type-definition) - (nnweb-gmane-create-mapping, nnweb-gmane-wash-article) - (nnweb-gmane-search, nnweb-gmane-identity): Added gmane - functionality. - * nnweb.el: Removed old non-functioning search engines. - -2002-07-27 Simon Josefsson - - * message.el (message-forward-make-body): Don't use - `message-forward-ignored-headers' when doing a "raw" followup (it - is important to preserve e.g. CTE). - - * flow-fill.el (fill-flowed): Disable filladapt-mode. - - * gnus-sieve.el (gnus-sieve-guess-rule-for-article): Don't - regexp-quote, Cyrus Sieve is fixed. - - * sieve-manage.el (sieve-manage-deletescript): New function. - - * sieve.el (sieve-manage-mode-map): Fix down-mouse-2 and down-mouse-3. - (sieve-manage-mode): Fix menubar. - (sieve-activate): Change some messages. - (sieve-deactivate-all): New function. - (sieve-deactivate): New alias. - (sieve-remove): New function. - (sieve-help): Fix help. - All suggested by Ned Ludd. - -2002-07-24 Katsumi Yamaoka - - * mm-decode.el (mm-inline-text-html-with-images): Doc fix. - (mm-w3m-safe-url-regexp): New user option. - - * mm-view.el (mm-inline-text-html-render-with-w3m): Use - `mm-w3m-safe-url-regexp' to bind `w3m-safe-url-regexp'. - -2002-07-23 Karl Kleinpaste - - * gnus-sum.el (gnus-summary-delete-article): Force - nnmail-expiry-target to 'delete, so that absolute deletion - happens when absolute deletion is requested. - -2002-07-21 Kai Gro,b_(Bjohann - From Nevin Kapur . - - * nnmail.el (nnmail-fancy-expiry-target): Treat nonexisting - headers as empty headers. - -2002-07-21 Kai Gro,b_(Bjohann - From Jochen Hein . - - * gnus-art.el (gnus-emphasis-alist): Add strikethrough and - correct typo. - (gnus-emphasis-strikethru): New face. - -2002-07-20 Kai Gro,b_(Bjohann - From Jason Merrill . - - * nnfolder.el (nnfolder-retrieve-headers): Avoid searching the - entire file for each of a sequence of missing articles. - - * gnus-salt.el (gnus-binary-display-article): Respect an existing - value for gnus-view-pseudos. - - * gnus-sum.el (gnus-summary-insert-new-articles): Count down to - avoid nreverse. - -2002-07-14 Kai Gro,b_(Bjohann - From Ted Zlatanov . - - * gnus-sum.el (gnus-auto-expirable-marks): Remove `spam'. - (gnus-summary-mode-line-format-alist): Add %h for number of - spams. - (gnus-newsgroup-spam-marked): New variable. - (gnus-summary-local-variables): Add gnus-newsgroup-spam-marked. - (gnus-article-read-p, gnus-article-mark) - (gnus-set-global-variables, gnus-set-global-variables) - (gnus-article-marked-p, gnus-summary-mark-article-as-read) - (gnus-summary-mark-article-as-unread) - (gnus-summary-mark-article-as-unread, gnus-summary-mark-article) - (gnus-mark-article-as-read, gnus-mark-article-as-unread) - (gnus-mark-article-as-unread, gnus-summary-catchup): Grok spam. - -2002-07-10 Simon Josefsson - - * nnimap.el (nnimap-split-to-groups): Allow group string to be a - function. From KANEMATSU Daiji . - -2002-07-09 Nevin Kapur - - * gnus-sum.el (gnus-summary-delete-article): Respect group - parameters while expiring. - -2002-07-08 Simon Josefsson - - * gnus-art.el (article-make-date-line): Fix string. From Henrik - Enberg. - -2002-07-08 Kai Gro,b_(Bjohann - - * gnus-art.el (article-unsplit-urls): Only display MIME when this - function is called interactively. From Niklas Morberg. - -2002-07-06 ShengHuo ZHU - - * gnus-topic.el (gnus-topic-indent, gnus-topic-unindent): Change - cdaar to cdar and car. - - * nnsoup.el (nnsoup-retrieve-headers, nnsoup-request-type) - (nnsoup-read-active-file, nnsoup-article-to-area): Ditto. - -2002-07-05 Katsumi Yamaoka - - * gnus-sum.el (gnus-summary-toggle-header): Show headers anyway; - don't break a narrowed article. - - * nntp.el (nntp-via-rlogin-command-switches): Doc fix. - (nntp-open-via-rlogin-and-telnet): Ditto. - -2002-07-02 Didier Verna - - * nnmail.el (nnmail-split-methods): fix custom type. - -2002-07-02 Kai Gro,b_(Bjohann - - * gnus-art.el (article-unsplit-urls): Keep URL buttonized after - unsplitting. From Niklas Morberg . - -2002-07-01 Kai Gro,b_(Bjohann - - * gnus-msg.el (gnus-summary-resend-default-address): New user option. - (gnus-summary-resend-message): Use it. - -2002-06-28 Katsumi Yamaoka - - * nntp.el (nntp-via-rlogin-command-switches): New variable. - (nntp-open-via-rlogin-and-telnet): Re-revert; use the var above. - -2002-06-28 Kai Gro,b_(Bjohann - - * message.el (message-font-lock-keywords): Don't fontify - headers in the message body, only in the header. - (message-font-lock-make-header-matcher): New function, used by - message-font-lock-keywords. - From Katsumi Yamaoka . - -2002-06-28 Katsumi Yamaoka - - * nntp.el (nntp-open-via-rlogin-and-telnet): Revert last change. - -2002-06-28 Katsumi Yamaoka - - * nntp.el (nntp-open-via-rlogin-and-telnet): Hide commandline args. - -2002-06-26 Kai Gro,b_(Bjohann - - * message.el (message-font-lock-keywords): Revert 2002-06-22 - change. - -2002-06-24 Kai Gro,b_(Bjohann - - * message.el (message-font-lock-keywords): Put colon in header - name match. - -2002-06-22 Kai Gro,b_(Bjohann - - * message.el (message-font-lock-keywords): Don't use header faces - in the body. Thanks to Stefan Monnier for the hint on the - implementation. - -2002-05-09 Miles Bader - - * gnus-cite.el (gnus-cite-blank-line-after-header): New variable. - (gnus-article-hide-citation): Respect it. - -2002-04-12 Juanma Barranquero - - * pop3.el (pop3-open-server): Fix typo. - -2002-06-18 Josh Huber - - * gnus.el (gnus-find-subscribed-addresses): Use add-to-list - instead of push to ignore duplicate to-(list|address) values. - * nnmail.el (nnmail-cache-ignore-groups): New. - * nnmail.el (nnmail-cache-insert): Obey nnmail-cache-ignore-groups - -2002-06-18 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-send-queue): Delete the delay header - before sending. Suggested by Jan Rychter. - -2002-06-18 Katsumi Yamaoka - - * dgnushack.el (remove): New compiler macro. - (last, coerce, subseq): Remove compiler macros for those built-in - or unused functions. - -2002-06-17 Kai Gro,b_(Bjohann - - * gnus-start.el (gnus-clear-system, gnus-read-newsrc-file): Make - sure to write byte-compiled versions of gnus-*-format-alist to - .newsrc.eld. From Simon Josefsson. - -2002-06-16 Kai Gro,b_(Bjohann - - * gnus-agent.el (gnus-agent-read-servers) - (gnus-agent-write-servers): Put server name (string like - "nnchoke:frumple") in the file instead of a server specification - (Lisp expression like (nnchoke "frumple" ...parameters...)). - From Bj,Ax(Brn Mork . - -2002-06-16 Simon Josefsson - - * gnus-cache.el (gnus-cache-remove-article): n is &optional. From - Reiner Steib <4uce.02.r.steib@gmx.net>. - -2002-06-15 ShengHuo ZHU - - * nnheader.el (nnheader-file-name-translation-alist): Set the - default value for MS Windows systems. - - * gnus-ems.el (nnheader-file-name-translation-alist): Removed. - -2002-06-14 Katsumi Yamaoka - - * message.el (message-beginning-of-line): Keep the region active - in XEmacs. Suggested by TAKAHASHI Kaoru . - -2002-06-13 Josh Huber - - * gnus-msg.el (gnus-summary-followup): Use g-s-handle-replysign. - * gnus-msg.el (gnus-summary-reply): Ditto. - * gnus-msg.el (gnus-summary-handle-replysign): New. - -2002-06-12 Katsumi Yamaoka - - * message.el (message-send-mail-with-sendmail): Kill errbuf even - if sending failed. - -2002-06-11 Josh Huber - - * gnus-start.el (gnus-dribble-enter): Don't call set-window-point anymore - * mml2015.el (mml2015-mailcrypt-encrypt): Accept optional argument - to sign while encrypting. - -2002-06-11 Simon Josefsson - - * gnus-int.el (gnus-request-move-article): Agent expire article if - successfuly moved. - - * nnweb.el (nnweb-google-create-mapping): Honors the value of - nnweb-max-hits. From Niklas Morberg . - -2002-06-10 Simon Josefsson - - * gnus-int.el (gnus-request-expire-articles): Fix last change? - -2002-06-09 Simon Josefsson - - * gnus-sum.el (gnus-summary-delete-article): Don't agent expire here. - - * gnus-int.el (gnus-request-expire-articles): Do it here instead. - -2002-06-08 ShengHuo ZHU - - * flow-fill.el (fill-flowed): Ignore errors. - -2002-06-06 Simon Josefsson - - * message.el (message-send-mail-with-sendmail): Improve error message. - -2002-06-06 Kai Gro,b_(Bjohann - - * message.el (message-interactive): Change default from nil to t. - Better to be safe than to be fast. - -2002-06-05 Kai Gro,b_(Bjohann - - * message.el (message-send-mail-with-sendmail): Check return value - from call-process-region. - -2002-06-04 Simon Josefsson - - * gnus-msg.el (gnus-group-mail, gnus-group-news) - (gnus-group-post-news, gnus-summary-mail-other-window) - (gnus-summary-news-other-window, gnus-summary-post-news): Bind - gnus-article-copy to nil, thereby inhibiting the `header' posting - style match to use data from last viewed article. - Suggested by Hrvoje Niksic. - -2002-06-04 Katsumi Yamaoka - - * spam.el (spam-point-at-eol): New alias. - (spam-parse-whitelist): Use it. - -2002-06-03 Simon Josefsson - - * nnmail.el (nnmail-mail-splitting-decodes): New variable. - (nnmail-article-group): Use it. - -2002-05-30 Kai Gro,b_(Bjohann - - * gnus-msg.el (gnus-inews-yank-articles): Merge split header lines - so that code reading them won't be surprised. From Jesper Harder - . - -2002-05-29 Simon Josefsson - - * gnus-sum.el (gnus-summary-delete-article): Agent expire deleted - articles. - - * gnus.el (gnus-agent-cache): Doc fix. - (gnus-agent): Change default to t. - - * gnus-agent.el (gnus-agent-expire): Make it accept optional - ARTICLES, GROUP and FORCE parameters. - -2002-05-28 Simon Josefsson - - * gnus-group.el (gnus-group-line-format): Doc fix. - -2002-05-28 Kai Gro,b_(Bjohann - - * gnus-msg.el (gnus-inews-yank-articles): Unfold headers of - original article before yanking. From Jesper Harder - . - -2002-05-26 Simon Josefsson - - * gnus-sum.el (gnus-summary-menu-split): New function. - (gnus-summary-make-menu-bar): Split charset submenu. - (gnus-summary-menu-maxlen): New variable. - (gnus-summary-menu-split): Use it. - -2002-05-25 Simon Josefsson - - * mml.el (mml-preview): Generate some headers. - - * gnus.el (gnus-large-newsgroup): Fix :type. - - * nnimap.el (nnimap-nov-is-evil): Change default to t (because the - Agent cache NOV's by default now). - (nnimap-nov-is-evil): Make it default to `gnus-agent' instead. - -2002-05-18 Jesper Harder - - * gnus-sum.el (gnus-dependencies-add-header): Avoid one unecessary - call to gnus-parent-id when we check for References loops. - (gnus-summary-prepare-threads): Avoid simplifying every Subject - twice by saving the simplified subject string in simp-subject. - -2002-05-23 Simon Josefsson - - * gnus-msg.el (gnus-confirm-mail-reply-to-news): Typo. Trivial - change from Benjamin Rutt . - - * nnweb.el (nnweb-type): Remove dejanewsold. Trivial change from - Niklas Morberg . - -2002-05-22 Simon Josefsson - - * sieve.el (sieve-change-region): Define it before it is used. - - * gnus-msg.el (gnus-confirm-mail-reply-to-news) - (gnus-summary-reply): Ask for confirmation when replying to news. - Defaults to not ask. From Benjamin Rutt - . - - * nnimap.el (nnimap-nov-is-evil): Improve doc. - -2002-05-21 Simon Josefsson - - * sieve-mode.el (sieve-manage): Fix autoloads. - - * sieve-manage.el (sieve-manage-cram-md5-auth): Just send the SASL - name (makes it work with recent Cyrus timsieved). - -2002-05-20 Jason - Trivial patch. - - * gnus-art.el (gnus-request-article-this-buffer): Try - reconnecting if you don't get the message. - -2002-05-20 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-enter-digest-group): Only get - Reply-To headers from the headers. - -2002-05-18 Lars Magne Ingebrigtsen - - * mm-url.el (mm-url-insert): Remove junk message. - -2002-05-17 Lars Magne Ingebrigtsen - - * nnslashdot.el (nnslashdot-request-list): Parse new html. - (nnslashdot-use-front-page): New variable. - (nnslashdot-request-list): Use it. - - * mm-url.el (mm-url-timeout): New variable. - (mm-url-retries): Ditto. - (mm-url-insert): Use it. - -2002-05-16 Simon Josefsson - - * gnus-sum.el (gnus-simplify-all-whitespace): New function. - (gnus-simplify-subject-functions): Mention g-s-a-w. - -2002-05-15 Josh Huber - - * nnbabyl.el (nnbabyl-request-accept-article): Pass group to - nnmail-cache-insert. - * nndiary.el (nndiary-request-accept-article): Ditto. - * nnfolder.el (nnfolder-request-accept-article): Ditto. - * nnimap.el (nnimap-request-accept-article): Ditto. - * nnmail.el (nnmail-process-unix-mail-format): Ditto. - * nnmail.el (nnmail-check-duplication): Ditto. (from gnus-art) - * nnmbox.el (nnmbox-request-accept-article): Ditto. - * nnmh.el (nnmh-request-accept-article): Ditto. - * nnmail.el (nnmail-cache-insert): Change group to required, - removed code which tried to figure out the group. - -2002-05-13 Josh Huber - - * mml.el (mml-generate-mime-1): Fix mml generation for signed only - messages. From Hans de Graaff . - * nnml.el (nnml-request-accept-article): Pass in the group name to - nnmail-cache-insert, since it's available. - -2002-05-10 ShengHuo ZHU - - * nndoc.el (nndoc-mime-digest-type-p): Set proper file-end. - -2002-05-08 Kai Gro,b_(Bjohann - From Florian Weimer . - - * gnus.el (subscribed): New group parameter. - (gnus-find-subscribed-addresses): Use it. - -2002-05-08 Josh Huber - - * mml-sec.el (mml-signencrypt-style-alist): Rename. Also, changed - the default for pgpmime to support pgp v2. - * mml-sec.el (mml-signencrypt-style): New accessor function to - allow users to get/set the signencrypt style more easily without - frobbing the alist directly. - * mml.el (mml-generate-mime-1): Use accessor function. - -2002-05-08 Kai Gro,b_(Bjohann - - * gnus-art.el (gnus-article-mode-syntax-table): Specify matching - parenthesis for "<" and ">". Suggested by Andreas Schwab - . - -2002-05-07 Kai Gro,b_(Bjohann - - * nnmail.el (nnmail-cache-insert): Prefer group-art over group - when intuiting the group the message is written to. From Josh - Huber . - -2002-05-06 Simon Josefsson - - * gnus-topic.el (gnus-group-topic-parameters): Work when group - buffer doesn't show group. From Matt Armstrong . - -2002-05-06 Josh Huber - - * mml2015.el (mml2015-gpg-encrypt): Changed name of optional - argument, and fixed compiler warning. (added autoload for - gpg-encrypt). - -2002-05-04 Simon Josefsson - - * mml1991.el (mml1991-function-alist): Doc fix. - - * mml.el (mml-preview): Bind gnus-newsrc-hashtb temporarily if it - doesn't exist (for previewing messages without having Gnus - started). - - * mm-util.el (mm-coding-system-priorities): Defcustom. - - * mm-encode.el (mm-content-transfer-encoding-defaults): Defcustom. - -2002-05-01 Josh Huber - - * gnus-msg.el (gnus-message-replysignencrypted): enabled by - default. - * mml-sec.el: - * mml-sec.el (mml-signencrypt-style): New. - * mml-sec.el (mml-pgpmime-encrypt-buffer): Accept optional - argument `sign'. - * mml-sec.el (mml-secure-message-encrypt-pgp): Changed default to - signencrypt. - * mml-sec.el (mml-secure-message-encrypt-pgpmime): Ditto. - * mml.el (mml-generate-mime-1): Changed logic so a part which is - both signed & encryped is processed in one operation. (rather than - two separate ops: sign, then encrypt) - * mml2015.el (mml2015-gpg-extract-signature-details): Give some - indication if a message is signed by an expired key. - * mml2015.el (mml2015-gpg-encrypt): Accept optional argument which - enables combined sign & encrypt operation. (this was always on - before). - * mml2015.el (mml2015-encrypt): Accept optional argument `sign'. - -2002-05-01 Simon Josefsson - - * nnimap.el (nnimap-retrieve-groups): Use separate data for each - server. - (nnimap-mailbox-info): defvar instead of defvoo. - -2002-05-01 20:09:21 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.06 is released. - -2002-05-01 Lars Magne Ingebrigtsen - - * lpath.el: Bind url-package-version. - -2002-05-01 Simon Josefsson - - * nnfolder.el (nnfolder-request-delete-group): Figure out nov/mrk - filename before deleting the group itself, because the presence of - a group filename decides if long filenames are used or not. - - * gnus-art.el (gnus-button-alist): Don't inline - gnus-button-url-regexp. This makes it possible to change g-b-u-r - without also modifying g-button-alist. - (gnus-button-alist): Fix type to allow variable as well as regexp. - (gnus-article-add-buttons): Evaluate regexp. Strings evaluate to - themselves, variables to its contents. - (gnus-button-entry): Ditto. - -2002-05-01 Simon Josefsson - - * imap.el (imap-parse-resp-text-code, imap-parse-status): Treat - UIDNEXT as a string. - - * nnimap.el (nnimap-string-lessp-numerical): New function. - (nnimap-retrieve-groups): Compare UIDNEXT as strings instead of - integers. - -2002-04-29 Simon Josefsson - - * nnmail.el (nnmail-cache-insert): Accept optional group - parameter. - - * nnimap.el (nnimap-retrieve-groups): Don't send STATUS when - n-r-g-a is disabled. - -2002-04-29 Simon Josefsson - - * nnimap.el (nnimap-split-fancy): Fix doc. - (nnimap-split-fancy): Fix doc. - - * nnimap.el (nnimap-retrieve-groups-asynchronous): New variable. - (nnimap-mailbox-info): New internal variable. - (nnimap-retrieve-groups): Implement faster new mail check. - - * nnimap.el (nnimap-split-articles): Support - nnmail-cache-accepted-message-ids. - (nnimap-request-accept-article): Ditto. - - * imap.el (imap-mailbox-status-asynch): New command. - -2002-04-29 Nevin Kapur - - * gnus.el (gnus-find-subscribed-addresses): Return nil when there - are no subscribed mail groups. - - Strip quoted names when comparing addresses - -2002-04-28 Jesper Harder - - * mm-decode.el (mm-text-html-renderer): Change customize type to - const. - - * gnus-msg.el (gnus-discouraged-post-methods): Fix typo. - (gnus-debug-exclude-variables): do. - -2002-04-27 ShengHuo ZHU - - * gnus-msg.el (gnus-article-mail): Use gnus-msg-mail instead. - Trivial change from Karl Pfl,Ad(Bsterer . - -2002-04-27 Katsumi Yamaoka - - * dns.el (dns-make-network-process): New macro. - (query-dns): Use it. - -2002-04-27 ShengHuo ZHU - - * gnus-msg.el (gnus-summary-reply): Remove unbound variable - article-buffer. - - * mm-url.el (mm-url-package-name): New variable. - (mm-url-package-version): New variable. - (mm-url-insert-file-contents): Bind url-package-name and - url-package-version here. - * nnrss.el (nnrss-insert-w3): Move the bindings. - - * nnrss.el (nnrss-insert-w3): Bind url-package-name and - url-package-version. Trivial change from Andrew J Cosgriff - - - * mm-decode.el (mm-save-part): Fill in file name when GUI saving - attachments. Trivial change from Peter 'Luna' Runestig - . - -2002-04-19 Jesper Harder - - * nnkiboze.el (nnkiboze-request-scan): Call - nnkiboze-possibly-change-group. - (nnkiboze-generate-group): Use mm-with-unibyte to avoid encoding - problems. - (nnkiboze-generate-group): Set newsrc to the *highest* article - number kibozed, not the lowest. - -2002-04-15 Jesper Harder - - * gnus-art.el (article-unsplit-urls): Allow trailing SPC. - -2002-04-24 Kai Gro,b_(Bjohann - From Dan Christensen . - - * nndoc.el (nndoc-type-alist, nndoc-lanl-gov-announce-type-p) - (nndoc-transform-lanl-gov-announce, nndoc-generate-lanl-gov-head): - Recognize math postings. Extract Date (now ignores "(15kb)"). - Extract email address using gnus-extract-address-components - instead of just taking the first word. Create Date and From - headers for message which are missing these headers. Get rid - of spurious \\ lines (purely cosmetic). Extend body-end and - file-end regexps, to exclude more garbage from the message. - Make URL rephrasing regexp more flexible, to match current - format. - -2002-04-23 Simon Josefsson - - * netrc.el: New file, functions copied from gnus-util.el by Ted - Zlatanov . - - * gnus-util.el: Require netrc. - (gnus-netrc-get, gnus-netrc-machine, gnus-parse-netrc): Aliased to - new code in netrc.el. - -2002-04-23 Kai Gro,b_(Bjohann - - * gnus-msg.el (gnus-summary-resend-message-edit): Remove - message-ignored-resent-headers, too. From Matthieu Moy - . - -2002-04-22 Bj,Av(Brn Torkelsson - - * gnus-srvr.el (gnus-server-browse-in-group-buffer): it is a - boolean not a string - * gnus-group.el (gnus-group-line-format): add description of %C - * gnus-group.el (gnus-group-line-format-alist): add gnus-tmp-comment - as %C - * gnus-group.el (gnus-group-insert-group-line): add gnus-tmp-comment - -2002-04-22 Paul Jarc - - * nnmaildir.el (nnmaildir-request-scan): typo: set - nnmaildir-get-new-mail, not nnmaildir-new-mail. Don't call - nnmail-get-new-mail for 'find-new-groups. - -2002-04-21 Paul Jarc - - * nnmaildir.el (nnmaildir-request-update-info, - nnmaildir-request-group, nnmaildir-retrieve-groups): remove - unnecessary calls to nnmaildir-request-scan. - -2002-04-20 Josh Huber - - * gnus-msg.el: - * gnus-msg.el (gnus-message-replysign): New. - * gnus-msg.el (gnus-message-replyencrypt): New. - * gnus-msg.el (gnus-message-replysignencrypted): New. - * gnus-msg.el (gnus-summary-reply): Use the three new variables - (above) to automatically encrypt/sign to encrypted/signed - messages. - * message.el: - * message.el (message-mode-map): Add keybinding for - `message-to-list-only' - * message.el (message-mode): Add description for - `message-to-list-only' - * message.el (message-to-list-only): New. - * message.el (message-make-mft): Changed to use the cl loop macro, - and added optional flag to return only the matched list. (for use - in new message-to-list-only function) - -2002-04-20 Josh Huber - - * gnus-msg.el: - * gnus-msg.el (gnus-message-replysign): - * gnus-msg.el (gnus-replysign): New. - * gnus-msg.el (gnus-replyencrypt): New. - * gnus-msg.el (gnus-replysignencrypted): New. - * gnus-msg.el (gnus-summary-reply): - * message.el: - * message.el (message-mode-map): - * message.el (message-mode): - * message.el (message-to-list-only): New. - * message.el (message-make-mft): - -2002-04-19 ShengHuo ZHU - - * gnus-win.el (gnus-configure-windows-hook): Fix typo. - -2002-04-18 Josh Huber - - * message.el (message-gen-unsubscribed-mft): accept a prefix - argument so CC can be included with C-u C-c C-f C-a - -2002-04-17 Kai Gro,b_(Bjohann - From Ted Zlatanov . - - * spam.el (spam-whitelist, spam-blacklist, spam-enter-whitelist): - Improve docstring. - (spam-enter-blacklist): New command. - - * gnus-sum.el (gnus-spam-mark): New mark. - (gnus-auto-expirable-marks): Add gnus-spam-mark. - (gnus-summary-make-tool-bar): Correct conditional. - (gnus-summary-limit-to-unread): Add gnus-spam-mark. - (gnus-summary-mark-as-spam): New command. - -2002-04-13 Josh Huber - - * mml-sec.el (mml-secure-message): changed to support arbritrary - modes. - * mml-sec.el (mml-secure-message-encrypt-(smime|pgp|pgpmime)): - changed to support "signencrypt" mode. - * mml.el (mml-parse-1): changed to support different secure modes - more easily. (for signencrypt) - -2002-04-11 Stefan Monnier - - * gnus-sum.el (gnus-update-summary-mark-positions) - (gnus-summary-toggle-header): - * gnus-uu.el (gnus-uu-binhex-article, gnus-uu-reginize-string) - (gnus-uu-expand-numbers, gnus-uu-post-make-mime) - (gnus-uu-post-encoded): - * nnfolder.el (nnfolder-possibly-change-group): - * nnimap.el (nnimap-retrieve-headers): - * nnmbox.el (nnmbox-create-mbox): Don't assume point-min == 1. - -2002-04-08 Stefan Monnier - - * nnml.el (nnml-save-nov, nnml-generate-nov-file): - * pop3.el (pop3-md5): Don't hardcode point-min == 1. - -2002-04-12 Katsumi Yamaoka - - * gnus-srvr.el (gnus-server-set-info): Clear - `gnus-server-method-cache' when `gnus-server-alist' is changed. - From Daiki Ueno . - -2002-04-11 Simon Josefsson - - * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Force - viewing of security buttons. Thanks to Nicolas Kowalski - . - - * smime.el (smime-CA-directory): Fix doc. Thanks to Arne - J,Ax(Brgensen . - (smime-sign-buffer): Work in XEmacs. Thanks to Nicolas Kowalski - . - (smime-decrypt-buffer): Ditto. - -2002-04-11 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-prepare): Place point on the emtpy - header line. - -2002-04-11 Per Abrahamsen - - * gnus.el (gnus-refer-article-method): Change `dejanews' to `google'. - -2002-04-08 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-delete-marked-with): Fix typo. - -2002-04-07 ShengHuo ZHU - - * mm-view.el (mm-inline-text-html-render-with-w3): Don't ignore - errors when debug. - -2002-04-07 Josh Huber - - * message.el (message-make-mft): Changed MFT code from using - message-recipients (which included Bcc) to use only the To and CC - headers. - -2002-04-05 Per Abrahamsen - - * gnus-art.el (gnus-treat-from-picon): Add to gnus-picon group and - add link. - (gnus-treat-mail-picon): Ditto. - (gnus-treat-newsgroups-picon): Ditto. - (gnus-picon-databases): Fix custom type. - (gnus-picon-databases): Add link. - (gnus-article-x-face-command): Add to gnus-picon group. - -2002-04-01 Jesper Harder - - * message.el (message-buffer-naming-style): Remove. - -2002-04-02 ShengHuo ZHU - - * gnus-group.el (gnus-group-make-tool-bar): Load tool-bar first. - - * message.el (message-tool-bar-map): Ditto. - - * gnus-sum.el (gnus-summary-make-tool-bar): Ditto. - -2002-04-01 ShengHuo ZHU - - * nnwarchive.el (nnwarchive-mail-archive-article): Fix typo. - -2002-04-01 Paul Jarc - - * nnmaildir.el: fixed some buggy invocations of nnmaildir--pgname. - -2002-03-31 Andrew Cohen - Trivial patch. - - * dns.el: open-network-stream under XEmacs does udp. - -2002-03-31 Lars Magne Ingebrigtsen - - * spam.el (spam-enter-whitelist): New function. - (spam-parse-whitelist): Ditto. - (spam-refresh-list-cache): Ditto. - (spam-address-whitelisted-p): New function. - - * dns.el (query-dns): Use TCP when make-network-process isn't - available. - (dns-servers): New variable. - (dns-parse-resolv-conf): New function. - (query-dns): Use it. - - * spam.el: New file. - - * dns.el (query-dns): Test. - -2002-03-31 Lars Magne Ingebrigtsen - - * lpath.el (featurep): Bind make-network-process. - -2002-03-31 Paul Jarc - - * nnmaildir.el: Use defstruct. Use a single copy of - nnmail-extra-headers to save memory. Store server's group name - prefix instead of each group's prefixed name. - * nnnil.el (nnnil-retrieve-headers, nnnil-request-list): Erase - nntp-server-buffer. - -2002-03-31 Lars Magne Ingebrigtsen - - * dns.el: New file. - -2002-03-28 Simon Josefsson - - * gnus-sum.el (gnus-summary-dummy-line-format): - * gnus.el (gnus-summary-line-format): Fixing links to Info. - Trivial change from Bj,Av(Brn Torkelsson . - -2002-03-29 Kai Gro,b_(Bjohann - - * gnus-sum.el (gnus-summary-move-article) - (gnus-summary-copy-article): Mention `gnus-move-split-methods' in - the doc string. - -2002-03-28 Simon Josefsson - - * mml-sec.el (mml-secure-message): Search after - mail-header-separator from top of message. - -2002-03-28 Paul Jarc - - * nnmaildir.el: Cosmetic changes. - (nnmaildir--with-nntp-buffer, nnmaildir--with-work-buffer, - nnmaildir--with-nov-buffer, nnmaildir--with-move-buffer, - nnmaildir--group-ls): New macros/functions. Use them. - (nnmaildir--unlink): Evalutate argument only once. - -2002-03-27 Jesper Harder - - * gnus-sum.el (gnus-summary-highlight): Use `eq' when comparing - symbols. - (gnus-summary-highlight-line): Use `gnus-point-at-bol' and - `gnus-point-at-eol'. - -2002-03-27 Paul Jarc - - * nnmaildir.el (nnmaildir--subdir, nnmaildir--nov-dir, - nnmaildir--marks-dir): New macros. Use them. - Use inhibit-quit for atomicity instead of in-memory journaling. - (nnmaildir--edit-prep): New function. - (Local Variables): Use it. - -2002-03-26 Pavel@Janik.cz (Pavel Jan,Am(Bk) - - * gnus-sum.el (gnus-summary-make-menu-bar): Fix typo. - -2002-03-25 Simon Josefsson - - * message.el (message-mode): Fix doc. - -2002-03-25 Simon Josefsson - - * message.el (message-subject-re-regexp): Skip Re[42]: junk. From - Matthieu Moy . - -2002-03-24 Jesper Harder - - * mml-sec.el (mml-unsecure-message): Add docstring. - -2002-03-23 ShengHuo ZHU - - * nnmail.el (nnmail-large-newsgroup): Fix doc, allow non-numeric - value. - Trivial change from andre@slamdunknetworks.com - -2002-03-22 Josh Huber - - * mml.el (mml-mode-map): Added a keybinding for - `mml-unsecure-message'. Also, added a menu entry for said - function in the Attachments menu. - -2002-03-22 Katsumi Yamaoka - - * canlock.el (canlock-version): Remove. - (canlock-sha1-with-openssl): Don't use `canlock-string-as-unibyte' - here; simplify \x insertions. - (canlock-sha1): New function, always return a unibyte string. - (canlock-make-cancel-key): Use `canlock-sha1'; simplify truncation - of a password. - (canlock-insert-header): Use `canlock-sha1'. - (canlock-verify): Ditto. - -2002-03-21 ShengHuo ZHU - - * message.el (message-fix-before-sending): Add an option that - ignores illegible text. - Trivial change from Mark Milhollan - - * message.el (message-font-lock-keywords): Support multi-line MML - tags. - - * gnus-sum.el (gnus-print-buffer): Remove gnus-decoration. - Trivial change from lorentey@elte.hu (L,Bu(Brentey K,Aa(Broly) - -2002-03-20 Katsumi Yamaoka - - * gnus-sum.el (gnus-summary-make-menu-bar): Use intern'ed function - symbols for "View as different encoding" submenu. - -2002-03-19 Simon Josefsson - - * gnus-sum.el (gnus-summary-make-menu-bar): Add "View as different - encoding" submenu. - -2002-03-19 ShengHuo ZHU - - * gnus-group.el (gnus-group-process-prefix): Make sure there is a mark. - -2002-03-19 Kai Gro,b_(Bjohann - - * gnus-sum.el (gnus-sum-thread-tree-root) - (gnus-sum-thread-tree-single-indent) - (gnus-sum-thread-tree-vertical, gnus-sum-thread-tree-indent) - (gnus-sum-thread-tree-leaf-with-other) - (gnus-sum-thread-tree-single-leaf): Make customizable. - -2002-03-16 Simon Josefsson - - * gnus-util.el (gnus-extract-address-components): Don't break on - names such as James "Kibo" Parry. From Francis Litterio - . - -2002-03-13 Simon Josefsson - - * pop3.el (pop3-open-server): Revert multibyte change. From - Pavel@Janik.cz (Pavel Jan,Am(Bk). - - * message.el (message-send-mail-with-qmail): Make it work. From - Pavel@Janik.cz (Pavel Jan,Am(Bk). - -2002-03-13 Josh Huber - - * message.el (message-make-mft): Set case-fold-search while - generating the MFT. Also, a little cleanup in the MFT code. - -2002-03-12 Simon Josefsson - - * message.el (message-qmail-inject-args): May be function. - (message-send-mail-with-qmail): Call function if m-q-i-a is - function. From fn@hungry.org (Faried Nawaz). - -2002-03-12 ShengHuo ZHU - - * message.el (message-abbrevs-loaded): Remove. - (mailabbrev): Require it. - - * nnslashdot.el (nnslashdot-request-article): Remove IFRAME. - -2002-03-12 Katsumi Yamaoka - - * pop3.el (pop3-open-server): Set process buffer unibyte. - -2002-03-10 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-subscribe-to-mailing-list): New function. - -2002-03-10 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-request-article): Remove javascript - too. - -2002-03-09 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-save-parts-default-mime): Remove - duplication. - (gnus-summary-save-parts-type-history): Ditto. - (gnus-summary-save-parts-last-directory): Ditto. - Trivial change from andre@slamdunknetworks.com - -2002-03-09 Paul Jarc - - * gnus-start.el (gnus-auto-subscribed-groups): Include nnmaildir. - -2002-03-06 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-request-article): Use "" as the end of the first article. - - * gnus-msg.el (gnus-summary-resend-message-edit): New function. - From Matthieu Moy - - * message.el (message-add-action): Use add-to-list. - (message-delete-action): New function. - - * nndoc.el (nndoc-mail-in-mail-type-p): Break a long regexp into - pieces. - -2002-03-05 Paul Jarc - - * nnnil.el: New file. - * gnus.el (gnus-valid-select-methods): Include nnnil. - -2002-03-05 ShengHuo ZHU - - * message.el (message-syntax-checks): Because canlock is - supported, we disable sender syntax check. - (message-shoot-gnksa-feet): Add cancel-messages option doc. - - * gnus-draft.el (gnus-draft-send): If interactive, use its default - value of message-syntax-checks. - - * qp.el (quoted-printable-decode-region): Doc addition. - From: Eli Zaretskii - - * mail-source.el (make-source-make-complex-temp-name): Use - make-temp-file. - - * mm-util.el (mm-make-temp-file): New function. - * nneething.el (nneething-file-name): Use it. - * mml-smime.el (mml-smime-encrypt): Ditto. - * mm-view.el (mm-inline-wash-with-file): Ditto. - * mm-decode.el (mm-display-external, mm-create-image-xemacs): Ditto. - * gnus-uu.el (gnus-uu-decode-binhex, gnus-uu-decode-binhex-view) - (gnus-uu-digest-mail-forward, gnus-uu-initialize): Ditto. - * gnus-start.el (gnus-slave-save-newsrc): Ditto. - * gnus-fun.el (gnus-convert-image-to-gray-x-face): Ditto. - * gnus-art.el (gnus-mime-print-part): Ditto. - -2002-03-04 Paul Jarc - - * message.el (nnmaildir-article-number-to-base-name): New - function. - (nnmaildir-base-name-to-article-number): New function. - -2002-03-04 Katsumi Yamaoka - - * smime.el (smime-make-temp-file): Don't quote - `temporary-file-directory'. - -2002-03-04 Simon Josefsson - - * smime.el (smime-sign-region): Rename argument keyfiles to - keyfile. You only sign something with one key. - (smime-sign-buffer): Better completing-read prompt. - (smime-decrypt-buffer): Ditto. - - * smime.el (smime-make-temp-file): Make it work under XEmacs. - - * mm-view.el (mm-view-pkcs7-decrypt): Better prompt for - completing-read. - (mm-view-pkcs7-decrypt): CRLF->LF. - -2002-03-04 Paul Jarc - - * message.el (message-hierarchical-addresses): New variable. - (message-get-reply-headers): Use it. - From Ted Zlatanov - -2002-03-03 ShengHuo ZHU - - * message.el (message-mode): If buffer-file-name, don't set auto - save file name. - Trivial change from Geoff Greene - -2002-03-02 ShengHuo ZHU - - * gnus-util.el (gnus-multiple-choice): Use message. XEmacs only - takes one argument in read-char. - - * message.el (message-fix-before-sending): Forward a char. - Check mmu-multibyte-p, add control-1. - -2002-03-01 ShengHuo ZHU - - * gnus-start.el (gnus-read-init-file): Ditto. - - * gnus-agent.el (gnus-agent-fetch-session): Ditto. - - * dgnushack.el (dgnushack-make-load): Ditto. - - * mail-source.el (mail-source-fetch): Extract the right error - code. - - * message.el (message-fix-before-sending): Check illegible text. - - * gnus-util.el (gnus-multiple-choice): New function. - - * gnus-kill.el (gnus-score-insert-help): Removed, because it is - also defined in gnus-score.el. - -2002-03-01 Paul Jarc - - * message.el (message-get-reply-headers): downcase email addresses - for comaparisons for duplicate removal. - -2002-03-01 ShengHuo ZHU - - * mm-view.el (mm-view-pkcs7-verify): New function. A bogus - implementation of PKCS#7, which just allows users read the - message. - (mm-view-pkcs7): Use it. - -2002-02-27 ShengHuo ZHU - - * gnus.el (large-newsgroup-initial): New parameter. - - * gnus-sum.el (gnus-articles-to-read): Use large-newsgroup-initial. - (gnus-summary-insert-old-articles): Ditto. - -2002-02-26 ShengHuo ZHU - - * gnus-sum.el (gnus-articles-to-read): `gnus-large-newsgroup' is - used as the default answer of the question, "How many articles?". - From TSUCHIYA Masatoshi - - * nnagent.el (nnagent-retrieve-headers): Remove articles with - small numbers. - -2002-02-24 ShengHuo ZHU - - * deuglify.el: Fix comments. - -2002-02-23 ShengHuo ZHU - - * html2text.el (html2text-clean-anchor): If there is no HREF, - insert nothing. - - * mml.el (mml-generate-mime-1): Add cdr. - From: andre@slamdunknetworks.com - - * mm-view.el (mm-text-html-renderer-alist): Add html2text. - (mm-text-html-washer-alist): Ditto. - - * mm-decode.el (mm-text-html-renderer): Add html2text. - - * html2text.el: Face lift. - - * html2text.el: New file from Joakim Hove . - -2002-02-22 ShengHuo ZHU - - * gnus-sum.el: Add gnus-article-outlook-deuglify-article. - - * deuglify.el: Change copy right. Add autoload. Add coding-system. - - * deuglify.el: New file. The original file name is - gnus-outlook-deuglify.el from Raymond Scholz . - - * mm-decode.el (mm-display-external): Use - mm-file-name-rewrite-functions. From - -2002-02-22 Paul Jarc - - * nnmaildir.el (nnmaildir-request-list): Report the highest - article number, not the total number of articles. - -2002-02-21 ShengHuo ZHU - - * gnus-sum.el: Move uu key map here. - (gnus-summary-make-menu-bar): Add gnus-summary-save-parts. - -2002-02-21 Paul Jarc - - * nnmaildir.el (nnmaildir-request-expire-articles): Use - nnmail-expiry-wait* if expire-age parameter is not set. - -2002-02-21 ShengHuo ZHU - - * gnus-group.el (gnus-group-sort-groups-by-real-name): New - function. - (gnus-group-sort-selected-groups-by-real-name): New function. - (gnus-group-make-menu-bar): Add sort by real name. - - * gnus-sum.el (gnus-dependencies-add-header): If replaced, don't - rebuild. - (gnus-summary-edit-article-done): Gnus-get-newsgroup-headers takes - nil as dependencies as well. - -2002-02-20 ShengHuo ZHU - - * nndoc.el (nndoc-dissect-mime-parts-sub): Fix MIME-Version header - for mime-parts. - - * gnus-art.el (gnus-article-edit-done): Widen the buffer. - - * gnus-group.el (gnus-group-name-decode): Don't test - multibyte-string, because it breaks XEmacs. - From: TSUCHIYA Masatoshi - - * message.el (message-send-mail): Be talkative. - - * mm-decode.el (mm-inlined-types): Add application/x-emacs-lisp. - (mm-automatic-display): Ditto. - - * mailcap.el (mailcap-mime-data): Ditto. - From: Reiner Steib <4uce.02.r.steib@gmx.net> - -2002-02-20 Katsumi Yamaoka - - * many files: Remove trailing whitespaces, replace spc+tab with - tab, replace leading whitespaces with tabs. - -2002-02-19 Paul Jarc - - * gnus-sum.el (gnus-summary-toggle-header): Fix handling of - articles with no body and no blank line after the header. - -2002-02-19 ShengHuo ZHU - - * mm-decode.el (mm-dissect-multipart): Consider the case of empty - parts. - - * ietf-drums.el (ietf-drums-syntax-table): Modify syntax of - non-ascii chars. - - * rfc2231.el (rfc2231-parse-string): Support non-ascii chars. - - * gnus-art.el (gnus-article-wash-html-with-w3): Remove - w3-delay-image-loads. - * mm-view.el (mm-inline-text-html-render-with-w3): Ditto. - (mm-w3-prepare-buffer): Ditto. - - * mail-source.el (mail-source-fetch-directory): Run scripts. - -2002-02-19 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-respond-to-confirmation): Do the right thing - for Majordomo confirmations. - -2002-02-18 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-respond-to-confirmation): New command. - -2002-02-11 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-retrieve-headers): Clean up. - -2002-02-18 Paul Jarc - - * gnus-util.el (gnus-parent-id): Ignore trailing whitespace in the - References header field. From Mark Thomas . - -2002-02-18 ShengHuo ZHU - - * mm-view.el (mm-inline-render-with-file): With unibyte buffer. - (mm-inline-render-with-stdin): Ditto. - (mm-inline-render-with-function): Ditto. - (mm-inline-wash-with-file): Bind coding-system-for-write. - (mm-inline-wash-with-stdin): Ditto. - -2002-02-18 ShengHuo ZHU - - Suggested by Felix Natter - - * gnus-art.el (gnus-mime-view-part-externally): Rename from - gnus-mime-externalize-view. - (gnus-mime-view-part-internally): Rename from - gnus-mime-internalize-view. - (gnus-article-view-part-externally): Rename from - gnus-article-externalize-part. - (gnus-mime-action-alist): Change correspondingly. - (gnus-mime-button-commands): Ditto. - (gnus-mime-action-alist): Remove duplication. - - * gnus-sum.el (gnus-summary-mime-map): Change correspondingly. - -2002-02-18 ShengHuo ZHU - - * mm-decode.el (mm-dissect-buffer): Add loose-mime parameter. - - * gnus-art.el (gnus-display-mime): Use it. - - * mm-partial.el (mm-partial-find-parts): Use it. - - * gnus-sum.el (gnus-article-loose-mime): Rename from - gnus-article-no-strict-mime. - (gnus-summary-save-parts): Use it. - -2002-02-18 Katsumi Yamaoka - - * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Remove unused - local variable. - - * gnus-art.el (article-display-x-face): Don't sort multiple - X-Faces. - -2002-02-18 Katsumi Yamaoka - - * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Improved to speed - up. Suggested by Yuuichi Teranishi . - - * gnus-art.el (article-display-x-face): Sort gray X-Faces. - -2002-02-17 ShengHuo ZHU - - Some ideas is inspired by code from Hrvoje Niksic - - - * gnus-art.el (gnus-article-wash-function): Set the default to - nil, so that we use mm-text-html-renderer instead. - (article-wash-html): Use mm-text-html-renderer. - - * mm-decode.el (mm-inline-media-tests): Use mm-inline-text-*. - (mm-text-html-renderer): New variable. - (mm-inline-text-html-renderer): Set the default to nil, so that we - use mm-text-html-renderer instead. - - * mm-view.el (mm-inline-text-html): New function. - (mm-text-html-renderer-alist): New variable. - (mm-inline-text-vcard): New function. - (mm-inline-text): Split. - (mm-links-remove-leading-blank): New function. - (mm-inline-render-with-file): New function. - (mm-inline-render-with-stdin): New function. - (mm-inline-render-with-function): New function. - (mm-text-html-washer-alist): New variable. - (mm-inline-wash-with-file): New function. - (mm-inline-wash-with-stdin): New function. - -2002-02-17 ShengHuo ZHU - - * message-utils.el: Fix installation doc. - From: Reiner Steib <4uce.02.r.steib@gmx.net> - -2002-02-16 ShengHuo ZHU - - * gnus-msg.el (gnus-discouraged-post-methods): New variable. - (gnus-post-method): Use it. - (gnus-summary-cancel-article): Find the correct post-method. - - * gnus-soup.el (gnus-soup-send-packet): Via ... using ... - * message.el (message-send-news): Ditto. - Suggested by Lloyd Zusman and IPmonger - - - * gnus.el (gnus-select-method): Fix doc. - (gnus-server-string): Use 'using nntp'. - - * gnus-agent.el (gnus-slave-unplugged): New command. - From: Felix Natter - -2002-02-15 ShengHuo ZHU - - * gnus-art.el (gnus-article-edit-done): Kill-all-local-variables. - Call edit-done-function first, then change the window - configuration. - (gnus-article-edit-mode-map): Add message key bindings. Add menu. - (gnus-article-edit-mode): mml-mode. - - * gnus-util.el (gnus-byte-compile): Work around a bug in XEmacs - 21.4. Suggested by Russ Allbery . - - * message-utils.el: Adopt the file. - - * message-utils.el: New file. - From Holger Schauer - -2002-02-14 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-move-article): Select-article only - when gnus-move-split-methods is non-nil. And we don't render or - mark the article. - - * gnus-fun.el (gnus-shell-command-to-string): New function. - (gnus-shell-command-on-region): New function. - (gnus-random-x-face): Use them. - (gnus-x-face-from-file): Ditto. - (gnus-convert-image-to-gray-x-face): Ditto. - (gnus-convert-gray-x-face-to-xpm): Ditto. - (gnus-convert-image-to-x-face-command): Don't use 2>/dev/null. - -2002-02-14 Katsumi Yamaoka - - * gnus-art.el (gnus-treat-display-xface): Don't use - `shell-command-to-string' when compiling. - (gnus-treat-display-grey-xface): Ditto. - -2002-02-13 Paul Jarc - - * nnmaildir.el (nnmaildir--article-count): If the group is - completely empty, report minimum article number as 1 instead of 0. - -2002-02-13 ShengHuo ZHU - - * gnus-agent.el (gnus-get-predicate): Use nconc. - - * gnus-sum.el (gnus-summary-display-make-predicate): Use - gnus-summary-display-cache as cache. - - * nndoc.el (nndoc-type-alist): Add mail-in-mail type. - (nndoc-mail-in-mail-type-p): New function. - (nndoc-mail-in-mail-article-begin): New function. - -2002-02-12 ShengHuo ZHU - - * mailcap.el (mailcap-mime-data): Use enriched-decode. - - * gnus-cite.el (gnus-article-fill-cited-article): Bind - use-hard-newlines to nil. - - * gnus-xmas.el (gnus-xmas-image-type-available-p): Assume that - image is not available if window-system is not available. - - * gnus-sum.el (gnus-summary-display-make-predicate): Add unread. - -2002-02-11 ShengHuo ZHU - - * gnus.el (gnus-article-unpropagated-mark-lists): Don't propagate - bookmark, because update-mark doesn't handle it correctly. - -2002-02-09 ShengHuo ZHU - - * gnus-soup.el (gnus-soup-send-packet): Send news and mail - directly instead of calling message-send-mail. - - * gnus-start.el (gnus-read-descriptions-file): Use - gnus-default-charset. - - * mm-util.el (mm-guess-mime-charset): New function. - - * gnus.el (gnus-default-charset): Use it. - (gnus-group-charset-alist): Remove .*, Let gnus-default-charset be - the default. - -2002-02-08 ShengHuo ZHU - - * gnus-art.el (gnus-treat-display-grey-xface): New variable. - (article-display-x-face): Use it. Disable grey xface, if - uncompface is not found. - - * message.el (message-mode): Don't enable multibyte on an indirect - buffer. - - * nnrss.el (nnrss-content-function): New variable. - (nnrss-request-article): Use it. - -2002-02-08 ShengHuo ZHU - - * gnus.el: Add article-unsplit-urls. - * gnus-sum.el: Ditto. - * gnus-art.el (gnus-treat-strip-cr): New variable. - (gnus-treatment-function-alist): Use it. - (article-unsplit-urls): New function. - (gnus-article-make-menu-bar): Use it. - From: Michael Cook - -2002-02-08 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-braid-nov): Find the first article to - copy. - -2002-02-07 Paul Jarc - - * gnus-util.el (gnus-split-references): Allow (broken) Message-IDs - with internal whitespace. - (gnus-parent-id): Ditto. - -2002-02-07 ShengHuo ZHU - - * gnus-art.el (gnus-article-treat-body-boundary): Add - gnus-decoration property. - * gnus-msg.el (gnus-copy-article-buffer): Remove gnus-decoration. - - * message.el (message-mode): Set local-abbrev-table. - From Matt Armstrong . - - * gnus-art.el (gnus-article-treat-unfold-headers): Don't remove - too many spaces. - - * rfc2047.el (rfc2047-unfold-region): Ditto. - (rfc2047-decode-region): Don't unfold. Let - gnus-article-treat-unfold-headers do it. - - * gnus-sum.el (gnus-dependencies-add-header): Fix typo. - From: Jesper Harder - -2002-02-06 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-posting-styles): Add x-face-file. - (gnus-configure-posting-styles): Use it. - (gnus-configure-posting-styles): Remove trailing newspaces. - -2002-02-06 ShengHuo ZHU - - * gnus-sum.el (gnus-articles-to-read): Fetch all if the predicate - is non-nil. - - * mm-util.el (mm-use-find-coding-systems-region): Add doc. - - * gnus.el (gnus-server-to-method): Switch position with - gnus-server-get-method. - (gnus-agent): Add doc. - - * gnus-sum.el (gnus-article-no-strict-mime): New variable. - (gnus-summary-save-parts): Use it. - - * gnus-art.el (gnus-display-mime): Use it. - * mm-partial.el (mm-partial-find-parts): Use it. - - * nnweb.el (nnweb-google-parse-1): Use a correct format of date. - - * gnus-agent.el (gnus-agent-summary-make-menu-bar): Fix typo. - From Stefan Reich,Av(Br . - - * nnagent.el (nnagent-request-expire-articles): Don't delete - files. - -2002-02-05 ShengHuo ZHU - - * message.el (message-gen-unsubscribed-mft): New function. - From Sriram Karra . - - * gnus.el (gnus-article-unpropagated-mark-lists): Backslash the - open parenthesis. - - * mm-view.el (mm-w3-prepare-buffer): Bind url-gateway-unplugged. - (mm-inline-text-html-render-with-w3): Ditto. - * gnus-art.el (gnus-article-wash-html-with-w3): Ditto. - Suggested by Dave Love . - - * mm-url.el (mm-url-load-url): Require w3-vars for old versions. - - * nntp.el (nntp-send-command-and-decode): Check PROCESS. - * nntp.el (nntp-send-command): Ditto. - * nntp.el (nntp-send-command-nodelete): Ditto. - -2002-02-04 ShengHuo ZHU - - * mm-url.el (mm-url-load-url): New function. - (mm-url-insert-file-contents): Use it. - - * gnus-msg.el (gnus-summary-mail-forward): Use gnus-article-charset. - - * message.el (message-forward-make-body): Correctly copy - forward-buffer. - - * rfc2047.el (rfc2047-decode-region): Don't decode us-ascii characters. - -2002-02-04 Simon Josefsson - - * gnus-art.el (gnus-article-followup-with-original): Mark with - force, prevent errors when following up from article buffer. - (gnus-article-reply-with-original): Ditto. - - * binhex.el (binhex-decoder-switches): Fix doc. From - Pavel@Janik.cz (Pavel Jan,Am(Bk). - -2002-02-04 ShengHuo ZHU - - * gnus-art.el (gnus-treatment-function-alist): Move hide-citation, - highlight-citation after emphasize. - -2002-02-04 Simon Josefsson - - * nnfolder.el (nnfolder-open-marks): - - * nnml.el (nnml-open-marks): Message when done. From David - Edmondson . - -2002-02-03 ShengHuo ZHU - - * imap.el (imap-anonymous-auth): Fix typo. - From: Steinar Bang - - * gnus-cache.el (gnus-cache-braid-nov): Use set-buffer instead of - save-excursion. - (gnus-cache-braid-heads): Ditto. - - * gnus-agent.el (gnus-agent-copy-nov-line): Move to the correct - line, because there are extra articles in the overview buffer. - - * nntp.el (nntp-retrieve-groups): Check whether BUF is live. - - * message.el (message-forward-rmail-make-body): Directly use - rmail-msg-restore-non-pruned-header to avoid calling - vertical-motion. - -2002-02-02 ShengHuo ZHU - - * gnus-cache.el (gnus-summary-insert-cached-articles): - (gnus-summary-limit-include-cached): gnus-newsgroup-cached is sorted. - - * gnus-group.el (gnus-group-mark-article-read): Nreverse - gnus-newsgroups-unselected. - - * gnus-agent.el (gnus-summary-set-agent-mark): Use - gnus-add-to-sorted-list. - - * gnus-sum.el (gnus-summary-update-info): gnus-newsgroup-unreads - gnus-newsgroup-unselected are sorted. Use gnus-sorted-union. - (gnus-build-all-threads): Use gnus-add-to-sorted-list. - (gnus-update-read-articles): UNREAD is sorted. - (gnus-newsgroup-unreads, gnus-newsgroup-unselected) - (gnus-newsgroup-marked, gnus-newsgroup-cached) - (gnus-newsgroup-expirable, gnus-newsgroup-downloadable) - (gnus-newsgroup-dormant): Require sorted. - - * gnus-dired.el (gnus-dired-find-file-mailcap): Correctly handle - directories. - (gnus-dired-print): New function. - - * gnus-art.el (gnus-mime-print-part): Add argument filename. Call - ps-despool. - -2002-02-02 Simon Josefsson - - * gnus-dired.el (turn-on-gnus-dired-mode): Autoload. Make defun. - -2002-02-02 ShengHuo ZHU - - * gnus-start.el (gnus-1): Call gnus-agentize if gnus-agent is - t. This makes gnus-agent customizable without putting - gnus-agentize into .gnus. - - * gnus.el (gnus-agent): Make it customizable. - - * gnus-dired.el: New file. - From Benjamin Rutt - - * gnus-cache.el (gnus-cache-articles-in-group): Remove from active - if no article. - (gnus-cache-possibly-remove-article): Ditto. - (gnus-cache-possibly-enter-article): Use gnus-add-to-sorted-list. - -2002-02-01 Simon Josefsson - - * gnus-int.el (gnus-request-accept-article): Use gnus-get-function. - -2002-02-01 Katsumi Yamaoka - - * mm-view.el (mm-w3m-mode-dont-bind-keys): New variable. - (mm-setup-w3m): Don't bind keys listed in the above. - -2002-02-01 Katsumi Yamaoka - - * mm-view.el (mm-inline-text-html-render-with-w3m): Bind - `w3m-safe-url-regexp' with nil if `mm-inline-text-html-with-images' - is non-nil; bind `w3m-force-redisplay' with nil. - - * gnus-art.el (gnus-article-wash-html-with-w3m): Ditto. - - * mm-decode.el (mm-inline-text-html-with-images): Supplement docs. - -2002-01-31 ShengHuo ZHU - - * nnfolder.el (nnfolder-request-replace-article): Unfold. Don't - use mail-header-unfold-field. - - * gnus-cache.el (gnus-summary-insert-cached-articles): Use - gnus-summary-limit. - - * gnus-range.el (gnus-add-to-sorted-list): New function. - * gnus-sum.el (gnus-mark-article-as-read): Use it. - (gnus-mark-article-as-unread): Ditto. - (gnus-summary-mark-article-as-unread): Ditto. - (gnus-build-get-header): Ditto. - (gnus-summary-prepare-threads): Ditto. - (gnus-summary-insert-pseudos): Ditto. - (gnus-articles-to-read): Use gnus-sorted-union and gnus-sorted-nunion. - (gnus-summary-insert-new-articles): Use gnus-sorted-nunion. - (gnus-summary-insert-old-articles): Ditto. - - * gnus-msg.el (gnus-posting-styles): Add new format of header. - (gnus-configure-posting-styles): Support the new format. - - * mail-source.el (mail-source-bind, mail-source-bind-common): Set - edebug-form-spec to (sexp body). - Suggested by Joe Wells . - - * message.el (message-reply-headers): Add doc. - -2002-01-30 ShengHuo ZHU - - * gnus-group.el (gnus-group-delete-group): Nix the entry in - gnus-cache-active-hashtb. - - * gnus-agent.el (gnus-agent-mark-unread-afer-downloaded): New variable. - (gnus-agent-summary-fetch-group): Use it. - - * gnus-msg.el (gnus-debug-files): New variable. - (gnus-debug-exclude-variables): New variable. - (gnus-debug): Use them. - - * gnus-range.el (gnus-range-length): Don't use gnus-uncompress-range. - -2002-01-30 ShengHuo ZHU - - * message.el (message-cite-prefix-regexp): Use text-mode-syntax-table. - (message-mode-syntax-table): Move back the previous position. - - * nnagent.el (nnagent-retrieve-headers): Use gnus-sorted-difference. - - * gnus-agent.el (gnus-agent-retrieve-headers): Use - gnus-sorted-difference. - - * nnsoup.el (nnsoup-request-expire-articles): Use - gnus-sorted-difference. - - * nnheader.el: Autoload gnus-sorted-difference. - - * nnfolder.el (nnfolder-request-expire-articles): Use - gnus-sorted-difference. - - * gnus-cache.el (gnus-cache-retrieve-headers): Use - gnus-sorted-difference. - - * gnus-range.el: Autoload cookies. - (gnus-sorted-difference): New function. - (gnus-sorted-ndifference): New function. - (gnus-sorted-nintersection): Rename from - gnus-set-sorted-intersection. - (gnus-sorted-nunion): Rename from gnus-set-sorted-union. - (gnus-list-range-difference): Rename from - gnus-inverse-list-range-intersection. - (gnus-inverse-list-range-intersection): Use defalias. - - * gnus-sum.el (gnus-select-newsgroup): Use gnus-sorted-difference, - gnus-sorted-ndifference, and gnus-sorted-nintersection. - (gnus-articles-to-read): Use gnus-sorted-difference. - (gnus-summary-limit-mark-excluded-as-read): Use - gnus-sorted-intersection and gnus-sorted-ndifference. - (gnus-list-of-read-articles): Use gnus-list-range-difference. - (gnus-summary-insert-articles): Use gnus-sorted-difference. - - * gnus-sum.el (gnus-summary-update-info): Use gnus-sorted-union. - -2002-01-30 Katsumi Yamaoka - - * gnus-art.el (gnus-article-wash-html-with-w3m): Add keymap - property to the buffer for using emacs-w3m command keys. - - * mm-decode.el (mm-inline-text-html-with-w3m-keymap): New user - option. - - * mm-view.el (mm-w3m-mode-map): New variable. - (mm-w3m-mode-command-alist): New variable. - (mm-w3m-minor-mode): Removed. - (mm-setup-w3m): Setup `mm-w3m-mode-map'; don't add minor mode. - (mm-inline-text-html-render-with-w3m): Add keymap property to the - buffer for using emacs-w3m command keys. - -2002-01-29 ShengHuo ZHU - - * message.el (message-mode-syntax-table): Move forward. - (message-cite-prefix-regexp): Auto detect non word constituents. - (message-cite-prefix-regexp): Don't use with-syntax-table. - - * gnus-sum.el (gnus-summary-update-info): Use - gnus-list-range-intersection. - - * gnus-agent.el (gnus-agent-fetch-headers): Use - gnus-list-range-intersection. - - * gnus-range.el (gnus-range-normalize): Use correct predicate. - (gnus-list-range-intersection): Use it. - (gnus-inverse-list-range-intersection): Ditto. - (gnus-sorted-intersection): Add doc. - (gnus-set-sorted-intersection): Add doc. - (gnus-sorted-union): New function. - (gnus-set-sorted-union): New function. - - * gnus-range.el (gnus-list-range-intersection): Correct the logic. - (gnus-inverse-list-range-intersection): Ditto. - -2002-01-29 Karl Kleinpaste - - * mm-uu.el (mm-uu-type-alist): Add optional leading `0'. - - * gnus-uu.el (gnus-uu-shar-name-marker): Add optional leading `0' - and permit `:' and `\' in order to handle full Windows pathnames. - (gnus-uu-begin-string): Add optional leading `0'. Leading `0' is - technically not correct per standard, but seems to have common use. - -2002-01-29 ShengHuo ZHU - - * gnus-uu.el (gnus-uu-expand-numbers): Ignore errors when - replacing numbers. - -2002-01-28 ShengHuo ZHU - - * gnus-art.el (gnus-article-followup-with-original): Use (mark). - - * gnus-score.el (gnus-score-insert-help): Move to (point-min). - Don't split when the window is small, e.g. when a small *BBDB* - window is the lowest one. - - * gnus-agent.el (gnus-agent-retrieve-headers): Use - nnheader-find-nov-line to speed up. Use nreverse, because it is - sorted. Use nnheader-insert-nov-file. - -2002-01-28 Katsumi Yamaoka - - * mm-decode.el (mm-inline-text-html-with-images): New user option. - - * mm-view.el (mm-inline-text-html-render-with-w3m): Bind the value - of `w3m-display-inline-images' with the value of - `mm-inline-text-html-with-images'. - From: TSUCHIYA Masatoshi . - - * gnus-art.el (gnus-article-wash-html-with-w3m): Ditto. - -2002-01-27 Richard M. Stallman - - * time-date.el: Add autoload cookies. Many doc fixes. - (time-add): New function. - (time-subtract): Renamed from subtract-time. - (subtract-time): New alias for time-subtract. - -2002-01-28 Katsumi Yamaoka - - * gnus-art.el (gnus-article-wash-html-with-w3m): Replace w3m to - emacs-w3m in doc-string. - - * lpath.el: Bind `w3m-cid-retrieve-function-alist' and - `w3m-current-buffer'. - -2002-01-27 TSUCHIYA Masatoshi - - * gnus-art.el (gnus-article-wash-html-with-w3m): Handle cid: URLs. - - * mm-view.el (mm-setup-w3m): Add `mm-w3m-cid-retrieve' to - `w3m-cid-retrieve-function-alist' for `gnus-article-mode'. - (mm-w3m-cid-retrieve): New function. - (mm-inline-text-html-render-with-w3m): Handle cid: URLs. - -2002-01-27 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-fetch-articles): Don't save empty articles. - -2002-01-27 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-cache-file-contents): Don't use equalp. - -2002-01-26 Lars Magne Ingebrigtsen - - * nnheader.el (nnheader-insert-nov-file): Increased cutoff to - 32K. - - * gnus-sum.el (gnus-summary-expire-articles): Clean up. - - * nnmail.el (nnmail-article-group): Decode headers before running - split rules over them. - (nnmail-mail-splitting-charset): New variable. - - * smiley.el: Replaced with smiley-ems.el. - -2002-01-26 ShengHuo ZHU - - * mm-url.el (mm-url-predefined-programs): Add w3m. - (mm-url-program): Ditto. - -2002-01-26 Lars Magne Ingebrigtsen - - * nnml.el (nnml-use-compressed-files): New variable. - (nnml-filenames-are-evil): Removed. - (nnml-current-group-article-to-file-alist): Don't use. - (nnml-update-file-alist): Inhibit. - (nnml-article-to-file): Use new var. - -2002-01-26 ShengHuo ZHU - - * gnus-util.el (gnus-parse-without-error): Add edebug-form-spec. - - * nnagent.el (nnagent-retrieve-headers): loop until eobp. - -2002-01-26 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-load-alist): Use new caching - function. - - * gnus-util.el (gnus-cache-file-contents): New function. - - * gnus-agent.el (gnus-agent-file-loading-cache): New variable. - (gnus-agent-load-alist): Use it. - - * nnagent.el (nnagent-retrieve-headers): Use optimized function. - - * nnheader.el (nnheader-insert-nov-file): New function. - - * gnus-util.el (gnus-parse-without-error): Correct the loop. - - * gnus-sum.el (gnus-dependencies-add-header): Use in-reply-to if - there are no references. - (gnus-extract-message-id-from-in-reply-to): New function. - (gnus-nov-parse-line): Use in-reply-to if there are no - references. - -2002-01-25 Lars Magne Ingebrigtsen - - * nnagent.el (nnagent-retrieve-headers): Use new macro. - - * gnus-util.el (gnus-parse-without-error): New macro. - -2002-01-25 ShengHuo ZHU - - * gnus-art.el (gnus-article-wash-html-with-w3m): Call w3m-region. - (gnus-article-wash-function): use locate-library to decide which - to use. - -2002-01-25 Simon Josefsson - - * pop3.el (pop3-munge-message-separator): Work if no date. - Trivial patch from Marius Vollmer . - -2002-01-25 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-save-alist): Fix. - - * nnagent.el (nnagent-retrieve-headers): Must have cut too much by - mistake. Reinstated lost code. - -2002-01-25 Josh Huber - - * mml2015.el (mml2015-mailcrypt-decrypt): Display a signature if - one exists in the case of an encrypted message with an internal - signature. - -2002-01-25 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-save-alist): Optimized. - -2002-01-25 Katsumi Yamaoka - - * dgnushack.el: Commented out the experimental code. - -2002-01-25 Lars Magne Ingebrigtsen - - * gnus-range.el (gnus-inverse-list-range-intersection): Off-by-one - error. - - * gnus.el (gnus-server-to-method): Made into subst. - (gnus-server-method-cache): New variable. - (gnus-server-to-method): Use it. - (gnus-group-method-cache): New variable. - (gnus-find-method-for-group-1): Renamed. - (gnus-find-method-for-group): New function. - (gnus-group-method-cache): Removed. - - * gnus-sum.el (gnus-compute-unseen-list): Use new optimized - function. - - * gnus-range.el (gnus-members-of-range): New function. - (gnus-list-range-intersection): Renamed. - (gnus-inverse-list-range-intersection): New function. - - * gnus-sum.el (gnus-compute-unseen-list): Made into own function. - - * nnagent.el (nnagent-retrieve-headers): New implementation. - - * gnus-agent.el (gnus-agent-get-undownloaded-list): New, faster - implementation. - -2002-01-25 Katsumi Yamaoka - - * lpath.el: Fbind `w3m-charset-to-coding-system'; bind - `w3m-meta-content-type-charset-regexp'. - - * mm-view.el (mm-inline-text-html-render-with-w3m): Decode - charset-encoded html contents. - -2002-01-24 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-request-article): Make sure it is not - an empty file. - - * nnweb.el (url): Ignore errors when request url. - - * nnrss.el: Clean up the comments. - -2002-01-24 Katsumi Yamaoka - - * lpath.el: Fbind `w3m-region'; bind `w3m-mode-map'. - - * mm-decode.el (mm-inline-text-html-renderer): New user option. - (mm-inline-media-tests): Test whether the value of - `mm-inline-text-html-renderer' is a function for text/html. - - * mm-view.el (mm-inline-text-html-render-with-w3): New function - separated from `mm-inline-text'. - (mm-w3m-minor-mode): New variable. - (mm-w3m-setup): New variable. - (mm-setup-w3m): New function. - (mm-inline-text-html-render-with-w3m): New function. - (mm-inline-text): Funcall `mm-inline-text-html-renderer' for - text/html. - -2002-01-23 Paul Jarc - - * lpath.el: fbind make-symbolic-link and unix-sync for nnmaildir. - -2002-01-23 Katsumi Yamaoka - - * gnus-xmas.el (gnus-xmas-redefine): Quote `gnus-completing-read' - and `gnus-xmas-completing-read'. - -2002-01-19 TSUCHIYA Masatoshi - - * nneething.el (nneething-message-id-number): Abolished. - (nneething-encode-file-name): Not encode numerical characters. - (nneething-make-head): `nneething-message-id-number' is not - used to generate message IDs. - -2002-01-23 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-emphasis-alist): Include !? as sentence-ending - characters. - -2002-01-22 Lars Magne Ingebrigtsen - - * gnus-xmas.el (gnus-xmas-completing-read): New function. - (gnus-xmas-redefine): Redefine conditionally. - -2002-01-22 Josh Huber - - * mml.el (mml-parse-1): Fixed usage of recipients in the secure - tag. - -2002-01-22 Josh Huber - - * message.el (message-font-lock-keywords): Added the secure tag. - * mml-sec.el: Added functions to generate/modify/remove the secure - tag while in message mode. - * mml-sec.el (mml-secure-message): New. - * mml-sec.el (mml-unsecure-message): New. - * mml-sec.el (mml-secure-message-sign-smime): New. - * mml-sec.el (mml-secure-message-sign-pgp): New. - * mml-sec.el (mml-secure-message-sign-pgpmime): New. - * mml-sec.el (mml-secure-message-encrypt-smime): New. - * mml-sec.el (mml-secure-message-encrypt-pgp): New. - * mml-sec.el (mml-secure-message-encrypt-pgpmime): New. - * mml.el (mml-parse-1): Added code to recognise the secure tag and - convert it to either a part or multipart depending on if there are - other parts in the message. - * mml.el (mml-mode-map): Changed default sign/encrypt keybindings - to use the secure tag, rather than the part tag. - * mml.el (mml-preview): Added a save-excursion to keep cursor - position after doing an MML preview. - -2002-01-22 Lars Magne Ingebrigtsen - - * nnheader.el (nnheader-parse-overview-file): New function. - (nnheader-write-overview-file): New function. - -2002-01-21 Lars Magne Ingebrigtsen - - * gnus.el (gnus-group-fast-parameter): Check better if expansion - in wanted. - - * nnweb.el (nnweb-type-definition): Clean up. - -2002-01-21 Alastair Burt - Trivial patch. - - * gnus-art.el (gnus-mm-display-part): Make sure that the summary - buffer exists before jumping to it. - -2002-01-21 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-wash-html-with-w3): Made into own - function. - (article-wash-html): Use it. - (gnus-article-wash-function): New variable. - (gnus-article-wash-html-with-w3m): New function. - -2002-01-20 Bj,Av(Brn Torkelsson - - * dgnushack.el (dgnushack-compile): Compile smiley-ems for - XEmacs. - -2002-01-20 John H. Palmieri - - * gnus-fun.el (gnus-convert-image-to-gray-x-face): More standard - command line. - -2002-01-21 Simon Josefsson - - * canlock.el (base64-encode-string): Autoload it from base64. - (canlock-make-cancel-key): Base64 encode unibyte string. - -2002-01-20 Lars Magne Ingebrigtsen - - * nnfolder.el (nnfolder-request-accept-article): Unfold - x-from-line. - (nnfolder-request-replace-article): Ditto. - -2002-01-20 Nevin Kapur - - * gnus-group.el (gnus-group-best-unread-group): Use the right - positioning function. - -2002-01-20 Lars Magne Ingebrigtsen - - * smiley-ems.el (smiley-region): Use new function. - (smiley-update-cache): Use general image functions. - (smiley-region): Use general functions. - - * gnus-util.el (gnus-graphic-display-p): New function. - - * nnmail.el (nnmail-article-group): Allow outputting traces of - non-strings. - - * nndoc.el (nndoc-type-alist): Rules for exim bounces. - (nndoc-exim-bounce-type-p): New function. - - * message.el (message-dont-send): Doc fix. - - * gnus-util.el (gnus-completing-read): Remove - inherit-input-method. - - * gnus-art.el (gnus-treat-smiley): Doc fix. - - * gnus-agent.el (gnus-agent-fetch-headers): Ignore seen and recent - articles. - -2002-01-19 Simon Josefsson - - * imap.el (imap-gssapi-open): Don't wait for logout to complete. - (imap-kerberos4-open): Ditto. - (imap-open): Set port correctly, don't set auth. - -2002-01-20 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version-number): Bump version number. - -2002-01-20 05:33:30 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.05 is released. - -2002-01-20 Lars Magne Ingebrigtsen - - * nnkiboze.el (nnkiboze-generate-group): Make sure the directory - exists. - - * gnus-spec.el (gnus-string-width-function): New function. - (gnus-tilde-cut-form): Use it. - (gnus-tilde-max-form): Ditto. - (gnus-use-correct-string-widths): Default to (featurep 'xemacs). - (gnus-substring-function): Use it. - (gnus-tilde-cut-form): Ditto. - (gnus-substring-function): New function. - - * message.el (message-check-news-header-syntax): New message. - - * gnus.el (gnus-slave-no-server): Doc fix. - - * gnus-spec.el (gnus-use-correct-string-widths): Default to t. - -2002-01-15 Katsumi Yamaoka - - * gnus-sum.el (gnus-adjust-marked-articles): Fix the record for - `seen' if it looks like (seen NUM1 . NUM2). It should be - (seen (NUM1 . NUM2)). - -2002-01-20 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-catchup-articles): Update article - number in closed topics. - -2002-01-19 Daniel Pittman - - * gnus-sum.el (gnus-summary-first-unseen-or-unread-subject): New - functions. - -2002-01-19 Lars Magne Ingebrigtsen - - * gnus.el (gnus-group-find-parameter): Clean up. - - * gnus-sum.el (gnus-summary-goto-subject): Error on non-numerical - articles. - - * gnus-util.el (gnus-completing-read-with-default): Renamed. - - * nnmail.el (nnmail-article-group): Clean up. - -2002-01-19 Paul Stodghill - - * gnus-agent.el (gnus-category-name): Intern the category name. - -2002-01-19 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-move-group): Use gnus-topic-history. - - * gnus-util.el (gnus-completing-read): New function. - -2002-01-19 ShengHuo ZHU - - * gnus-art.el (gnus-add-wash-type): Use add-to-list. - - * smiley-ems.el (smiley-region): Register smiley. - (smiley-toggle-buffer): Rewrite the function. - (smiley-active): Removed. - -2002-01-19 Simon Josefsson - - * gnus-util.el (gnus-parent-id): Optimize null n case. From - Jesper Harder . - -2002-01-18 TSUCHIYA Masatoshi - - * gnus-art.el (gnus-request-article-this-buffer): Call - `nneething-get-file-name' to extract the file name from the - message id. - - * nneething.el (nneething-encode-file-name): New function. - (nneething-decode-file-name): Ditto. - (nneething-get-file-name): Ditto. - (nneething-make-head): Encode the file name and encapsulate it - into the field of the message id. - -2002-01-18 Simon Josefsson - - * nnml.el (nnml-request-update-info): Don't erase flags that isn't - stored in .marks. - - * nnfolder.el (nnfolder-request-update-info): Ditto. - -2002-01-18 ShengHuo ZHU - - * gnus-art.el (gnus-url-parse-query-string): Allow new line in value. - -2002-01-18 Simon Josefsson - - * imap.el (imap-starttls-p): Don't check for binary. - (imap-gssapi-auth-p): Ditto. - (imap-kerberos4-auth-p): Ditto. - (imap-open): Change logic. Iterate through all possible streams, - instead of bailing out after first failure. Move authenticator - decision to `imap-authenticate'. - (imap-authenticate): Change logic, now finds the authenticator to - use, was previously in `imap-open'. - (imap-open): Return nil on failure. - (imap-open): Setup temp buffer correctly. - (imap-open): Return buffer only on success. - (imap-interactive-login, imap-interactive-login): Tell the user - which stream/authenticator is used for the queried - username/password. - (imap-open, imap-authenticate): Set variables. - (imap-gssapi-auth-p, imap-kerberos4-auth-p): Fix typo. - (imap-open): Don't assume how `with-temp-buffer' is implemented. - -2002-01-17 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-grab-cam-x-face): New function. - -2002-01-16 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-emphasis-alist): Allow matching "*this*.)". - -2002-01-17 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-toggle-group-plugged): New function. - (gnus-agent-group-mode-map): Bind it to "Jo". - (gnus-agent-group-make-menu-bar): Add it into menu bar. - -2002-01-17 Karl Kleinpaste - - * gnus-xmas.el (gnus-group-toolbar): Add .newsrc save button. - (gnus-summary-mail-toolbar): Add mail article deletion button. - - * smiley.el (smiley-deformed-regexp-alist): Eliminate noseless - false positives for lines of "^^^^". - - * gnus-picon.el (gnus-picon-find-face): faces database is all - lowercase. - -2002-01-17 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-retrieve-headers): Use correct buffer. - (gnus-agent-braid-nov): Switch back to nntp-server-buffer. Remove - duplications. - (gnus-agent-batch): Bind gnus-agent-confirmation-function. - -2002-01-16 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-initial-limit): Inline - gnus-summary-limit-children. - (gnus-summary-initial-limit): Don't limit if - gnus-newsgroup-display is nil. - (gnus-summary-initial-limit): No, don't. - - * gnus-util.el - (gnus-put-text-property-excluding-characters-with-faces): Inline - gnus-put-text-property. - - * gnus-spec.el (gnus-default-format-specs): New variable. - - * gnus-start.el (gnus-read-newsrc-file): Don't clear - gnus-format-specs. - (gnus-read-newsrc-el-file): Default to gnus-default-format-specs. - - * gnus-spec.el (gnus-update-format-specifications): Really check - the Gnus version of the .newsrc.eld file. - (gnus-format-specs): Save the new default summary format. - - * gnus-util.el (gnus-parent-id): Check whether references is empty - before splitting. - - * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Inline some - functions. - (gnus-gather-threads-by-references): Inline - `gnus-split-references'. - - * gnus-spec.el (gnus-summary-line-format-spec): New, optimized - default value of gnus-summary-line-format-spec. - -2002-01-15 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-retrieve-headers-1): A better error - message. - (nnslashdot-request-list): Ditto. - (nnslashdot-sid-strip): Removed. - -2002-01-15 Simon Josefsson - - * nnimap.el (nnimap-close-asynchronous): Enable. - (nnimap-close-group): Expunge. - -2002-01-15 ShengHuo ZHU - - * gnus-util.el (gnus-user-date-format-alist): Typo. - From: Frank Schmitt - -2002-01-15 TSUCHIYA Masatoshi - - * nneething.el (nneething-request-article): Set - `nnmail-file-coding-system' to `binary' locally, in order to read - files without any conversion. - -2002-01-15 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-retrieve-headers): Use - nnheader-file-coding-system and nnmail-active-file-coding-system. - (gnus-agent-regenerate-group): Ditto. - (gnus-agent-regenerate): Ditto. - (gnus-agent-write-active): Ditto. - Suggested by Katsumi Yamaoka - -2002-01-14 ShengHuo ZHU - - * gnus-art.el (gnus-button-alist): Don't highlight - -2002-01-14 ShengHuo ZHU - - * gnus.el: We don't need gnus-article-show-all-headers. - - * gnus-art.el (article-show-all, gnus-article-show-all-header): - Ditto. - - * gnus-sum.el (gnus-summary-select-article): Don't call - show-all-headers, because hidden headers are not hidden text any - more. - -2002-01-13 Simon Josefsson - - * message.el (message-newline-and-reformat): Use `newline' instead - of inserting \n, so that the newline is marked as hard. - - * gnus-spec.el (gnus-pad-form): Don't evaluate EL multiple times. - From Jesper Harder . - -2002-01-12 ShengHuo ZHU - - * imap.el (imap-close): Keep going if quit. - - * gnus-agent.el (gnus-agent-retrieve-headers): Erase - nntp-server-buffer. - -2002-01-12 Lars Magne Ingebrigtsen - - * mm-view.el (mm-display-inline-fontify): Require font-lock to - avoid unbinding shadowed variables. - - * gnus-art.el (gnus-picon-databases): Moved here. - (gnus-picons-installed-p): Moved here. - (gnus-article-reply-with-original): Use `mark'. - - * gnus.el (gnus-picon): Moved here and renamed. - - * gnus-art.el (gnus-treat-from-picon): Only be on if picons are - installed. - (gnus-treat-mail-picon): Ditto. - (gnus-treat-newsgroups-picon): Ditto. - - * gnus-picon.el (gnus-picons-installed-p): New function. - -2002-01-12 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-go-online): Fix doc. - -2002-01-12 Simon Josefsson - - * nnimap.el (nnimap-need-unselect-to-notice-new-mail) - (nnimap-before-find-minmax-bugworkaround): Use it. - (nnimap-find-minmax-uid): Don't reselect current mailbox. - (nnimap-dont-close): New variable. - (nnimap-close-group): Use it. - -2002-01-12 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-reply-with-original): Use - `mark-active'. - - * gnus-msg.el (gnus-summary-reply): Don't bug out on regions. - - * gnus-logic.el (gnus-advanced-score-rule): Thinko fix. - (gnus-score-advanced): Clean up. - (gnus-score-advanced): Accept a multiple of the score. - -2002-01-12 Simon Josefsson - - * flow-fill.el (fill-flowed-display-column) - (fill-flowed-encode-columnq): New variables. Suggested by - Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro,b_(Bjohann). - (fill-flowed-encode, fill-flowed): Use them. - - * message.el (message-send-news, message-send-mail): Use - m-b-s-n-p-e-h-n. - - * mml.el (autoload): Autoload fill-flowed-encode. - (mml-buffer-substring-no-properties-except-hard-newlines): New - function. - (mml-read-part): Use it. - (mml-generate-mime-1): Encode format=flowed if appropriate. - (mml-insert-mime-headers): Insert format=flowed. - - * flow-fill.el (fill-flowed-encode): New function. - (fill-flowed): Bind fill-column to window width. - -2002-01-12 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-buffer-name): Return the dead name if - it exists. - (gnus-summary-setup-buffer): Wake up dead summary buffers. - (gnus-summary-buffer-name): Don't return the dead name after all. - (gnus-summary-setup-buffer): Kill the dead buffer. - - * gnus-art.el (gnus-article-followup-with-original): Store the - value of the mark before deactivating it. - -2002-01-11 ShengHuo ZHU - - * gnus-fun.el (gnus-display-x-face-in-from): Fake it. - From: Karl Kleinpaste - - * gnus-art.el (article-display-x-face): Ditto. - (gnus-article-reply-with-original): Use gnus-region-active-p. - (gnus-article-followup-with-original): Ditto. - - * gnus-sum.el (gnus-summary-read-group-1): Don't select - downloadable article either. - -2002-01-11 ShengHuo ZHU - - * gnus-art.el (article-display-x-face): Insert From:. - - * gnus-sum.el (gnus-summary-move-article): Don't draw the - article. Bind gnus-display-mime-function and - gnus-article-prepare-hook. - - * gnus-agent.el (gnus-agent-retrieve-headers): Load agentview. - (gnus-agent-toggle-plugged): Use gnus-agent-go-online. Move - gnus-agent-possibly-synchronize-flags to the last. - (gnus-agent-go-online): New function. New variable. - -2002-01-11 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-regenerate-group): Add clean option. - (gnus-agent-regenerate): Ditto. - -2002-01-11 ShengHuo ZHU - - * message.el (message-ignored-news-headers) - (message-ignored-mail-headers): Add X-Gnus-Agent-Meta-Information:. - Suggested by ARISAWA Akihiro - - * gnus.el (gnus-gethash-safe): New macro. - - * gnus-agent.el (gnus-agent-regenerate-history): New function. - (gnus-agent-regenerate): Show messages. - -2002-01-11 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-regenerate-group): New function. - (gnus-agent-regenerate): New function. - (gnus-agent-save-alist): Sort. - (gnus-agent-copy-nov-line): Test eobp. - (gnus-agent-retrieve-headers): Erase buffer. - -2002-01-10 ShengHuo ZHU - - * mm-util.el (mm-charset-to-coding-system): Change charset to cs. - From: Torsten Hilbrich - - * gnus.el (gnus-agent-covered-methods): Move here. - (gnus-online): New function. - (gnus-agent-method-p): Move here. - - * nnagent.el (nnagent-retrieve-headers): Check whether arts is - nil. Remove articles-alist. - - * gnus-start.el (gnus-get-unread-articles): Check online. - (gnus-groups-to-gnus-format): Ditto. - (gnus-active-to-gnus-format): Ditto. - - * gnus-agent.el (gnus-agent-get-function): Use it. - (gnus-agent-get-undownloaded-list): Ditto. - (gnus-agent-fetch-session): Only fetch online methods. - - * gnus-srvr.el (gnus-server-make-menu-bar): Add offline. - (gnus-server-mode-map): Ditto. - (gnus-server-offline-face): New face. - (gnus-server-offline-face): New variable. - (gnus-server-font-lock-keywords): Add offline. - (gnus-server-insert-server-line): Ditto. - (gnus-server-offline-server): New function. - - * gnus-int.el (gnus-open-server): Turn to offline. - (gnus-server-unopen-status): New variable. - -2002-01-10 ShengHuo ZHU - - * nnkiboze.el (nnkiboze-request-article): Use - gnus-agent-request-article. - - * nnagent.el (nnagent-retrieve-headers): Don't use nnml - function. Insert undownloaded NOV. - - * gnus-agent.el (gnus-agent-retrieve-headers): New function. - (gnus-agent-request-article): New function. - - * gnus.el (gnus-agent-cache): New variable. - - * gnus-int.el (gnus-retrieve-headers): Use - gnus-agent-retrieve-headers. - (gnus-request-head): Use gnus-agent-request-article. - (gnus-request-body): Ditto. - - * gnus-art.el (gnus-request-article-this-buffer): Use - gnus-agent-request-article. - - * gnus-sum.el (gnus-summary-read-group-1): Don't show the first - article if it is undownloaded. - -2002-01-10 Katsumi Yamaoka - - * gnus-spec.el (gnus-spec-tab): Deal with wide characters. - -2002-01-09 Katsumi Yamaoka - - * canlock.el (canlock-string-as-unibyte): New macro. - (canlock-sha1-with-openssl): Return a unibyte string. - (canlock-make-cancel-key): Treat Message-ID as a unibyte string. - -2002-01-09 ShengHuo ZHU - - * gnus.el (gnus-expand-group-parameters): Match \N or \& only. - -2002-01-08 ShengHuo ZHU - - * mm-encode.el (mm-content-transfer-encoding-defaults): Add - application/x-emacs-lisp. - - * gnus-msg.el (gnus-bug): Use application/emacs-lisp. - - * nntp.el (nntp-request-article): Add group parameter. - (nntp-request-head): Ditto. - (nntp-find-group-and-number): Add parameter group. Figure out - number if the status line doesn't give (e.g. quimby.gnus.org). - -2002-01-08 Simon Josefsson - - * mml.el (mml-generate-mime-1): Set recipient correctly. - -2002-01-08 ShengHuo ZHU - - * message.el (message-read-from-minibuffer): Add parameter - initial-contents. - * gnus-msg.el (gnus-summary-resend-message): Use it. - - * gnus-group.el (gnus-group-read-ephemeral-group): Restore the old - behavior of quit-config. - - * message.el (message-make-from): Don't quote fullname. - From: Bj,Ax(Brn Mork - - * gnus-group.el (gnus-group-suspend): Don't kill message buffers. - From: - -2002-01-07 ShengHuo ZHU - - * gnus-group.el (gnus-group-mark-article-read): Typo. Increase n. - - * gnus-art.el (gnus-header-button-alist): Handle mailto. - - * mml.el (mml-preview): Bind gnus-original-article-buffer because - article-decode-group-name uses it. Bind gnus-article-prepare-hook - because bbdb may use it. - -2002-01-07 TSUCHIYA Masatoshi - - * nneething.el (nneething-request-article): When a non-text file - is converted to an article, its data is encoded in base64. Call - `nneething-make-head' with options to specify MIME types. - (nneething-make-head): Add optional arguments to specify MIME - types. - -2002-01-06 ShengHuo ZHU - - * gnus-fun.el (gnus-display-x-face-in-from): Fake a "From: " - header if there is not. - - * gnus-xmas.el (gnus-xmas-put-image): Insert " " if bobp. - - * gnus-msg.el (gnus-gcc-mark-as-read): New variable. - (gnus-inews-mark-gcc-as-read): Obsolete variable. - (gnus-inews-do-gcc): Use them. - - * gnus-group.el (gnus-group-mark-article-read): Put holes into - gnus-newsgroup-unselected. - -2002-01-06 Simon Josefsson - - * imap.el (imap-ssl-open, imap-ssl-open, imap-parse-fetch): Use - condition-case, not ignore-errors. - -2002-01-06 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-insert-old-articles): Bind - gnus-fetch-old-headers. - - * gnus-art.el (article-display-x-face): Use the current buffer - unless `W f'. Otherwise, X-Face may be shown in the header of a - forwarded part. - (gnus-treatment-function-alist): Treat xface before hiding - headers. - -2002-01-06 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-read-ephemeral-group): Fix - parameters. - -2002-01-06 ShengHuo ZHU - - * mm-util.el (mm-multibyte-p): Define conditionally when load. - (mm-guess-charset): New function. - (mm-charset-after): Use it. - (mm-detect-coding-region): New function. - (mm-detect-mime-charset-region): New function. - - * gnus-sum.el (gnus-summary-show-article): Use - mm-detect-coding-region. - -2002-01-06 Lars Magne Ingebrigtsen - - * message.el (message-make-fqdn): Be less violent. - - * gnus.el (gnus-logo-color-style): Compute custom form - automatically. - - * gnus-sum.el (gnus-summary-enter-digest-group): Feed the adaptive - score file of the parent to the document group. - - * gnus-group.el (gnus-group-read-ephemeral-group): Add an optional - parameters parameter. - - * gnus-score.el (gnus-score-load-file): Clean up. - -2002-01-06 ShengHuo ZHU - - * gnus-sum.el (gnus-thread-sort-by-most-recent-number): Fix typo. - From: Damien Wyart - - * gnus-util.el (gnus-local-map-property): In Emacs 21, use keymap. - -2002-01-05 ShengHuo ZHU - - * gnus-sum.el (gnus-select-group-hook): Typo. - - * rfc2047.el (rfc2047-decode-string): Return immediately if there - is no quoted-printable-encoded STRING. - From: Jesper Harder - - (rfc2047-decode-string): Decode it. - -2002-01-05 Lars Magne Ingebrigtsen - - * gnus.el (gnus-logo-color-alist): Added more colors from Luis. - -2002-01-05 Keiichi Suzuki - Trivial patch. - - * nntp.el (nntp-possibly-change-group): Erase contents of nntp - buffer to get rid of junk line. - -2002-01-05 Simon Josefsson - - * message.el (message-mode-map): Bind message-goto-from to C-c C-f - C-o. - (message-mode-map): Bind message-insert-or-toggle-importance to - C-c C-u. - (message-mode-map): Bind message-disposition-notification-to to - C-c M-n. - (message-mode-menu): Add m-d-n-t. - (message-mode-field-menu): Add m-goto-from. - (message-mode): Doc fix. - (message-goto-from): New function. - (message-insert-disposition-notification-to): New function. - (message-tool-bar-map): Add receipt button. - -2002-01-05 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-thread-latest-date): New function. - (gnus-thread-sort-by-most-recent-number): Renamed. - (gnus-thread-sort-functions): Doc fix. - (gnus-select-group-hook): Don't use setq on a hook. - (gnus-thread-latest-date): Use date, not number - - * gnus-agent.el (gnus-agent-expire-days): Doc fix. - (gnus-agent-expire): Allow regexp of expire-days. - - * gnus-art.el (gnus-article-reply-with-original): Deactivate - region. - (gnus-article-followup-with-original): Ditto. - - * gnus-sum.el (gnus-thread-highest-number): Doc fix. - - * gnus-art.el (gnus-mime-display-alternative): Use - gnus-local-map-property. - (gnus-mime-display-alternative): Ditto. - (gnus-insert-mime-security-button): Ditto. - (gnus-insert-next-page-button): Ditto. - (gnus-button-prev-page): Take optional args. - (gnus-insert-prev-page-button): widget-convert. - - * gnus-util.el (gnus-local-map-property): New function. - - * gnus-art.el (gnus-prev-page-map): Use parent map. - (gnus-next-page-map): Ditto. - - * gnus-spec.el (gnus-parse-format): Clean up. - (gnus-parse-format): Do complex formatting for %=. - - * gnus-fun.el (gnus-display-x-face-in-from): Add the string - "X-Face: " to the data in the built-in scenario. - - * gnus-spec.el (gnus-parse-simple-format): Use gnus-pad-form. - (gnus-correct-pad-form): Renamed. - (gnus-tilde-max-form): Clean up. - (gnus-pad-form): Use gnus-use-correct-string-widths. - - * gnus-fun.el (gnus-display-x-face-in-from): Use native xface - support if that is available. - - * gnus-sum.el (gnus-thread-highest-number): New function. - (gnus-thread-sort-by-most-recent-thread): New function. - (gnus-thread-sort-functions): Doc fix. - -2002-01-04 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-select-article): Disable multibyte in - all cases. - (gnus-summary-mode): Enable it in all cases. - (gnus-summary-display-article): Ditto. - (gnus-summary-edit-article): Ditto. - - * gnus-ems.el (gnus-put-image): Really return glyph. - - * gnus-art.el (gnus-article-x-face-command): Fix :type. - (gnus-treat-smiley): Don't take "P" in the interactive form. - -2002-01-04 Lars Magne Ingebrigtsen - - * compface.el (uncompface): XEmacs and Emacs have differing - capabilities. - - * gnus-fun.el (gnus-display-x-face-in-from): Use face. - - * gnus-ems.el (gnus-article-xface-ring-internal): Removed. - (gnus-article-xface-ring-size): Removed. - (gnus-article-display-xface): Removed. - (gnus-remove-image): Cleaned up. - - * gnus-xmas.el (gnus-xmas-create-image): Convert pbm to xbm. - (gnus-xmas-create-image): Take pbm files. - (gnus-x-face): Removed. - (gnus-xmas-article-display-xface): Removed. - - * gnus-fun.el (gnus-display-x-face-in-from): Bind - default-enable-multibyte-characters. - - * compface.el (uncompface): Doc fix. - - * gnus-art.el (gnus-article-x-face-command): Use - gnus-display-x-face-in-from. - - * gnus-xmas.el (gnus-xmas-put-image): Return the image. - - * gnus-ems.el (gnus-put-image): Return the image. - - * gnus-fun.el (gnus-display-x-face-in-from): New function. - (gnus-x-face): Moved here. - -2002-01-04 ShengHuo ZHU - - * gnus-xmas.el (gnus-xmas-put-image): Don't insert SPC or make - invisible if string is nil. - (gnus-xmas-article-display-xface): Use it. - - * gnus-ems.el (gnus-put-image): Explicitly use SPC, and add text - property when string is nil. - (gnus-article-display-xface): Use it. - -2002-01-04 Lars Magne Ingebrigtsen - - * gnus-art.el (article-display-x-face): Check whether valid grey - face was returned. - (article-display-x-face): Place image in the right spot. - - * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Get rid of - stderr. - (gnus-convert-gray-x-face-to-xpm): Check whether output is valid. - -2002-01-03 Lars Magne Ingebrigtsen - - * gnus-xmas.el (gnus-xmas-create-image): Take optional - parameters. - (gnus-xmas-put-image): Allow non-strings to be passed. - - * gnus-art.el (article-display-x-face): Use optional parameters. - - * gnus-ems.el (gnus-create-image): Take optional parameters. - - * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Use uncompface. - - * compface.el (compface-xbm-p): Removed. - - * gnus-ems.el (gnus-article-compface-xbm): Removed. - (gnus-article-display-xface): Use compface. - - * compface.el: New file. - - * gnus-fun.el (gnus-convert-pbm-to-x-face-command): Remove quotes. - (gnus-convert-image-to-x-face-command): Ditto. - (gnus-random-x-face): Quote argument. - (gnus-x-face-from-file): Ditto. - -2002-01-03 Paul Jarc - - * nnmaildir.el (nnmaildir-request-expire-articles): evaluate - the expire-group parameter once per article rather than once - per group; bind `nnmaildir-article-file-name' and `article' - for convenience. Leave article alone when expire-group - specifies the current group. - (nnmaildir--update-nov): be more concurrency-friendly with - temp file names. - -2002-01-03 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-read-init-file): Cleaned up. - -2002-01-03 Dave Love - - * gnus-start.el (gnus-startup-file-coding-system): Removed. - (gnus-read-init-file): Don't use it. - -2002-01-03 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-session): Run hook. - -2002-01-03 Kai Gro,b_(Bjohann - - * gnus-start.el (gnus-read-init-file): Don't force coding system - for ~/.gnus. From Dave Love . - -2002-01-03 ShengHuo ZHU - - * nntp.el (nntp-send-buffer): Use mm-with-unibyte-current-buffer. - * nnspool.el (nnspool-request-post): Ditto. - - * mm-util.el (mm-use-find-coding-systems-region): New variable. - (mm-find-mime-charset-region): Use it. - -2002-01-03 Per Abrahamsen - - * gnus.el (gnus-summary-line-format): Added :link. - * gnus-topic.el (gnus-topic-line-format): Ditto. - * gnus-sum.el (gnus-summary-dummy-line-format): Ditto. - * gnus-srvr.el (gnus-server-line-format): Ditto. - * gnus-group.el (gnus-group-line-format): Ditto. - - * gnus-sum.el (gnus-summary-make-menu-bar): Use correct syntax for - :keys, it works on both Emacsen. - -2002-01-03 ShengHuo ZHU - - * mm-util.el (mm-charset-to-coding-system): Don't setq charset. - -2002-01-03 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-summary-send-map): Fix binding for very-wide. - -2002-01-03 Reiner Steib - - * gnus-sum.el (gnus-summary-make-menu-bar): Menu bar entries for - very wide reply. - -2002-01-03 Lars Magne Ingebrigtsen - - * gnus-picon.el (gnus-picon-transform-address): Cache stuff. - (gnus-picon-cache): New variable. - (gnus-picon-transform-newsgroups): Cache stuff. - - * gnus-art.el (gnus-article-reply-with-original): New command. - (gnus-article-followup-with-original): New command. - - * gnus-msg.el (gnus-copy-article-buffer): Take optional BEG and - END parameters. - (gnus-summary-followup): Take a list of list of articles. - (gnus-inews-yank-articles): Allow lists of article/regions. - - * gnus-art.el (gnus-article-read-summary-keys): `R' and `F' are no - longer the usual commands. - - * gnus-fun.el (gnus-convert-image-to-gray-x-face): Use pnmnoraw. - (gnus-convert-gray-x-face-to-xpm): Don't use six parameters to - shell-command-on-region. - -2002-01-02 ShengHuo ZHU - - * gnus-picon.el (gnus-picon-transform-newsgroups): Fix for the case - "Newsgroups: rec.music.beatles.moderated, rec.music.beatles". - -2002-01-03 Steve Youngs - - * gnus-sum.el (gnus-summary-make-menu-bar): XEmacs doesn't - understand ':keys', wrap it in an featurep 'xemacs. - -2002-01-02 ShengHuo ZHU - - * gnus-ems.el (gnus-article-display-xface): Show xface in the - order of headers (Actually, it is called in a reversed order). Add - 'gnus-image-text-deletable property. - (gnus-remove-image): Remove text with such a property. - - * gnus-xmas.el (gnus-xmas-article-display-xface): Don't use - gnus-put-image. - - * gnus-art.el (gnus-article-treat-fold-newsgroups): Replace ", *" - with ", " - -2002-01-02 Lars Magne Ingebrigtsen - - * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Renamed. - - * gnus-art.el (gnus-ignored-headers): Hide all X-Faces. - (article-display-x-face): Display grey X-Faces. - - * gnus-fun.el (gnus-convert-gray-x-face-region): New function. - (gnus-convert-gray-x-face-to-ppm): Ditto. - (gnus-convert-image-to-gray-x-face): Ditto. - - * gnus-sum.el (gnus-summary-make-menu-bar): Add a :keys to - gnus-summary-show-raw-article. - -2002-01-02 ShengHuo ZHU - - Display picons in XEmacs without showing text. - - * gnus-xmas.el (gnus-xmas-create-image): Don't use - mm-create-image-xemacs to create xbm glyph, because it deletes - temporary files. - (gnus-xmas-put-image): Use end-glyph. Make text invisible. - (gnus-xmas-remove-image): Make text visible, remove glyph. - - * gnus-picon.el (gnus-picon-transform-newsgroups) - (gnus-picon-transform-address): Insert spec backward, due to the - incompatibility of gnus-xmas-put-image. - -2002-01-02 Pavel Jan,Am(Bk - - * gnus-fun.el (gnus-convert-pbm-to-x-face-command): Doc fix. - -2002-01-02 Lars Magne Ingebrigtsen - - * gnus.el: Doc fix. - - * gnus-art.el: Doc fix. - - * gnus-agent.el: Doc fix. - -2002-01-01 ShengHuo ZHU - - * gnus-diary.el, gnus-delay.el: Fix copyright lines. - -2002-01-01 Paul Jarc - - * nnmaildir.el (nnmaildir--update-nov): automatically parse - NOV data out of the message again if nnmail-extra-headers has - changed. - -2002-01-02 Lars Magne Ingebrigtsen - - * gnus-fun.el: New file. - (gnus-convert-image-to-x-face-command): New variable. - (gnus-insert-x-face): New function. - (gnus-random-x-face): Renamed. - (gnus-x-face-from-file): Renamed. - - * gnus-art.el (gnus-body-boundary-delimiter): Changed default to - "_". - (gnus-body-boundary-delimiter): Typo fix. - -2002-01-02 Simon Josefsson - - * gnus-art.el (gnus-article-treat-body-boundary): Handle nil. - (gnus-body-boundary-delimiter): Fix type. - -2002-01-01 Simon Josefsson - - * gnus-art.el (gnus-treat-buttonize, gnus-treat-buttonize-head) - (gnus-treat-emphasize, gnus-treat-strip-cr) - (gnus-treat-leading-whitespace, gnus-treat-hide-headers) - (gnus-treat-hide-boring-headers, gnus-treat-hide-signature) - (gnus-treat-fill-article, gnus-treat-hide-citation) - (gnus-treat-hide-citation-maybe) - (gnus-treat-strip-list-identifiers, gnus-treat-strip-pgp) - (gnus-treat-strip-pem, gnus-treat-strip-banner) - (gnus-treat-highlight-headers, gnus-treat-highlight-citation) - (gnus-treat-date-ut, gnus-treat-date-local) - (gnus-treat-date-english, gnus-treat-date-lapsed) - (gnus-treat-date-original, gnus-treat-date-iso8601) - (gnus-treat-date-user-defined, gnus-treat-strip-headers-in-body) - (gnus-treat-strip-trailing-blank-lines) - (gnus-treat-strip-leading-blank-lines) - (gnus-treat-strip-multiple-blank-lines) - (gnus-treat-unfold-headers, gnus-treat-fold-headers) - (gnus-treat-fold-newsgroups, gnus-treat-overstrike) - (gnus-treat-display-xface, gnus-treat-display-smileys) - (gnus-treat-from-picon, gnus-treat-mail-picon) - (gnus-treat-newsgroups-picon, gnus-treat-body-boundary) - (gnus-treat-capitalize-sentences, gnus-treat-fill-long-lines) - (gnus-treat-play-sounds, gnus-treat-translate) - (gnus-treat-x-pgp-sig): Doc fix, add link to manual. - - * gnus-art.el (gnus-body-boundary-delimiter): New variable. - (gnus-article-treat-body-boundary): Use it. - - * message.el (message-mode): Fix doc. - (message-mode-menu): Fix names. - -2002-01-01 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-first-subject): Really go to unseen - articles. - - * gnus-picon.el (gnus-picon-find-face): Search MISC for all types. - (gnus-picon-transform-address): Search for unknown faces as well. - (gnus-picon-find-face): Don't search "news" for MISC. - (gnus-picon-user-directories): Changed default back to exclude - "unknown". - - * gnus-sum.el (gnus-summary-hide-all-threads): Reversed logic. - - * gnus-picon.el (gnus-picon-find-face): Search through all - databases. - (gnus-picon-find-face): New implementation. - - * gnus-topic.el (gnus-topic-goto-previous-topic): New command and - keystroke. - (gnus-topic-goto-next-topic): Ditto. - - * gnus.el (gnus-summary-line-format): Changed default. - - * nnmail.el (nnmail-extra-headers): Change default. - - * gnus-sum.el (gnus-extra-headers): Change default. - - * message.el (message-news-other-window): Changed "news" to - "posting". - (message-news-other-frame): Ditto. - (message-do-send-housekeeping): Ditto. - - * gnus-sum.el (gnus-summary-maybe-hide-threads): Use predicate - function. - (gnus-article-unread-p): New function. - (gnus-article-unseen-p): New function. - (gnus-dead-summary-mode-map): Typo. - - * gnus-util.el (gnus-make-predicate): New function. - (gnus-make-predicate-1): New function. - - * gnus-sum.el: New function. - (gnus-map-articles): New function. - - * gnus-art.el (gnus-treat-fold-headers): New variable. - (gnus-article-treat-fold-headers): New command and keystroke. - - * gnus-sum.el (gnus-dead-summary-mode-map): Clean up. - (gnus-dead-summary-mode-map): Bind q to bury-buffer. - -2002-01-01 ShengHuo ZHU - - * message.el (message-fcc-externalize-attachments): New variable. - (message-do-fcc): Use it. - - * gnus-msg.el (gnus-gcc-externalize-attachments): New variable. - (gnus-inews-do-gcc): Use it. - - * mml.el (mml-tweak-sexp-alist): New variable. - (mml-externalize-attachments): New variable. - (mml-tweak-part): Use mml-tweak-sexp-alist. - (mml-tweak-externalize-attachments): New function. - -2002-01-01 Steve Youngs - - * gnus-xmas.el (gnus-xmas-article-display-xface): Uncomment - 'set-glyph-face' so x-face back/foreground can be set. - -2001-12-31 ShengHuo ZHU - - * message.el (message-fix-before-sending): Fix a typo. - -2002-01-01 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-treat-smiley): Renamed command. - (gnus-article-remove-images): New command and keystroke. - - * gnus-sum.el (gnus-summary-toggle-smiley): Removed. - - * smiley-ems.el (gnus-smiley-display): Removed. - - * gnus.el (gnus-version-number): Update version. - - * message.el (message-text-with-property): Renamed and moved - here. - (message-fix-before-sending): Highlight invisible text and place - point there. - -2002-01-01 02:32:53 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.04 is released. - -2002-01-01 Lars Magne Ingebrigtsen - - * gnus-delay.el (gnus-delay-send-queue): Renamed. - - * gnus-art.el (gnus-ignored-headers): More headers, - - * ietf-drums.el (ietf-drums-parse-addresses): Use `error' instead - of `scan-error', since XEmacs doesn't seem to support that. - -2001-12-31 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-best-unread-article): Take a prefix - arg. - (gnus-summary-best-unread-subject): Ditto. - (gnus-summary-best-unread-subject): No, don't. - (gnus-summary-better-unread-subject): New command. - - * gnus-xmas.el (gnus-xmas-put-image): Insert the string itself. - - * lpath.el ((featurep 'xemacs)): fbind url function. - - * gnus-xmas.el (gnus-xmas-article-display-xface): Use data, not - buffer. - (gnus-xmas-remove-image): Implementation that does something. - (gnus-xmas-article-display-xface): Mark images properly. - - * gnus-art.el (gnus-mime-print-part): Use mm-temp-directory. - -2001-12-31 Florian Weimer - - * gnus.el (gnus): Warn if trying to run Gnus un-byte-compiled. - -2001-12-31 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-line-format): Added %O to the default - value. - - * gnus-util.el (gnus-text-with-property): The smallest point is - point-min. - - * smiley-ems.el (smiley-region): Return images. - (gnus-smiley-display): Allow toggling. - (smiley-region): Use text properties, not overlays. - - * gnus-xmas.el (gnus-xmas-remove-image): New function, not - implemented yet. - - * smiley-ems.el (smiley-update-cache): Check for valid types. - - * gnus-art.el (gnus-with-article-buffer): New macro. - - * gnus-picon.el (gnus-picon-transform-newsgroups): Keep the - strings as well as the glyphs. - (gnus-picon-transform-address): Ditto. - (gnus-picon-insert-glyph): Ditto. - (gnus-picon-transform-newsgroups): Toggle. - (gnus-picon-transform-address): Toggle. - - * gnus-ems.el (gnus-remove-image): New function. - (gnus-put-image): Take an optional string. - - * gnus-util.el (gnus-text-with-property): New function. - - * gnus-art.el (gnus-delete-images): New function. - - * gnus-ems.el (gnus-article-display-xface): Mark and store image. - - * gnus-art.el (gnus-article-wash-status-entry): Renamed. - (gnus-article-wash-status): Use it. - (gnus-signature-toggle): Clean up. - (gnus-add-wash-status): New function. - (gnus-delete-wash-status): New function. - (gnus-article-hide-text-type): Use them throughout. - (gnus-add-image): New function. - - * gnus-ems.el (gnus-article-display-xface): Use new interface. - - * gnus-xmas.el (gnus-xmas-article-display-xface): Use new - interface. - - * gnus-art.el (article-display-x-face): Cleaned up. - - * rfc2047.el (rfc2047-field-value): New function. - - * mail-parse.el (mail-header-field-value): New alias. - - * gnus-art.el (gnus-mime-print-part): Fix typos. - - * smiley-ems.el (gnus-smiley-file-types): New variable. - (smiley-update-cache): Use it. - (smiley-regexp-alist): Suffix-less smiley names. - (smiley-regexp-alist): Added more smileys. - - * gnus-sum.el (gnus-print-buffer): Made into own function. - (gnus-summary-print-article): Use it. - - * mailcap.el (mailcap-mime-info): Actually return the bit that we - looked for when REQUEST is a string. - - * gnus-art.el (gnus-mime-button-commands): Add printing - keystroke. - (gnus-mime-copy-part): Doc fix. - (gnus-mime-print-part): New command. - -2001-12-31 Simon Josefsson - - * imap.el (imap-parse-fetch): Notice empty flags responses. From - Nic Ferrier . - -2001-12-30 ShengHuo ZHU - - * gnus-picon.el (gnus-treat-from-picon): Autoload. - (picon): Fix doc. - - * gnus-win.el (gnus-window-to-buffer): gnus-picon-buffer-name no - longer exists. Remove those codes. - * gnus.el (gnus-use-picons): Ditto. - -2001-12-30 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-treat-fold-newsgroups): Don't - infloop. - - * gnus-sum.el (t): New `W D' map. - - * gnus-art.el (gnus-treat-fold-newsgroups): New variable. - (gnus-article-treat-body-boundary): Clean up. - (gnus-body-boundary-face): Removed. - (gnus-article-goto-header): Moved here. - (gnus-article-goto-header): Allow better regexps. - (gnus-article-treat-fold-newsgroups): New command. - - * gnus-sum.el (gnus-summary-move-article): We have to select an - article to give `gnus-read-move-group-name' an opportunity to - suggest an appropriate default. - - * rfc2047.el (rfc2047-fold-line): New function. - (rfc2047-unfold-line): Ditto. - (rfc2047-fold-region): Don't fold just after the header name. - - * mail-parse.el (mail-header-fold-line): New alias. - (mail-header-unfold-line): Ditto. - - * gnus-art.el (gnus-body-boundary-face): Renamed. - (gnus-article-treat-body-boundary): Use it. - (gnus-article-treat-body-boundary): Use an invisible header and a - line of underline characters. - -2001-12-30 ShengHuo ZHU - - * ietf-drums.el (ietf-drums-parse-addresses): Recover from errors. - - * gnus-picon.el (gnus-picon-transform-address): Skip bad addresses. - (gnus-picon-split-address): New function. - (gnus-picon-find-face): Use it. - (gnus-picon-transform-address): Use it. Set first to t for each - address. - - * gnus-art.el (gnus-with-article-headers): Move to here. Define - the macro then use it. - (gnus-treatment-function-alist): Treat picons earlier. - -2001-12-30 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-body-separator-face): New variable. - (gnus-article-treat-body-boundary): Use a blank, colored line. - - * gnus-picon.el (gnus-picon-find-face): Look into misc/MISC as - well. - - * gnus-art.el (gnus-treat-body-boundary): New variable. - (gnus-article-treat-unfold-headers): Use helper macro. - (gnus-article-treat-body-boundary): New command. - - * gnus.el (gnus-logo-color-style): Change the default color. - (gnus-splash-face): Gray, gray. - - * gnus-xmas.el (gnus-xmas-group-startup-message): Use general - colors. - - * gnus.el (gnus-logo-color-alist): Moved here and renamed. - (gnus-logo-color-style): Ditto. - (gnus-logo-colors): Ditto. - - * gnus-picon.el (gnus-picon-create-glyph): Cache glyphs. - - * gnus-art.el (gnus-treat-newsgroups-picon): New variable. - - * gnus-picon.el (gnus-treat-newsgroups-picon): New function. - (gnus-picon-transform-newsgroups): New function. - - * ietf-drums.el (ietf-drums-parse-addresses): Accept a nil - string. - - * gnus-picon.el (gnus-treat-mail-picon): Renamed. - - * gnus-art.el (gnus-treat-cc-picon): New variable. - (gnus-treat-mail-picon): Renamed. - - * gnus-picon.el: New implementation. - (gnus-picon-find-face): Renamed. - (gnus-treat-from-picon): Use it. - (gnus-picon-transform-address): Renamed. - (gnus-treat-from-picon): Use it. - (gnus-picon-create-glyph): Renamed. - (gnus-picon-transform-address): Use it. - (gnus-treat-cc-picon): New command. - - * mm-decode.el (mm-create-image-xemacs): Separated out into - function. - (mm-get-image): Use it. - - * gnus-art.el (gnus-treat-display-picons): Simplify. - (gnus-treat-from-picon): Renamed. - - * gnus-ems.el (gnus-create-image): New function. - (gnus-put-image): New function. - - * gnus-art.el (gnus-article-treat-unfold-headers): Doc fix. - (gnus-with-article-headers): New macro. - (gnus-article-goto-header): New function. - - * gnus-xmas.el (gnus-image-type-available-p): New function. - - * gnus-ems.el (gnus-image-type-available-p): New function. - -2001-12-30 ShengHuo ZHU - - * nnrss.el (nnrss-check-group): Find the correct tag, because - xml.el is changed. - -2001-12-30 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-treat-unfold-headers): Only fold when - lines are shorter than the window width. - (gnus-ignored-headers): More headers. - -2001-12-29 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-treat-unfold-lines): New variable. - (gnus-treat-unfold-headers): Renamed. - (gnus-article-treat-unfold-headers): New command and keystroke. - - * rfc2047.el (rfc2047-encode-message-header): Clean up. - - * gnus-int.el (gnus-open-server): Mark quit-ed server as denied. - -2001-12-29 ShengHuo ZHU - - * sha1-el.el (sha1-use-external): New variable. - (sha1-region): Use it. - (sha1-string): Ditto. - - * dgnushack.el (dgnushack-compile): Compile gnus-picon for Emacs. - * gnus-picon.el: Less warnings when compile. - -2001-12-29 Lars Magne Ingebrigtsen - - * gnus-picon.el (gnus-picons-news-directories): Removed obsolete - alias. - (gnus-picons-database): Default to list. - (gnus-picons-lookup-internal): Use it. - - * nnmail.el (nnmail-article-group): Default nnmail-split-methods - to "bogus". - - * gnus-win.el (gnus-configure-windows-hook): New hook. - -2001-12-29 Sascha L,A|(Bdecke - - * gnus-win.el (gnus-configure-windows): Minimize tree buffer. - -2001-12-29 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-update-marks): Don't uncompress the seen - lists. - (gnus-select-newsgroup): Don't append; push. - (gnus-adjust-marked-articles): Remove obsolete ranges from - `seen'. - (gnus-update-marks): Clean up. - (gnus-select-newsgroup): Don't stomp gnus-newsgroup-seen. - -2001-12-29 Frank Schmitt - - * gnus-sum.el (gnus-summary-limit-to-age): Allow negative days. - -2001-12-29 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-auto-select-subject): New variable. - (gnus-summary-best-unread-subject): New function. - (gnus-summary-best-unread-article): Use it. - (gnus-summary-first-unseen-subject): New function and command. - - * gnus-art.el (gnus-treatment-function-alist): Emphasize after - other treatments. - - * gnus-util.el (gnus-put-overlay-excluding-newlines): New - function. - - * gnus-art.el (gnus-article-show-hidden-text): Remove the type - from the list of hidden types. - - * mm-view.el (mm-inline-text): Ditto. - (mm-inline-text): Ditto. - (mm-w3-prepare-buffer): Ditto. - - * gnus-art.el (article-wash-html): Inhibit more remote fetching. - -2001-12-29 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-ignored-headers): Added more headers. - -2001-12-29 Jesper Harder - - * gnus-srvr.el (gnus-browse-foreign-server): Compute the prefix - once. - -2001-12-29 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-server-browse-in-group-buffer): Doc fix. - -2001-12-28 Simon Josefsson - - * gnus-srvr.el (gnus-browse-foreign-server): Fix typo. From - Jesper Harder . - -2001-12-27 Simon Josefsson - - * gnus-sum.el (gnus-select-newsgroup): Make - `gnus-newsgroup-unseen' sorted. Make `gnus-newsgroup-unseen' - contain all articles (instead of none) when no seen marks have - been set for the group. - (gnus-update-marks): Use `gnus-range-add' on a uncompressed list - instead, it seems to result in shorter ranges. - -2001-12-26 11:00:00 ShengHuo ZHU - - * mm-util.el (mm-iso-8859-x-to-15-region): Use - insert-before-markers. - From Jesper Harder - -2001-12-26 Paul Jarc - - * nnmaildir.el (nnmaildir-save-mail): create the destination - groups if they do not exist. - -2001-12-26 Katsumi Yamaoka - - * canlock.el (canlock-sha1-with-openssl): Remove unused variable. - -2001-12-22 22:00:00 ShengHuo ZHU - - * gnus-group.el (gnus-group-read-ephemeral-group): Call - gnus-group-real-name. - - * gnus-sum.el (gnus-decode-encoded-word-methods): Backslash paren. - (gnus-newsgroup-variables): Ditto. - - * gnus.el (gnus-group-prefixed-name): If group name is prefixed, - return it. - -2001-12-21 Paul Jarc - - * gnus.el (gnus-valid-select-methods): Include nnmaildir. - * nnmaildir.el (top-level): Add commentary. - (nnmaildir-version): Indicate that nnmaildir is now a standard - part of Gnus, not separately released. - -2001-12-21 08:00:00 ShengHuo ZHU - - * gnus-art.el, gnus-picon.el, gnus-sieve.el, gnus-sum.el: - * gnus-xmas.el, imap.el, mailcap.el, mm-util.el, nnfolder.el: - * nnheader.el, nnmail.el: Nil/NIL vs. nil. - From Pavel Jan,Am(Bk - -2001-12-20 15:00:00 ShengHuo ZHU - - * nnmaildir.el: Copyright changes. Require cl only at compile time. - -2001-12-20 Simon Josefsson - - * nnimap.el (top-level): Don't require cl. Suggested by ShengHuo - ZHU . - (nnimap-close-group): Don't quote KEYLIST items. Suggested by - Brian P Templeton . - -2001-12-19 17:00:00 ShengHuo ZHU - - * nnmaildir.el: New file. - From Paul Jarc . - -2001-12-19 16:00:00 ShengHuo ZHU - - * nndoc.el (nndoc-type-alist): Move forward to the end. - -2001-12-19 Katsumi Yamaoka - - * gnus.el (gnus-find-subscribed-addresses): Replace `mapc' with - `dolist'. - -2001-12-19 01:00:00 ShengHuo ZHU - - * gnus-win.el (gnus-frames-on-display-list): New function. - (gnus-get-buffer-window): Use it. - -2001-12-19 00:00:00 ShengHuo ZHU - - * nnwarchive.el (nnwarchive-mail-archive-xover): Fix the regexp. - -2001-12-18 11:00:00 ShengHuo ZHU - - * gnus-win.el (gnus-get-buffer-window): Use gnus-delete-if. - -2001-12-18 11:00:00 ShengHuo ZHU - From Harald Meland - - * gnus-win.el (gnus-get-buffer-window): New function. - (gnus-all-windows-visible-p): Use it. - - * gnus-util.el (gnus-horizontal-recenter) - (gnus-horizontal-recenter, gnus-horizontal-recenter) - (gnus-horizontal-recenter, gnus-set-window-start): Use it. - - * gnus-score.el (gnus-score-insert-help): Use it. - - * gnus-salt.el (gnus-tree-recenter, gnus-generate-tree) - (gnus-generate-tree, gnus-highlight-selected-tree) - (gnus-highlight-selected-tree, gnus-tree-highlight-article): Use - it. - - * gnus-art.el (gnus-article-set-window-start) - (gnus-mm-display-part, gnus-request-article-this-buffer) - (gnus-button-next-page, gnus-button-prev-page) - (gnus-article-button-next-page, gnus-article-button-prev-page): - Use it. - -2001-12-18 Josh Huber - - * ChangeLog, ChangeLog.1, nnwfm.el, smiley.el: - * gnus-cite.el, gnus-delay.el, gnus-spec.el, message.el: - * mml1991.el, nnultimate.el: Removed buffer-file-coding-system tag. - -2001-12-18 01:00:00 ShengHuo ZHU - - * ChangeLog, ChangeLog.1, nnwfm.el, gnus-smiley.el: - * gnus-cite.el, gnus-delay.el, gnus-spec.el, message.el: - * mml1991.el, nnultimate.el: Add `coding'. - -2001-12-17 Josh Huber - - * ChangeLog: changed coding to buffer-file-coding-system - * ChangeLog.1: same - * nnwfm.el: same - * gnus-smiley.el: same - * gnus-cite.el: moved -*- magic cookie -*- to Local Variables - * gnus-delay.el: same - * gnus-spec.el: same - * message.el: same - * mml1991.el: same - * nnultimate.el: same - -2001-12-16 Simon Josefsson - Inspired by code by Dirk Meyer . - - * gnus-sum.el (gnus-summary-muttprint-program): New variable. - (gnus-summary-save-map): Add muttprint. - (gnus-summary-make-menu-bar): Ditto. - (gnus-summary-muttprint): New function. - - * gnus-art.el (gnus-summary-pipe-to-muttprint): New function. - -2001-12-14 11:00:00 ShengHuo ZHU - - * uudecode.el (uudecode-decode-region-internal): Speedup by using - temporary list instead of buffer. - - * mm-url.el (executable-find): autoload. - -2001-12-12 Pavel Jan,Am(Bk - - * gnus-mlspl.el (gnus-group-split-fancy): Doc fix (add reference - to variable, follow doc-string conventions). - -2001-12-13 Josh Huber - - * gnus-cus.el (gnus-extra-topic-parameters): added topic parameter - subscribe-level - * gnus-topic.el (gnus-subscribe-topics): use it. - -2001-12-13 22:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-summary-mail-forward): Forward all marked - messages. (A small patch with indentation) - From Sean Neakums . - - * gnus-uu.el (gnus-uu-grab-articles): Set gnus-current-article to - nil after shooting down the gnus-original-article-buffer. - -2001-12-13 20:00:00 ShengHuo ZHU - - * uudecode.el (uudecode-use-external): New variable. - (uudecode-decode-region): Automatically detect external program. - - * binhex.el (binhex-use-external): New variable. - (binhex-decode-region-internal): New function. - (binhex-decode-region): Automatically detect external program. - - * mm-uu.el (mm-uu-decode-function,mm-uu-binhex-decode-function): - Use them. - -2001-12-12 Simon Josefsson - - * nnvirtual.el (nnvirtual-always-rescan) - (nnvirtual-component-regexp): Fix doc. - - * nnoo.el (defvoo): Add doc to defvoo variables. - - * nnml.el (nnml-directory, nnml-active-file) - (nnml-newsgroups-file, nnml-get-new-mail, nnml-nov-is-evil) - (nnml-marks-is-evil, nnml-filenames-are-evil) - (nnml-prepare-save-mail-hook, nnml-inhibit-expiry): Fix doc. - - * nnmh.el (nnmh-directory, nnmh-get-new-mail) - (nnmh-prepare-save-mail-hook, nnmh-be-safe): Fix doc. - (nnmh-possibly-change-directory): Use `nnheader-report' instead of - `error'. - - * nnmbox.el (nnmbox-mbox-file, nnmbox-active-file) - (nnmbox-get-new-mail, nnmbox-prepare-save-mail-hook): - - * nnfolder.el (nnfolder-directory, nnfolder-active-file) - (nnfolder-newsgroups-file, nnfolder-get-new-mail) - (nnfolder-save-buffer-hook, nnfolder-inhibit-expiry) - (nnfolder-nov-is-evil, nnfolder-marks-is-evil): Fix doc. - - * nnbabyl.el (nnbabyl-mbox-file, nnbabyl-active-file) - (nnbabyl-get-new-mail, nnbabyl-prepare-save-mail-hook): Fix doc. - - * imap.el, nnimap.el: Fix indentation. - - * gnus-sieve.el (gnus-sieve-article-add-rule): Autoload it. - -2001-12-12 Didier Verna - - * gnus-msg.el (gnus-group-news): New function. - * gnus-group.el (gnus-group-mode-map): bind it to `i'. - * gnus-group.el (gnus-group-make-menu-bar): add a menu item for it. - * gnus-salt.el (gnus-carpal-group-buffer-buttons): add a button - for it. - * gnus-msg.el (gnus-summary-news-other-window): New function. - * gnus-msg.el ((gnus-summary-send-map "S" gnus-summary-mode-map)): - bind it to `i'. - * gnus-sum.el (gnus-summary-mode-map): bind it to `i'. - * gnus-sum.el (gnus-summary-make-menu-bar): add a menu item for it. - * gnus-salt.el (gnus-carpal-summary-buffer-buttons): add a button - for it (called with a prefix). - * gnus-msg.el (gnus-configure-posting-styles): add an optional - group-name argument. - * gnus-msg.el (gnus-setup-message): use it. - -2001-12-12 00:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-show-article): Fix doc. - -2001-12-10 17:00:00 ShengHuo ZHU - - * mml.el (mime-to-mml): Remove Content-Disposition too. - -2001-12-09 08:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-buffer-name): Decode group name. - * gnus-group.el (gnus-group-name-decode): Decode unibyte - strings only. - From TSUCHIYA Masatoshi - -2001-12-08 Nevin Kapur - - * nnmail.el (nnmail-fancy-expiry-targets): New variable. - (nnmail-fancy-expiry-target): Use it. - Suggestions from Simon Josefsson . - -2001-12-07 14:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-show-article): Recount lines if not exist. - -2001-12-07 10:00:00 ShengHuo ZHU - - * nnwfm.el (nnwfm-create-mapping): Use gnus-url-unhex-string. - - * gnus-util.el (gnus-url-unhex-string): Move here. - -2001-12-07 09:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-decode-entities-unibyte-string): Use - mm-url-decode-entities-nbsp. - - * nnlistserv.el, nnultimate.el, nnwarchive.el, nnweb.el: - * webmail.el, nnwfm.el: Use mm-url. - - * mm-url.el (mm-url-fetch-form): Move from nnweb. - (mm-url-remove-markup): Move from nnweb. - (mm-url-fetch-simple): Move from webmail. - - * nnslashdot.el (nnslashdot-request-post): Use mm-url-fetch-form. - -2001-12-07 01:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-print-truncate-and-quote): New function. - (gnus-summary-print-article): Use it. - - * gnus-util.el (gnus-replace-in-string): Typo. - -2001-12-06 10:00:00 ShengHuo ZHU - - * nnweb.el (nnweb-replace-in-string): Removed. - - * gnus-util.el (gnus-replace-in-string): New function. - (gnus-mode-string-quote): Use it. - - * nnrss.el (nnrss-format-string): Use gnus-replace-in-string. - * nnwfm.el (nnwfm-create-mapping): Ditto. - -2001-12-06 01:00:00 ShengHuo ZHU - - * dgnushack.el (dgnushack-compile): nnrss.el and - nnslashdot.el don't depend on nnweb, url, w3. - - * nnrss.el: Use mm-url. - -2001-12-06 00:00:00 ShengHuo ZHU - - * mm-url.el (mm-url-insert-file-contents): Support file:. - -2001-12-05 14:00:00 ShengHuo ZHU - - * mm-view.el: Lower case for the description line. Sync from the - Emacs CVS. - -2001-12-05 12:00:00 ShengHuo ZHU - - * gnus-group.el (gnus-group-find-new-groups): Fix doc. - From: Stefan Monnier - -2001-12-05 Katsumi Yamaoka - - * mm-view.wl (mm-inline-text): Decode a charset-encoded rich text. - -2001-12-04 08:00:00 ShengHuo ZHU - - * mm-url.el: Require executable. - Suggested by Katsumi Yamaoka . - -2001-12-03 11:00:00 ShengHuo ZHU - - * pop3.el (pop3-munge-message-separator): Only use valid date. - Trivial patch from Michael Welsh Duggan . - - * Makefile.in: gnus-load.elc may not be generated. - -2001-12-03 09:00:00 ShengHuo ZHU - - * mm-url.el: New file. - * nnslashdot.el: Use it. - * mm-extern.el (mm-extern-url): Use it. - -2001-12-01 15:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-save-article): Nix - gnus-display-mime-function and gnus-article-prepare-hook. - - * gnus-spec.el (gnus-parse-complex-format): Properly handle %C at - the beginning of lines. - (gnus-complex-form-to-spec): Ditto. - -2001-12-01 08:00:00 ShengHuo ZHU - - * message.el (message-make-mft): Fix the m-s-a-file regexp. - From Paul Jarc . - -2001-11-30 21:00:00 ShengHuo ZHU - - * message.el: New variable message-subscribed-address-file; - use it in message-make-mft. From Paul Jarc . - -2001-11-30 12:00:00 ShengHuo ZHU - - * message.el (message-tab-body-function): Set to nil. - (message-tab): Use text-mode-map or global-map. - Suggested by Kai Gro,b_(Bjohann . - -2001-11-30 Simon Josefsson - - * gnus-agent.el (gnus-agent-fetch-headers): Use gnus-range-add - instead of gnus-union, for speed. Suggested by Christoph Conrad - . - (gnus-agent-fetch-group-1): Add verbose message. - -2001-11-29 12:00:00 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-write-active): Make sure sym is a cons - of integers. - -2001-11-29 Kai Gro,b_(Bjohann - - * message.el (message-newgroups-header-regexp) - (message-completion-alist, message-tab-body-function): Use - defcustom rather than defvar. - (message-tab): Mention `message-tab-body-function' in doc. - Suggested by Karl Eichwalder. - -2001-11-28 16:00:00 ShengHuo ZHU - - * gnus-uu.el (gnus-uu-save-article): Use #part instead of #mml. - -2001-11-28 12:00:00 ShengHuo ZHU - - * nnheader.el (nnheader-find-nov-line): Don't use macro - gnus-delete-line. - - * gnus-group.el (gnus-group-name-decode): Defun instead of defsubst. - (gnus-group-name-charset): Ditto. - - * gnus-util.el (gnus-buffer-live-p): Ditto. - -2001-11-28 11:00:00 ShengHuo ZHU - - * sieve-manage.el (sieve-manage-stream-alist): Backslash before - open parenthesis in doc. - (sieve-manage-authenticator-alist): Typo in doc. - * imap.el (imap-authenticator-alist): Typo in doc. - (imap-stream-alist): Backslash. - - * gnus-sum.el (gnus-summary-limit-to-author): Missing arguments. - Thanks to david.goldberg6@verizon.net (David S. Goldberg) - -2001-11-27 14:00:00 ShengHuo ZHU - - * gnus-topic.el (gnus-topic-mode): Add LOCAL for add-hook. - - * message.el (message-mode): make-local-hook is harmless in Emacs 21. - - * gnus-msg.el (gnus-configure-posting-styles): use - make-local-hook. Add LOCAL for add-hook. - -2001-11-27 Per Abrahamsen - - * message.el (message-mode): Use `make-local-hook' unless - obsolete. - Patch by Katsumi Yamaoka . - -2001-11-26 Katsumi Yamaoka - - * canlock.el: Remove sha1.el and base64.el stuff. - -2001-11-26 Didier Verna - - * nnmbox.el (nnmbox-create-mbox): create the mbox file directory - if needed. - -2001-11-21 Katsumi Yamaoka - - * message.el (message-tamago-not-in-use-p): New function. - (message-strip-forbidden-properties): Use it. - -2001-11-26 Didier Verna - - * gnus-start.el (gnus-check-first-time-used): only check for - existence of .el[d] files. - -2001-11-25 15:00:00 ShengHuo ZHU - - * mm-util.el (mm-coding-system-priorities): Add backslash in the doc. - - * message.el (message-setup-1): Clean up mc-*. - -2001-11-25 09:00:00 ShengHuo ZHU - - * gnus-util.el (gnus-directory-sep-char-regexp): New variable. - * gnus-score.el (gnus-score-find-bnews): Use it. - - * gnus-sum.el (gnus-summary-limit-to-subject): An exclusion version. - (gnus-summary-limit-to-author): Ditto. - (gnus-summary-limit-to-extra): Ditto. - (gnus-summary-find-matching): Support not-matching argument. - -2001-11-25 Kai Gro,b_(Bjohann - - * message.el (message-wash-subject): Use `insert' rather than - `insert-string', which is deprecated. - -2001-11-24 Simon Josefsson - - * mm-encode.el (mm-encode-content-transfer-encoding): Fix error - message. (Gnus does not "default" to using 8bit for the message, - it default to use 8bit encoding and the user-supplied CTE - value. Calling this behaviour "treating it as 8bit" is perhaps - better.) - - * mm-bodies.el (mm-body-encoding): Intern encoding if needed - (compare mm-charset-to-coding-system). - -2001-11-23 02:00:00 ShengHuo ZHU - - * canlock.el (canlock-sha1-with-openssl): Use unibyte - buffer. Correctly decode hex. - -2001-11-21 01:00:00 ShengHuo ZHU - - * gnus-agent.el (gnus-category-insert-line): Convert category - names to strings. - -2001-11-20 21:00:00 ShengHuo ZHU - - * message.el (sha1): eval-and-compile. - -2001-11-20 Simon Josefsson - - * message.el (message-allow-no-recipients): New variable. - (message-send): Use it, customize the prompting when posting to - Gcc/Fcc alone. From prj@po.cwru.edu (Paul Jarc). - -2001-11-20 09:00:00 ShengHuo ZHU - - * mm-util.el (mm-coding-system-priorities): New variable. - (mm-sort-coding-systems-predicate): New function. - (mm-find-mime-charset-region): Resort coding systems if needed. - Suggested by Katsumi Yamaoka . - -2001-11-20 Didier Verna - - * gnus-group.el (gnus-group-make-help-group): new optional - argument to control the error behavior. - * gnus-start.el (gnus-check-first-time-used): use it to avoid - erroring. - -2001-11-19 Simon Josefsson - - * message.el (message-mode-map): Use C-c C-f C-i for Importance: - instead of C-c C-u. Suggested by Per Abrahamsen - . - -2001-11-18 08:00:00 ShengHuo ZHU - - * nnfolder.el (nnfolder-read-folder): Use group instead of - nnfolder-current-group. - Suggested by Lorentey Karoly . - -2001-11-17 Simon Josefsson - - * message.el (message-send): Ask user if Fcc/Gcc should be - performed when no other sender was specified. - Suggested by prj@po.cwru.edu (Paul Jarc). - -2001-11-17 Simon Josefsson - - * message.el (message-mode, message-mode-map): Use C-c C-u for - Importance: instead of C-c C-p (used by SC). - -2001-11-16 Simon Josefsson - - * message.el (message-insert-importance-high) - (message-insert-importance-low): Save point. - - * mail-source.el (mail-source-fetch-imap): Fix BODY.PEEK return - value. - -2001-11-16 Per Abrahamsen - - * message.el (message-strip-special-text-properties): New option. - (message-strip-forbidden-properties): Obey it. - -2001-11-14 Sam Steingold - - * gnus-score.el: Fixed some doc strings to properly quote symbols. - -2001-11-15 Simon Josefsson - - Support "Importance:" header in Message. - - * message.el (message-mode-map): Bind C-c C-p to - `message-insert-or-toggle-importance' - (message-mode-menu): Add message-insert-importance-{high,low}. - (message-insert-importance-high, message-insert-importance-low) - (message-insert-or-toggle-importance): New functions. - (message-tool-bar-map): Add {un,}important. - (message-mode): Doc fix. - -2001-11-15 Simon Josefsson - - * message.el (message-tool-bar-map): Fix attach toolbar tooltip. - - * mml.el (mml-menu): Fix toolbar tooltip. - -2001-11-15 14:00:00 ShengHuo ZHU - - * nnfolder.el (nnfolder-save-marks): gnus-prin1 takes one argument. - * nnml.el (nnml-save-marks): Ditto. - - * gnus-sum.el (gnus-newsgroup-variables): Fix doc. - -2001-11-15 Simon Josefsson - - * nnml.el (nnml-save-marks): - * nnfolder.el (nnfolder-save-marks): Use `gnus-prin1'. - Suggested by Istvan Marko . - -2001-11-15 Per Abrahamsen - - * gnus-art.el (gnus-article-wash-status-strings): Use - `copy-sequence', not `copy-seq'. - -2001-11-15 Per Abrahamsen - - * gnus-art.el (gnus-article-wash-status-strings): New constant. - (gnus-gnus-article-wash-status-entry): New function. - (gnus-article-wash-status): Use it. - -2001-11-13 10:00:00 ShengHuo ZHU - - * mml1991.el: Add coding header. - -2001-11-12 Simon Josefsson - - * mml1991.el (mml1991-use, mml1991-function-alist): New variables. - (mml1991-gpg-sign, mml1991-gpg-encrypt): Renamed, from - `mml1991-sign' and `mml1991-encrypt'. - (mml1991-encrypt, mml1991-sign): New glue functions. - (mml1991-mailcrypt-sign, mml1991-mailcrypt-encrypt): New functions. - - * mml.el (mml-mode-map): `C-c RET o' map for PGP. - (mml-menu): Add PGP to menu. - - * mml-sec.el (top-level): Require mml1991. Don't require smime. - (mml-sign-alist, mml-encrypt-alist): Add "pgp". - (mml-pgp-sign-buffer, mml-pgp-encrypt-buffer) - (mml-secure-sign-pgp, mml-secure-encrypt-pgp): New glue functions. - - * mml2015.el: Mention RFC 3156. - - * mml1991.el: New file. From Sascha L,A|(Bdecke . - -2001-11-12 13:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-auto-subscribed-groups): Use ^nnml. - - * gnus-sum.el (gnus-summary-move-article): Use number-to-string. - From - -2001-11-11 Simon Josefsson - - * message.el (top-level): Autoload sha1. - (message-canlock-generate): Use sha1 instead of md5 (sha1 used by - canlock, no need to require two different hash algs). Suggested - by Ferenc Wagner . - -2001-11-09 Simon Josefsson - - * gnus.el (gnus-local-domain): Fix doc. From Pavel Jan,Am(Bk - . - -2001-11-09 Kai Gro,b_(Bjohann - - * message.el (message-point-in-header-p): New function. - (message-do-auto-fill): Use it. - (message-beginning-of-line): New function. Goes to beginning of - header value (i.e., end of header name), or to beginning of line - if already at beginning of value. Behaves like - `beginning-of-line' when in message body. - (message-mode-map): Bind it. - -2001-11-08 Simon Josefsson - - * gnus-msg.el (gnus-posting-styles): Add doc. - -2001-11-07 Simon Josefsson - - * gnus-sieve.el (gnus-sieve-generate): Don't invoke sieve-mode. - - * sieve-mode.el (sieve-control-commands-face) - (sieve-control-commands-face, sieve-action-commands-face) - (sieve-test-commands-face, sieve-tagged-arguments-face): New - faces. - (sieve-font-lock-keywords): Use them. - (sieve-mode): Only set font-lock-defaults in emacs. - - * gnus-art.el (gnus-default-article-saver): Add - gnus-summary-save-body-in-file. - (gnus-summary-write-to-file): Fix doc. - -2001-11-07 Simon Josefsson - - * gnus-art.el (gnus-treat-highlight-signature): Add cross - reference to the correct chapter in the manual. - - * mml.el (mml-mode): Add cross reference to Emacs MIME manual. - Suggested by "Golubev I. N." . - -2001-11-07 06:00:00 ShengHuo ZHU - - * mml.el (mml-preview): Bind mail-header-separator. - -2001-11-07 Katsumi Yamaoka - - * message.el: Always require canlock. - (message-ignored-supersedes-headers): Include Cancel-Lock and - Cancel-Key. - (message-insert-canlock): Don't require canlock. - (message-cancel-news): Don't check whether canlock is available. - (message-supersede): Support cancel-locks. - - * gnus-art.el: Don't autoload canlock. - -2001-11-06 18:00:00 ShengHuo ZHU - - * mail-source.el (mail-source-fetch-imap): ASYNC param. - From: - -2001-11-06 10:00:00 ShengHuo ZHU - - * many files: Fix copyright lines. - -2001-11-05 07:00:00 ShengHuo ZHU - - * mml.el (mml-generate-mime-1): Use mm-with-unibyte-current-buffer. - Suggested by Dave Love . - -2001-11-04 10:00:00 ShengHuo ZHU - - * message.el (message-kill-buffer): Remove auto-save file after - confirm. - - * message.el (message-send-mail): Call message-generate-headers - once. Suggested by Matt Armstrong . - - * gnus-topic.el (gnus-topic-rename): Initial-input. - Suggested by Katsuhiro Hermit Endo . - -2001-11-03 Per Abrahamsen - - * message.el (message-forbidden-properties): New constant. - (message-strip-forbidden-properties): New function. - (message-mode): Activate it. - -2001-11-02 17:00:00 ShengHuo ZHU - - * mm-util.el (mm-iso-8859-15-compatible): Fix doc. - (mm-hack-charsets): Fix doc. - -2001-11-02 Simon Josefsson - - * gnus-int.el (gnus-check-server): Message "...done" when done. - - * imap.el (imap-close): Don't message (imap-send-command-wait - returns if the connection is dropped). - (imap-wait-for-tag): Nix out message only when necessary. - - * gnus-sieve.el (gnus-sieve-script): Use "stop" instead of "elsif" - for non-crossposting. - (gnus-sieve-crosspost): Default to t to be consistent with other - parts of Gnus. - -2001-11-01 18:00:00 ShengHuo ZHU - - * mm-util.el (mm-iso-8859-15-compatible): Add inconvertible chars. - (mm-iso-8859-x-to-15-table): Ditto. - (mm-iso-8859-x-to-15-region): Ditto. - (mm-find-mime-charset-region): Ditto. - -2001-11-01 Simon Josefsson - - * nnimap.el (nnimap-close-asynchronous): New variable. - (nnimap-close-group): Use it. - (nnimap-expunge): Don't use it. - - * imap.el (imap-callbacks): New variable. - (imap-remassoc): Copied from `gnus-remassoc'. - (imap-add-callback): New function. - (imap-mailbox-expunge, imap-mailbox-close): Support asynchronous - behaviour. - (imap-parse-response): Call the callback. - - * message.el (message-insert-canlock): New variable. - (message-canlock-generate, message-canlock-password) - (message-insert-canlock): New functions. - (message-send-news): Call `message-insert-canlock'. - (top-level): Require canlock when compiling. - (message-insert-canlock): Require canlock before we need it. - -2001-11-01 13:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-copy-article-buffer): Copy sequence. - -2001-11-01 12:00:00 ShengHuo ZHU - - * dgnushack.el (dgnushack-make-load): A workaround for - custom-add-loads bug in some versions of XEmacs. - -2001-11-01 10:00:00 ShengHuo ZHU - - * mm-util.el (mm-charset-synonym-alist): Revert (some). - -2001-11-01 09:00:00 ShengHuo ZHU - - * mm-util.el (mm-iso-8859-x-to-15-region): New function. - (mm-hack-charsets): New variable. - (mm-iso-8859-15-compatible): New variable. - (mm-iso-8859-x-to-15-table): New variable. - (mm-find-mime-charset-region): Add parameter hack-charsets. - - * mm-bodies.el (mm-encode-body): Use it. - * mml.el (mml-parse-1): Ditto. - -2001-11-01 Simon Josefsson - - * gnus-group.el (gnus-group-make-menu-bar): Add Sieve. - -2001-11-01 08:00:00 ShengHuo ZHU - - * mm-util.el (mm-charset-to-coding-system): Return nil, if charset - is nil. - -2001-11-01 07:00:00 ShengHuo ZHU - - * smiley-ems.el (smiley-update-cache): Auto detect file type. - - * message.el (message-forward-rmail-make-body): Use - save-window-excursion. - (message-encode-message-body): Search with noerror. - (message-setup-1): Convert compose-mail send-actions to - message-send-actions. - -2001-11-01 Simon Josefsson - - * sieve.el: Don't require easy-mmode. Suggested by Katsumi Yamaoka - . - -2001-10-31 20:00:00 ShengHuo ZHU - - * sieve-manage.el (sieve-string-bytes): No complain. - -2001-11-01 Simon Josefsson - - * gnus-group.el (gnus-group-mode-map): Bind "D u" to - `gnus-sieve-update' and "D g" to `gnus-sieve-generate'. (Functions - has autoload cookies, so no `require' should be necessary.) - - * sieve.el, sieve-mode.el, sieve-manage.el, gnus-sieve.el: New - files. - -2001-10-31 Simon Josefsson - - * gnus-cus.el (gnus-group-parameters): Support integer `display' - parameter. - - * gnus-sum.el (gnus-select-newsgroup): If group parameter - `display' is a number (and C-u wasn't used to enter group), only - fetch that number of articles. - -2001-10-31 Matt Armstrong - - * gnus.el (gnus-find-subscribed-addresses): Doc fix: - not-subscribed -> subscribed. - -2001-10-31 08:00:00 ShengHuo ZHU - From: Josh Huber - - * message.el (message-subscribed-address-functions): New variable. - (message-subscribed-addresses): New variable. - (message-subscribed-regexps): New variable. - (message-goto-mail-followup-to): New function. - (message-send-mail): Add Mail-Followup-To. - (message-make-mft): New function. - - * gnus.el (gnus-find-subscribed-addresses): New function. - -2001-10-31 07:00:00 ShengHuo ZHU - - * mail-source.el (mail-source-fetch): If debug, don't regain signals. - (mail-source-fetch-pop): Ditto. - (mail-source-check-pop): Ditto. - - * gnus-start.el (gnus-read-init-file): Ditto. - (gnus-activate-group): Ditto. - (gnus-read-newsrc-el-file): Ditto. - -2001-10-30 23:00:00 ShengHuo ZHU - - * message.el (message-get-reply-headers): Make sure there is ", ". - - * mm-util.el (mm-mime-mule-charset-alist): Move down and call - mm-coding-system-p. Don't correct it only in XEmacs. - (mm-charset-to-coding-system): Use mm-coding-system-p and - mm-get-coding-system-list. - (mm-emacs-mule, mm-mule4-p): New variables. - (mm-enable-multibyte, mm-disable-multibyte, - mm-enable-multibyte-mule4, mm-disable-multibyte-mule4, - mm-with-unibyte-current-buffer, - mm-with-unibyte-current-buffer-mule4): Use them. - (mm-find-mime-charset-region): Treat iso-2022-jp. - - From Dave Love : - - * mm-util.el (mm-mime-mule-charset-alist): Make it correct by - construction. - (mm-charset-synonym-alist): Remove windows-125[02]. Make other - entries conditional on not having a coding system defined for - them. - (mm-mule-charset-to-mime-charset): Use - find-coding-systems-for-charsets if defined. - (mm-charset-to-coding-system): Don't use - mm-get-coding-system-list. Look in mm-charset-synonym-alist - later. Add last resort search of coding systems. - (mm-enable-multibyte-mule4, mm-disable-multibyte-mule4) - (mm-with-unibyte-current-buffer-mule4): Just treat Mule 5 like - Mule 4. - (mm-find-mime-charset-region): Re-write. - (mm-with-unibyte-current-buffer): Restore buffer as well as - multibyteness. - -2001-10-30 21:00:00 ShengHuo ZHU - - * canlock.el, sha1-el.el, hex-util.el: Move from contrib - directory. Thanks to Katsumi Yamaoka and Shuhei - KOBAYASHI . - -2001-10-30 20:00:00 ShengHuo ZHU - - * gnus-art.el (article-display-x-face): Nix buffer-read-only - again. - - * mml2015.el (mml2015-gpg-verify): Convert to . - -2001-10-30 13:00:00 ShengHuo ZHU - - * gnus-spec.el (gnus-parse-simple-format): Use - buffer-substring-no-properties. - -2001-10-30 Katsumi Yamaoka - - * gnus-art.el (article-verify-cancel-lock): New function. - - * nnheader.el (nntp-process-response): New variable. - (nnheader-init-server-buffer): Make `nntp-process-response' - buffer-local in `nntp-server-buffer'. - - * nntp.el (nntp-prepare-post-hook): New hook. - (nntp-wait-for): Save a server's ID in `nntp-process-response'. - (nntp-async-trigger): Ditto. - (nntp-request-post): Insert a server's ID if there's no Message-ID - header; run `nntp-prepare-post-hook'. - -2001-10-30 04:00:00 ShengHuo ZHU - - * gnus-art.el (article-decode-group-name): Use nnmail-fetch-field - instead. - - * message.el (message-forward-subject-author-subject): Don't use - message-news-p, which widens the buffer. - (message-forward-make-body): New function. - (message-forward): Use it. - (message-insinuate-rmail): New function. - (message-forward-rmail-make-body): New function. - -2001-10-30 02:00:00 ShengHuo ZHU - - * mm-extern.el (mm-extern): Provide it. - - * mm-partial.el (mm-partial): Provide it. - -2001-10-28 16:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-setup-message): Call post-command-hook. - -2001-10-29 Simon Josefsson - - * mml.el (mml-preview): Bind message-this-is-news if it is - news. From Jesper Harder . - -2001-10-28 Simon Josefsson - - * gnus-sum.el (gnus-group-make-articles-read): Inline group. - -2001-10-29 Per Abrahamsen - - * smiley-ems.el (smiley-regexp-alist): Add support for sad and - ironic smilies. - -2001-10-27 Simon Josefsson - - * message.el (message-indent-citation): Don't add trailing - whitespace when citing text. - - * gnus.el (gnus-group-faq-directory): Fix. From Jesper Harder - . - -2001-10-26 14:00:00 ShengHuo ZHU - - * nnweb.el (nnweb-possibly-change-server): Create nnweb-hashtb if - not available. - (nnweb-request-scan): Nix nnweb-hashtb if ephemeral. - (nnweb-type-definition): Add google as alias of dejanews. - (nnweb-google-parse-1): Forward 1 line. - -2001-10-26 Kai Gro,b_(Bjohann - - * gnus-msg.el (gnus-summary-mail-forward): Doc fix: add pointer to - variable `message-forward-ignored-headers'. - -2001-10-24 Per Abrahamsen - - * gnus.el (gnus-expand-group-parameter): New function. - (gnus-expand-group-parameters): Call it. - (gnus-group-fast-parameter): New function. - (gnus-group-find-parameter): Call it. - -2001-10-23 Per Abrahamsen - - * gnus.el (gnus-news-group-p): Rewrote. Now accepts a header - vector (it didn't before because of a bug). - * gnus-msg.el (gnus-post-news): Use header vector directly, if - available. Before it converted it to an article number. - - This makes followup to news articles with negative numbers in - nnvirtual groups use news instead of mail. - -2001-10-23 Per Abrahamsen - - * gnus.el (post-method): Use `native' instead of `nil'. - - * gnus-msg.el (gnus-post-method): Ditto. - -2001-10-23 Per Abrahamsen - - * gnus.el (gnus-define-group-parameter): Grammar fix. - -2001-10-22 Simon Josefsson - - * gnus-msg.el (gnus-extended-version): Include - system-configuration. - Suggested by Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro,b_(Bjohann). - -2001-10-22 Per Abrahamsen - - * gnus.el (post-method): Customization fix: `native' is not a - valid value. - * gnus-msg.el (gnus-post-method): Doc and customization fix: - `native' is not a valid value. - -2001-10-21 Simon Josefsson - - * nnimap.el (nnimap): Defgroup - (nnimap-strict-function, nnimap-strict-function-match): New - widget, from Per Abrahamsen . - (nnimap-split-crosspost, nnimap-split-inbox) - (nnimap-split-rule, nnimap-split-predicate) - (nnimap-split-predicate): Defcustom. - (nnimap-split-inbox, nnimap-expunge-search-string) - (nnimap-importantize-dormant): Remove "*" from doc. - -2001-10-20 Kai Gro,b_(Bjohann - - * gnus-sum.el (gnus-summary-limit-to-score): Prompt for score if - not supplied via prefix arg. From Lisp, make arg mandatory. - Suggested by Frank Schmitt. - -2001-10-20 Per Abrahamsen - - * message.el (message-do-auto-fill): Avoid calling - 'rfc822-goto-eoh'. - -2001-10-20 Kai Gro,b_(Bjohann - From Paul Jarc . - - * message.el (message-get-reply-headers): Restructure the logic - and add comments. From Paul Jarc . - -2001-10-20 Simon Josefsson - - * message.el (message-cancel-news): Support cancel-locks. - Suggested by Per Abrahamsson. - - * nnml.el (nnml-marks-changed-p): Use `equal' when comparing - conses. From David Z Maze . - - * nnfolder.el (nnfolder-marks-changed-p): Ditto. - -2001-10-19 Per Abrahamsen - - * mm-decode.el (mm-default-directory): Fix customize type. - - * message.el (message-setup-fill-variables): Kludge to use - normal-auto-fill-function even if auto fill is already activated. - -2001-10-19 Per Abrahamsen - - * message.el (message-do-auto-fill): New version that does not - rely on text properties, by Simon Josefsson . - (message-setup-1): Removed the `message-field' property. - - * gnus-draft.el (gnus-draft-edit-message): Removed the - `message-field' property. - -2001-10-19 Per Abrahamsen - - * gnus-draft.el (gnus-draft-edit-message): Change `field' to - `message-field'. The `field' property has a special significance in - Emacs 21. - - * message.el (message-send, message-setup-1): Ditto. - -2001-10-18 Simon Josefsson - - * gnus-sum.el (gnus-group-make-articles-read): Call g-r-set-mark - when undoing. - -2001-10-18 Simon Josefsson - From Frank Schmitt - - * gnus-sum.el (gnus-summary-limit-to-display-predicate): Fix typo. - (gnus-summary-make-menu-bar): Ditto. - -2001-10-17 Simon Josefsson - - * nnimap.el (nnimap-expiry-target): Make sure it is back to the - server. Suggested by ShengHuo ZHU . - -2001-10-17 17:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-line-format-alist): user-date entry. - * gnus-util.el (gnus-user-date): New function. - From Frank Schmitt . - -2001-10-17 Per Abrahamsen - - * message.el (message-check-news-header-syntax): Special case - nnvirtual groups. - - * gnus-sum.el (gnus-summary-respool-default-method): Changed - customize type to `symbol'. - -2001-10-17 12:00:00 ShengHuo ZHU - - * gnus-spec.el (gnus-parse-simple-format): Support extended spec - %&foo;. - (gnus-parse-simple-format): Support user extended spec too. - %u&foo; invokes gnus-user-format-function-foo. - -2001-10-17 11:00:00 ShengHuo ZHU - - * nnml.el (nnml-request-expire-articles): Make sure it is back to - the server. - * nnmbox.el (nnmbox-request-expire-articles): Ditto. - * nnfolder.el (nnfolder-request-expire-articles): Ditto. - * nnbabyl.el (nnbabyl-request-expire-articles): Ditto. - * nndiary.el (nndiary-request-expire-articles): Ditto. - (nndiary-schedule): Defsubst it before use it. - (nndiary-error): eval-and-compile. - -2001-10-17 Per Abrahamsen - - * gnus-msg.el (gnus-post-method): Changed two instances of - `active' to `current' and one `null' to `not'. - -2001-10-16 Kai Gro,b_(Bjohann - From Katsumi Yamaoka . - - * message.el (message-setup-fill-variables): Use - `normal-auto-fill-function' instead of `auto-fill-function'. - -2001-10-16 Simon Josefsson - - * mml2015.el (mml2015-fix-micalg): Fix for Mutt-bug. - (mml2015-gpg-decrypt-1): Decanonicalize decrypted MIME - body. (Mailcrypt seem to do this, but gpg.el doesn't.) - -2001-10-16 Kai Gro,b_(Bjohann - Patch by Oliver Scholz . - - * gnus-draft.el (gnus-draft-edit-message): Add text property - `field' with value `header' to message headers. - * message.el (message-setup-1): Really add text property to all of - the header, not just part of it. - -2001-09-04 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-sort-by-server): Use it. - - * gnus.el (gnus-method-to-full-server-name): New, bogus function. - - * gnus-topic.el (gnus-topic-sort-groups-by-server): New command - and keystroke. - -2001-10-14 Simon Josefsson - - * dig.el: Doc fix. - - * smime.el: Doc fix. - - * gnus-msg.el (gnus-inews-do-gcc): Port header encoded-word - charset magic from message.el. - -2001-10-12 Simon Josefsson - Suggested by david.goldberg6@verizon.net (David S. Goldberg) - - * gnus-cite.el (gnus-article-toggle-cited-text): Don't remove - 'cite from g-a-wash-types. - (gnus-cite-toggle): Ditto. Add 'cite. Set modeline. - (gnus-article-hide-citation): Fix. - - * gnus-cite.el (gnus-article-hide-citation): Add `c' mode line - character. - (gnus-article-toggle-cited-text): Toggle `c' mode line character. - - * gnus-art.el (gnus-treat-hide-citation-maybe): Remove duplicate - definition. - (gnus-signature-toggle): Toggle `s' mode line character. - - * gnus-art.el (article-emphasize): Set `g-a-wash-types' after - doing stuff that clears it. - -2001-10-12 Simon Josefsson - - * gnus-cache.el (gnus-summary-limit-include-cached): Rewrite. - From Eric Marsden . - -2001-10-12 10:00:00 ShengHuo ZHU - - * message.el (message-do-auto-fill): Use gnus-point-at-bol. - (autoload): Add some autoloads. - -2001-10-12 Kai Gro,b_(Bjohann - Suggested by Oliver Scholz . - - * message.el (message-do-auto-fill): New function. Like - `do-auto-fill' but don't fill when in the message header. - (message-setup-1): Put a text property on the message header. - (message-setup-fill-variables): Use `message-do-auto-fill'. - -2001-10-10 12:00:00 ShengHuo ZHU - - * message.el (message-send-mail-partially): Insert an empty line - first, because of the change of message-make-lines. - -2001-10-10 Florian Weimer - - * mm-util.el (mm-charset-synonym-alist): If Emacs doesn't support - iso-8859-15, make it an alias for iso-8859-1. - -2001-10-10 Katsumi Yamaoka - - * message.el (message-send-news): Don't modify the value of - `message-syntax-checks' if it is not a list (possibly it is - `dont-check-for-anything-just-trust-me'). - -2001-10-10 Katsumi Yamaoka - - * gnus-group.el (gnus-group-name-charset-group-alist): Use - `find-coding-system' for XEmacs to check whether the coding-system - `utf-8' is available. - -2001-10-09 13:00:00 ShengHuo ZHU - - * dgnushack.el (dgnushack-compile): Detect mh-e and xml. - -2001-10-09 Per Abrahamsen - - * message.el (message-send-news): Oops, missed case with no - "Followup-To" header... - -2001-10-09 Per Abrahamsen - - * message.el (message-send-news): Allow - `gnus-group-name-charset-group-alist' to affect encoding of the - "Newsgroups" and "Followup-To" headers. - -2001-10-07 15:00:00 ShengHuo ZHU - - * Makefile.in (install-el): Depend on gnus-load.el. - -2001-10-07 13:00:00 ShengHuo ZHU - - * Makefile.in (install-el): Use -f. - From: Amos Gouaux - -2001-10-07 Per Abrahamsen - - * message.el (message-send-news): Don't encode Followups-To when - `gnus-group-name-charset-group-alist is' ".*". [Yuck] - - * gnus-util.el (gnus-decode-newsgroups): No space in newsgroup - header. - - * gnus-art.el (article-decode-group-name): Also decode - "Followup-To". - - * rfc2047.el (rfc2047-encode-message-header): Encode without - asking for null methods. - - * gnus-group.el (gnus-group-name-charset-group-alist): Make utf-8 - default charset for newsgroup names in accordance with USEFOR. - - * gnus-group.el (gnus-group-name-charset-method-alist, - gnus-group-name-charset-group-alist): Removed "*" from doc - strings, "*" should not be used for complex variables. - -2001-10-06 Simon Josefsson - - Support UTF-8 group names better. - - * message.el (message-check-news-header-syntax): Encode group - names before comparison. - - * gnus-msg.el (gnus-copy-article-buffer): Run all - `gnus-article-decode-hook's except `article-decode-charset' - instead of hardcoding call to one of them. - - * gnus-art.el (gnus-article-decode-hook): Add - `article-decode-group-name'. - (article-decode-group-name): New function, use `g-d-n'. - - * gnus-group.el (gnus-group-insert-group-line): Decode - gnus-tmp-group using `g-d-n'. - - * gnus-util.el (gnus-decode-newsgroups): New function. - -2001-10-06 Per Abrahamsen - - * gnus-srvr.el (gnus-browse-foreign-server): Fixed bug non-nil - `gnus-group-name-charset-group-alist'. - -2001-10-06 08:00:00 ShengHuo ZHU - - * Makefile.in: Install el in install. Add uninstall. - -2001-10-05 Simon Josefsson - - * nnheader.el (gnus-verbose-backends, gnus-nov-is-evil): Custom. - - * gnus-sum.el (gnus-summary-move-article): Also activate new groups. - - * nnfolder.el (nnfolder-normalize-buffer): Don't insert \n\n in - empty folders. - - * gnus-sum.el (gnus-select-newsgroup): Don't enable `display' - limiting if read-all (C-u RET) was used. - -2001-10-04 Simon Josefsson - - * mail-source.el (mail-source-movemail-program): New variable. - (mail-source-movemail): Use it. Suggested by Taylor Hutt - . - -2001-10-03 Simon Josefsson - - * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): New param. - (gnus-summary-line-format-alist): Fix param. - -2001-10-02 Simon Josefsson - - * nnimap.el (nnimap-request-move-article): Use imap.el directly, - don't go through `nnimap-request-expire-articles' to delete the - article. Thanks to prj@po.cwru.edu (Paul Jarc). - -2001-10-02 10:00:00 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-write-active): The min in the - agent/active may be larger than that in the server/active. - -2001-10-01 Simon Josefsson - - * mail-source.el (mail-source-fetch-imap): Use BODY.PEEK if server - is IMAP4rev1. - - * nnml.el (gnus-article-unpropagatable-p): Autoload gnus-sum. - - * nnfolder.el: Ditto. - -2001-09-30 Dan Christensen - - * gnus-sum.el (gnus-summary-extract-address-component): New function. - (gnus-summary-from-or-to-or-newsgroups): Optimize. - -2001-09-29 Kai Gro,b_(Bjohann - - * message.el (message-mode-map): Keybinding for `gnus-delay-article'. - (message-mode-menu): Menu item for same. - - * gnus-group.el (gnus-group-make-menu-bar): Menu item for sending - delayed articles. - - * gnus-delay.el (gnus-delay-send-drafts): Do nothing if - nndraft:delayed does not exist. - (gnus-delay-initialize): Don't set up keymap, that's done from - message.el now. - (gnus-delay, gnus-delay-group, gnus-delay-header) - (gnus-delay-default-delay, gnus-delay-default-hour): Customize. - -2001-09-29 Simon Josefsson - - * mm-util.el (mm-mime-mule-charset-alist): Encode mule-utf-8 as - utf-8, not eight-bit-control. - - * imap.el (imap-shell-host, imap-default-user, imap-use-utf7) - (imap-log, imap-debug): Custom. - (imap-log-buffer, imap-debug-buffer): New constants. - (imap-kerberos4-open, imap-gssapi-open, imap-ssl-open) - (imap-network-open, imap-shell-open, imap-starttls-open) - (imap-send-command-1, imap-send-command, imap-arrival-filter) - (imap-debug): Use imap-*-buffer. - - * nndoc.el (nndoc-article-type): Add mailman. - (nndoc-type-alist): Ditto. - (nndoc-mailman-type-p): New function. - -2001-09-28 07:00:00 ShengHuo ZHU - - * gnus-xmas.el (gnus-article-x-face-command): Merge it into - gnus-art.el. - -2001-09-27 Simon Josefsson - - * gnus-topic.el (gnus-topic-mode-map): Add catchup. - (gnus-topic-catchup-articles): New function. Suggested by Robin - S. Socha . - -2001-09-27 11:00:00 ShengHuo ZHU - From Gerd M,Av(Bllmann . - - * gnus-ems.el (gnus-article-display-xface): Insert xface after - previous ones. - -2001-09-27 07:00:00 ShengHuo ZHU - From Daiki Ueno - - * gnus-sum.el (gnus-summary-show-article): The arglist of - detect-coding-region is incompatible. - -2001-09-26 18:00:00 ShengHuo ZHU - From Katsuhiro Hermit Endo - - * gnus-group.el (gnus-group-delete-group): Typo. - -2001-09-26 Simon Josefsson - - * nnmail.el (nnmail-expiry-target-group): Add doc warning. - - * nnimap.el (nnimap-expiry-target): Use temp buffer. - -2001-09-26 07:00:00 ShengHuo ZHU - - * gnus-cus.el (gnus-group-parameters): Display as sexp. - -2001-09-22 Simon Josefsson - - * nnml.el (nnml-open-marks): Remove unpropagatable marks. - - * nnfolder.el (nnfolder-open-marks): Ditto. - - * gnus-sum.el (gnus-article-unpropagatable-p): New function. - (gnus-update-marks): Use it. - (gnus-update-marks): Use `gnus-article-mark-to-type' instead of - hardcoded list. - - * gnus.el (gnus-article-special-mark-lists): Add killed. - (gnus-article-unpropagated-mark-lists): New constant. - -2001-09-22 Simon Josefsson - - * gnus-sum.el (gnus-summary-mode-hook): Add gnus-pick-mode as - custom option. - -2001-09-23 Simon Josefsson - - * gnus-draft.el (gnus-draft-setup): Add mark in backend as well. - -2001-09-23 02:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-button-mailto): Hack save-selected-window-window. - -2001-09-22 Per Abrahamsen - - * gnus-group.el (gnus-group-sort-function): Fix customize type to - accept lists of functions. - -2001-09-20 Simon Josefsson - - * gnus-group.el (gnus-group-catchup): Update expire marks in - backend. Also, if ALL also set expire marks on tick/dormant. - -2001-09-20 Kai Gro,b_(Bjohann - - * message.el (message-tab-body-function): New variable. - * message.el (message-tab): Use it. - -2001-09-19 Sam Steingold - - * gnus-win.el (gnus-buffer-configuration): Respect - `gnus-bug-create-help-buffer'. - -2001-09-18 Simon Josefsson - - * gnus-spec.el (gnus-correct-pad-form): Re-revert. - (gnus-parse-simple-format): Re-revert. - -2001-09-16 Katsuhiro Hermit Endo - Trivial patch. - - * gnus-spec.el (gnus-parse-complex-format): Don't fold search - case. (Thanks to Daiki Ueno .) - -2001-09-18 Simon Josefsson - - * gnus-spec.el (gnus-correct-pad-form): Remove until papers are - signed. - (gnus-parse-simple-format): Don't use it. - -2001-09-17 Miles Bader - - * gnus-srvr.el (gnus-server-insert-server-line): Don't let an - error querying a backend abort the whole process. - -2001-09-17 08:00:00 ShengHuo ZHU - - * gnus-srvr.el (gnus-server-mode): Fix bogus fontification. - From Gerd M,Av(Bllmann . - -2001-09-17 Didier Verna - - * nndiary.el: version 0.2-b14. - * gnus-diary.el (gnus-diary-check-message): fix `read-string' - compatibility problem with XEmacs 21.1. - -2001-09-15 Simon Josefsson - - * gnus-group.el (gnus-group-line-format): Document %c. - - * nnml.el (nnml-parse-head): Handle CRLF files. - (nnml-generate-nov-file): Ditto. - (nnml-retrieve-headers): Ditto. - -2001-09-15 Michael Welsh Duggan - - * gnus-spec.el (gnus-parse-format): Don't treat %c as %C. - -2001-09-13 Martin Kretzschmar - - * gnus-spec.el (gnus-correct-substring): Still stopped one - character before we wanted (never included last character). - (gnus-tilde-max-form, gnus-tilde-cut-form) Made readable again, - add missing "," (once per function) - -2001-09-14 Simon Josefsson - - * gnus-start.el (gnus-group-mode-hook): Moved from gnus-group - (otherwise e.g. gnus-agentize in .gnus overrides the customized - default before gnus-group is loaded and the variable set.) - - * nnimap.el (nnimap-request-set-mark): Do not store bookmark, - killed or unsent marks. - - * gnus-draft.el (gnus-draft-setup): Don't set mark when there - isn't an article to set it on (e.g. when you `a' in a group). - -2001-09-12 Pavel Jan,Am(Bk - - * mm-util.el (mm-charset-synonym-alist): add windows-1250 so we - can read e-mails from Microsoft Outlook users not using ISO - 8859-2 character set. - -2001-09-12 18:00:00 ShengHuo ZHU - - * gnus-diary.el: Minor modifications to avoid warnings. - (gnus-summary-misc-menu): defvar. - (gnus-diary-check-message): Use gnus-point-at-eol. - (gnus-diary-kill-entire-line): eval-and-compile. - -2001-09-12 Didier Verna - - * nndiary.el: new version (0.2-b13). - * nndiary.el (nndiary-mail-sources): doc update. - * nndiary.el (nndiary-split-methods): ditto. - * nndiary.el (nndiary-request-accept-article-hooks): New. - * nndiary.el (nndiary-request-accept-article): use it, check - message validity. - * nndiary.el (nndiary-get-new-mail): changed default to nil. - * nndiary.el (nndiary-schedule): fix bug (misplaced - condition-case): it didn't return nil on error. - * gnus-diary.el: new version. - * gnus-diary.el (gnus-diary-summary-line-format): removed %I. - * gnus-diary.el (gnus-diary-header-value-history): New. - * gnus-diary.el (gnus-diary-narrow-to-headers): New. - * gnus-diary.el (gnus-diary-add-header): New. - * gnus-diary.el (gnus-diary-check-message): New. - * gnus-diary.el (message-mode-map): bind the above to `C-c D c'. - * gnus-diary.el (gnus-article-edit-mode-map): ditto. - -2001-09-10 TSUCHIYA Masatoshi - - * gnus-sum.el (gnus-select-newsgroup): Make - `gnus-current-select-method' buffer-local. - - * gnus-art.el (gnus-request-article-this-buffer): Refer - `gnus-current-select-method' in the current summary buffer. - -2001-09-10 Simon Josefsson - From Daniel Pittman - - * gnus-spec.el (gnus-correct-pad-form): Fix. - -2001-09-09 Simon Josefsson - - * mm-decode.el (mm-inline-media-tests): Add - application/x-emacs-lisp. - (mm-attachment-override-types): Add - application/{x-,}pkcs7-signature. - - * gnus-srvr.el (gnus-server-mode-hook, gnus-server-exit-hook) - (gnus-server-line-format, gnus-server-mode-line-format) - (gnus-server-browse-in-group-buffer): Customize. - -2001-09-08 16:00:00 ShengHuo ZHU - - * nnml.el (nnml-marks-changed-p): Typo. - (nnml-save-marks, nnml-open-marks): Use gnus-sethash. - (nnml-marks-changed-p): Use gnus-gethash. - (nnml-marks-modtime): Use gnus-make-hashtable. - - * nnfolder.el (nnfolder-marks-changed-p): Typo. - (nnfolder-request-expire-articles, nnfolder-save-marks) - (nnfolder-open-marks): Typo. - (nnfolder-save-marks, nnfolder-open-marks): Use gnus-sethash. - (nnfolder-marks-changed-p): Use gnus-gethash. - (nnfolder-marks-modtime): Use gnus-make-hashtable. - -2001-09-08 Simon Josefsson - - * nnfolder.el (nnfolder-marks-modtime): New variable. - (nnfolder-marks-changed-p): New function. - (nnfolder-save-marks, nnfolder-open-marks): Save modtime. - (nnfolder-request-update-info): Don't update if marks didn't change. - - * nnml.el (nnml-marks-modtime): New variable. - (nnml-marks-changed-p): New function. - (nnml-save-marks, nnml-open-marks): Save modtime. - (nnml-request-update-info): Don't update if marks didn't change. - - * gnus-agent.el (gnus-agent-any-covered-gcc) - (gnus-agent-add-server, gnus-agent-remove-server): Use - gnus-agent-method-p. - - * gnus-art.el (gnus-buttonized-mime-types): New variable. - (gnus-unbuttonized-mime-type-p): Use it. - - * gnus-agent.el (gnus-agent-fetch-group): If online, actually - fetch group. - -2001-09-08 Simon Josefsson - From Daniel Pittman - - * gnus-spec.el (gnus-correct-pad-form): New function. - (gnus-parse-simple-format): Use it. - -2001-09-07 Simon Josefsson - - * gnus-group.el (gnus-group-sort-groups): Unmark all groups. - (gnus-group-sort-selected-groups): Ditto. Suggested by Harry - Putnam . - (gnus-group-sort-selected-groups): Touch dribble file. - -2001-09-07 Raja R Harinath - - * nnml.el (nnml-filenames-are-evil): New variable. - (nnml-article-to-file-alist): Rename to ... - (nnml-current-group-article-to-file-alist): ... this. - Respect `nnml-filenames-are-evil'. - (nnml-active-number): Update. - (nnml-update-file-alist): Update. - (nnml-request-article): Use nnheader-article-to-file-alist. - (nnml-request-rename-group): Likewise. - -2001-09-06 Katsumi Yamaoka - - * gnus-sum.el (gnus-summary-insert-line): Fix. - -2001-09-06 Bj,Av(Brn Torkelsson - - * gnus-sum.el: Bind g-s-t-s to "W g". - * gnus-sum.el (gnus-summary-make-menu-bar): Add g-s-t-s. - * gnus-sum.el (gnus-summary-toggle-smiley): New function. Toggles - display of graphical smilies. - -2001-09-07 02:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-setup-news): A typo. - From Bill White . - -2001-09-06 Simon Josefsson - - * gnus-sum.el (gnus-summary-insert-line): Insert forwarded, recent - and unseen marks. - -2001-09-05 Kai Gro,b_(Bjohann - - * nnmail.el (nnmail-split-fancy): Document `junk'. - -2001-09-04 Simon Josefsson - - * imap.el (imap-search): Don't error if server is broken. - -2001-09-02 Benjamin Rutt - - * nnmbox.el (nnmbox-find-article): Fix infinite loop when - searching for an article that isn't in the mbox. - -2001-09-02 23:12:48 Lars Magne Ingebrigtsen - - * nnslashdot.el (nnslashdot-retrieve-headers-1): Get references - right, and get all the comments. - -2001-09-02 Simon Josefsson - Suggested by Dan Christensen - - * nnfolder.el (nnfolder-request-update-info): Fix message. - - * nnml.el (nnml-request-update-info): Ditto. - -2001-09-01 Simon Josefsson - - * nnml.el (nnml-request-expire-articles): Also bind - `nnml-current-group' and `nnml-article-file-alist' when using - expiry-target. (Otherwise nnml will be in a inconsistent internal - state causing all kind of problems.) - (nnml-request-expire-articles): If `nnml-article-to-file' or - `file-attributes' failes, return article as un-expirable instead - of treating it as expired. - -2001-08-31 Sam Steingold - - * imap.el (imap-mailbox-examine, imap-mailbox-examine-1): Fix a - typo: `exmine' --> `examine'. - -2001-08-30 13:00:00 ShengHuo ZHU - - * nndoc.el (nndoc-forward-type-p): It is not a digest. - -2001-08-30 11:00:00 ShengHuo ZHU - - * nnml.el (nnml-check-directory-twice): Remove. - (nnml-retrieve-headers): Ditto. - (nnml-article-to-file): Use nnheader-directory-files-is-safe. - -2001-08-30 Andrew Innes - - * nnheader.el (nnheader-directory-files-is-safe): No need to read - directory twice on Windows, or on GNU Emacs-21. - -2001-08-30 Andrew Innes - - * nnml.el (nnml-request-article): Use nnml-article-to-file-alist. - (nnml-request-rename-group): Ditto. - (nnml-active-number): Ditto. - (nnml-request-create-group): Use nnml-directory-articles. - (nnml-request-expire-articles): Use nnml-directory-articles, which - gets list from nov database if available. - (nnml-get-nov-buffer): New function. - (nnml-open-nov): Use it. - (nnml-update-file-alist): Use nnml-article-to-file-alist, which - gets alist from nov database if available. - (nnml-directory-articles): New function. - (nnml-article-to-file-alist): New function. - -2001-08-30 Andrew Innes - - * mm-decode.el (mm-display-external): Use `name' as filename, if - `filename' attribute is not present. - -2001-08-30 Andrew Innes - - * mail-source.el (mail-source-flash): New defcustom. - (mail-source-new-mail-p): Ring visible bell if appropriate. - (mail-source-start-idle-timer): Use unwind-protect to ensure idle - timer is cleared even if mail check signals an error. - -2001-08-29 10:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-move-article): Only update marks of - type 'list. - -2001-08-29 00:00:00 ShengHuo ZHU - - * flow-fill.el (fill-flowed): eol might be point-max. - -2001-08-27 Simon Josefsson - - * nnml.el (nnml-request-update-info): Fix message. - (nnml-open-marks): Ditto. - - * nnfolder.el (nnfolder-request-update-info): - (nnfolder-open-marks): Fix message. - -2001-08-25 Simon Josefsson - - * nnfolder.el (nnfolder-save-marks): Don't create directory named - after group in ~/. - -2001-08-25 Simon Josefsson - From Andreas Jaeger - - * nnfolder.el (nnfolder-open-marks): Fix typo. - * nnml.el (nnml-open-marks): Likewise. - -2001-08-25 Simon Josefsson - - Make nnfolder groups self-contained as far as marks are concerned. - - * nnfolder.el (nnfolder-marks-directory, nnfolder-marks-is-evil) - (nnfolder-marks, nnfolder-marks-file-suffix): New variables. - (nnfolder-open-server): Make marks directory. - (nnfolder-request-delete-group): Delete marks file. - (nnfolder-request-delete-group): Check of nov/marks file exist - before deleting. - (nnfolder-request-rename-group): Rename marks file. - (nnfolder-request-rename-group): Only rename nov/mark if they exists. - (nnfolder-request-set-mark, nnfolder-request-update-info) - (nnfolder-group-marks-pathname, nnfolder-save-marks) - (nnfolder-open-marks): New functions. - (top-level): Require gnus. - -2001-08-25 09:00:00 ShengHuo ZHU - - * nnweb.el (nnweb-type-definition): Use google raw file. - (nnweb-google-parse-1): Ditto. - (nnweb-google-identity): Ditto. - (nnweb-reference-wash-article): Move nnweb-decode-entities here. - (nnweb-altavista-wash-article): Ditto. - (nnweb-request-article): Remove nnweb-decode-entities. - - * nnml.el: Require 'gnus. - -2001-08-25 Simon Josefsson - - * nnml.el (nnml-marks-is-evil): Add doc. - -2001-08-25 Simon Josefsson - - * nnml.el (nnml-save-marks): Wrap saving marks in a - condition-case, to allow user to start Gnus if saving marks failed - for some reason. - -2001-08-24 16:05:38 Lars Magne Ingebrigtsen - - * gnus-spec.el (gnus-compile): Don't compile gnus-version. - - * gnus-group.el (gnus-update-group-mark-positions): Bind - gnus-group-update-hook to nil. - -2001-08-24 13:00:00 ShengHuo ZHU - - * mml.el (mml-generate-mime-1): Force as multibyte string. - -2001-08-24 12:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-insert-line) - (gnus-summary-prepare-threads): gnus-tmp-lines should be a string. - From Martin Kretzschmar - - * gnus-spec.el (gnus-correct-substring): Take optional END. - - * nnrss.el (nnrss-request-article): Remove \n. - (nnrss-retrieve-headers): Lines number is -1. - -2001-08-24 Simon Josefsson - - * gnus-group.el (gnus-info-clear-data): Call - nnfoo-request-set-mark to propagate marks. Fix bug: - `gnus-group-update-line' doesn't update read range unless we call - `gnus-get-unread-articles-in-group' first. - - * nnimap.el (nnimap-request-set-mark): Don't propagate seen flags - to server. - -2001-08-23 21:00:00 ShengHuo ZHU - - * gnus-util.el (gnus-create-info-command): Return an interactive - function. - -2001-08-23 19:00:00 ShengHuo ZHU - From Katsumi Yamaoka - - * gnus-spec.el (gnus-parse-complex-format): Use equal. - -2001-08-23 18:43:05 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-select-newsgroup): Use it. - - * gnus-util.el (gnus-not-ignore): New function. - - * lpath.el (featurep): Don't fbind char-int. - - * gnus-util.el (gnus-create-info-command): New function. - - * gnus-group.el (gnus-group-edit-group): Make C-c C-i go to the - right node. - - * gnus-sum.el (gnus-select-newsgroup): Clean up. - (gnus-summary-limit-children): Use 'identity instead of `all'. - (gnus-summary-limit-to-display-predicate): New command and - keystroke. - -2001-08-23 10:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-group-alist): Use fm-releases.rdf. - - * gnus-spec.el (gnus-format-specs): Miss a right parenthesis. - -2001-08-23 18:43:05 Lars Magne Ingebrigtsen - - * gnus-spec.el: Add the Gnus version. - (gnus-update-format-specifications): If the Gnus version changes, - nix out the format spec cache. - - * gnus.el (gnus-continuum-version): Made into a command and - optionalize the VERSION. - - * gnus-spec.el (gnus-parse-complex-format): Remove %C specs from - the start of the lines. - -2001-08-22 00:06:52 Lars Magne Ingebrigtsen - - * gnus.el (gnus-visual-p): Define function before use of - function. - -2001-08-21 23:28:02 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-adjust-marked-articles): Use new variable. - (gnus-article-mark-to-type): New function. - (gnus-update-missing-marks): Only update marks of type 'list. - - * gnus.el (gnus-article-special-mark-lists): New variable. - -2001-08-21 12:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-limit-children): Check 'all. - (gnus-select-newsgroup): Still use 'all. - (gnus-summary-initial-limit): Comparing with 'all. - -2001-08-20 16:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-activate-group): If dont-check, don't update - active. - -2001-08-20 15:00:00 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-retrieve-headers-1): Replace - nnslashdot-*-retrieve-headers. - (nnslashdot-request-article): Fix for slashcode 2.2. - (nnslashdot-make-tuple): New function. - (nnslashdot-read-groups): Use it. - -2001-08-20 01:34:03 Lars Magne Ingebrigtsen - - * gnus.el (gnus-expand-group-parameters): Don't alter the variable - list. - - * gnus-sum.el (gnus-summary-move-article): Don't select article. - -2001-08-20 Simon Josefsson - - * gnus-msg.el (gnus-inews-do-gcc): If archive server can't be - opened, error instead of continuing (and exploding later). - -2001-08-20 01:34:03 Lars Magne Ingebrigtsen - - * gnus.el (gnus-expand-group-parameters): Return the parameter - list. - - * gnus-sum.el (gnus-summary-show-article): Doc fix. - (gnus-summary-show-article): Guess at charset if required. - - * gnus-spec.el (gnus-correct-substring): Stopped one character - before we wanted. - -2001-08-19 Pavel Jan,Am(Bk - - * earcon.el (earcon-auto-play): Remove unused option. - -2001-08-19 16:14:41 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-headers): Move the "Scoring..." - message down in levels, since it happens very fast. - - * smiley-ems.el (smiley-update-cache): Respect the symbol version - of smiley-regexp-alist. - - * mm-view.el (mm-inline-text): Ignore vcard errors. - - * gnus-art.el (gnus-ignored-headers): Added more junk headers. - - * gnus-score.el (gnus-all-score-files): Use append instead of - nconc. - - * gnus.el (gnus-splash-face): Doc fix. - - * mm-decode.el (mm-mailcap-command): Use - mm-path-name-rewrite-functions. - (mm-path-name-rewrite-functions): New variable. - - * gnus-spec.el (gnus-parse-complex-format): React to ?=. - (gnus-complex-form-to-spec): Insert tab. - (gnus-spec-tab): New function. - - * gnus-sum.el (gnus-select-newsgroup): Set the marks before - entering the group. - - * gnus-spec.el (gnus-complex-form-to-spec): Insert Lisp to match - the positional spec. - (gnus-parse-complex-format): React to %C. - - * gnus-ems.el (gnus-char-width): Moved here. - - * gnus-sum.el (gnus-select-newsgroup): Set - gnus-newsgroup-articles. - (gnus-unseen-mark): New variable. - (gnus-newsgroup-unseen): Ditto. - (gnus-newsgroup-seen): Ditto. - (gnus-adjust-marked-articles): Use them. - (gnus-update-marks): Use them. - (gnus-summary-update-secondary-mark): Display. - (gnus-summary-prepare-threads): Display. - - * gnus-msg.el (gnus-inews-group-method): Use and return the - method, not the server. - -2001-08-19 Simon Josefsson - - * gnus-srvr.el (gnus-server-agent-face): New. - (gnus-server-agent-face): New. - (gnus-server-mode): Turn on font-lock-mode. - - * gnus.el (gnus-server-visual): Add defgroup. - -2001-08-19 Simon Josefsson - From Joe Casadonte - - * gnus-srvr.el (gnus-server-opened-face, gnus-server-closed-face, - gnus-server-denied-face): New. - (gnus-server-opened-face, gnus-server-closed-face, - gnus-server-denied-face): New. - (gnus-server-font-lock-keywords): Add. - -2001-08-19 Simon Josefsson - - * nnml.el (nnml-request-set-mark): Return nil. - (nnml-save-marks): Use nnml-possibly-create-directory. - (nnml-open-marks): Only work in temp buffer when inserting/reading - .marks file. - -2001-08-18 19:00:00 ShengHuo ZHU - - * gnus.el (gnus-expand-group-parameters): Fix. - - * gnus-spec.el (gnus-char-width): New function. - (gnus-correct-substring, gnus-correct-length): Use it. - - * message.el (message-required-mail-headers): Fix doc. - -2001-08-18 18:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-group-make-articles-read): gnus-request-set-mark. - - * mm-decode.el (mm-save-part-to-file): Insert the handle. - -2001-08-18 13:00:00 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-threaded-retrieve-headers): - slashdot 2.2 (not fully fixed yet). - (nnslashdot-request-article): Ditto. - -2001-08-18 Simon Josefsson - - * gnus-util.el (gnus-remassoc, gnus-update-alist-soft): Moved from - nnimap. - - * nnimap.el (nnimap-remassoc, nnimap-update-alist-soft): Moved to - gnus-util. - (nnimap-request-update-info-internal): Use new functions. - - * nnml.el (nnml-request-set-mark, nnml-request-update-info): Use - new functions. - -2001-08-18 Simon Josefsson - - Make nnml groups self-contained as far as marks are concerned. - - * nnml.el (nnml-request-delete-group): Delete marks file. - (nnml-request-rename-group): Move marks file. - (nnml-marks-file-name, nnml-marks-is-evil, nnml-marks): New server - variables. - (nnml-request-set-mark, nnml-request-update-info): New server - functions. - (nnml-save-marks, nnml-open-marks): New functions. - -2001-08-18 Simon Josefsson - - * gnus-sum.el (gnus-summary-move-article): Use `add' instead of - `set' when setting marks. - -2001-08-17 22:00:00 ShengHuo ZHU - - * gnus.el (gnus-info-find-node): Take an argument. - - * gnus-art.el (gnus-button-handle-info): New function. - (gnus-url-unhex-string): Replace "+" with " ". - -2001-08-17 21:00:00 ShengHuo ZHU - - * message.el (message-check-news-header-syntax): Check bad From. - -2001-08-18 00:14:45 Lars Magne Ingebrigtsen - - * gnus-spec.el (gnus-correct-length): New function. - (gnus-correct-substring): New function. - (gnus-tilde-max-form): Use it. - -2001-08-17 Nevin Kapur - - * nnmh.el: Docstring changes as below. - - * nnml.el: Docstring changes as below. - - * nnbabyl.el: Docstring changes as below. - - * nnmbox.el: Docstring changes as below. - - * nnfolder.el: Added docstrings identifying each virtual server - parameter. - -2001-08-18 Simon Josefsson - - * mml.el (mml-menu): Collapse Attach, Insert and Security submenu. - -2001-08-17 Bj,Av(Brn Torkelsson - - * message.el: rename "Abort Message" to "Postpone Message". - Remove "Attach file as MIME" from Message menu, it's already in - the MIME menu. - -2001-08-17 14:00:00 ShengHuo ZHU - - * smime.el (smime-point-at-eol): eval-and-compile. - (smime-make-temp-file): New function. - (smime-sign-region, smime-encrypt-region, smime-decrypt-region): - Use it. - -2001-08-17 10:41:14 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-group): Go online if offline. - (gnus-agent-summary-fetch-group): New command and keystroke. - - * gnus-art.el (gnus-insert-mime-button): Tiny clean-up. - (gnus-mime-display-security): Make it respect - gnus-unbuttonized-mime-type-p. - - * gnus-sum.el (gnus-articles-to-read): Comments. - (gnus-article-marked-p): New function. - (gnus-summary-display-make-predicate): New function. - (gnus-select-newsgroup): Use them. - - * mm-decode.el (mm-save-part-to-file): Made it not error. - -2001-08-17 Simon Josefsson - - * imap.el (imap-wait-for-tag): If process-status isn't open or - run, return nil instead of sit-for looping. - -2001-08-17 10:41:14 Lars Magne Ingebrigtsen - - * lpath.el (featurep): fbind xml-parse-region. - - * gnus.el (gnus-message-archive-method): Default to "archive". - (gnus-message-archive-method): Doc fix. - (gnus-parameters-get-parameter): Cleaned up. - (gnus-expand-group-parameter): New function. - - * gnus-start.el (gnus-setup-news): Push the archive server only - the server list. - - * mml.el (mml-menu): Changed name to "Attachments". - - * mm-decode.el (mm-destroy-postponed-undisplay-list): Only message - when there is something to detroy. - -2001-05-21 17:11:46 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-server-browse-in-group-buffer): Default to - nil. - -2001-08-15 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-article): Allow "01:23" time spec, - which specifies a time today or tomorrow. - -2001-08-15 Simon Josefsson - From Pavel@Janik.cz (Pavel Jan,Am(Bk) - - * gnus-agent.el (gnus-agent-make-mode-line-string) - (gnus-agent-toggle-plugged): Use new API. - -2001-08-14 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-send-drafts): Fix check whether - deadline has expired. - -2001-08-12 Simon Josefsson - 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 - - * mm-bodies.el (mm-decode-content-transfer-encoding): Returns - whether successful decoding took place. Add doc. - -2001-08-12 Simon Josefsson - Suggested by Per Abrahamsen - - * 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 - Committed by Kai Gro,b_(Bjohann. - - * gnus-score.el (gnus-score-string): Fix `match' regexp - for `extra' header case. - -2001-08-10 23:00:00 ShengHuo ZHU - - * nnmbox.el (nnmbox-read-mbox): No warning. - -2001-08-10 21:00:00 ShengHuo ZHU - - * nndoc.el (nndoc-article-type): Fix doc. - (nndoc-generate-article-function): New variable. - (nndoc-dissection-function): New variable. - (nndoc-type-alist): Add oe-dbx. - (nndoc-oe-dbx-type-p): New function. - (nndoc-oe-dbx-dissection): New function. - (nndoc-oe-dbx-generate-article): New function. - -2001-08-11 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-send-drafts): Cleaner way to check - whether deadline has been reached. Patch from Dan Nicolaescu - . - -2001-08-10 02:00:00 ShengHuo ZHU - - * gnus-ml.el (turn-on-gnus-mailing-list-mode): Use - gnus-group-find-parameter. Suggested by Janne Rinta-Manty - . - - * mail-source.el (mail-source-movemail): The error buffer is - modified, but nothing in it. - -2001-08-10 01:00:00 ShengHuo ZHU - - * message.el (message-bogus-system-names): New variable. - (message-make-fqdn): Use it. - -2001-08-09 15:00:00 ShengHuo ZHU - - * nndraft.el (nndraft-request-group): Use - nndraft-auto-save-file-name. - -2001-08-09 Simon Josefsson - - * mm-view.el (mm-view-pkcs7-decrypt): Operate in current buffer. - Don't ask whether to decrypt. Just leave result in buffer (don't - call mm). - - * mm-decode.el (mm-dissect-buffer): Possibly verify/decrypt single - parts as well. - (mm-inline-media-tests): Ignore application/{x-,}pkcs7-mime. - (mm-possibly-verify-or-decrypt): Support application/{x-,}pkcs7-mime. - -2001-08-09 Simon Josefsson - - * mm-decode.el (mm-insert-part): Return decoding success status. - (mm-save-part-to-file): Error if decoding failed. - -2001-08-09 10:00:00 ShengHuo ZHU - - * message.el (message-tab): Use indent-relative. - (message-mode): Don't bind indent-line-function to indent-relative. - -2001-08-09 Simon Josefsson - - * message.el (message-get-reply-headers): Fix string. Suggested by - Christoph Conrad . - -2001-08-08 15:00:00 ShengHuo ZHU - - * message.el (message-tab): Use the current value of - indent-line-function. - (message-mode): Bind indent-line-function to indent-relative. - -2001-08-08 Simon Josefsson - - * imap.el (imap-gssapi-auth-p, imap-kerberos4-auth-p): Also check - whether `imtest' is installed. - -2001-08-04 ShengHuo ZHU - Trivial patch from Nuutti Kotivuori - - * gnus-sum.el (gnus-summary-show-article): Call - gnus-summary-update-secondary-secondary-mark. - * gnus-sum.el (gnus-summary-edit-article-done): Ditto. - * gnus-sum.el (gnus-summary-reparent-thread): Ditto. - -2001-08-07 16:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-make-menu-bar): Misc -> Gnus. - - * gnus-group.el (gnus-group-make-menu-bar): Ditto. - - * mm-uu.el (mm-uu-dissect): Autoload. From Gerd M,Av(Bllmann - . - - * gnus-art.el (gnus-output-to-file): Bind file-name-coding-system. - - * gnus-util.el (gnus-output-to-rmail): Ditto. - (gnus-output-to-mail): Ditto. - - * nnmail.el (nnmail-pathname-coding-system): Set default to nil. - -2001-08-06 Florian Weimer - - * message.el (message-indent-citation): Use - `message-yank-cited-prefix' for empty lines. - -2001-08-05 Florian Weimer - - * message.el (message-indent-citation): Quote only lines starting - with ">" using `message-yank-cited-prefix'. - -2001-08-05 Nuutti Kotivuori - Trivial patch. - - * gnus-cache.el (gnus-cache-possibly-enter-article): Use - gnus-cache-fully-p. - -2001-08-04 Simon Josefsson - - * gnus-cache.el (gnus-cache-possibly-update-active): Create active - file if it doesn't exist (by calling gnus-cache-read-active). - -2001-08-04 Simon Josefsson - - * gnus-cache.el (gnus-cache-possibly-enter-article): Revert. - (gnus-cache-passively-or-fully-p): Removed. - (gnus-cache-fully-p): Fix it. - - * mm-view.el (mm-pkcs7-signed-magic): Support more ASN.1 lengths. - -2001-08-04 Simon Josefsson - - * gnus-cache.el (gnus-cache-fully-p) - (gnus-cache-passively-or-fully-p): New functions. - (gnus-cache-possibly-enter-article): Cosmetic change, use - `g-c-p-o-f-p'. - (gnus-cache-possibly-enter-article): Use `g-c-p-u-a'; last change - was bogus (`g-c-p-a-a' does not change active info, just change - the functions parameters). - (gnus-cache-possibly-remove-articles-1): Make sure articles are - not removed in groups that match `gnus-uncacheable-groups'. - - Reported and modifications based on discussions with Nuutti - Kotivuori . - -2001-08-04 Simon Josefsson - Trivial patch from Nuutti Kotivuori - - * gnus-cache.el (gnus-cache-possibly-update-active): New function; - calls `gnus-cache-update-active' if bounds has been extended. - -2001-08-04 10:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-mime-security-verify-or-decrypt): Insert - before remove. - (gnus-mime-security-show-details): Ditto. - -2001-08-04 Kai Gro,b_(Bjohann - - * nnmail.el (nnmail-split-fancy-with-parent): Correct `mapconcat' - syntax. Protect string-match against nil string and regexp. - -2001-08-03 19:00:00 ShengHuo ZHU - - * mm-util.el (mm-find-charset-region): Remove control-1. - -2001-08-03 17:00:00 ShengHuo ZHU - - * mm-decode.el (mm-readable-p): Emacs 20 takes one argument. - -2001-08-04 Simon Josefsson - - * smime.el (smime-sign-region, smime-encrypt-region): Fix details - buffer. Delete MIME-Version header. - -2001-08-03 Simon Josefsson - - * gnus-cache.el (gnus-cache-possibly-enter-article): The article - that is entered does not necessarily have the highest article - number in the group, so use `gnus-cache-possibly-alter-active' - instead of `gnus-cache-update-active'. - -2001-08-03 10:00:00 ShengHuo ZHU - - * mml2015.el (mml2015-gpg-extract-signature-details): Don't barf. - -2001-08-03 Simon Josefsson - - * mml.el (mml-menu): Rename from MML to Mime. Collapse Security - menu. - -2001-08-02 Katsumi Yamaoka - - * gnus.el (post-method): New group parameter. It also provides - the user option `gnus-post-method-alist' and the internal function - `gnus-parameter-post-method'. - - * gnus-msg.el (gnus-post-method): Bind the value of - `gnus-post-method' to the group parameter if it is defined. - -2001-08-02 Simon Josefsson - - * smime.el (smime-extra-arguments): Removed. - (smime-call-openssl-region): Don't use it. - -2001-08-02 Simon Josefsson - - * smime.el (smime-sign-region): Handle stderr. - (smime-encrypt-region): Ditto. - - * mm-view.el (mm-pkcs7-signed-magic): Make it a regexp. Don't - match the ASN.1 length bytes. - (mm-pkcs7-enveloped-magic): Ditto. - (mm-view-pkcs7-get-type): Don't regexp quote. - -2001-08-01 14:00:00 ShengHuo ZHU - From Andreas Fuchs - - * mml2015.el (mml2015-trust-boundaries-alist): Typo. - -2001-08-01 10:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-header-button-alist): References regexp. - -2001-08-01 Gerd Moellmann - - * mm-view.el (autoload): Don't autoload `diff-mode' if it's - already fboundp. Add INTERACTIVE arg to autoload form. - -2001-08-01 09:00:00 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-init): Add as gnus buffer. - - * nnmail.el (nnmail-cache-open): Ditto. - -2001-07-31 21:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-button-fetch-group): Fix the regexp. - -2001-07-31 Katsumi Yamaoka - - * gnus-msg.el (gnus-post-method): Refer to `gnus-parameters'. - -2001-07-31 17:00:00 ShengHuo ZHU - Originally from Pavel Jan,Am(Bk - - * gnus-agent.el (gnus-agent-make-mode-line-string): New function. - (gnus-agent-toggle-plugged): Use it. - -2001-07-31 ShengHuo ZHU - - * gnus-start.el (gnus-startup-file-coding-system): Revert to binary. - (gnus-ding-file-coding-system): New variable. - (gnus-read-newsrc-el-file, gnus-save-newsrc-file) - (gnus-slave-save-newsrc): Use it. - -2001-07-31 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-initialize): Use standard define-key - syntax. - -2001-07-30 15:00:00 ShengHuo ZHU - Originally from Andreas Fuchs - - * mml2015.el (mml2015-trust-boundaries-alist): New variable. - (mml2015-gpg-pretty-print-fpr): New function. - (mml2015-gpg-extract-signature-details): More details, rename from - `m-g-e-from'. - (mml2015-gpg-verify): Use them. - (mml2015-gpg-clear-verify): Use them. - -2001-07-31 Simon Josefsson - - * mml-smime.el (mml-smime-sign, mml-smime-encrypt): Goto end of - buffer when done. - -2001-07-30 Simon Josefsson - - * smime.el (smime-call-openssl-region): Revert previous change, - just pass on buf to `call-process-region'. - (smime-verify-region): Doc fix. Don't message stuff. Use - `smime-new-details-buffer'. Inserts error messages into buffer. - (smime-noverify-region): Ditto. - (smime-decrypt-region): Ditto. Handles stderr separately. - (smime-verify-buffer, smime-noverify-buffer) - (smime-decrypt-buffer): Doc fix. - (smime-new-details-buffer): New function. - (smime-pkcs7-region, smime-pkcs7-certificates-region) - (smime-pkcs7-email-region): Use `smime-new-details-buffer'. - (smime-sign-region, smime-encrypt-region): Don't use - `insert-buffer'. - - * mml-smime.el (mml-smime-verify): Fix security button strings. - -2001-07-30 12:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-mime-save-part-and-strip): Save - gnus-article-mime-handles. - -2001-07-29 Simon Josefsson - - * mail-source.el (top-level): Require message for message-directory. - (mail-source-directory): Change default to message-directory. - - * smime.el (smime-keys, smime-CA-directory, smime-CA-file) - (smime-certificate-directory, smime-openssl-program) - (smime-encrypt-cipher, smime-dns-server): Fix doc (leading "*"). - (smime-extra-arguments): New variable. - (smime-dns-server): Fix customize group. - (smime-call-openssl-region): Use `smime-extra-arguments'. - -2001-07-29 Simon Josefsson - From Vladimir Volovich - - * smime.el (smime-call-openssl-region): Ignore stderr. - -2001-07-29 Simon Josefsson - From Christoph Conrad - - * gnus-agent.el (gnus-agent-save-group-info): Don't destroy active - file. - -2001-07-29 Simon Josefsson - - * mm-view.el (mm-view-pkcs7-decrypt): Adhere to `mm-decrypt-option'. - - Support S/MIME decryption. - - * mm-decode.el (mm-inline-media-tests): - (mm-inlined-types): - (mm-automatic-display): - (mm-attachment-override-types): Add application/{x-,}pkcs7-mime. - - * mm-view.el (mm-pkcs7-signed-magic): - (mm-pkcs7-enveloped-magic): New variables. - (mm-view-pkcs7-get-type): New function; identify PKCS#7 type. - (mm-view-pkcs7): New function; mm viewer for PKCS#7 blobs. - (mm-view-pkcs7-decrypt): New function; mm viewer for encrypted - PKCS#7 blobs. - - * smime.el (smime-decrypt-region): Expand keyfile. - -2001-07-29 Simon Josefsson - - * nntp.el (nntp-open-ssl-stream): Don't mess with internal - `ssl.el' variables. - - * gnus-agent.el (gnus-agent-save-group-info): Delete everything - but line instead of narrowing to it, because `nnmail-parse-active' - calls widen. Thanks to Christoph Conrad - . - -2001-07-29 Kai Gro,b_(Bjohann - - * gnus.el (gnus-summary-line-format): Mention `gnus-sum-thread-*' - for %B spec. - - * gnus-sum.el (gnus-summary-prepare-threads): If - gnus-sum-thread-tree-root is nil, use subject instead. - (gnus-sum-thread-tree-root, gnus-sum-thread-tree-single-indent) - (gnus-sum-thread-tree-vertical, gnus-sum-thread-tree-indent) - (gnus-sum-thread-tree-leaf-with-other) - (gnus-sum-thread-tree-single-leaf): Documentation. - (gnus-sum-thread-tree-single-indent): Allow nil. - -2001-07-28 09:00:00 ShengHuo ZHU - - * message.el (message-fill-paragraph): Do nothing if the user - wants filladapt-mode. - -2001-07-27 23:00:00 ShengHuo ZHU - - * mm-decode.el (mm-image-type-from-buffer): New function. - (mm-get-image): Use it. - -2001-07-27 18:00:00 ShengHuo ZHU - - * gnus.el (gnus-large-newsgroup): Add doc, "If it is nil, ..." - - * gnus-art.el (gnus-mime-view-all-parts): buffer-read-only covers - mm-display-parts too. - -2001-07-27 12:00:00 ShengHuo ZHU - - * nnfolder.el (nnfolder-request-accept-article): Bind - nntp-server-buffer. - - * nnmail.el (nnmail-parse-active): Read from buffer instead of - nntp-server-buffer. - -2001-07-27 11:00:00 ShengHuo ZHU - - * message.el (message-check-news-header-syntax): Use - message-post-method. - (message-send-news): Bind message-post-method. - -2001-07-27 07:00:00 ShengHuo ZHU - - * mml.el (mml-tweak-type-alist): New variable. - (mml-tweak-function-alist): New variable. - (mml-tweak-part): New function. - (mml-generate-mime-1): Use it. - -2001-07-26 22:00:00 ShengHuo ZHU - - * nnfolder.el (nnfolder-request-accept-article): Replace - nnfolder-request-list. - -2001-07-27 Simon Josefsson - - * nnimap.el (nnimap-open-server): Set nnimap-server-buffer if - nnoo-change-server failed to do it. - -2001-07-26 16:00:00 ShengHuo ZHU - - * gnus.el (gnus-parameters): Make it customizable. - -2001-07-26 15:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-mm-display-part): Narrow to point if eobp. - - * message.el (message-set-auto-save-file-name): More - poor-system-types. - - * mailcap.el (mailcap-parse-mimetypes): poor-system-types. - - * gnus-ems.el (nnheader-file-name-translation-alist): M$Windows-NT - supports +. - -2001-07-26 14:00:00 ShengHuo ZHU - - * mm-decode.el (mm-readable-p): New function. - (mm-inline-media-tests): Fix the default testers. - -2001-07-26 Simon Josefsson - - * nnimap.el (nnimap-version): Bump version number. - -2001-07-26 10:00:00 ShengHuo ZHU - From Steven E. Harris - - * nnheader.el (nnheader-translate-file-chars): cygwin32 is running - in M$Windows too. - -2001-07-26 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-send-drafts): Don't `error'. - -2001-07-25 21:00:00 ShengHuo ZHU - - * gnus-bcklg.el (gnus-backlog-shutdown): Make interactive. - - * mm-decode.el (mm-get-image): Guess then use the type. - - * gnus-art.el (gnus-mime-view-part-as-type): Don't copy cache. - -2001-07-25 12:54:00 Danny Siu - - * gnus-sum.el (gnus-summary-prepare-threads): Shouldn't do tree - display (%B) for threads if threading is off. - -2001-07-25 14:00:00 ShengHuo ZHU - From Henrik Enberg - - * gnus-msg.el: Customization patch. - -2001-07-25 22:22:22 Raymond Scholz - - * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups): New - variable. - (nnmail-split-fancy-with-parent): Ignore certain groups. - -2001-07-25 11:00:00 ShengHuo ZHU - - * gnus-util.el (gnus-byte-compile): New function. - (gnus-use-byte-compile): New variable. - (gnus-make-sort-function): Use it. - - * nnmail.el (nnmail-get-new-mail): Use it. - - * gnus-agent.el (gnus-category-make-function): Simple function or - compiled function. - (gnus-agent-fetch-group-1): Don't use (caaddr predicate). - - * gnus-gl.el (bbb-build-rate-command): Remove quote before lambda. - * gnus-topic.el (gnus-topic-sort-topics-1): Ditto. - (gnus-topic-sort-topics-1): Use gnus-byte-compile. - - * message.el (message-check-news-header-syntax): Remove quote. - -2001-07-24 19:00:00 ShengHuo ZHU - - * message.el (message-use-mail-followup-to): `t' is not a - documented value. - -2001-07-24 13:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-display-arrow): Test fboundp. - -2001-07-24 12:00:00 ShengHuo ZHU - - * mm-encode.el (mm-encode-buffer): Don't use 7bit encoding if - there are long lines. - -2001-07-24 Katsumi Yamaoka - - * dgnushack.el (copy-list): New compiler macro. - -2001-07-24 09:00:00 ShengHuo ZHU - - * message.el (message-bounce): If no Return-Path, the whole - content is considered as the original message. - - * nnml.el (nnml-check-directory-twice): New variable. - (nnml-article-to-file): Use it. - (nnml-retrieve-headers): Hack it. - -2001-07-24 02:00:00 ShengHuo ZHU - - * gnus-win.el (gnus-buffer-configuration): New configure. - - * gnus-art.el (gnus-mm-display-part): Don't select-window if it is - not alive. - - * mm-decode.el (mm-remove-part): Don't murder the current window (nil). - (mm-display-external): Use display-term configure. - -2001-07-24 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-default-hour): New variable. - (gnus-delay-article): Allow specific date in YYYY-MM-DD format. - -2001-07-23 22:00:00 ShengHuo ZHU - From Karl Kleinpaste - - * gnus-sum.el (gnus-summary-line-format-alist): Add %B. - (gnus-summary-prepare-threads): Ditto. - - * gnus.el (gnus-summary-line-format): Add %B. - -2001-07-23 19:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-articles-to-read): Use gnus-group-decoded-name. - - * mm-util.el (mm-string-as-multibyte): New function. - - * nnmh.el (nnmh-request-list-1): Encode, not decode! - -2001-07-23 18:00:00 ShengHuo ZHU - - * mm-util.el (mm-universal-coding-system): New variable. - - * gnus-start.el (gnus-startup-file-coding-system): Use it. - - * score-mode.el (score-mode-coding-system): Use it. - -2001-07-23 Katsumi Yamaoka - - * gnus-start.el (gnus-setup-news): Call - `gnus-check-bogus-newsgroups' just after the native server is - opened. - -2001-07-23 Kai Gro,b_(Bjohann - - * nnmail.el (nnmail-do-request-post): Util function to be used by - `nnchoke-request-post' for all nnmail-derived backends. - - * nnml.el (nnml-request-post): Use it. - - * gnus.el (gnus-valid-select-methods): nnml is a post-mail - backend, for it groks nnml-request-post. - - * gnus-group.el (gnus-group-highlight, gnus-group-highlight-line): - Treat `mail-post' backends like `mail' backends, not like `news' - backends. - -2001-07-22 09:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-setup-message): make-local-hook. - -2001-07-22 Kai Gro,b_(Bjohann - - * gnus-delay.el (gnus-delay-article): Fix `read-string' for - XEmacs. Allow more units. Submitted by Karl Kleinpaste - , slightly changed by Kai. - - * message.el (message-check-news-header-syntax): When checking - whether the groups exist, check the right server based on - `gnus-post-method'. - -2001-07-21 Kai Gro,b_(Bjohann - - * gnus-delay.el: New file. - -2001-07-21 13:00:00 ShengHuo ZHU - - * mm-util.el (mm-read-coding-system): Take two arguments. - - * gnus-sum.el (gnus-summary-show-article): Use - mm-read-coding-system. - - * gnus-art.el (article-de-quoted-unreadable): - (article-de-base64-unreadable, article-wash-html): - (gnus-mime-inline-part, gnus-mime-view-part-as-charset): Ditto. - -2001-07-21 Kai Gro,b_(Bjohann - - * nnml.el (nnml-request-post): New function. Can be used for - annotations in nnml groups. - -2001-07-19 Katsumi Yamaoka - - * nntp.el (nntp-request-newgroups): Use UTC date for NEWGROUPS - command. - - * gnus-start.el (gnus-find-new-newsgroups): Use - `message-make-date' instead of `current-time-string'. - (gnus-ask-server-for-new-groups): Ditto. - (gnus-check-first-time-used): Ditto. - -2001-07-20 11:00:00 ShengHuo ZHU - - * gnus-score.el (gnus-home-score-file): nnheader-translate-file-chars. - -2001-07-18 Per Abrahamsen - - * message.el (message-shorten-references): Change `maxcount' and - `cut' to obey USEFOR draft 5. - -2001-07-12 Colin Walters - - * gnus-sum.el (gnus-summary-display-arrow): New variable. - (gnus-summary-set-article-display-arrow): New function. - (gnus-summary-goto-subject): Use it. - -2001-07-18 12:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-import-article): Insert date if - doesn't exist. - -2001-07-18 11:00:00 ShengHuo ZHU - - * mml.el (mml-content-type-parameters): New variable. - (mml-content-disposition-parameters): New variable. - (mml-insert-mime-headers): Use them. - (mml-parse-1): Accept charset. - -2001-07-17 22:00:00 ShengHuo ZHU - - * gnus-group.el (gnus-group-select-group): Doc fix. - - * gnus-eform.el (gnus-edit-form-done): Return nil if end-of-file. - -2001-07-17 Katsumi Yamaoka - - * dgnushack.el (dgnushack-make-auto-load): Advise `make-autoload' - to handle `define-derived-mode'. - -2001-07-16 12:00:00 ShengHuo ZHU - From: Stefan Monnier - - * message.el (message-mode): Use define-derived-mode. - (message-tab): message-completion-alist. - - * imap.el (imap-interactive-login): Use make-local-variable. - (imap-open): Ditto. - (imap-authenticate): Ditto. - - * gnus-msg.el (gnus-setup-message): Change-major-mode-hook. - - * gnus-art.el (gnus-article-edit-mode): Use define-derived-mode. - -2001-07-16 Kai Gro,b_(Bjohann - - * message.el (message-citation-line-function): Refer to - gnus-cite-attribution-suffix. - -2001-07-15 Pavel Jan,Am(Bk - - * gnus-art.el,...: Error convention changes. - -2001-07-13 20:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-rebuild-thread): Count hidden lines too. - -2001-07-13 20:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-read-group-data): Nuke emacs-lisp-mode-hook. - (nnrss-read-server-data): Ditto. - -2001-07-13 12:00:00 ShengHuo ZHU - - * gnus-setup.el (gnus-use-installed-gnus): Typo. - * Cleanup files. - From Pavel@Janik.cz (Pavel Jan,Am(Bk). - -2001-07-13 08:00:00 ShengHuo ZHU - - * gnus.el (gnus-summary-line-format): Add %o. - - * gnus-sum.el (gnus-summary-pipe-output): Don't configure as pipe - unless shell outputs something. - -2001-07-13 07:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-boring-article-headers): Better doc. - (article-hide-headers): Better regexp. - Suggested by Matt Swift . - - * nnheader.el (nnheader-max-head-length): Better doc. - (nnheader-header-value): Skip spaces. - (nnheader-parse-head): Remove space. - Suggested by Matt Swift . - - * gnus-sum.el (gnus-summary-show-raw-article): New function. - (gnus-get-newsgroup-headers): Remove space. - -2001-07-12 23:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-msg-treat-broken-reply-to): Add force. - (gnus-summary-reply): Use it. - (gnus-summary-reply-broken-reply-to): New function. - (gnus-msg-force-broken-reply-to): New function. - - * mm-view.el (mm-inline-text): Showing as text/plain when error. - -2001-07-12 21:00:00 ShengHuo ZHU - - * gnus-draft.el (gnus-draft-setup): Restore gnus-newsgroup-name. - -2001-07-12 15:00:00 ShengHuo ZHU - - * mm-decode.el (mm-external-terminal-program): New variable. - (mm-display-external): Use it. Use term to display when no - window-system. - -2001-07-12 Bj,Av(Brn Torkelsson - - * gnus-srvr.el (gnus-browse-make-menu-bar): Changed one of the - Browse->Next entries to Browse->Prev - -2001-07-11 22:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-inews-do-gcc): Don't test gnus-alive-p. - -2001-07-11 18:00:00 ShengHuo ZHU - - * mm-encode.el (mm-content-transfer-encoding-defaults): Use base64 - for the default encoding. - - * nnrss.el (nnrss-url-field): New field. - (nnrss-request-article): Add newsgroups. - - * nnfolder.el (nnfolder-read-folder): Force to use a multibyte buffer. - -2001-07-11 04:00:00 ShengHuo ZHU - - * nndraft.el (nndraft-request-restore-buffer): Don't remove Date. - - * gnus-draft.el (gnus-draft-edit-message): Remove Date here. - (gnus-draft-setup): Remove backlog. - -2001-07-10 Pavel Jan,Am(Bk - - * gnus-logic.el, gnus-srvr.el, gnus-vm.el, nnheaderxm.el, nnoo.el: - Cleanup. - -2001-07-09 23:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-bug): Erase buffer. - - * nnfolder.el (nnfolder-possibly-change-group): Don't create group. - -2001-07-09 19:00:00 ShengHuo ZHU - - * mm-decode.el (mm-attachment-override-p): Fix typo. - -2001-03-19 05:28:00 Katsumi Yamaoka - - * gnus-kill.el (gnus-execute): Work with the extra headers. - * gnus-sum.el (gnus-summary-execute-command): Ditto. - -2001-07-09 17:00:00 ShengHuo ZHU - - * mm-view.el (mm-inline-text): w3-coding-system-for-mime-charset - may not defined. From: Raja R Harinath . - - * message.el (message-send-mail-real-function): New variable. - (message-send-mail-partially, message-send-mail): - - * nngateway.el (nngateway-request-post): Use it. - - * gnus-agent.el (gnus-agentize): Use it. - - * nnsoup.el (nnsoup-old-functions, nnsoup-set-variables) - (nnsoup-revert-variables): Use it. - -2001-07-09 Colin Walters - - * mm-decode.el (mm-inline-media-tests): Default to displaying as - text/plain if the type doesn't match any other media types. - (mm-inlined-types): Doc fix. - (mm-display-inline): Revert previous change (now handled by a - default type in `mm-inline-media-tests'. - (mm-inlinable-p): Revive. - (mm-display-part): Call `mm-inlinable-p'. - (mm-attachment-override-p): Ditto. - (mm-inlined-p): Doc fix. - - * gnus-art.el (gnus-mime-display-single): Call `mm-inlinable-p' as - well as `mm-inlined-p'. - -2001-07-09 13:00:00 ShengHuo ZHU - - * nntp.el (nntp-send-command, nntp-send-command-nodelete): - (nntp-send-command-and-decode): Use gnus-point-at-bol. - -2001-07-09 13:00:00 ShengHuo ZHU - From Paul Jarc - - * message.el (message-use-mail-followup-to): New variable. - (message-get-reply-headers): Use it. - -2001-07-04 Gerd Moellmann - - * nnheader.el (nnheader-init-server-buffer): Make sure the - *nntpd* buffer is made multibyte instead of a random buffer. - -2001-07-09 12:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-get-newsgroup-headers-xover): Get headers only - when it returns headers. - -2001-07-07 Simon Josefsson - - * rfc2047.el (rfc2047-encode-message-header): Skip header when - trying to fold. Thanks to Colin Walters - - -2001-07-06 Simon Josefsson - - * imap.el (imap-parse-address-list, imap-parse-flag-list) - (imap-parse-body-extension, imap-parse-body-ext, imap-parse-body): - Add information in `assert's. - - * nnimap.el (nnimap-possibly-change-group): Ignore uidvalidity - changes. (From nnimaps' point of view, `nnimap-verify-uidvalidity' - and `nnimap-group-overview-filename', should handle all - change-of-uidvalidity related issues. But there may be other - problems.) - -2001-07-05 Colin Walters - - * rfc2047.el (rfc2047-encode-message-header): Don't include the - header name when folding. - -2001-07-05 Colin Walters - - * mm-decode.el (mm-inlined-types): Document relationship with - `mm-inline-media-tests'. - (mm-display-inline): Default to displaying as plain text if no - inlining handler is available. - (mm-inlinable-p): Remove. - (mm-inlined-p): Don't call `mm-inlinable-p'. - (mm-automatic-display-p): Ditto. - (mm-attachment-override-p): Ditto. - -2001-07-04 Simon Josefsson - - * nnimap.el (nnimap-importantize-dormant): New variable. - (nnimap-request-update-info-internal): Use it. - (nnimap-request-set-mark): Ditto. - -2001-07-04 Didier Verna - - * nntp.el (nntp-send-command): don't pass a buffer argument to - `point'. Only XEmacs accepts this. - * nntp.el (nntp-send-command-nodelete): ditto. - * nntp.el (nntp-send-command-and-decode): ditto. - -2001-07-04 Didier Verna - - * nntp.el (nntp-open-connection-function): doc update. - * nntp.el (nntp-pre-command): New. - * nntp.el (nntp-via-rlogin-command): New. - * nntp.el (nntp-via-telnet-command): New. - * nntp.el (nntp-via-telnet-switches): New. - * nntp.el (nntp-via-user-name): New. - * nntp.el (nntp-via-user-password): New. - * nntp.el (nntp-via-address): New. - * nntp.el (nntp-via-envuser): New. - * nntp.el (nntp-via-shell-prompt): New. - * nntp.el (nntp-open-telnet-stream): New. - * nntp.el (nntp-open-via-rlogin-and-telnet): New. - * nntp.el (nntp-open-via-telnet-and-telnet): New. - * nntp.el (nntp-wait-for): check for possibly echo'ed commands. - * nntp.el (nntp-send-command): ditto. - * nntp.el (nntp-send-command-nodelete): ditto. - * nntp.el (nntp-send-command-and-decode): ditto. - -2001-06-30 YAGI Tatsuya - Trivial patch. - - * gnus-start.el (gnus-check-first-time-used): Use `if' instead of - `when'. - -2001-07-03 Simon Josefsson - From Nuutti Kotivuori - - * flow-fill.el (fill-flowed): Use (1+ (point-at-eol)) instead. - -2001-07-03 Simon Josefsson - - * flow-fill.el (fill-flowed): If `fill-region' inserts empty line, - remove it (workaround XEmacs `fill-region' bug). - -2001-07-01 Simon Josefsson - - * nnimap.el (nnimap-date-days-ago): Defeat locale. - -2001-06-28 11:00:00 ShengHuo ZHU - - * mml2015.el (mml2015-format-error): New function. - (mml2015-mailcrypt-decrypt, mml2015-mailcrypt-clear-decrypt) - (mml2015-mailcrypt-verify, mml2015-gpg-clear-verify) - (mml2015-mailcrypt-clear-verify, mml2015-gpg-verify): Use it. - -2001-06-26 22:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-retrieve-headers): The description may not exist. - Suggested by Christoph Conrad . - - * gnus-sum.el (gnus-summary-set-local-parameters): Don't override - group variables. - -2001-06-25 10:00:00 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-write-groups): Use gnus-prin1. - - * nnrss.el (nnrss-save-server-data): Bind print-level and print-length. - (nnrss-save-group-data): Ditto. - - * gnus-agent.el (gnus-agent-save-alist): Ditto. - -2001-06-25 Katsumi Yamaoka - - * message.el (message-do-send-housekeeping): Narrow to headers. - -2001-06-24 Simon Josefsson - - * rfc2047.el (rfc2047-fold-region): The check to skip WSP - insertion when breaking lines looked for " \t" instead of "[ \t]". - (rfc2047-encode-message-header): Fold lines even if - no QP encoding is done. - -2001-06-23 Simon Josefsson - From Samuel Tardieu - - * smime.el (smime-keys): Support additional certificates. - (smime-make-certfiles): New function. - (smime-sign-region): Use previous variables. - (smime-get-certfiles): New function. - (smime-sign-buffer): Use it. - (smime-verify-region): Support both CAfile and CApath. - -2001-06-23 Simon Josefsson - - * smime.el (smime-decrypt-region): Perhaps work. - -2001-06-22 10:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-copy-article-buffer): Typo. - -2001-04-06 Ralph Schleicher - - * mm-decode.el (mm-save-part): Rewrite file name. - (mm-file-name-rewrite-functions): New variable. - (mm-file-name-delete-whitespace): New function. - (mm-file-name-trim-whitespace): New function. - (mm-file-name-collapse-whitespace): New function. - (mm-file-name-replace-whitespace): New variable and function. - -2001-06-22 Simon Josefsson - - * message.el (message-make-date): Workaround locale for weekdays. - -2001-06-21 17:00:00 ShengHuo ZHU - - * message.el (message-goto-body): Return nil if not found. (revert!) - -2001-06-21 10:00:00 ShengHuo ZHU - From Fremlin - - * message.el (message-goto-body): Some messages have no header. - - * gnus-msg.el (gnus-copy-article-buffer): Use it. - -2001-06-21 Ralph Schleicher - - * nnultimate.el (nnultimate-retrieve-headers): Date fix. - -2001-06-21 10:00:00 ShengHuo ZHU - - * message.el (message-make-date): Add week day. - Suggested by Jason R. Mastaler . - -2001-06-19 Simon Josefsson - - * message.el (message-yank-prefix): Doc fix. - (message-yank-cited-prefix): Ditto. - (message-delete-not-region): Keep citation prefix on first line, - if possible and appropriate. - -2001-06-19 Simon Josefsson - - * imap.el (imap-process-connection-type): New variable. - (imap-kerberos4-open, imap-gssapi-open): Use it. This makes - recent `imtest's work completely (no line length issues), while - making making old `imtest's unusable. Thanks to NAGY Andras - for his work. - -2000-12-30 NAGY Andras - - * imap.el (imap-ssl-program): Add -quiet to shut up - OpenSSL/SSLeay's internal debug talk. - -2001-06-19 Matt Armstrong - - * imap.el (imap-parse-flag-list): Workaround bug in Courier IMAP - server. - -2001-06-19 10:00:00 ShengHuo ZHU - - * nnmail.el (nnmail-article-buffer): New variable. - (nnmail-split-incoming): Use it. - -2001-06-15 Eli Zaretskii - - * qp.el (quoted-printable-decode-region): If called interactively, - use coding-system-for-read. - -2001-06-16 09:00:00 ShengHuo ZHU - - * message.el (message-check-news-header-syntax): Check Reply-To. - -2001-06-16 08:00:00 ShengHuo ZHU - - * mml.el (mml-parse-1): Use message options. - - * message.el (message-do-fcc): Don't do anything if there is no - FCC. - -2001-06-16 Simon Josefsson - - * nnimap.el (nnimap-split-articles): Support 'junk to-groups. - (nnimap-expunge-search-string): New variable. - (nnimap-request-expire-articles): Use it. - -2001-06-15 19:00:00 ShengHuo ZHU - - * message.el (message-send-mail-with-qmail): wrong exit status is - 100 not 1. Reported by Paul Jarc . - -2001-06-15 09:00:00 ShengHuo ZHU - - * gnus-art.el (article-strip-multiple-blank-lines): Use - delete-region instead of replace-match. - -2001-06-14 16:00:00 ShengHuo ZHU - - * nnweb.el (nnweb-google-parse-1): Fix Google content regexp. - (nnweb-google-wash-article): Ditto. - -2001-06-14 Ferenc Wagner - - * nnweb.el (nnweb-google-parse-1): Fix Google url regexp. - -2001-06-13 Katsumi Yamaoka - - * gnus.el (gnus-define-group-parameter): Don't quote the defcustom - specs. - -2001-06-13 15:00:00 ShengHuo ZHU - - * gnus.el (gnus-email-address): Move it here. - - * gnus-art.el (article-de-quoted-unreadable): Read charset if - requested. - (article-de-base64-unreadable): Ditto. - (article-wash-html): Ditto. - -2001-06-12 14:00:00 ShengHuo ZHU - - * message.el (message-options-set-recipient): Don't add ", " - unless necessary. Suggested by Josh Huber . - -2001-06-12 12:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-group-alist): Use |fr| instead of [fr]. - -2001-06-12 11:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-plain-save-name): Use file-relative-name. - From Marc Lefranc . - - * nnrss.el (nnrss-node-text): Node might be nil. - -2001-06-11 10:00:00 ShengHuo ZHU - - * gnus-uu.el (gnus-uu-save-article): Use mml tag instead of - part. From Katsumi Yamaoka . - - * nnrss.el (nnrss-group-alist): More items. - -2001-06-09 23:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-node-text): Use cddr instead xml-node-children. - -2001-06-03 ShengHuo ZHU - Trivial patch from Dale Hagglund - - * gnus-mlspl.el (gnus-group-split-fancy): Fix generation of split - restrict clauses. - -2001-06-07 16:00:00 ShengHuo ZHU - - From Benjamin Rutt - - * message.el (message-wide-reply-confirm-recipients): New variable. - -2001-06-06 ShengHuo ZHU - Trivial patch from Mark Thomas - - * nnmail.el (nnmail-fix-eudora-headers): Change the In-Reply-To - fix so it works with XEmacs. - -2001-06-07 16:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-retrieve-headers): Support description as extra - headers. - -2001-06-07 15:00:00 ShengHuo ZHU - - * nnrss.el: Fix a few bugs. - -2001-06-05 Simon Josefsson - - * mm-decode.el (mm-handle-set-external-undisplayer): Don't - generate compiler warnings. From Alex Schroeder . - -2001-06-04 Hrvoje Niksic - - * mm-decode.el (mm-pipe-part): Bind coding-system-for-write to - binary so that we don't transmit ISO 2022 garbage to the process. - This is needed under XEmacs. - -2001-06-03 Simon Josefsson - - * imap.el (imap-ssl-open): Require ssl. (Otherwise ssl.el is - autoloaded incorrectly below because ssl-program-* is bound.) - Thanks to Amos Gouaux for report. - -2001-06-02 Simon Josefsson - - * imap.el (imap-kerberos4-open): - (imap-gssapi-open): - (imap-ssl-open): - (imap-network-open): - (imap-shell-open): - (imap-starttls-open): Set buffer to workaround spurious - `accept-process-output' buffer changes. Thanks to Mats Lidell - for report and partial patch and Jake - Colman for report. - -2001-05-31 13:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-catchup): New argument. - (gnus-summary-catchup-from-here): New function. - -2001-05-30 Kai Gro,b_(Bjohann - - * mm-view.el (mm-inline-image-xemacs): Insert newline, then move - back, then insert glyph. (Before, the glyph was inserted first, - then the newline.) This works around a behavior in XEmacs where - it is not possible to insert a character after a glyph which is at - the end of a buffer. Patch by Lloyd Zusman . - -2001-05-28 Kai Gro,b_(Bjohann - - From Jaap-Henk Hoepman (jhh@xs4all.nl). - - * mm-decode.el (mm-keep-viewer-alive-types): New variable. - (mm-keep-viewer-alive-p, mm-handle-set-external-undisplayer, - mm-destroy-postponed-undisplay-list): New functions. - (mm-display-external): Use them. - -2001-05-27 Kai Gro,b_(Bjohann - - * gnus-salt.el (gnus-tree-highlight-node): Bind `default-high' and - `default-low' when evaluating `gnus-summary-highlight'. - From Raja R Harinath . - -2001-05-27 Simon Josefsson - - * message.el (message-yank-cited-prefix): New variable. - (message-indent-citation): Use it. - - * mml2015.el (mml2015-mailcrypt-verify): Store gpg stderr output - as details. - (mml2015-mailcrypt-clear-verify): Ditto. - -2001-05-24 Kai Gro,b_(Bjohann - From Nevin Kapur . - - * gnus-sum.el (gnus-summary-default-high-score, - gnus-summary-default-low-score): New variables. - (gnus-summary-highlight): Use them. - -2001-05-16 Didier Verna - - * message.el (message-mail): pass the 'send-actions argument to - `message-setup'. - -2001-05-16 Simon Josefsson - From Raymond Scholz - - * gnus-art.el (gnus-mime-view-part-as-charset): - (gnus-mime-internalize-part): Doc fixes. - -2001-05-11 Simon Josefsson - - * gnus-start.el (gnus-ignored-newsgroups): Also ignore NNTP type - status lines without any text ("^215$"). - -2001-05-06 21:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-check-group): Reverse. - -2001-05-07 Simon Josefsson - - * message.el (message-get-reply-headers): - (message-followup): Fix typo, suggested by David Green - - -2001-05-05 15:00:00 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-request-expire-articles): Fix. - - * nnrss.el (nnrss-open-server): Read server data when it is called. - (nnrss-request-expire-articles): Fix. - -2001-05-05 09:00:00 ShengHuo ZHU - - * message.el (message-do-send-housekeeping): mail-abbrevs may - rename buffer behind Gnus. - -2001-05-04 14:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-check-group): Use nnheader-translate-file-chars. - (nnrss-group-alist): Add more resources. - (nnrss-check-group): Ignore errors. - -2001-05-04 00:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-request-expire-articles): Correct the return value. - - * nnslashdot.el (nnslashdot-request-list): Add time. - (nnslashdot-request-expire-articles): New function. - - * gnus-start.el (gnus-check-bogus-newsgroups): Remove bogus - secondary methods too. - -2001-05-03 23:00:00 ShengHuo ZHU - - * message.el (message-use-followup-to): Set default value to t. - -2001-05-03 Florian Weimer - - * message.el (message-dont-reply-to-names): Fix documentation. - (message-get-reply-headers): Use Mail-Followup-To only for wide - replies. - -2001-05-03 12:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-request-expire-articles): Calculate # of days - correctly. - (nnrss-check-group): Use time. - -2001-05-01 19:21:19 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.03 is released. - -2001-05-01 19:06:21 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-topic-article-to-article): Use the - group. - -2001-04-24 19:50:14 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-server-insert-server-line): Add a space. - -2001-04-15 14:55:03 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-retrieve-headers): Return all - available headers. - - * gnus-sum.el (gnus-read-all-available-headers): New variable. - (gnus-get-newsgroup-headers-xover): Use it. - -2001-04-14 15:47:26 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-retrieve-headers): Clean up. - -2001-04-30 17:00:00 ShengHuo ZHU - - * nntp.el (nntp-retrieve-groups): Use throw instead of error. - -2001-04-29 09:00:00 ShengHuo ZHU - - * nnrss.el (nnrss-insert-w3): Use cache before I figure out how to - disable it. - - * gnus.el (gnus-info-nodes): Remove a few The's. - -2001-04-29 08:00:00 ShengHuo ZHU - - * mail-source.el (mail-source-movemail): Call-process may return a - signal description string. - - * gnus-start.el (gnus-read-newsrc-el-file): - gnus-newsrc-file-version may be nil. - - * nnmail.el (nnmail-get-new-mail): Use the exact file only. - Suggested by Michael Sperber [Mr. Preprocessor] - . - -2001-04-25 Per Abrahamsen - - * mm-uu.el (mm-uu-configure-list): Fixed customize type. - -2001-04-24 Hrvoje Niksic - - * mm-view.el (mm-display-inline-fontify): Allow XEmacs to fully - fontify HANDLE. - -2001-04-18 Simon Josefsson - - * smime.el (smime-ask-passphrase): Rework to return value. - (smime-sign-region): Rework to bind value and use it. - (smime-decrypt-region): Ditto. - -2001-04-18 Simon Josefsson - Trivial patch from Mathias Herberts - - * smime.el (smime-ask-passphrase): New function. - (smime-sign-region): Use it. - (smime-encrypt-cipher): New variable. - (smime-decrypt-region): Ditto. - -2001-04-12 Jason Merrill - Committed by Simon Josefsson - - * imap.el (imap-shell-open): Erase the buffer *after* copying it into - the log. - -2001-04-14 01:14:42 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.02 is released. - -2001-04-14 00:48:42 Lars Magne Ingebrigtsen - - * gnus.el: Oort Gnus v0.01 is released. - -2001-04-13 22:01:46 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-highlight): Highlight read - undownloaded articles as read articles. - - * gnus-agent.el (gnus-agent-get-undownloaded-list): Clean up. - (gnus-agent-get-undownloaded-list): Mark all undownloaded - articles, even read ones, as such. - - * gnus-sum.el (gnus-summary-find-matching): Clean up. - (gnus-find-matching-articles): New function. - (gnus-summary-limit-include-matching-articles): New command. - (gnus-summary-limit-include-thread): Include articles that have - matching subjects. - (gnus-offer-save-summaries): Clean up. - -2001-04-13 Kai Gro,b_(Bjohann - - * nnmail.el (nnmail-split-fancy-with-parent): Add docstring. - -2001-04-12 19:00:00 ShengHuo ZHU - From Jason Merrill - - * gnus-sum.el (gnus-summary-insert-new-articles): Reverse the articles. - -2001-04-10 08:01:15 Katsumi Yamaoka - Committed by ShengHuo ZHU - - * gnus-msg.el (gnus-post-news): Fill the Newsgroups header by the - newsgroup names when the original article is a news message. - -2001-04-12 19:00:00 ShengHuo ZHU - - * message.el (message-cite-prefix-regexp): Use POSIX regexp if - supported. Suggest by Jim Meyering . - -2001-04-02 Nevin Kapur - Committed by Kai Gro,b_(Bjohann . - - * nnmail.el (nnmail-split-it): Added check for .* at the end of - regexp in nnmail-split-fancy. - -2001-04-10 Simon Josefsson - - * message.el (message-options-set-recipient): Look at Cc and Bcc too. - -2001-04-10 Colin Marquardt - - * message.el (message-send-mail): Improve the interaction with the - user. - -2001-04-10 Simon Josefsson - - * imap.el (imap-message-copy): Work around buggy servers that - doesn't send TRYCREATE tags. - -2001-04-09 01:15:54 Katsumi Yamaoka - - * gnus-start.el (gnus-read-newsrc-el-file): Work with Semi-gnusae. - -2001-04-05 21:43:25 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-update-summary-mark-positions): Use a valid - date. - -2001-04-04 16:13:17 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-quit): Check that the dribble buffer - lives. - -2001-04-02 00:40:12 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-parse-news-url): New function. - (gnus-button-handle-news): New function. - (gnus-button-alist): Point to new functions. - - * gnus-group.el (gnus-group-quit): Only mark buffer in non-empty. - - * gnus-start.el (gnus-read-newsrc-el-file): Nix out - gnus-format-specs. - - * message.el (message-check-news-header-syntax): Question even - when Gnus doesn't know the group names. - (message-send-news): Clean up. - - * gnus-start.el (gnus-dribble-read-file): Say whether Gnus was - exited on purpose without saving. - - * gnus-group.el (gnus-group-quit): Mark the dribble file as `Q'. - -2001-04-01 00:37:14 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-orphans): Clean up. - - * gnus-win.el (gnus-remove-some-windows): Leave one Gnus window. - - * gnus-sum.el (gnus-summary-exit): Kill the summary buffer a bit - later. - - * gnus-start.el (gnus-close-all-servers): Find the right items to - close. - - * qp.el (quoted-printable-decode-region): Just message - malformation; don't quit. - -2001-03-31 21:00:00 ShengHuo ZHU - From Gerd Moellmann . - - * gnus.el (gnus-interactive): A typo. - -2001-03-26 Juanma Barranquero - Committed by ShengHuo ZHU - - * gnus-util.el (gnus-delete-alist): Declare it as an alias of - `assq-delete-all', if that function exists; otherwise use the old - definition. Documentation changed to match the one in - `assq-delete-all'. - -2001-04-01 00:37:14 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-close-all-servers): New function. - - * gnus-srvr.el (gnus-server-close-all-servers): Clean up. - (gnus-server-remove-denials): Clean up. - - * gnus-sum.el (gnus-summary-sort-by-original): New command and - keystroke. - -2001-03-31 02:56:55 Lars Magne Ingebrigtsen - - * message.el (message-send-news): Message where we are sending. - (message-send-mail): Ditto. - - * gnus.el (gnus-server-string): New function. - - * gnus-sum.el (gnus-summary-up-thread): Doc fix. - - * mm-decode.el (mm-default-directory): Customized. - (mm-tmp-directory): Ditto. - - * gnus-sum.el (gnus-summary-catchup-and-exit): Doc fix. - (gnus-get-newsgroup-headers): Return -1 for articles without Lines - or Chars. - (gnus-summary-line-format-alist): ?l is now a string. - (gnus-summary-prepare-threads): Output ? for unknown lines. - (gnus-summary-insert-line): Ditto. - (gnus-summary-print-article): Unbalanced parentheses. - - * gnus-msg.el (gnus-inews-do-gcc): Check group to allow it to find - out whether new stuff has arrived. - -2001-03-31 02:14:38 Alan Shutko - - * gnus-sum.el: Let printing work on ttys on Emacs. - -2001-03-31 01:11:14 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-post-news): Add an empty Newsgroups header - when forcing news. - - * gnus-sum.el (gnus-summary-mark-article-as-replied): Make into a - command. - -2001-03-31 01:04:54 Francis Litterio - - * message.el (message-set-auto-save-file-name): Don't use - asterisks under nt. - -2001-03-31 00:03:42 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-inews-insert-draft-meta-information): Allow - lists of articles. - - * gnus-uu.el (gnus-uu-digest-mail-forward): Mark as forwarded. - - * gnus-msg.el (gnus-put-message): Clean up. - (gnus-summary-reply): Mark all replied-to articles as replied to. - (gnus-inews-add-send-actions): Also mark as forwarded. - (gnus-summary-mail-forward): Mark as forwarded. - - * gnus-sum.el (gnus-summary-mark-article-as-replied): Take a list - of articles. - (gnus-summary-mark-article-as-forwarded): Ditto. - - * gnus-msg.el (gnus-summary-resend-message): Mark article as - forwarded. - (gnus-summary-mail-forward): Clean up. - - * gnus.el (gnus-article-mark-lists): Added forward. - - * gnus-sum.el (gnus-forwarded-mark): New variable. - (gnus-summary-prepare-threads): Use it. - (gnus-summary-update-secondary-mark): Ditto. - (gnus-newsgroup-forwarded): New variable. - -2001-03-30 23:13:37 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-summary-reply): Allow very wide replies. - (gnus-summary-very-wide-reply): New command and keystroke. - (gnus-summary-very-wide-reply-with-original): Ditto. - - * gnus-score.el (gnus-adaptive-word-length-limit): New variable. - (gnus-score-adaptive): Use it. - - * gnus-start.el (gnus-get-unread-articles): Clean up. - -2001-03-21 20:00:43 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-retrieve-headers): Work for other - boards. - -2001-03-21 Didier Verna - - * gnus-start.el (gnus-subscribe-newsgroup-hooks): New. - * gnus-start.el (gnus-subscribe-newsgroup): use it. - -2001-03-15 09:47:23 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-retrieve-headers): Understand - long-form month names. - -2001-03-18 23:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-show-all-headers): - gnus-article-show-all-headers is broken. Use - gnus-summary-toggle-header instead. - - * mml2015.el (mml2015-gpg-extract-from): No error. - -2001-03-18 23:00:00 ShengHuo ZHU - From Bj,Ax(Brn Mork . - - * mml2015.el (mml2015-gpg-extract-from): New function. - (mml2015-gpg-verify): Use it. - (mml2015-gpg-clear-verify): Use it. - -2001-03-17 10:00:00 ShengHuo ZHU - - * message.el (message-setup-fill-variables): Use - fill-paragraph-function. - (message-fill-paragraph): Take an argument. - (message-newline-and-reformat): Take another argument. - -2001-03-16 20:00:00 ShengHuo ZHU - - * message.el (rmail-output): It is in rmailout.el not rmail.el. - -2001-03-16 16:00:00 ShengHuo ZHU - - * message.el (message-forward): local-variable-p takes an extra - argument in XEmacs. - -2001-03-16 Simon Josefsson - - * nnimap.el (nnimap-dont-use-nov-p): Renamed from - `nnimap-use-nov-p' (it really tested the negative). - (nnimap-retrieve-headers): Use it. - -2001-03-11 Kai Gro,b_(Bjohann - - * message.el (message-generate-headers-first): Update doc. - -2001-03-10 Matthias Wiehl - Trivial patch. - - * gnus.el (gnus-summary-line-format): Typo. - -2001-03-11 Simon Josefsson - - * mailcap.el (mailcap-mime-data): Add application/sieve. - (mailcap-mime-extensions): Add .siv, .xls. - -2001-03-14 20:00:00 ShengHuo ZHU - From Christoph Conrad - - * gnus-score.el (gnus-summary-lower-thread): Typo. - -2001-03-14 19:00:00 ShengHuo ZHU - - * message.el (message-forward-decoded-p): New variable. - (message-forward-subject-author-subject): Use it. - (message-make-forward-subject): Use it. - (message-forward): Use it. - - * gnus-uu.el (gnus-uu-digest-mail-forward): Use it. - - * mm-util.el, message.el, rfc2047.el, gnus-sum.el, gnus-score.el: - Sync with Emacs 21 (tag EMACS_PRETEST_21_0_100). - -;;Has been fixed -- zsh. -;;2001-03-05 Dave Love -;; -;; * mm-util.el (mm-mime-mule-charset-alist): Fix utf-8 case. -;; Move it after definition of mm-coding-system-p. -;; -2001-03-01 Dave Love - - * mm-util.el (mm-inhibit-file-name-handlers): Add - image-file-handler. - -2001-02-11 Dave Love - - * message.el (message-signature-file): Fix doc, :type. - -2001-02-08 Dave Love - - * rfc2047.el (rfc2047-fold-region): Don't forward-char at EOB. - (message-posting-charset): Defvar when compiling again. - (rfc2047-encodable-p): Require message. - - * gnus-sum.el (gnus-alter-articles-to-read-function): - * gnus-score.el (gnus-score-after-write-file-function): Fix :type. - -2001-03-08 20:00:00 ShengHuo ZHU - - * nnrss.el: New file. - -2001-03-08 02:41:36 Katsumi Yamaoka - Committed by ShengHuo ZHU - - * rfc2047.el (rfc2047-unfold-region): Fix arg of - `skip-chars-forward'. - -2001-03-07 13:00:00 ShengHuo ZHU - - * nndraft.el (nndraft-request-group): Restore auto save files if - the original files do not exist. - -2001-03-07 11:00:00 ShengHuo ZHU - - * gnus-score.el (gnus-score-find-bnews): Print messages on illegal - SCORE paths. - - * mm-decode.el (mm-dissect-buffer): Call - mail-extract-address-components only if necessary. - -2001-03-06 13:00:00 ShengHuo ZHU - - * gnus-score.el (gnus-score-find-bnews): Maybe there is no - directory part. - (gnus-score-search-global-directories): Use file-directory-p. - - * gnus-score.el (gnus-score-score-files-1): Use - gnus-kill-files-directory. - From Adrian Aichner . - -2001-03-05 08:00:00 ShengHuo ZHU - - * gnus.el (charset): Move here from gnus-sum.el. - -2001-03-04 11:00:00 ShengHuo ZHU - - * mml.el (mml-preview): Disable local map. - - * gnus-sum.el (gnus-summary-make-menu-bar): Make - gnus-article-post-menu here. - - * gnus-art.el (gnus-article-make-menu-bar): Make summary-menu bar - if it has not been made. - -2001-03-02 02:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-describe-key): Map key to event. - (gnus-article-describe-key-briefly): Ditto - -2001-03-01 23:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-limit-include-expunged): Fix. - -2001-03-01 22:00:00 ShengHuo ZHU - From Katsumi Yamaoka . - - * dgnushack.el (coerce, merge, subseq): defmacro. - -2001-03-01 22:00:00 ShengHuo ZHU - - * lpath.el (nndraft-request-group): Move it here from nndraft.el. - A fake defalias in nndraft.el results a not-activated bug in - uncompiled versions. - -2001-02-26 11:27:27 Paul Jarc - Committed by ShengHuo ZHU - - * gnus-util.el (gnus-split-references): Handle malformed References:. - -2001-02-26 08:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-mime-part-status): 1 part. - -2001-02-25 10:00:00 ShengHuo ZHU - From NAGY Andras . - - * gnus.el (gnus-parameters): Typo. - -2001-02-24 00:00:00 ShengHuo ZHU - - * gnus.el (gnus-read-method): Remove redundancy. - -2001-02-23 23:00:00 ShengHuo ZHU - - * nnslashdot.el (nnslashdot-backslash-url): New variable. - (nnslashdot-request-list): Use it. - -2001-02-23 22:00:00 ShengHuo ZHU - - * nnml.el (nnml-generate-active-info): Fix the case when there is - no file. - - * gnus-sum.el (gnus-summary-import-article): Display it. Enable edit. - (gnus-summary-create-article): New function. - - * gnus-group.el (gnus-group-mark-article-read): New function. - - * gnus-msg.el (gnus-inews-do-gcc): Use it. - - * gnus-art.el (gnus-article-edit-article): Set modified-p nil. - -2001-02-23 17:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-edit-done): Don't use - gnus-article-edit-exit. - (gnus-article-edit-exit): Confirm and insert original-article-buffer. - - * gnus.el (gnus-parameters): New variable. - Suggested by NAGY Andras . - (gnus-parameters-get-parameter): New function. - (gnus-group-find-parameter): Use it. - -2001-02-23 Simon Josefsson - - * gnus-msg.el (gnus-post-method): Fix documentation to reflect - change of default value to `current'. - -2001-02-23 08:00:00 ShengHuo ZHU - - * nneething.el (nneething-get-head): Insert unreadable file too. - -2001-02-22 23:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-insert-articles): Remove fetched headers. - - * webmail.el (webmail-type-definition): Deja is bought by google. - -2001-02-22 22:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-fetch-headers): New function. - (gnus-select-newsgroup): Use it. - (gnus-summary-insert-articles): New function. - (gnus-summary-insert-old-articles): New function. - (gnus-summary-insert-new-articles): New function. - - * gnus-group.el (gnus-group-prepare-flat-list-dead): Use decoded-name. - (gnus-group-list-active): Ditto. - * gnus-sum.el (gnus-set-mode-line): Ditto. - (gnus-summary-read-group-1): Ditto. - -2001-02-21 15:00:00 ShengHuo ZHU - - * gnus-topic.el (gnus-topic-get-new-news-this-topic): Redraw the - current topic. - -2001-02-21 01:00:00 ShengHuo ZHU - - * smiley.el (gnus-smiley-display): Don't do widening. - - * smiley-ems.el (gnus-smiley-display): Don't do widening. Smiley - within body. - - * gnus-msg.el (gnus-inews-do-gcc): Activate group anyway. - - * gnus-art.el (gnus-mime-display-multipart-alternative-as-mixed): - New variable. - (gnus-mime-display-multipart-related-as-mixed): New variable. - (gnus-mime-display-part): Use them. - -2001-02-20 16:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-setup-news): Allow gnus-group-line-format to be - something special. - -2001-02-20 00:00:00 ShengHuo ZHU - - * nnweb.el (nnweb-request-group): Set nnweb-group anyway. - (nnweb-request-article): Call reference if exists. - (nnweb-type-definition): Dejanews is bought by google.com. - Beta! - -2001-02-19 19:00:00 ShengHuo ZHU - - * gnus-draft.el (gnus-draft-reminder): "Confirm to exit?" - -2001-02-19 Kai Gro,b_(Bjohann - - * gnus-sum.el (gnus-thread-sort-functions): Doc fix. Refer to - gnus-article-sort-functions. - (gnus-article-sort-functions): Doc fix. Refer to - gnus-thread-sort-functions. - -2001-02-18 20:00:00 ShengHuo ZHU - From Paul Jarc . - - * message.el (message-get-reply-headers): More fixes. - -2001-02-17 Paul Jarc - Committed by ShengHuo ZHU - - * message.el (message-get-reply-headers): Fix bug with - Mail-Followup-To/to-address interaction. - -2001-02-17 13:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-configure-posting-styles): Match header in - gnus-article-copy. - -2001-02-16 22:00:00 ShengHuo ZHU - - * message.el (message-do-send-housekeeping): Rename to a better - name. - -2001-02-16 18:00:00 ShengHuo ZHU - - * message.el (message-cancel-news): Check article first, then ask - yes or no. - -2001-02-16 14:00:00 ShengHuo ZHU - - * mm-uu.el (mm-uu-type-alist): Add emacs-sources. - -2001-02-16 11:00:00 ShengHuo ZHU - - * gnus-range.el (gnus-range-normalize): New function. - -2001-02-15 NAGY Andras - - * imap.el (imap-gssapi-open): Set imap-c-l-s-first. - -2001-02-14 21:00:00 ShengHuo ZHU - - * gnus-srvr.el (gnus-server-regenerate-server): Use gnus-get-function. - - * nnagent.el (nnagent-request-regenerate): New function. - - * nnfolder.el (nnfolder-request-regenerate): New deffoo. - - * nnml.el (nnml-generate-nov-databases): Accept argument - server. Don't open server if it is opened. - (nnml-request-regenerate): Use it. Change to deffoo. - -2001-02-14 Katsumi Yamaoka - Committed by ShengHuo ZHU - - * gnus.el (gnus-define-group-parameter): Fix. - -2001-02-14 15:00:00 ShengHuo ZHU - - * gnus.el (gnus-define-group-parameter): Improved. - - * gnus-sum.el (charset): Define parameter. - (ignored-charsets): Ditto. - (gnus-summary-setup-default-charset): Use them. - - * gnus-start.el (gnus-read-descriptions-file): Use them. - - * gnus-cus.el (gnus-group-parameters): Remove them. - -2001-02-14 00:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-print-article): Redo highlight. - -2001-02-13 21:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-read-group-1): Remove - gnus-summary-set-local-parameters. - (gnus-summary-setup-buffer): Put it here. - -2001-02-13 20:00:00 ShengHuo ZHU - - * gnus.el (to-address): Define parameter. - (to-list): Ditto. - * gnus-art.el (article-hide-boring-headers): Use them. - * gnus-msg.el (gnus-post-news): Ditto. - * gnus-cus.el (gnus-group-parameters): Remove them. - -2001-02-13 19:00:00 ShengHuo ZHU - - * gnus-draft.el (gnus-draft-reminder): New function. - - * gnus-art.el (gnus-sender-save-name): New function. - -2001-02-13 18:00:00 ShengHuo ZHU - - * mm-util.el (mm-mime-charset): Error message. - -2001-02-13 11:00:00 ShengHuo ZHU - - * message.el (message-check-news-body-syntax): Don't check mml lines. - -2001-02-12 11:00:00 ShengHuo ZHU - - * gnus-topic.el (gnus-subscribe-topics): Return nil if not - subscribe. - - * gnus-start.el (gnus-call-subscribe-functions): New function. - (gnus-find-new-newsgroups): Use it. - (gnus-ask-server-for-new-groups): Use it. - (gnus-check-first-time-used): Use it. - (gnus-subscribe-newsgroup-method): Grok a list of functions. - (gnus-subscribe-options-newsgroup-method): Ditto. - (gnus-subscribe-hierarchically): Return gnus-subscribe-newsgroup's - return . - -2001-02-12 Kai Gro,b_(Bjohann - - * gnus-cus.el (gnus-score-customize): Doc fix. - -2001-02-11 Jesper Harder - - * dgnushack.el (my-getenv): Typo. - -2001-02-11 11:00:00 ShengHuo ZHU - - * dgnushack.el (dgnushack-make-load): Don't autoload smiley functions. - -2001-02-11 09:00:00 ShengHuo ZHU - - * gnus-group.el (gnus-group-suspend): Offer save summaries. - - * gnus-art.el (gnus-treat-leading-whitespace): New variable. - (gnus-treatment-function-alist): Use it. - (article-remove-leading-whitespace): New function. - (gnus-article-make-menu-bar): Use it. - - * gnus-sum.el (gnus-summary-wash-empty-map): Add - remove-leading-whitespace. - (gnus-summary-wash-map): Bind strip-headers-in-body to `W a', - because of conflict. - -2001-02-09 23:00:00 ShengHuo ZHU - - * Makefile.in: Hack generating gnus-load.el. - * dgnushack.el: Ditto. - * gnus-load.el: Remove it. - -2001-02-09 20:00:00 ShengHuo ZHU - - * dgnushack.el : Add URLDIR. - - * Makefile.in (EMACS_COMP): Ditto. - -2001-02-09 19:00:00 ShengHuo ZHU - - * gnus-cus.el (gnus-score-customize): Error on no score file. - -2001-02-09 08:00:00 ShengHuo ZHU - - * mm-decode.el (mm-merge-handles): New function. - - * mm-view.el (mm-inline-message): Use it. - (mm-view-message): Ditto. - - * mm-partial.el (mm-inline-partial): Ditto. - - * mm-extern.el (mm-inline-external-body): Ditto. - - * gnus-art.el (gnus-mime-view-part): Ditto. - (gnus-mime-view-part-as-type): Ditto. - (gnus-mime-save-part-and-strip): Prevent users to strip in some - cases. - -2001-02-08 20:00:00 ShengHuo ZHU - - * message.el (message-cancel-news): Allow to shoot foot. - (message-supersede): Ditto. - -2001-02-08 Tommi Vainikainen - Trivial patch. - - * gnus-sum.el (gnus-simplify-subject-re): Use - message-subject-re-regexp. - -2001-02-08 18:00:00 ShengHuo ZHU - - * nnmail.el (nnmail-expiry-target-group): Bind - nnmail-cache-accepted-message-ids to nil. - - * gnus-xmas.el (gnus-xmas-article-display-xface): Use binary - coding system. - -2001-02-07 23:00:00 ShengHuo ZHU - - * qp.el (quoted-printable-encode-region): Make sure characters are - between 00 and FF. Don't check charset. - - * mm-encode.el (mm-encode-content-transfer-encoding): Use unibyte - in Emacs 20. - * rfc2047.el (rfc2047-q-encode-region): Ditto. - -2001-02-07 11:00:00 ShengHuo ZHU - - * message.el (message-make-forward-subject): Argument decoded. - (message-forward): Use it when digest. - - * gnus-uu.el (gnus-uu-grab-articles): Shoot down original article - buffer. - -2001-02-07 Kai Gro,b_(Bjohann - - * message.el (message-generate-headers-first): Doc fix. - -2001-02-07 10:00:00 ShengHuo ZHU - - * gnus-art.el (article-make-date-line): Error proof. - -2001-02-06 21:00:00 ShengHuo ZHU - - * gnus-group.el (gnus-group-listing-limit): New variable. - (gnus-group-prepare-flat-list-dead): Use old trick to speed up. - - * gnus-topic.el (gnus-group-prepare-topics): Use gnus-killed-hashtb. - -2001-02-06 18:00:00 ShengHuo ZHU - - * message.el (message-newline-and-reformat): Special case for - breaking at BOL. - -2001-02-06 Per Abrahamsen - - * gnus-uu.el (gnus-uu-save-article): Make the topics summary a - message/rfc822. - -2001-02-06 09:00:00 ShengHuo ZHU - - * message.el (message-encode-message-body): Don't insert - Content-Type if it is inside a mail. - -2001-02-06 02:00:00 ShengHuo ZHU - - * gnus-xmas.el (gnus-xmas-article-menu-add): Add - gnus-article-commands-menu. - - * gnus-sum.el (gnus-summary-make-menu-bar): Don't share menu bar - in Emacs. - - * gnus-start.el (gnus-read-descriptions-file): Use - gnus-group-name-charset and gnus-group-charset-alist. - -2001-02-04 23:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-mark-as-processable): Understand - active region. - - * gnus-start.el (gnus-group-change-level): Remove from both - gnus-zombie-list and gnus-killed-list. - -2001-02-04 11:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-subscribe-options-newsgroup-method): Add - gnus-subscribe-topics. - - * gnus-cus.el (gnus-extra-topic-parameters): Fix doc. - -2001-02-04 11:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-make-menu-bar): Make - gnus-article-post-menu. - - * gnus-xmas.el (gnus-xmas-article-menu-add): Add post menu. - - * gnus-sum.el (gnus-summary-make-menu-bar): Use t if XEmacs. - - * gnus-group.el (gnus-group-make-menu-bar): Ditto. - - * message.el (message-mode-menu): Ditto. - - * gnus-art.el (defvar): eval-when-compile. - -2001-02-02 17:00:00 ShengHuo ZHU - - * gnus-agent.el (gnus-agentize): Fix doc. - -2001-02-02 Karl Kleinpaste - - * mml.el (mml-preview): Bind `q'. - -2001-02-02 12:00:00 ShengHuo ZHU - - * mm-util.el (mm-mime-mule-charset-alist): non-Mule case. - -2001-01-31 Dave Love - - * mm-util.el (mm-mime-mule-charset-alist) - (mm-find-mime-charset-region): Consider mule-utf-8. - -2001-01-31 Dave Love - - * gnus-art.el (gnus-article-x-face-command) - (gnus-treat-display-xface, gnus-treat-display-smileys): Add - :version. - -2001-01-26 Dave Love - - * mm-util.el (mm-multibyte-string-p): New. - -;; * qp.el: Remove un-logged bogus changes from 2000-12-20. -;; (quoted-printable-encode-region): Doc fix. Don't call -;; string-as-multibyte on class. Clarify line-folding. - (quoted-printable-encode-string): Make temp buffer inherit - string's multibyteness. - -2001-01-23 Gerd Moellmann - - * nnheader.el (toplevel): Don't require `gnus-util' at - compile-time; this creates a circular dependency, and prevents - a bootstrap. - -2001-01-22 Andreas Schwab - - * nnheader.el (gnus-delete-line): Autoload it as a macro. - -2001-01-31 18:00:00 ShengHuo ZHU - - * nnmail.el (nnmail-remove-list-identifiers): Use consp. - - * gnus-art.el (article-hide-list-identifiers): Ditto. - - * gnus-sum.el (gnus-summary-remove-list-identifiers): Ditto. - -2001-01-31 15:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-remove-list-identifiers): Similar. - - * gnus-art.el (article-hide-list-identifiers): Similar. - -2001-01-31 Karl Kleinpaste - - * nnmail.el (nnmail-remove-list-identifiers): Improved. - -2001-01-31 09:00:00 ShengHuo ZHU - - * gnus-score.el (gnus-summary-score-entry): match may be an integer. - -2001-01-30 10:00:00 ShengHuo ZHU - - * gnus-util.el (gnus-string-equal): New function. - - * gnus-art.el (article-hide-boring-headers): Use it. - -2001-01-27 Karl Kleinpaste - - * gnus-art.el (gnus-article-banner-alist): eGroups new banner. - -2001-01-27 00:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-msg-mail): Support switch-action. - -2001-01-26 08:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-summary-save-in-pipe): Prompt for saving - command if there is not last-saver. - -2001-01-24 19:00:00 ShengHuo ZHU - - * nntp.el (nntp-open-connection): 201 is possible. - -2001-01-24 18:00:00 ShengHuo ZHU - - * rfc2047.el (rfc2047-encode): MIME charset is not coding system. - (rfc2047-charset-encoding-alist): Add big5. - -2001-01-24 17:00:00 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-add-server): Redraw the line. - (gnus-agent-remove-server): Ditto. - (autoload): gnus-server-update-server. - - * gnus-srvr.el (gnus-server-line-format): Add %a. - (gnus-server-line-format-alist): Add gnus-tmp-agent. - (gnus-server-insert-server-line): Use it. - -2001-01-24 09:00:00 ShengHuo ZHU - - * mm-util.el (mm-mime-mule-charset-alist): Preferred MIME names - GB2312 and Big5. - -2001-01-24 Simon Josefsson - - * mail-source.el (mail-sources): Add :program specifier to IMAP - mail source. - (mail-source-fetch-imap): Map :program to `imap-shell-program'. - -2001-01-24 08:00:00 ShengHuo ZHU - - * gnus-score.el (gnus-score-lower-thread): Fix a doc typo. - -2001-01-24 12:22:47 Lars Magne Ingebrigtsen - - * nntp.el (nntp-wait-for): Return the success code. - (nntp-open-connection): Use it. - -2001-01-11 11:49:02 Lars Magne Ingebrigtsen - - * gnus-int.el (gnus-check-server): Allow breaking the opening. - -2001-01-23 11:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-print-article): Remove process mark. - -2001-01-22 17:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-print-article): Take one prefix - argument. Allow to print several articles in one file. - -2001-01-21 12:00:00 ShengHuo ZHU - - * webmail.el (webmail-type-definition): netaddress changes. - -2001-01-21 00:00:00 ShengHuo ZHU - - * gnus.el: Fix copyright. Remove trailing spaces. - - * message.el (message-forward): Use mule4. - -2001-01-20 09:00:00 ShengHuo ZHU - - * mm-util.el (mm-string-as-unibyte): New function. - - * message.el (message-forward): Use it. - -2001-01-19 23:00:00 ShengHuo ZHU - - * message.el (message-cite-original-without-signature): Don't peel - off the blank line. - (message-get-reply-headers): Add Cc if it is not in follow-to. - -2001-01-20 Simon Josefsson - - * mm-decode.el (mm-handle-multipart-from): Add. - (mm-dissect-buffer): Save From: header value. - (mm-security-from): Remove. - (mm-possibly-verify-or-decrypt): Don't set mm-security-from. - - * mml-smime.el (mml-smime-verify): Use `mm-handle-multipart-from' - instead of `mml-security-from'. Protect null from value. - -2001-01-20 Simon Josefsson - - * mailcap.el (mailcap-mime-data): Run `gnumeric' on - application/vnd.ms-excel attachments. - -2001-01-19 Simon Josefsson - - * gnus-art.el (gnus-button-alist): Add `?=' to mailto URL regexp. - -2001-01-19 13:00:00 ShengHuo ZHU - - * message.el (message-ignored-mail-headers): Ditto. - -2001-01-19 Simon Josefsson - - * message.el (message-ignored-news-headers): Only search beginning - of line. - -2001-01-19 ShengHuo Zhu - Trivial patch from Alberto Lusiani - - * message.el (message-send-mail): Content-Type may not be there. - -2001-01-18 23:00:00 ShengHuo ZHU - - * gnus-ems.el (gnus-article-display-xface): Add BUFFER. - * gnus-xmas.el (gnus-xmas-article-display-xface): Ditto. - - * gnus-art.el (article-display-x-face): Insert X-Face if there is - not. - -2001-01-18 19:00:00 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-read-group-1): Don't test dead - non-native groups. - -2001-01-18 18:00:00 ShengHuo ZHU - - * message.el (message-yank-original): Understand - universal-argument. - -2001-01-18 16:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-boring-article-headers): Add to-address. - (article-hide-boring-headers): Ditto. - - * mm-view.el (mm-inline-message): Insert a newline unless bolp. - -2001-01-18 08:00:00 ShengHuo ZHU - - * rfc2047.el (rfc2047-fold-region): Don't insert LWSP if there is - one. - -2001-01-16 Simon Josefsson - - * message.el (message-make-in-reply-to): Add comment to message-id - (old syntax, see 2000-08-02 change). - -2001-01-16 13:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-url-mailto): Use gnus-msg-mail. - (gnus-button-mailto): Setup message. Moved to gnus-msg.el. - (gnus-button-reply): Ditto. - -2001-01-16 Katsumi Yamaoka - - * gnus-art.el (article-display-x-face): Fix. - -2001-01-15 16:00:00 ShengHuo ZHU - - * gnus-art.el (article-display-x-face): Use - gnus-original-article-buffer. - -2001-01-15 Jack Twilley - - * message.el (message-add-header): Move to point-max. - -2001-01-15 Simon Josefsson - - * smime.el (smime-CA-directory, smime-CA-file): Change default to - nil, improve documentation. - (smime-certificate-directory): Comment out false hints (until it - is implemented). - - * mml-smime.el (mml-smime-sign): Place user in customize buffer if - there aren't any keys. - (mml-smime-verify): If smime-CA-{file,directory} set, also try to - verify certificate. Default is changed to only check integrity. - Improved security status texts. If a certificate doesn't contain - a email address, don't fail. - - * smime.el (smime-noverify-region): - (smime-noverify-buffer): New functions. Verifies integrity only. - -2001-01-12 22:00:00 ShengHuo ZHU - - * gnus-group.el (gnus-group-sort-by-score): Reverse order. - -2001-01-12 17:00:00 ShengHuo ZHU - - * gnus-win.el (gnus-configure-windows): switch-to-buffer in XEmacs. - (gnus-remove-some-windows): Ditto. - -2001-01-12 14:00:00 ShengHuo ZHU - - * gnus-art.el (article-make-date-line): 11th. - -2001-01-11 23:00:00 ShengHuo ZHU - - * mml2015.el (mml2015-gpg-encrypt): Remove CR. - (mml2015-gpg-sign): Ditto. - -2001-01-10 14:00:00 ShengHuo ZHU - - * gnus.el: Sync with EMACS_PRETEST_21_0_95. - * gnus.el (gnus-default-posting-charset): Bogus. Removed. - -2001-01-08 Dave Love - - * mm-encode.el (mm-qp-or-base64): Don't base64 for the sake of a - single character. - - * mm-util.el (mm-mime-mule-charset-alist): Add Latin-{8,9}. - - * message.el: Doc and message fixes. - (message-send-rename-function) - (message-make-forward-subject-function) - (message-send-mail-function, message-reply-to-function) - (message-wide-reply-to-function, message-followup-to-function) - (message-distribution-function, message-auto-save-directory): Fix - :type. - - * gnus/mml.el (mml-parse-1): Frob mml-confirmation-set when - proceeding after warnings. Amend multipart warning message. - -2001-01-04 Dave Love - - * gnus-util.el (nnmail-pathname-coding-system): Defvar when - compiling. - (gnus-make-directory): Require nnmail. - - * mm-decode.el (mm-inline-media-tests): Add - image/x-portable-bitmap. - (mm-get-image): Grok pbm. - -2001-01-10 Paul Stevenson - - * nnvirtual.el (nnvirtual-request-expire-articles): delq nil. - -2001-01-09 Didier Verna - - * dgnushack.el (dgnushack-compile): give a dummy value to - `gnus-xmas-glyph-directory' for the time of compilation. - * gnus-agent.el: moved some XEmacs specific hook add-ons from - `gnus-xmas-[re]define' to avoid loosing user custom settings. - * gnus-art.el: ditto. - * gnus-group.el: ditto. - * gnus-salt.el: ditto. - * gnus-sum.el: ditto. - * gnus-topic.el: ditto. - * gnus-xmas.el (gnus-xmas-define): see above. - * gnus-xmas.el (gnus-xmas-redefine): see above. - * gnus-xmas.el (gnus-xmas-glyph-directory): generate a - non-continuable error when the directory can't be found. - -2001-01-09 01:00:00 ShengHuo ZHU - - * mm-decode.el (mm-interactively-view-part): Don't copy-sequence - handle. - * gnus-art.el (gnus-mime-view-part): Copy it. - (gnus-mime-view-part-as-type): Add into gnus-article-mime-handles. - -2001-01-09 Michael Downes - - * gnus-sum.el (gnus-summary-read-group-1): More useful message. - -2001-01-08 23:00:00 ShengHuo ZHU - - * nnmail.el (nnmail-get-new-mail): Find group only if file is not - orig-file. Use ',source. - -2001-01-08 22:00:00 ShengHuo ZHU - - * gnus-xmas.el (gnus-xmas-modeline-glyph): - (gnus-xmas-group-startup-message): - Detect gnus-xmas-glyph-directory when it is nil. - -2001-01-08 09:00:00 ShengHuo ZHU - - * pop3.el (pop3-get-message-count): Andrew Innes - 's patch of 1999-12-01 was not fully committed. - -2001-01-05 06:49:37 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-session): Say what we quit. - - * time-date.el (time-to-number-of-days): New function. - -2001-01-04 11:06:14 Gregory Chernov - Trivial patch. - - * nnslashdot.el (nnslashdot-request-list): Always get the right - sid. - -2001-01-05 00:00:00 ShengHuo ZHU - - * message.el (message-minibuffer-local-map): New keymap. - (message-read-from-minibuffer): Use it. - * gnus-msg.el (gnus-summary-resend-message): Use it - -2001-01-04 22:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-display-time-event-handler): New function. - (gnus-after-getting-new-news-hook): Use it. - -2001-01-03 07:26:58 Lars Magne Ingebrigtsen - - * message.el (message-ignored-mail-headers): Add draft header. - -2001-01-02 06:28:28 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-expire-articles): Don't save - excursion. - - * nnslashdot.el (nnslashdot-request-list): Get the right year. - -2001-01-01 00:52:44 Ed L. Cashin - A revoked patch. - - * gnus-sum.el (gnus-summary-expire-articles): Save excursion. - -2000-12-31 11:00:00 ShengHuo ZHU - - * qp.el (quoted-printable-decode-region): Don't backward-char. - -2000-12-31 03:57:31 Lars Magne Ingebrigtsen - - * gnus-draft.el: Mark articles as replied. - - * gnus-sum.el (gnus-summary-add-mark): New function. - - * gnus-group.el (gnus-add-mark): New function. - - * gnus-sum.el (gnus-summary-buffer-name): New function. - (gnus-summary-setup-buffer): Use it. - - * gnus-draft.el: Set things up with the right post method and - stuff. - - * message.el (message-ignored-news-headers): Remove X-Draft-From. - - * gnus-msg.el (gnus-inews-insert-draft-meta-information): New function. - - * gnus.el (gnus-draft-meta-information-header): New variable. - -2000-12-30 00:17:38 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-treatment-function-alist): Move the date - functions before the header sorting functions. - - * mm-uu.el (mm-uu-pgp-signed-extract-1): Unquote "- " quotes. - - * dgnushack.el (dgnushack-compile): Message whether there is w3. - Don't (push "/usr/share/emacs/site-lisp" load-path). - - * gnus-cite.el (gnus-article-fill-cited-article): Don't add space - to empty fill prefixes. - -2000-12-30 10:00:00 ShengHuo ZHU - - * nntp.el (nntp-open-connection): Kill pbuffer if process is nil. - Suggested by Christoph Conrad . - -2000-12-30 09:00:00 ShengHuo ZHU - - * nnheader.el (autoload): Autoload gnus-sorted-intersection. - - * nnml.el (autoload): Move to nnheader.el. - - * nnfolder.el (nnfolder-existing-articles): Reversed, i.e. sorted. - (nnfolder-request-expire-articles): Use gnus-sorted-intersection. - (nnfolder-retrieve-headers): Use intersection. Suggested by Jonas - Kvarnstr,Av(Bm . - -2000-12-30 00:17:38 Lars Magne Ingebrigtsen - - * gnus-art.el (article-make-date-line): Get the hours right. - (gnus-ignored-headers): More hiding. - - * nnmail.el (nnmail-expiry-wait): Not an integer. - - * message.el (message-goto-body): Only expand abbrev when called - interactively. - (message-make-lines): Use it. - -2000-12-29 20:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-inews-yank-articles): Reparse headers. - -2000-12-30 00:17:38 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-limit-include-expunged): Really - include the expunged articles. - - * gnus-group.el (gnus-group-sort-by-server): New function. - - * gnus.el (gnus-method-to-server-name): New function. - (gnus-group-prefixed-name): Use it. - - * gnus-group.el (gnus-group-sort-function): Doc fix. - (gnus-group-sort-groups-by-server): New command. - -2000-12-29 13:25:10 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-treat-date-english): New variable. - (article-date-english): New command. - (gnus-english-month-names): New variable. - (article-make-date-line): Do 'english. - - * gnus-cite.el (gnus-article-fill-cited-article): Add a space - after the fill prefix. - - * gnus-sum.el (gnus-summary-make-menu-bar): Removed "Enter - score...". - - * gnus-art.el (gnus-ignored-headers): Hide more headers. - - * message.el (message-mode-map): Bind comment-region. - - * gnus-art.el (gnus-mime-display-part): Let w3 display - multipart/related. - - * mm-bodies.el (mm-long-lines-p): New function. - (mm-body-encoding): Use it. - (mm-body-encoding): Encode articles with lines longer than 1000 - characters. - -2000-12-29 01:00:00 ShengHuo ZHU - - * mm-util.el (mm-enable-multibyte): Use - default-enable-multibyte-characters. - (mm-enable-multibyte-mule4): Ditto. - (mm-disable-multibyte): Test XEmacs. - (mm-disable-multibyte-mule4): Ditto. - (mm-with-unibyte-current-buffer): Simplified. - (mm-with-unibyte-current-buffer-mule4): Ditto. - -2000-12-28 19:44:56 Lars Magne Ingebrigtsen - - * nnheaderxm.el (nnheader-string-as-multibyte): New alias. - - * nnheader.el (nnheader-string-as-multibyte): New alias. - - * mm-view.el (mm-inline-text): Warn when bugging out in w3. - - * gnus-uu.el (gnus-message-process-mark): New function. - (gnus-uu-mark-by-regexp): Use it. - (gnus-new-processable): New function. - -2000-12-28 19:21:57 Inge Frick - Trivial patch. - - * gnus-sum.el (gnus-no-mark): New variable. - -2000-11-01 01:12:29 Lars Magne Ingebrigtsen - - * nnwfm.el (nnwfm-create-mapping): Remove quote marks and - backslashes. - -2000-12-26 Katsumi Yamaoka - - * gnus-art.el (gnus-article-banner-alist): Remove duplicate - definition. - -2000-12-25 00:00:00 ShengHuo ZHU - - * dgnushack.el (dgnushack-compile): elc is in the current directory. - - * qp.el (quoted-printable-encode-region): Don't check multibyte in - XEmacs. - -2000-12-25 Lloyd Zusman - Trivial patch. - - * mml.el (mml-read-tag): Save tag location. - -2000-12-25 Simon Josefsson - - * starttls.el: Sync with Emacs 21. - -2000-12-24 11:00:00 ShengHuo ZHU - - * message.el (message-mail): Support yank-action. - - * message.el (message-setup): Revoke the last change. - -2000-12-24 01:00:00 ShengHuo ZHU - - * message.el (message-setup): Use cons. Suggested by Johan Vromans - . - -2000-12-24 Simon Josefsson - - * mm-bodies.el (mm-decode-content-transfer-encoding): Preserve - mailing list junk at end of part. - -2000-12-23 Simon Josefsson - - * nnimap.el (nnimap-expiry-target): New function. - (nnimap-request-expire-articles): Use it. - -2000-12-22 21:00:00 ShengHuo ZHU - - * gnus.el (gnus-group-parameters-more): New variable. - * gnus-cus.el (gnus-group-customize): Use it. - - * gnus.el (gnus-define-group-parameter): New macro. - (auto-expire): Use it - (total-expire): Use it. - * gnus-art.el (banner): Use it. - - * mml.el (mml-parse): save-excursion. Suggested by Lloyd Zusman - . - -2000-12-22 12:00:00 ShengHuo ZHU - - * gnus-topic.el (gnus-topic-create-topic): Use list. - - * gnus-vm.el (gnus-summary-save-article-vm): Require gnus-art - before binding gnus-default-article-saver. - - * gnus-sum.el (gnus-summary-save-article): - (gnus-summary-pipe-output): - (gnus-summary-save-article-mail): - (gnus-summary-save-article-rmail): - (gnus-summary-save-article-file): - (gnus-summary-write-article-file): - (gnus-summary-save-article-body-file): Ditto. - - * gnus-mh.el (gnus-summary-save-article-folder): Ditto. - -2000-12-22 10:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-mime-security-button-map): - (gnus-mime-button-map): Add parent. - -2000-12-22 09:00:00 ShengHuo ZHU - - * messagexmas.el (message-xmas-redefine): New function. - - * message.el: Use it. - - * gnus-art.el (gnus-article-check-hidden-text): Return t. - - * gnus-util.el (gnus-remove-text-properties-when): Return t. - -2000-12-22 03:00:00 ShengHuo ZHU - - * mm-decode.el (mm-dissect-multipart): Avoid errors owing to - malformatted messages. - -2000-12-22 02:00:00 ShengHuo ZHU - - * mm-util.el (mm-image-load-path): New function. - - * gnus-group.el (gnus-group-make-tool-bar): Use it. - - * gnus-sum.el (gnus-summary-make-tool-bar): Use it. - - * message.el (message-tool-bar-map): Use it. - - * Makefile.in (install-el): New rule. - -2000-12-21 Katsumi Yamaoka - - * gnus-art.el (article-treat-dumbquotes): Quote \. - -2000-12-21 22:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-treat-emphasize): Don't treat emphasis if - Emacs 20 runs on a terminal. - -2000-12-21 14:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-bug): Revert to save-excursion. - - * mml.el (gnus-add-minor-mode): Autoload. - - * message.el (message-forward): Save-restriction. - -2000-12-21 Kai Gro,b_(Bjohann - - * gnus-art.el (article-treat-dumbquotes): More doc, provided by - Paul Stevenson - -2000-12-21 10:00:00 ShengHuo ZHU - - * gnus-ml.el (gnus-mailing-list-mode-map): Use C-c C-n prefix. - - * mml.el (gnus-ems): Don't require. - - * gnus.el (gnus-decode-rfc1522): Removed. - (gnus-set-text-properties): Define. - -2000-12-21 09:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-mime-*): handle may be nil. - - * gnus-sum.el (gnus-summary-mode): Turn on gnus-mailing-list-mode. - - * gnus.el (gnus-group-remove-excess-properties): Not defined - in gnus-xmas. - -2000-12-20 21:00:00 ShengHuo ZHU - - * message.el (message-mail-user-agent): Add :version. - -2000-12-21 Miles Bader - - * message.el (message-mode): Set `comment-start' to the yank prefix. - -2000-12-20 17:00:00 ShengHuo ZHU - - * message.el (message-mail-user-agent): New variable. - (message-setup): Renamed to message-setup-1. Support - mail-user-agent. - (message-mail-user-agent): New function. - (message-mail): Use it. - (message-reply): Use it. - (message-resend): Use it. - (message-mail-other-window): Use it. - (message-mail-other-frame): Use it. - - * gnus-msg.el (gnus-bug): Support mail-user-agent. - -2000-12-20 15:00:00 ShengHuo ZHU - - * message.el (message-tool-bar-map): Simplify. - (message-narrow-to-head-1): New function. - (message-narrow-to-head): Use it. - (message-reply): Ditto. - (message-cancel-news): Ditto. - (message-supersede): Ditto. - (message-make-forward-subject): Ditto. - (message-bounce): Ditto. - -2000-12-20 11:00:00 ShengHuo ZHU - - * uudecode.el (uudecode-decode-region-external): make-temp-file - may not be defined. - - * binhex.el (defalias): eval-and-compile. - - * message.el (message-tool-bar-map): New function. - (message-mode): Use it. - -2000-12-20 09:00:00 ShengHuo ZHU - - * nntp.el (nntp-find-connection): Remove the entry. - (nntp-retrieve-groups): (gnus-buffer-live-p buf). - -2000-12-20 05:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-summary-mail-forward): Use original buffer. - - * message.el (message-forward): Copy buffer in unibyte mode. - -2000-12-20 04:00:00 ShengHuo ZHU - - * message.el (message-make-forward-subject): Don't widen. Decode. - (message-forward): Don't decode subject. - -2000-12-20 Christoph Conrad - - * qp.el (quoted-printable-encode-region): Upcase QP. - -2000-12-20 03:00:00 ShengHuo ZHU - - * mm-decode.el (mm-possibly-verify-or-decrypt): Use - mail-extract-a-c instead. Don't depend on Gnus. - - * mml.el (gnus-ems): Require it. - - * gnus-msg.el (gnus-summary-mail-forward): - - * message.el (message-forward): Move mime-to-mml here. - -2000-12-20 02:00:00 ShengHuo ZHU - - * gnus-group.el, gnus-sum.el, message.el: Add :help unless Emacs. - * gnus-art.el (gnus-insert-mime-button): Simplify. - (gnus-mime-display-alternative): Ditto. - (gnus-insert-mime-security-button): Ditto. - -2000-12-20 01:00:00 ShengHuo ZHU - - * gnus-util.el (gnus-add-text-properties-when): In XEmacs, - text-property-not-all doesn't return nil when start=mark(end). - (gnus-remove-text-properties-when): Ditto. - -2000-12-20 00:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-group-change-level): Remove group from - gnus-active-hashtb if real killed. - -2000-12-19 22:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-insert-mime-button): Emacs20 needs local-map. - (gnus-mime-display-alternative): Ditto. - (gnus-insert-mime-security-button): Ditto. - -2000-12-19 21:00:00 ShengHuo ZHU - - * gnus-start.el (gnus-group-change-level): Don't add it into - killed-list if it was killed. - -2000-12-19 19:00:00 ShengHuo ZHU - - * nnmbox.el (nnmbox-file-coding-system): Use binary. - (nnmbox-active-file-coding-system): Ditto. - - * gnus-cus.el (gnus-group-parameters): Add posting-style. - -2000-12-19 18:00:00 ShengHuo ZHU - - * gnus.el (gnus-version): - (gnus-version-number): Set to Oort Gnus 0.01. - - * gnus-art.el (gnus-mime-security-button-map): - (gnus-insert-mime-security-button): Fix for Emacs21. - -2000-12-19 17:00:00 ShengHuo ZHU - - * gnus-group.el, gnus-sum.el, message.el: Comment out :help in - easymenu, because XEmacs doesn't understand :help. - - * mm-uu.el: Require binhex. - -2000-12-19 16:00:00 ShengHuo ZHU - - * gnus.el: Merged. Emacs21 CVS tag is zsh-merge-ognus-1. - -2000-12-19 ShengHuo ZHU - - * mm-util.el (mm-charset-synonym-alist): Fix a typo. - -2000-12-18 Gerd Moellmann - - * *.xpm, *.pbm: Convert icons icons to size 24x24. - -2000-12-18 Dave Love - - * gnus-msg.el (news-setup, news-reply-mode): Don't autoload - (unused). - -2000-12-13 Miles Bader - - * smiley-ems.el (smiley-region): Bind `inhibit-point-motion-hooks' - to t, so that we don't get stuck while trying to smilefy - intangible text. - -2000-12-12 Gerd Moellmann - - * smiley-ems.el (smiley-regexp-alist): Make regexps match - at the end of the buffer. - (smiley-region): In the loop, move to the end of the submatch - matching the smiley instead of using the end of the match - of the whole regexp. - -2000-12-12 Eli Zaretskii - - * message.el (message-mode): Doc fix. - -2000-12-12 Gerd Moellmann - - * smiley-ems.el (smiley-region): Doc fix. - -2000-12-11 Miles Bader - - * gnus-sum.el (gnus-summary-recenter): When trying to keep the - bottom line visible, check to see if it's partially obscured, and - if so, either scroll one more line to make it fully visible, or - revert to showing the second line from the top. - -2000-12-07 Dave Love - - * mailcap.el (mailcap-download-directory) - * gnus-audio.el (gnus-audio-directory) - * smiley-ems.el (smiley-data-directory): Fix :type. - -2000-11-30 Dave Love - - * message.el (message-auto-save-directory): Use - file-name-as-directory. - (message-set-auto-save-file-name): Create - message-auto-save-directory if necessary. - (message-replace-chars-in-string): Removed -- unused. - (message-mail-alias-type): Customize. - (message-headers): Remove duplicate defgroup. - -2000-11-29 Dave Love - - * qp.el (quoted-printable-decode-region): Use error, not message - to report malformed text (like base64). Amend message. - -2000-11-29 Miles Bader - - * message.el (message-header-lines): Fontify tag. - -2000-11-27 Dave Love - - * nnlistserv.el: Ignore errors when requiring nnweb and avoid a - compiler warning. - -;2000-11-26 Dave Love -; -; * mm-uu.el (mm-uu-configure-list): Fix typo in :type. -; -2000-11-23 Dave Love - - * uu-post.pbm, uu-decode.pbm: new files from XPMs. - - * mm-uu.el (uudecode): Require. - (uudecode-decode-region, uudecode-decode-region-external): Don't - autoload. - (mm-uu-copy-to-buffer): Doc fix. - (mm-uu-decode-function, mm-uu-binhex-decode-function): Doc, custom - type fix. - - * mailcap.el: Doc fixes. - (mailcap-mime-data): Various adjustments. - (mailcap): New group. - (mailcap-download-directory): Customize. - (mailcap-generate-unique-filename, mailcap-binary-suffixes) - (mailcap-temporary-directory): Deleted (unused). - (mailcap-unescape-mime-test): Simplify slightly. - (mailcap-viewer-passes-test): Use functionp. - (mailcap-command-p): Aliased to executable-find. - - * rfc2047.el (rfc2047-encode-message-header): Don't encode if - default-enable-multibyte-characters is nil. - -2000-11-22 Gerd Moellmann - - * gnus-group.el (gnus-group-make-tool-bar): Fix a paren typo. - -2000-11-21 Dave Love - - * gnus-art.el (gnus-mime-button-map): Don't inherit from - gnus-article-mode-map. -; (gnus-mime-button-menu): Use mouse-set-point. - (gnus-insert-mime-button, gnus-mime-display-alternative) - (gnus-mime-display-alternative): Don't use local-map property. - -2000-11-17 Dave Love - - * uudecode.el (uudecode-insert-char): Fix bogus feature test. - (uudecode-decode-region-external): Doc fix. Use with-temp-buffer - and make-temp-file. - (uudecode-decode-region): Doc fix. - -2000-11-14 Dave Love - - * cu-exit.pbm, exit-summ.pbm, followup.pbm, fuwo.pbm: - * mail-reply.pbm, next-ur.pbm, post.pbm, prev-ur.pbm: - * reply-wo.pbm, reply.pbm, rot13.pbm, save-aif.pbm, save-art.pbm: - New files, derived from the XPMs. - -2000-11-10 Dave Love - - * gnus-agent.el (gnus-agent-confirmation-function): Add :version. - (gnus-agent-lib-file, gnus-agent-load-alist) - (gnus-agent-save-alist, gnus-agent-article-name): Use - expand-file-name. - - * gnus-group.el (gnus-group-name-charset-method-alist): Add - :version. - (nnkiboze-score-file): Defvar when compiling. - - * gnus-start.el (gnus-read-newsrc-file): Add :version. - - * gnus-art.el (gnus-article-banner-alist) - (gnus-emphasize-whitespace-regexp, gnus-ignored-mime-types) - (gnus-article-date-lapsed-new-header) - (gnus-article-mime-match-handle-function, gnus-mime-action-alist) - (gnus-treat-strip-list-identifiers, gnus-treat-date-iso8601) - (gnus-treat-strip-headers-in-body) - (gnus-treat-capitalize-sentences, gnus-treat-play-sounds) - (gnus-treat-translate): Add :version. - (gnus-article-mime-part-function): Fix defcustom. - - * nnmail.el (nnmail-expiry-target) - (nnmail-scan-directory-mail-source-once, nnmail-extra-headers) - (nnmail-split-header-length-limit): Add :version. - - * gnus-sum.el (gnus-auto-expirable-marks) - (gnus-inhibit-user-auto-expire, gnus-list-identifiers) - (gnus-extra-headers, gnus-ignored-from-addresses) - (gnus-newsgroup-ignored-charsets) - (gnus-group-highlight-words-alist) - (gnus-summary-show-article-charset-alist): Add :version. - - * catchup.pbm, describe-group.pbm, exit-gnus.pbm, get-news.pbm: - gnntg.pbm, kill-group.pbm, subscribe.pbm, unsubscribe.pbm: New - files, converted from the XPMs. - - * gnus-cache.el (gnus-cache-active-file): Don't use - file-name-as-directory on directory. - (gnus-cache-file-name): Use expand-file-name, not concat. Don't - use file-name-as-directory on directory. - - * time-date.el (timezone-make-date-arpa-standard): Autoload. - (date-to-time): Use it. - -; * message.el (message-mode) : -; : Use [:alnum:] in regexp range. -; (message-newline-and-reformat): Likewise. - (message-forward-as-mime, message-forward-ignored-headers) - (message-buffer-naming-style, message-default-charset) - (message-dont-reply-to-names, message-send-mail-partially-limit): - Add :version. - - * mm-util.el: Doc fixes. - (mm-mime-charset): Don't use the raw result of - mm-preferred-coding-system. - (mm-with-unibyte-buffer, mm-with-unibyte-current-buffer) - (mm-with-unibyte): Simplify. - - * gnus-int.el (gnus-start-news-server): Use expand-file-name, not - concat. - - * pop3.el (pop3-version): Deleted. - (pop3-make-date): New function, avoiding message-make-date. - (pop3-munge-message-separator): Use it. - -2000-11-09 Dave Love - - * gnus-group.el (gnus-group-make-directory-group) - (gnus-group-fetch-faq): Use expand-file-name. - (gnus-group-fetch-faq): Simplify completing-read form. - - * mm-bodies.el (mm-encode-body): Use mm-multibyte-p, don't just - test for Mule. - - * message.el (tool-bar-map): Defvar when compiling. - - * gnus-setup.el (running-xemacs, gnus-use-installed-tm) - (gnus-tm-lisp-directory): Deleted. - (gnus-use-installed-mailcrypt, gnus-emacs-lisp-directory): Use - (featurep 'xemacs). - (gnus-gnus-lisp-directory, gnus-mailcrypt-lisp-directory) - (gnus-mailcrypt-lisp-directory, gnus-bbdb-lisp-directory): Remove - version numbers from file names. - -2000-11-08 Dave Love - - * mm-view.el: Use featurep for XEmacs test. - (mm-inline-message): Test for `remove-specifier'; don't use - condition-case. - - * mm-bodies.el (mm-encode-body): Use mm-multibyte-p. - - * gnus-score.el (gnus-score-load-file): Use expand-file-name. - (gnus-score-find-bnews): Don't concat "". - - * cu-exit.xpm, prev-ur.xpm, next-ur.xpm, post.xpm, fuwo.xpm: - * followup.xpm, uu-post.xpm, uu-decode.xpm, mail-reply.xpm: - * reply.xpm, reply-wo.xpm, rot13.xpm, save-aif.xpm, save-art.xpm: - * exit-summ.xpm: New files, renamed from icons by Luis Fernandes. - - * gnus-sum.el: Put some defvars in eval-when-compile. - (gnus-summary-mode-hook): Add :options. - (gnus-summary-make-menu-bar): Add some :help, used by tool bar. - (gnus-summary-tool-bar-map): New variable. - (gnus-summary-make-tool-bar): New function. - (gnus-summary-mode): Put kill-all-local-variables first. - - * gnus-group.el (gnus-group-toolbar-map): New variable. - (gnus-group-make-tool-bar): Rewritten. - (gnus-group-mode): Put kill-all-local-variables first. - - * rfc2047.el: Require gnus-util. - - * nnml.el (gnus-sorted-intersection): Autoload. - - * nnheader.el: Wrap subst-char-in-string def in eval-and-compile. - Put some defvars in eval-when-compile. - (gnus-intersection, gnus-sorted-complement): Autoload. - - * imap.el (imap-point-at-eol): New, replacing gnus-point-at-eol. - - * mm-encode.el (mm-body-7-or-8): Autoload. - - * mm-decode.el (mm-insert-inline): Autoload. - - * mml.el: - * message.el: Put some defvars in eval-when-compile. - - * gnus-msg.el: Put some defvars in eval-when-compile. - (gnus-msg-mail): Move after gnus-setup-message. - - * smiley-ems.el (smiley-data-directory, smiley-regexp-alist): Doc fix. - -2000-11-07 Dave Love - - * gnus-util.el (nnheader): Don't require message (recursive - autoload). - - * uudecode.el: Avoid compiler warnings. - - * rfc2047.el: (rfc2047-fold-region): Use gnus-point-at-bol. - (rfc2047-charset-encoding-alist): Add iso-8859-1[45]. - -2000-11-06 Dave Love - - * gnus-salt.el (gnus-binary-mode): Fix call to gnus-add-minor-mode. - - * uudecode.el: Use (featurep 'xemacs). Require cl when compiling. - (uudecode-char-int): New alias, replacing char-int. - (uudecode-decode-region): Don't call buffer-disable-undo. - -; * mm-uu.el (mm-uu-configure): Unquote lambda. -; (mm-uu-configure-list): Doc fix. -; -; * earcon.el (running-xemacs): Don't define. -; -;2000-11-03 Stefan Monnier -; -; * message.el (message-font-lock-keywords): Match a final newline -; to help font-lock's multiline support. -; -2000-11-03 Dave Love - - * gnus-nocem.el (gnus-nocem-check-article-limit): Default to 500. - - * mm-partial.el (mm-inline-partial): Space-prefix temp buffer - name. - - * gnus-cus.el (gnus-group-parameters) : Fix custom type. - : Fix custom type, doc. - - * mm-decode.el (mm-display-external): Space-prefix temp buffer - name. Don't disable undo explicitly. - -;2000-11-02 Dave Love -; -; * message.el (message-font-lock-keywords): Use [:alpha:] for -; cite-prefix. - -2000-11-01 Dave Love - - * rfc2047.el (base64): Require unconditionally. - (message-posting-charset): Defvar when compiling. - (rfc2047-encode-message-header, rfc2047-encodable-p): Require - message. - - * gnus-sum.el (nnoo): Require. - (mm-uu-dissect): Autoload. - - * mml.el (mml-parse-1): Clarify message. - (mml-minibuffer-read-type): Use mailcap-mime-types. - -2000-11-01 Stefan Monnier - - * mml.el: Fix a typo in the requiring of CL. - -2000-11-01 Dave Love - - * utf7.el: Require cl when compiling. - - * binhex.el: Use (featurep 'xemacs). - (binhex-char-int): New alias, replacing char-int. Change callers. - (binhex-decode-region): Simplify work buffer code. - (binhex-decode-region-external): Use expand-file-name, not concat. - -2000-10-30 Dave Love - - * gnus-art.el: Fix 2000-10-27 change properly. - -2000-10-28 Miles Bader - - * gnus-art.el (gnus-read-save-file-name): Remove extraneous paren. - -2000-10-27 Dave Love - - * gnus-group.el (gnus-group-make-menu-bar): Add some :help - strings. - (gnus-group-make-tool-bar): New function. - (gnus-group-mode): Use it. - - * message.el (message-mode-menu): Add some :help strings. - (message-mode) [message-tool-bar-map]: Define tool-bar-map. - (featurep): Use (featurep 'xemacs). Install tool bar for Emacs. - - * catchup.xpm, exit-gnus.xpm, gnntg.xpm, subscribe.xpm: - * describe-group.xpm, get-news.xpm, kill-group.xpm: - * unsubscribe.xpm: New files. Renamed icons from Luis Fernandes. - - * mm-decode.el (mm-valid-and-fit-image-p): Don't test - display-graphic-p here. - -2000-10-27 Miles Bader - - * gnus-ems.el (gnus-ems-redefine): Use (featurep 'xemacs) instead - of the `gnus-xemacs' variable, as the latter has been removed. - * gnus-start.el (gnus-1, gnus-read-descriptions-file): Likewise. - * gnus-art.el (gnus-treat-display-xface) - (gnus-treat-display-smileys, gnus-treat-display-picons) - (gnus-article-read-summary-keys): Likewise. - -2000-10-26 Dave Love - - (defvar): Use rmail-spool-directory unconditionally. - -2000-10-18 Dave Love - - * mm-bodies.el (mm-uu-decode-function) - (mm-uu-binhex-decode-function): Defvar when compiling. - - * gnus-nocem.el (gnus-nocem-issuers): Update. - (gnus-nocem-check-from): New option. - (gnus-nocem-scan-groups): Use it. - (gnus-nocem-check-article): Bind gnus-newsgroup-name. - (gnus-nocem-check-article-limit): Add :version. - -2000-10-16 Stefan Monnier - - * ietf-drums.el (mm-util): Require CL when compiling. - -2000-10-15 Dave Love - - * qp.el: Require mm-util. - -2000-10-13 Dave Love - - * qp.el (quoted-printable-decode-region): Avoid invalid - coding-systems. - -2000-10-12 Gerd Moellmann - - * mm-bodies.el: Don't require `mm-uu' at compile-time; it leads - to a recursive load. - -2000-10-12 Dave Love - - * mm-util.el (mm-charset-synonym-alist): Add windows-1252. - - * gnus.el (gnus-group-startup-message): Check for PBM image. - -2000-10-09 Dave Love - - * mail-source.el (mail-source-fetch-imap): Bind - default-enable-multibyte-characters rather than using - mm-disable-multibyte. - -2000-10-05 Dave Love - - * qp.el (mm-decode-coding-region, mm-encode-coding-region): - Autoload. - (quoted-printable-decode-region): Rename arg which confused - charset with coding-system. Don't use nonascii-insert-offset. - Coding-system encode the region initially. Don't recognize `==' - as valid QP. Coding-system decode the region finally. - (quoted-printable-decode-string): Rename arg which confused - charset with coding-system. - - * mm-bodies.el: Require mm-uu, Don't require qp, uudecode. - (mm-encode-body): Apply mm-charset-to-coding-system to arg of - mm-encode-coding-region. - (mm-decode-body, mm-decode-string): Rename variables which - confused charset with coding-system. - (binhex-decode-region): Don't autoload. - (mm-body-encoding): Require message. - (mm-decode-content-transfer-encoding): Require mm-uu in relevant - cond branches. - - * 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. - -2000-10-04 Dave Love - - * gnus-ems.el: Don't turn off compiler warnings in local vars. - Require ring when compiling. - (gnus-article-compface-xbm): New variable. - -2000-10-04 Dave Love - - * smiley-ems.el (smiley-regexp-alist, smiley-update-cache): Use - pbm images. - - * frown.pbm, smile.pbm, wry.pbm: New files. - - * frown.xbm, smile.xbm, wry.xbm: Deleted. - -2000-10-03 Dave Love - - * mail-source.el (mail-sources): Revert to nil. - - * nnmail.el (nnmail-spool-file): Revert to `((file))'. - - * qp.el: Don't require mm-util. - (quoted-printable-decode-region): Rewritten. - (quoted-printable-decode-string, quoted-printable-encode-region): - Doc fix. - (quoted-printable-encode-region): Barf on multibyte characters. - Maybe make the class multibyte. Upcase chars, not formatted - strings. Allow mm-use-ultra-safe-encoding to be unbound. - (quoted-printable-encode-string): Don't use - mm-with-unibyte-buffer. - -2000-09-29 Gerd Moellmann - - * smiley-ems.el (smiley-update-cache): Use `:ascent center'. - -2000-09-21 Dave Love - - * smiley-ems.el (smiley-region): Test if display-graphic-p bound - (for Emacs 20). Tidy somewhat. - -2000-09-21 Dave Love - - * gnus-ems.el (gnus-article-display-xface): Use unibyte for the - image processing. Rationalize logic somewhat. - -2000-09-20 Dave Love - - * gnus-start.el (gnus-1) : Don't test for X - specifically. - - * gnus.el (gnus-version-number): Avoid some redundant - autoloads. - -2000-09-20 Gerd Moellmann - - * gnus-ems.el (gnus-article-display-xface): Don't convert PBM - to XBM; we always have PBM support. - -2000-09-14 Dave Love - - * gnus.el (gnus-charset): - * mm-decode.el (mime-display): - * imap.el (imap) : Add :version. - -2000-09-13 Gerd Moellmann - - * parse-time.el: Fix author's mail address. - - * earcon.el, flow-fill.el, gnus-cite.el, gnus-gl.el, gnus-ml.el: - * gnus-mlspl.el, gnus-nocem.el, gnus-range.el, gnus-salt.el: - * gnus-setup.el, gnus-soup.el, gnus-undo.el, gnus-vm.el: - * messcompat.el, nnbabyl.el, nndir.el, nneething.el: - * nngateway.el, nnheaderxm.el, nnkiboze.el, nnlistserv.el: - * nnmbox.el, nnmh.el, nnoo.el, nnsoup.el, nnspool.el, rfc2045.el: - * rfc2231.el, uudecode.el: Fix copyright notice. - - * nnweb.el (toplevel): To make the file bootstrap in Emacs, - require `w3' at load-time only if not running in batch mode. - -2000-12-19 16:00:00 ShengHuo ZHU - - * gnus.el: Before merge with Emacs21. - -2000-12-19 Raymond Scholz - - * gnus-art.el (gnus-article-dumbquotes-map): Add EUR symbol. - -2000-12-19 Per Abrahamsen - - * mml.el (mml-mode-map): Change mml prefix from `M-m' to `C-c C-m' - to avoid conflict with the standard `back-to-indentation' - binding. - -2000-12-17 10:00:00 ShengHuo ZHU - - * mm-extern.el (mm-inline-external-body): g-a-m-h may be a handle. - - * mm-util.el (mm-enable-multibyte-mule4): Test charsetp. - (mm-disable-multibyte-mule4): Ditto. - (mm-with-unibyte-current-buffer-mule4): Ditto. - -2000-12-15 10:00:00 ShengHuo ZHU - - * pop3.el (pop3-movemail): Use binary. - (pop3-movemail-file-coding-system): Removed. - -2000-12-14 13:00:00 ShengHuo ZHU - - * mm-util.el (mm-charset-synonym-alist): Add cn-gb. - -2000-12-13 21:00:00 ShengHuo ZHU - - * nnspool.el (nnspool-lib-dir): Check whether /usr/lib/news/active - exists. - -2000-12-13 13:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-post-method): Use backend name when the - address is "". - -2000-12-08 10:00:00 ShengHuo ZHU - - * gnus-art.el (article-verify-x-pgp-sig): Don't test - mm-verify-option. - (gnus-treat-x-pgp-sig): Default value. - (gnus-ignored-headers): Redundant. - -2000-12-04 22:00:00 ShengHuo ZHU - - * gnus-win.el (gnus-configure-frame): Save selected window. - -2000-02-15 Andrew Innes - - * nnmbox.el: Require gnus-range. - (nnmbox-group-building-active-articles): New variable. - (nnmbox-group-active-articles): New variable; this is a cache of - all active articles by group and number. - (nnmbox-in-header-p): New function. - (nnmbox-find-article): New function. - (nnmbox-record-active-article): New function. - (nnmbox-record-deleted-article): New function. - (nnmbox-is-article-active-p): New function. - (nnmbox-retrieve-headers): Use nnmbox-find-article. - (nnmbox-request-article): Ditto. Also supply extra arg to - nnmbox-article-group-number. - (nnmbox-request-expire-articles): Ditto. - (nnmbox-request-move-article): Ditto. - (nnmbox-request-replace-article): Ditto. - (nnmbox-request-rename-group): Rename group entry in active - article cache. - (nnmbox-delete-mail): Update active article cache, unless article - is being replaced. - (nnmbox-possibly-change-newsgroup): Call nnmbox-read-mbox, rather - than partially duplicating it. - (nnmbox-article-group-number): Add extra `this-line' arg, to - handle articles belonging to multiple groups. - (nnmbox-save-mail): Update active article cache. - (nnmbox-read-mbox): Build active article cache when loading mbox. - Also do some repair work, if we find articles that are missing the - appropriate X-Gnus-Newsgroup lines in the header. We can usually - reconstruct these from Xref info. - -2000-12-04 18:00:00 ShengHuo ZHU - - * mail-source.el (mail-source-report-new-mail): Use - nnheader-run-at-time. - -2000-02-15 Andrew Innes - - * mail-source.el (mail-source-fetch-pop): Clear pop password when - an error is thrown, and then rethrow the error. - (mail-source-check-pop): Ditto. - (mail-source-start-idle-timer): Prevent multiple pop checks - running if the check takes a long time. - -2000-12-04 14:00:00 ShengHuo ZHU - - * gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if - succeed. - -2000-12-04 13:00:00 ShengHuo ZHU - - * gnus-win.el (gnus-configure-windows): Make sure - nntp-server-buffer is live. - (gnus-remove-some-windows): switch-to-buffer -> set-buffer. - -2000-11-21 Stefan Monnier - - * gnus-win.el (gnus-configure-windows): switch-to-buffer -> set-buffer. - -2000-12-04 Andreas Jaeger - - * gnus-msg.el (gnus-summary-mail-forward): Fix typos in description. - -2000-12-03 12:00:00 ShengHuo ZHU - - * mml2015.el (mml2015-fix-micalg): Alg might be nil. - -2000-12-01 ShengHuo ZHU - Trivial patch from Christopher Splinter - - * gnus-sum.el (gnus-summary-limit-to-age): Fix typo. - -2000-12-01 Simon Josefsson - - * mml-smime.el (mml-smime-verify): Fix address parsing. - -2000-12-01 Simon Josefsson - - * mml-smime.el (mml-smime-verify): Don't modify MM buffer. Handle - more than one certificate inside PKCS#7 blob. Better security - information (clamed / actual sender, openssl output, certificates - inside message). - - * smime.el (smime-verify-region): Output to /dev/null. - (smime-buffer-as-string-region): Don't parse empty lines. - -2000-11-30 23:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-mime-security-button-line-format-alist): Add - ?d and ?D. - (gnus-mime-security-show-details-inline): New variable. - (gnus-mime-security-show-details): Use them. - (gnus-insert-mime-security-button): Ditto. - - * mml2015.el (mml2015-gpg-verify): Set details when succeed. - Suggest by Michael Duggan (md5i@cs.cmu.edu). - (mml2015-gpg-clear-verify): Ditto. - (mml2015-gpg-decrypt-1): Ditto. - (mml2015-use): Prefer 'gpg. - -2000-11-30 19:00:00 ShengHuo ZHU - - * gnus-util.el (gnus-add-text-properties-when): New function. - (gnus-remove-text-properties-when): Ditto. - - * gnus-cite.el (gnus-article-hide-citation): Use them. - (gnus-article-toggle-cited-text): Use them. - - * gnus-art.el (gnus-signature-toggle): Use them. - (gnus-article-show-hidden-text): Ditto. - (gnus-article-hide-text): Ditto. - -2000-11-30 14:00:00 ShengHuo ZHU - - * mm-util.el (mm-find-charset-region): Remove eight-bit-*. - -2000-11-30 Simon Josefsson - - * smime.el (smime-point-at-eol): New alias. - (smime-buffer-as-string-region): Use it. - -2000-11-29 21:00:00 ShengHuo ZHU - - * nndraft.el (nndraft-request-restore-buffer): Remove Date field. - -2000-11-29 20:00:00 ShengHuo ZHU - - * nnfolder.el (nnfolder-request-expire-articles): expiry-target. - - * nnbabyl.el (nnbabyl-request-expire-articles): Ditto. - - * nnmbox.el (nnmbox-request-expire-articles): Ditto. - -2000-11-22 Jan Nieuwenhuizen - - * nnmh.el (nnmh-request-expire-articles): Implemented - expiry-target for nnmh backend. - -2000-11-30 Simon Josefsson - - * mm-decode.el (mm-security-from): New variable. - (mm-possibly-verify-or-decrypt): Use it rather than `from'. - - * mml-smime.el (mml-smime-verify): Use `mm-security-from' rather - than `from'. - -2000-11-30 Simon Josefsson - - * mml-smime.el (mml-smime-verify): Verify that certificate mail - address match sender address. - - * mm-decode.el (mm-possibly-verify-or-decrypt): Bind sender address. - - * smime.el (smime-verify-region): Don't copy buffer. - (smime-decrypt-buffer): Use expand-file-name on keyfile. - (smime-pkcs7-region): New function. - (smime-pkcs7-certificates-region): Ditto. - (smime-pkcs7-email-region): Ditto. - (smime-buffer-as-string-region): Ditto. - - * gnus-art.el (gnus-mime-security-show-details): Goto beginning of - buffer. - -2000-11-23 Jens Krinke - - * smime.el (smime-decrypt-region): Fix keyfile argument. - -2000-11-29 00:00:00 ShengHuo ZHU - - * nnmail.el (nnmail-cache-accepted-message-ids): Add doc. - -2000-11-28 17:00:00 ShengHuo ZHU - - * message.el (message-shoot-gnksa-feet): New variable. - (message-gnksa-enable-p): New function. - (message-send): Use it. - (message-check-news-body-syntax): Ditto. - -2000-11-28 Katsumi Yamaoka - - * message.el (message-make-message-id): Remove the redundancy. - -2000-11-22 17:00:00 ShengHuo ZHU - - * message.el (message-setup): Discourage using mc-install-*-mode. - - * gnus-setup.el (gnus-use-mailcrypt): Don't hook mail-crypt. - -2000-11-22 16:00:00 ShengHuo ZHU - - * gnus-cite.el (gnus-cite-parse): Guess citation length. - -2000-11-22 14:00:00 ShengHuo ZHU - - * gnus-ml.el (gnus-mailing-list-insinuate): New function. - -2000-11-22 13:00:00 ShengHuo ZHU - - * gnus-ml.el (gnus-mailing-list-archive): Find the real url. - -2000-11-22 11:00:00 ShengHuo ZHU - - * gnus-xmas.el (gnus-xmas-article-display-xface): Use - insert-buffer-substring. - - * message.el (message-send-mail): Use buffer-substring-no-properties. - (message-send-news): Ditto. - -2000-11-22 David Edmondson - - * imap.el (imap-wait-for-tag): Message read info. - -2000-11-21 20:00:00 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-encrypt): Ensure the part is encrypted. - (mml2015-mailcrypt-encrypt): Use unibyte-buffer. - (mml2015-gpg-encrypt): Ditto. - -2000-11-21 09:00:00 ShengHuo ZHU - - * mm-decode.el (mm-verify-option): Default value. - - * mml-sec.el (mml-secure-part): Error message. - -2000-11-20 18:00:00 ShengHuo ZHU - - * gnus-ml.el (gnus-mailing-list-archive): Use browse-url. - -2000-11-20 17:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-make-menu-bar): Use easy-menu-add. - -2000-11-20 16:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-describe-key): Use prompt. - (gnus-article-describe-key-briefly): Ditto. - -2000-11-20 15:00:00 ShengHuo ZHU - - * gnus-agent.el (gnus-agent-expire): Ignore corrupted history. - -2000-11-20 10:00:00 ShengHuo ZHU - - * gnus-art.el (gnus-article-describe-key): New function. - (gnus-article-describe-key-briefly): New function. - -2000-11-19 23:00:00 ShengHuo ZHU - - * mm-decode.el (mm-decrypt-option): Doc typo. - - * gnus-art.el (gnus-article-read-summary-keys): lookup-key may - return a number. - -2000-11-19 21:00:00 ShengHuo ZHU - - * message.el (message-newline-and-reformat): Typo. - -2000-11-19 12:00:00 ShengHuo ZHU - - * gnus-art.el (article-verify-x-pgp-sig): Check whether - original-article-buffer exists. - - * rfc2047.el (rfc2047-q-encoding-alist): Match Resent-. - (rfc2047-header-encoding-alist): Addresses are different from text. - (rfc2047-encode-message-header): Ditto. - (rfc2047-dissect-region): Extra parameter. - (rfc2047-encode-region): Ditto. - (rfc2047-encode-string): Ditto. - -2000-11-19 00:00:00 ShengHuo ZHU - - * mm-uu.el (mm-uu-pgp-encrypted-extract-1): New function. - (mm-uu-pgp-encrypted-extract): Use it. - (mm-uu-pgp-signed-extract-1): New function. - (mm-uu-pgp-signed-extract): Use it. - - * gnus-art.el (gnus-mime-display-security): New function. - (gnus-mime-display-part): Use it. - (gnus-mime-security-verify-or-decrypt): New function. - (gnus-mime-security-press-button): New function. - (gnus-insert-mime-security-button): Use it. - - * mm-decode.el (mm-possibly-verify-or-decrypt): Use mm-h-m-c-p. - (mm-find-raw-part-by-type): Ditto. - (mm-verify-function-alist): Add x-gnus-pgp-signature handle. - (mm-decrypt-function-alist): Add x-gnus-pgp-encrypted handle. - (mm-destroy-parts): Kill nested multibyte buffer. - - * mml2015.el (mml2015-mailcrypt-verify): Use mm-h-m-c-p. - (mml2015-gpg-verify): Ditto. - -2000-11-18 Simon Josefsson - - * mml2015.el (mml2015-mailcrypt-clear-verify): New function. - (mml2015-function-alist): Use it. - - * mml-sec.el (mml-sign-alist): Update names. - (mml-encrypt-alist): Ditto. - (mml-secure-part-smime-sign): Moved to mml-smime.el - as `mml-smime-sign-query'. - (mml-secure-part-smime-encrypt-by-file): Moved to mml-smime.el as - `mml-smime-get-file-cert'. - (mml-secure-part-smime-encrypt-by-dns): Moved to mml-smime.el as - `mml-smime-get-dns-cert'. - (mml-secure-part-smime-encrypt): Moved to mml-smime.el as - `mml-smime-encrypt-query'. - (mml-smime-sign-buffer): Use mml-smime-sign. - (mml-smime-encrypt-buffer): Use mml-smime-encrypt. - - * mml-smime.el (mml-smime-sign): New function. - (mml-smime-encrypt): - (mml-smime-sign-query): - (mml-smime-get-file-cert): - (mml-smime-get-dns-cert): - (mml-smime-encrypt-query): Moved from mml-sec.el. - -2000-11-16 Simon Josefsson - - * mml2015.el (mml2015-gpg-clear-verify): New function. - (mml2015-function-alist): Add it. - -2000-11-17 14:21 ShengHuo ZHU - - * message.el (message-setup-fill-variables): Use - message-cite-prefix-regexp. - (message-newline-and-reformat): Check the end of citation, leading - WSP, break in the cite prefix. - (message-fill-paragraph): New function. - -2000-11-17 13:44 ShengHuo ZHU - - * lpath.el: Shut up. - -2000-11-17 Per Abrahamsen - - * gnus-msg.el (gnus-group-posting-charset-alist): No longer allow - raw 8-bit in headers in dk.* newsgroups. - -2000-11-17 08:02 ShengHuo ZHU - - * message.el (message-newline-and-reformat): Match extra WSPs. - -2000-11-16 23:31 ShengHuo ZHU - - * mml.el (mml-generate-mime-1): Ignore ascii. - -2000-11-16 Justin Sheehy - - * gnus-sum.el (gnus-summary-make-menu-bar): Fix menu items. - -2000-11-16 17:00 ShengHuo ZHU - - * message.el (message-cite-prefix-regexp): Prefix should not end - at space. - -2000-11-15 18:09 ShengHuo ZHU - - * message.el (message-mode-syntax-table): Add - as a word - constituent as in articles. - (message-setup-fill-variables): Add -_. as supercite-style prefix. - * gnus-art.el (gnus-article-mode-syntax-table): Remove ?-. - * gnus-cite.el (gnus-cite-parse): Match from the beginning of line. - -2000-11-15 13:21 ShengHuo ZHU - - * gnus-msg.el (gnus-inews-do-gcc): Expire the article. - -2000-11-12 David Edmondson - - * message.el (message-font-lock-keywords): use - message-cite-prefix-regexp. - -2000-11-15 Kai Gro,b_(Bjohann - - * gnus-group.el (gnus-group-jump-to-group-prompt): New variable by - Stein Arild Str,Ax(Bmme. - (gnus-group-jump-to-group): Use it. - (gnus-group-jump-to-group-prompt): Customize. - -2000-11-14 10:32:42 ShengHuo ZHU - - * mailcap.el (mailcap-possible-viewers): Match the entire string. - -2000-11-14 10:20:56 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-verify): replace-match is - incompatible. - (mml2015-mailcrypt-sign): Ditto. - -2000-11-14 10:12:05 ShengHuo ZHU - - * gnus-msg.el (gnus-inews-do-gcc): Update summary data when the - group is open. - -2000-11-14 00:48:52 ShengHuo ZHU - - * gnus-bcklg.el (gnus-backlog-enter-article): Don't enter - nnvirtual articles. - (gnus-backlog-request-article): Don't request nnvirtual articles. - -2000-11-13 22:08:09 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-sign): Remove "-" escape. - * mml.el (mml-generate-mime-1): Save cont. skip multipart attributes. - -2000-11-13 20:43:37 ShengHuo ZHU - - * mm-decode.el (mm-get-part): Don't call mm-insert-part. - * mml.el (mml-generate-mime-1): Use charset attribute. - * mm-bodies.el (mm-encode-body): Add parameter charset. - * mm-util.el (mm-mime-charset): Show error when find 8-bit characters. - -2000-11-13 16:09:09 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-decrypt): Handle quit. - (mml2015-mailcrypt-clear-decrypt): Ditto. - (mml2015-mailcrypt-verify): Ditto. - (mml2015-mailcrypt-clear-verify): Ditto. - (mml2015-gpg-verify): Ditto. - -2000-11-13 15:29:58 ShengHuo ZHU - - * smime.el (smime-openssl-program): Test the existence of openssl. - * mml-smime.el: Require mm-decode. - (mml-smime-verify-test): New function. - * mm-decode.el (mm-verify-function-alist): Use it. - -2000-11-13 09:50:29 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-repair-multipart): Fix Mime-Version - anyway. - -2000-11-13 Simon Josefsson - - * mm-uu.el (mm-uu-pgp-signed-extract): Explain why clear - verification doesn't work. - -2000-11-12 23:36:45 ShengHuo ZHU - - * gnus-msg.el (gnus-inews-mark-gcc-as-read): New variable. - (gnus-inews-do-gcc): Use it. - -2000-11-12 21:35:04 ShengHuo ZHU - - * rfc2231.el (rfc2231-encode-string): Insert semi-colon and - leading space. - * mm-extern.el (mm-inline-external-body): Report error when no - access-type. - -2000-11-12 19:48:30 ShengHuo ZHU - - * gnus-sum.el (gnus-select-newsgroup): Change the error message. - -2000-11-12 11:53:18 ShengHuo ZHU - - * gnus-art.el (gnus-mime-button-menu): Use select-window. - -2000-11-12 09:47:54 ShengHuo ZHU - - * gnus-art.el (gnus-mime-display-part): Display multipart/related - as multipart/mixed. - -2000-11-12 David Edmondson - - * message.el (message-cite-prefix-regexp): moved from gnus-cite.el - and replace `.' with `\w' to allow for different syntax tables - (from Vladimir Volovich). - * message.el (message-newline-and-reformat): use - `message-cite-prefix-regexp'. - * gnus-cite.el (gnus-supercite-regexp): use - `message-cite-prefix-regexp'. - * gnus-cite.el (gnus-cite-parse): use - `message-cite-prefix-regexp'. - -2000-11-12 08:52:46 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-verify): Replace armors with - PGP SIGNATURE. Escape leading "-"'s. - (mml2015-mailcrypt-sign): Replace armors with PGP MESSAGE. - -2000-11-11 15:55:35 ShengHuo ZHU - - * mm-uu.el (mm-uu-type-alist): Stricter shar regexp. - -2000-11-11 Simon Josefsson - - * mml2015.el (mml2015-gpg-verify): Set "OK" security status. - - * smime.el (smime-details-buffer): New variable. - (smime-sign-region): - (smime-encrypt-region): - (smime-verify-region): - (smime-decrypt-region): Copy OpenSSL output to the buffer. - - * mml-smime.el (mml-smime-verify): Support security info. - -2000-11-10 17:11:22 ShengHuo ZHU - - * mm-decode.el (mm-verify-option): Set default to nil. - (mm-decrypt-option): Ditto. - * gnus-art.el (article-verify-x-pgp-sig): New function. - -2000-11-10 09:01:25 ShengHuo ZHU - - * gnus-art.el (gnus-mime-display-alternative): Show button if no - preferred part. - -2000-11-07 Kai Gro,b_(Bjohann - - * gnus-sum.el (gnus-move-split-methods): Say that - `gnus-split-methods' uses file names, whereas this uses group - names. (Report from Nevin Kapur) - -2000-11-10 01:23:20 ShengHuo ZHU - - * mm-partial.el (mm-inline-partial): Insert MIME-Version. - -2000-11-09 17:02:50 ShengHuo ZHU - - * nnheader.el (nnheader-directory-files-is-safe): New variable. - (nnheader-directory-articles): Use it. - (nnheader-article-to-file-alist): Ditto. - -2000-11-09 16:20:37 ShengHuo ZHU - - * rfc2047.el (rfc2047-pad-base64): New function. - (rfc2047-decode): Use it. - -2000-11-09 08:53:04 ShengHuo ZHU - - * gnus-srvr.el (gnus-browse-foreign-server): Bind the original - select method. - -2000-11-08 19:58:58 ShengHuo ZHU - - * mml2015.el (mml2015-gpg-decrypt-1): - (mml2015-gpg-verify): buffer-string has no argument in Emacs. - -2000-11-08 16:37:02 ShengHuo ZHU - - * gnus-cache.el (gnus-cache-generate-nov-databases): Reopen cache. - -2000-11-08 08:38:30 ShengHuo ZHU - - * pop3.el (pop3-munge-message-separator): A message may have an - empty body. - -2000-11-07 18:02:26 ShengHuo ZHU - - * mm-uu.el (mm-uu-type-alist): Don't test pgp stuff. - (mm-uu-pgp-encrypted-extract): Clean mml2015 buffer. - (mm-uu-pgp-signed-extract): Use coding-system. - -2000-11-07 14:33:19 ShengHuo ZHU - - * gnus-art.el (gnus-mime-display-part): Show MIME security button. - (gnus-insert-mime-security-button): New function. - * mm-decode.el (mm-possibly-verify-or-decrypt): Add security info. - * mml2015.el: Add security info when verify or decrypt. - * mm-uu.el (mm-uu-pgp-signed-extract): Use multipart. - (mm-uu-pgp-encrypted-extract): Ditto. - -2000-11-07 08:49:36 ShengHuo ZHU - - * mm-decode.el (mm-display-parts): New function. - * gnus-art.el (gnus-mime-view-all-parts): Use it. Remove parts first. - -2000-02-02 Alexandre Oliva - - * gnus-mlspl.el: Documentation tweaks. - -2000-11-06 22:06:44 ShengHuo ZHU - - * mm-decode.el (mm-possibly-verify-or-decrypt): Fix. - * gnus-art.el (gnus-article-encrypt-body): Rename and support prefix - argument. - -2000-11-06 19:10:14 ShengHuo ZHU - - * rfc2231.el (rfc2231-encode-string): Use us-ascii if charset is nil. - -2000-11-06 18:17:53 ShengHuo ZHU - - * gnus-art.el (gnus-article-encrypt): New function. - (gnus-article-encrypt-protocol-alist): New variable. - (gnus-article-encrypt-protocol): New variable. - * mml2015.el (mml2015-self-encrypt): New function. - (mml2015-mailcrypt-encrypt): Set mc-pgp-always-sign. - -2000-11-06 16:02:52 ShengHuo ZHU - - * mm-uu.el (mm-uu-gpg-key-skip-to-last): New function. - (mm-uu-pgp-key-extract): Use application/pgp-keys, don't snarf, - let mailcap do it. - * mml2015.el: Remove snarf code. - * mm-decode.el: Remove snarf code. - -2000-11-06 14:03:10 ShengHuo ZHU - - * mml.el (mml-insert-mml-markup): Ignore internal stuff. - (mml-insert-mime): Understand gnus-decoded. - (mime-to-mml): New parameter handles. - * gnus-art.el (gnus-mime-save-part-and-strip): Use it. - * gnus-sum.el (gnus-summary-edit-article): Add argument `3'. - -2000-11-06 13:51:37 ShengHuo ZHU - - * mm-decode.el (mime-security): New group. - (mm-verify-function-alist): Add test function. - (mm-decrypt-function-alist): Ditto. - (mm-snarf-option): Set default value as nil. - (mm-find-part-by-type): Recursive parameter. - (mm-possibly-verify-or-decrypt): Support draft-ietf-openpgp-multsig. - * mml2015.el: Support draft-ietf-openpgp-multsig. - -2000-11-06 13:01:27 ShengHuo ZHU - - * gnus-art.el (gnus-mime-view-part-as-charset): New function. - (gnus-article-view-part-as-charset): New function. - -2000-11-05 22:34:07 ShengHuo ZHU - - * mm-decode.el (mm-verify-option): Default value. - (mm-possibly-verify-or-decrypt): Dealing with broken messages. - -2000-11-05 15:06:05 ShengHuo ZHU - - * nnvirtual.el (nnvirtual-request-expire-articles): Uncompress range. - -2000-11-05 Simon Josefsson - - * mml-smime.el (mml-smime-verify): Work in original multipart - buffert. - - * mm-decode.el (mm-handle-multipart-original-buffer): New macro. - (mm-handle-multipart-ctl-parameter): Ditto. - (mm-alist-to-plist): New function. - (mm-dissect-buffer): Store CTL parameters and copy original buffer - for multiparts. - (mm-destroy-parts): Destroy multipart buffert. - (mm-remove-part): Ditto. - - * mml-smime.el (mml-smime-sign): Not used. - (mml-smime-encrypt): Ditto. - - * mm-decode.el (mml-smime-verify): Autoload mml-smime. - - Verify S/MIME signature support. - - * mm-decode.el (mm-inline-media-tests): Add - application/{x-,}pkcs7-signature. - (mm-inlined-types): Ditto. - (mm-automatic-display): Ditto. - (mm-verify-function-alist): Ditto. Add name of method. - (mm-decrypt-function-alist): Add name of method. - (mm-find-part-by-type): Add documentation. - (mm-possibly-verify-or-decrypt): Use new format of - mm-{verify,decrypt}-function-alist. Use method names. - - * mml-smime.el (mml-smime-verify): New function. - -2000-11-04 20:38:50 ShengHuo ZHU - - * mm-view.el (mm-inline-text): Move point to the end of inserted text. - -2000-11-04 19:07:08 ShengHuo ZHU - - * mml2015.el (mml2015-function-alist): Clear verify and decrypt. - * mm-uu.el: Reorganized. Add gnatsweb, pgp-signed, pgp-encrypted. - * mm-decode.el (mm-snarf-option): New variable. - -2000-11-04 13:08:02 ShengHuo ZHU - - * mm-util.el (mm-subst-char-in-string): New function. - (mm-replace-chars-in-string): Use it. - * message.el (message-replace-chars-in-string): Use it. - * nnheader.el (nnheader-replace-chars-in-string): Use it. - * gnus-mh.el (mh-lib-progs): Shut up. - -2000-11-04 ShengHuo Zhu - - * base64.el, md5.el: Moved to contrib directory. - -2000-11-04 11:13:56 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-search-article-forward): Don't move - the last article when search. - -2000-11-04 10:34:29 ShengHuo ZHU - - * nnheader.el (nnheader-pathname-coding-system): Default iso-8859-1. - * nnmail.el (nnmail-pathname-coding-system): Ditto. - -2000-09-29 David Edmondson - - * message.el (message-newline-and-reformat): Typo. - -2000-11-04 10:11:05 ShengHuo ZHU - - * rfc2231.el (rfc2231-decode-encoded-string): Test mm-multibyte-p. - -2000-11-04 09:53:42 ShengHuo ZHU - - * nntp.el (nntp-decode-text): Delete bogus status lines. - -2000-11-03 Stefan Monnier - - * message.el (message-font-lock-keywords): Match a final newline - to help font-lock's multiline support. - -2000-11-04 09:11:44 ShengHuo ZHU - - * nnoo.el (nnoo-set): New function. - -2000-11-04 ShengHuo Zhu - - * gpg.el, gpg-ring.el: Moved to contrib directory. - -2000-11-04 Simon Josefsson - - * nnimap.el (nnimap-split-inbox): Typo. - -2000-11-03 10:46:44 ShengHuo ZHU - - * gnus-msg.el (gnus-msg-mail): Move it backwards. - -2000-11-03 Simon Josefsson - - * rfc2231.el (rfc2231-parse-qp-string): New function. - (require): rfc2047. - - * mail-parse.el (mail-header-parse-content-type): - (mail-header-parse-content-disposition): Support invalid QP - encoded strings, by using `rfc2231-parse-qp-string'. - -2000-11-03 08:58:08 ShengHuo ZHU - - * rfc2231.el (rfc2231-parse-string): Decode when there is no number. - (rfc2231-decode-encoded-string): Typo "> X 1". - (rfc2231-encode-string): Insert the name of charset. - * mail-parse.el (mail-header-encode-parameter): Use RFC2231. - -2000-11-02 23:35:50 ShengHuo ZHU - - * mm-decode.el (mm-save-part): Return the filename. - * gnus-sum.el (gnus-summary-edit-article): Remove a hack. - * gnus-art.el (gnus-mime-save-part-and-strip): New function. - (gnus-mime-action-alist): Use it. - (gnus-mime-button-commands): Use it. - * mm-extern.el (mm-extern-local-file): Error when the file is gone. - (mm-inline-external-body): unwind-protect. - -2000-11-02 21:08:49 ShengHuo ZHU - - * gnus-art.el (gnus-insert-mime-button): Show url. - -2000-11-02 19:51:19 ShengHuo ZHU - - * mml.el (mml-generate-mime-1): Support external url. - * nnwarchive.el (nnwarchive-mail-archive-article): Use external url. - -2000-11-02 16:53:32 ShengHuo ZHU - - * mm-partial.el (mm-inline-partial): Buffer name with a leading space. - * mm-decode.el (mm-display-external): Ditto. - * mm-extern.el: New file. - * mm-decode.el (mm-inline-media-tests): Hook it up. - (mm-inlined-types): Inline message/external-body. - -2000-11-02 Simon Josefsson - - * gnus-art.el (gnus-visible-headers): Add Mail-Followup-To. - - * message.el (message-get-reply-headers): Better handling when - Mail-Followup-To is very large. - -2000-11-02 13:27:56 ShengHuo ZHU - - * gnus-uu.el (gnus-uu-post-news): Comment out the redundancy. - * gnus-art.el (gnus-article-edit-done): - * gnus-sum.el (gnus-summary-edit-article-done): Move line - counting code here. - * gnus-msg.el (gnus-setup-message): Remove a hack. - -2000-11-02 09:33:01 ShengHuo ZHU - - * gnus-sum.el (gnus-newsgroup-variables): New variable. - (gnus-summary-mode): Make them local variables. - (gnus-set-global-variables): Globalize them. - (gnus-summary-exit): Kill them. - -2000-11-02 Hrvoje Niksic - - * rfc2047.el (rfc2047-encoded-word-regexp): Allow empty encoded - word. - -2000-11-01 10:07:13 ShengHuo ZHU - - * gnus-art.el (gnus-mime-display-part): Add to signed or encrypted. - gnus-article-wash-types. - * gnus-art.el (gnus-article-wash-status): Use them. - -2000-11-01 08:54:11 ShengHuo ZHU - - * mml.el (mml-read-tag): Remove spaces and LF. - -2000-11-01 08:01:03 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-encrypt): Use from and sign parameters. - * mml.el (mml-generate-mime-1): Add sender and recipients attributes. - -2000-11-01 07:39:24 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-force-verify-and-decrypt): New function. - -2000-10-31 22:06:13 ShengHuo ZHU - - * gnus-sum.el (gnus-article-charset): New variable. - (gnus-summary-display-article): Set it. - * gnus-msg.el (gnus-copy-article-buffer): Use it. - * gnus-art.el (gnus-article-mode): Make it local variable. - -2000-11-01 01:12:29 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-create-mapping): Use nreverse. - -2000-10-31 23:45:31 Lars Magne Ingebrigtsen - - * nnwfm.el: New file. - - * nnweb.el (nnweb-replace-in-string): New function. - -2000-10-31 17:32:02 ShengHuo ZHU - - * mml2015.el: Wrap gpg.el. - * gpg.el (gpg-verify): The last argument of apply is a list. - (gpg-encrypt): Add passphrase as a parameter. - -2000-10-31 17:28:45 ShengHuo ZHU - - * gpg.el: New file. - * gpg-ring.el: New file. - -2000-10-31 11:44:29 ShengHuo ZHU - - * gnus-sum.el (gnus-summary-show-article): Fix the summary line. - -2000-10-31 Katsumi Yamaoka - - * gnus-sum.el (gnus-summary-insert-line): Work with quoted - double-quote characters. - (gnus-summary-prepare-threads): Ditto. - -2000-10-31 08:36:03 ShengHuo ZHU - - * gnus-art.el (gnus-mime-display-single): Forward line -1. - * mml.el (mml-read-tag): Don't skip the leading space. - * lpath.el (font-lock-set-defaults): Shut up. - -2000-10-31 00:04:35 ShengHuo ZHU - - * mml2015.el: Fix doc. Remove bogus mml2015-setup. - -2000-10-30 23:37:07 ShengHuo ZHU - - * qp.el (quoted-printable-encode-region): Replace leading - when - ultra safe. - * mml.el (mml-generate-mime-postprocess-function): Removed. - (mml-postprocess-alist): Removed. - (mml-generate-mime-1): Use ultra-safe when sign. - * mml2015.el (mml2015-fix-micalg): Uppercase. - (mml2015-verify): Insert LF. - (mml2015-mailcrypt-sign): Downcase; search backward. - -2000-10-16 11:36:52 Lars Magne Ingebrigtsen - - * nnultimate.el (nnultimate-forum-table-p): Be a bit more - restrictive. - (nnultimate-table-regexp): New variable. - (nnultimate-forum-table-p): Use it. - -2000-10-30 Ed L Cashin - Trivial patch. - - * gnus-sum.el (gnus-summary-expire-articles): Save point. - -2000-10-30 08:52:50 ShengHuo ZHU - - * mml-sec.el (mml-pgpmime-sign-buffer): Use mml2015-sign. - (mml-pgpmime-encrypt-buffer): Use mml2015-encrypt. - -2000-10-30 08:38:12 ShengHuo ZHU - - * mml2015.el: Shut up. - -2000-10-30 08:17:46 ShengHuo ZHU - - * gnus.el (gnus-server-browse-hashtb): Removed. - * gnus-group.el (gnus-group-prepare-flat-list-dead): Use gnus-active. - (gnus-group-insert-group-line-info): Use simplified method. - * gnus-srvr.el (gnus-browse-foreign-server): Use gnus-set-active. - -2000-10-30 01:52:40 ShengHuo ZHU - - * gnus-util.el (gnus-union): Renamed from gnus-agent-union, and - moved here. - * gnus-agent.el (gnus-agent-fetch-headers): Use it. - * gnus-group.el (gnus-group-prepare-flat): Use it. - * gnus-topic.el (gnus-group-prepare-topics): Use it. - -2000-10-30 01:23:49 ShengHuo ZHU - - * mml.el (mml-mode): Show menu in XEmacs. - -2000-10-30 00:49:33 ShengHuo ZHU - - * gnus-srvr.el (gnus-server-browse-in-group-buffer): New variable. - (gnus-server-read-server-in-server-buffer): New function. - (gnus-browse-foreign-server): Browse in group buffer. - * gnus-group.el (gnus-group-prepare-flat): List group not in list. - (gnus-group-prepare-flat-list-dead): Use gnus-group-insert-group-line. - * gnus-topic.el (gnus-group-prepare-topics): Ditto. - * gnus.el (gnus-server-browse-hashtb): New variable. - -2000-10-29 22:31:40 ShengHuo ZHU - - * nnfolder.el (nnfolder-open-nov): Use group. - -2000-10-29 17:23:15 ShengHuo ZHU - - * nnfolder.el: Add NOV. Set version to 2.0. - (nnfolder-nov-is-evil): If non-nil, nnfolder acts like 1.0. - -2000-10-29 10:35:08 ShengHuo ZHU - - * mml2015.el (mml2015-mailcrypt-sign): Use mc-sign-generic. - -2000-10-29 09:42:05 ShengHuo ZHU - - * gnus-srvr.el (gnus-browse-foreign-server): Show level mark. - (gnus-browse-unsubscribe-group): Unsubscribed is not killed. - -2000-10-29 08:28:58 ShengHuo ZHU - - * nnfolder.el (nnfolder-read-folder): Don't goto point-min. - -2000-10-28 19:11:01 ShengHuo ZHU - - * mm-decode.el (mm-verify-function-alist): New variable. - (mm-verify-option): New variable. - (mm-decrypt-function-alist): Ditto. - (mm-decrypt-option): Ditto. - (mm-find-raw-part-by-type): New function. - (mm-possibly-verify-or-decrypt): New function. - (mm-dissect-multipart): Use it. - * mml2015.el (mml2015-fix-micalg): New function. - (mml2015-decrypt): Use new interface. - (mml2015-verify): Use new interface. - (mml2015-setup): Make it bogus. - -2000-10-28 16:54:45 ShengHuo ZHU - - * mml.el (mml-generate-mime-postprocess-function): Set to - mml-postprocess. - (autoload): Autoload mml2015 and mml-smime. - (mml-postprocess-alist): Use mml2015-sign and mml2015-encrypt. - * mml2015.el (mml2015-encrypt): New function. - (mml2015-sign): New function. - (mml2015-encrypt-function): New variable. - (mml2015-sign-function): New variable. - (mml2015-mailcrypt-encrypt): Use message-recipients. - (mml2015-setup): Don't set mml-generate-mime-postprocess-function. - * mml-smime.el (mml-smime-setup): Ditto. - -2000-10-28 Simon Josefsson - - * imap.el (imap-parse-resp-text-code): Workaround bug in Stalker - Communigate Pro 3.3.1 server. - - * mml-sec.el (mml-smime-encrypt-buffer): Support certfiles stored - in buffers. - (mml-secure-dns-server): Removed. - (mml-secure-part-smime-encrypt-by-dns): Use DIG interface. Don't - write certificates to files. - - * smime.el (smime-dns-server): New variable. - (smime-mail-to-domain): - (smime-cert-by-dns): New functions. - - * dig.el: New file. - -2000-10-28 10:09:41 ShengHuo ZHU - - * message.el (message-options): New variable. - (message-options-set-recipient): New function. - (message-send): Use them. - * gnus-int.el (gnus-request-replace-article): Use them. - (gnus-request-accept-article): Ditto. - * mml.el (mml-preview): Use them. - * gnus-sum.el (gnus-summary-edit-article): Use them. - - * message.el (message-options-get): New function. - (message-options-get): New function. - * rfc2047.el (rfc2047-encode-message-header): Use them. - * mm-bodies.el (mm-encode-body): Use them. - -2000-10-28 Simon Josefsson - - * nnimap.el (nnimap-retrieve-which-headers): - (nnimap-request-article-part): Quote message-id. - - * smime.el (smime-CA-directory): Rename from `smime-CAs'. - (smime-CA-file): New variable. - (smime-call-openssl-region): Don't error. - (smime-sign-region): Return result value. - (smime-encrypt-region): Ditto. - (smime-verify-region): New function. - (smime-decrypt-region): Ditto. - (smime-verify-buffer): Ditto. - (smime-decrypt-buffer): Ditto. - - * mml.el: Require mml-sec. - (mml-generate-mime-1): Support "sign" and "encrypt" MML tags. - (mml-mode-map): Add "sign" and "encrypt" maps. - (mml-menu): Add security menu. - (mml-preview): Use generate-new-buffer. - - * mml-sec.el: New file. - -2000-10-28 03:43:03 ShengHuo ZHU - - * mm-decode.el (mm-find-part-by-type): Move it here. - * mml.el (mml-postprocess): Move it here. - (mml-postprocess-alist): Move it here. Merge them. - -2000-10-28 03:38:39 ShengHuo ZHU - - * rfc2047.el (rfc2047-encode-message-header): Make sure no - unencoded stuff in the header. - -2000-10-28 02:40:46 ShengHuo ZHU - - * gnus-group.el (gnus-group-listed-groups): New variable. - (gnus-group-list-option): New variable. - (gnus-group-list-limit-map): New keymap. - (gnus-group-list-flush-map): New keymap. - (gnus-group-list-plus-map): New keymap. - (gnus-group-prepare-logic): New function. - (gnus-group-prepare-flat): Merge with - gnus-group-prepare-flat-predicate. Use gnus-group-listed-groups. - (gnus-group-prepare-flat-list-dead): Ditto. - (gnus-group-list-matching): Use gnus-group-prepare-function. - (gnus-group-list-dormant): Ditto. - (gnus-group-list-cached): Ditto. - (gnus-group-listed-groups): New function. - (gnus-group-list-limit): New function. - (gnus-group-list-flush): New function. - (gnus-group-list-plus): New function. - * gnus-topic.el (gnus-group-prepare-topics): Accept predicate. - (gnus-topic-prepare-topic): Ditto. - -2000-10-27 Paul Jarc - - * message.el (message-insert-to, message-get-reply-headers): - (message-reply, message-followup): Mail-{Followup,Reply}-To. - -2000-10-27 19:45:58 ShengHuo ZHU - - * mml2015.el: New file. - * smime.el: New file. - * mml-smime.el: New file. +2004-01-04 Lars Magne Ingebrigtsen -2000-10-27 19:42:12 ShengHuo ZHU + * gnus.el (gnus-logo-color-style): Changed colors to `no'. - * ChangeLog: Moved to ChangeLog.1. + * Moved to Changelog.1. - Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved. diff --git a/lisp/ChangeLog.1 b/lisp/ChangeLog.1 index c88d229..b60fb5d 100644 --- a/lisp/ChangeLog.1 +++ b/lisp/ChangeLog.1 @@ -1,3 +1,18943 @@ +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump version. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el: No Gnus v0.1 is released. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el: No Gnus v0.1 is released. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el: No Gnus v0.0 is released. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + (gnus-version): No. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.10.6 is released. + +2004-01-04 Kai Grossjohann + + * gnus-sum.el (gnus-summary-print-article): Doc fix. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2004-01-04 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.10.5 is released. + +2004-01-03 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-face-from-file): Message 9. + +2004-01-03 Romain FRANCOISE + + * gnus-fun.el (gnus-face-from-file): Use gnus-message. + +2004-01-03 Reiner Steib + + * gnus-art.el (gnus-button-mid-or-mail-heuristic): Treat Gmane + addresses specially. Fix returned value and messages. + + * mm-decode.el (mm-enable-external): New variable. + (mm-display-part): Use it. + (mm-display-external): Fix message in case of nil handle. + + * Update copyright for several files. + + * spam-report.el (spam-report-gmane): Adjust verbosity. + Delete trailing whitespace. Update copyright. + + * spam.el: Fix many (but not all) checkdoc complaints. + Delete trailing whitespace. + + * message.el (message-header-synonyms): Defcustom. + (message-get-reply-headers): Catch `Original-To'. + (message-carefully-insert-headers): Added comment. + + * gnus-sum.el (gnus-summary-make-menu-bar): Improved "Washing" menu. + +2004-01-03 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-select-newsgroup): Use cat. + + * gnus-agent.el (gnus-agent-cat-enable-undownloaded-faces): New + cat. + + * gnus.el (gnus-user-agent): Moved here. + + * gnus-msg.el (gnus-user-agent): Moved from here. + + * gnus.el (gnus-version-number): Bump. + +2004-01-03 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.10.4 is released. + +2004-01-02 Reiner Steib + + * gnus.el (gnus-mode-line-buffer-identification): Show version in + help-echo. + (gnus-read-group): Allow most group names. Changed warning. + +2004-01-02 Lars Magne Ingebrigtsen + + * gnus-dired.el (gnus-dired-mode-map): Change keymaps. + +2004-01-02 Arne J,Ax(Brgensen + + * smime.el (smime-crl-check): Doc fix. + +2004-01-02 Edwin Steiner + + * gnus-nocem.el (gnus-nocem-enter-article): Use the real group + hashtb (tiny patch). + +2004-01-02 Kai Grossjohann + + * nnml.el (nnml-save-mail): Grok compressed articles. From + Michael Albinus . + +2004-01-02 Teodor Zlatanov + + * spam.el (spam-ham-copy-or-move-routine): use spam-list-articles + (spam-list-articles): rewritten to only check a mark once per + invocation + +2004-01-01 Simon Josefsson + + * mml-sec.el (mml-default-encrypt-method) + (mml-default-sign-method): Defcustom. + +2003-12-31 Lars Magne Ingebrigtsen + + * mml.el (mml-generate-mime-1): Remove extra ). + + * gnus-group.el (gnus-group-set-current-level): Signal errors on + topic lines. + (gnus-group-set-current-level): Fix fix. + +2003-12-31 Jeremy Maitin-Shepard + + * mml.el (mml-generate-mime-1): Use mml-compute-boundary (tiny + change). + +2003-12-30 Reiner Steib + + * gnus-group.el: Removed `(when t ...)' around `gnus-define-keys'. + (gnus-group-group-map): Added `gnus-group-read-ephemeral-group' + (already in previous commit inadvertently). + (gnus-group-make-menu-bar): Added `gnus-group-read-ephemeral-group'. + (gnus-group-read-ephemeral-group): Made interactive. + + * gnus-score.el (gnus-score-find-trace): Added comment on sync + with `gnus-score-edit-file-at-point'. + + * gnus-logic.el (gnus-score-advanced): Ditto. + + * gnus-score.el (gnus-score-edit-file-at-point): Fix for + advanced scoring. + +2003-12-30 Simon Josefsson + + * gnus-score.el (gnus-score-edit-file-at-point): Use + gnus-point-at-*, for portability. + +2003-12-30 Reiner Steib + + * gnus-art.el (gnus-treat-body-boundary): Fix doc-string and + custom type. + (gnus-button-mid-or-mail-regexp): Don't be too restrictive. + Suggested by Felix Wiemann . + (gnus-button-alist): Added "M-x ... RET" and "mid:" buttons. + Added comments about relevant RFCs. + + * gnus-sum.el (gnus-summary-mode): Untabify doc-string. + (gnus-summary-goto-article): Allow `%40'. + (gnus-summary-refer-article): Convert `%40' to `@'. + +2003-12-30 Simon Josefsson + + * smime.el (smime-crl-check): New. + (smime-verify-region): Use it. From Arne J,Ax(Brgensen + in <87llpk9v5q.fsf@seamus.arnested.dk> (tiny + change). + +2003-12-30 Reiner Steib + + * gnus-score.el (gnus-score-edit-file-at-point): Consider the + whole match element. From Karl Pfl,Ad(Bsterer . + (gnus-score-find-trace): Use it. Added `f' and `t' commands, + added quick help. With some suggestions from Karl Pfl,Ad(Bsterer + . + + * gnus-util.el (gnus-emacs-version): Added doc-string. + + * mml.el (mml-minibuffer-read-disposition): New function. + (mml-attach-file): Use it. + (mml-preview): Added MIME preview to gnus-buffers. + +2003-12-30 Jesper Harder + + * gnus-sum.el (gnus-summary-make-menu-bar): Add ellipses. + +2003-12-30 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-get-unread-articles): Inline gnus-server-get-method. + (gnus-get-unread-articles): Cache methods. + (gnus-get-unread-articles-in-group): Indent. + + * gnus.el (gnus-version-number): Bump. + (gnus-secondary-method-p): Extend servers to methods before comparing. + (gnus-secondary-method-p): Revert. + +2003-12-30 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.10.3 is released. + +2003-12-29 Simon Josefsson + + * gnus-agent.el (gnus-agentize): Improve auto-agentizing logic. + Suggested by Steinar Bang . + (gnus-agent-auto-agentize-methods): Customize. + +2003-12-29 Kevin Greiner + * gnus.el (gnus-server-to-method): Fixed bug in 2003-12-22 + check-in. + +2003-12-28 Adrian Lanz + + * mail-source.el (mail-source-fetch-imap): Prevent storing of + identical entries for imap mail sources, when retrieving mail + messages from an imap server within the same Gnus session several + times (tiny change). + +2003-12-28 Jesper Harder + + * mm-view.el (mm-text-html-washer-alist): Use + mm-inline-wash-with-stdin for w3m-standalone. + + * mm-decode.el (mm-text-html-renderer): Add w3m-standalone. + + * mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before + encrypting. + +2003-12-28 Jesper Harder + + * mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding. + From Ivan Boldyrev (tiny change). + +2003-12-26 Katsumi Yamaoka + + * dgnushack.el: Add an advice to byte-optimize-form-code-walker to + avoid the warning ``...called for effect'' for the pop form when + running Emacs 21.3. + +2003-12-26 Jesper Harder + + * mm-bodies.el (mm-body-encoding): Don't use 7bit if the body + contains "^From " and mm-use-ultra-safe-encoding is true. + +2003-12-25 Jesper Harder + + * mml1991.el (mml1991-pgg-sign): Encode and decode according to + CTE header. Don't insert gpg output as unibyte. + +2003-12-25 Katsumi Yamaoka + + * lpath.el: Remove display-time-event-handler and open-ssl-stream; + add delete-extent for Emacs; rearrange bindings assuming w3 may + not be available and XEmacs without the file-coding feature may be + used. + +2003-12-24 Katsumi Yamaoka + + * dgnushack.el (dgnushack-compile): Increase the value for + max-specpdl-size when compiling Gnus with Emacs 20. + +2003-12-22 Kevin Greiner + * gnus-int.el (gnus-open-server): Fixed the server status such + that an agentized server, when opened offline, has a status of + offline. Also fixes bug whereby the agent's backend was called + twice to open each server. + + * gnus-start.el (gnus-get-unread-articles-in-group): Autoload + gnus-agent-possibly-alter-active rather than inline to resolve + compiler warnings. + + * gnus.el (gnus-server-to-method): Added fallback of iterating + over gnus-newsrc-alist to resolve names of foreign servers. + Should fix recent agent bug. + +2003-12-22 Reiner Steib + + * gnus-score.el (gnus-summary-lower-score) + (gnus-summary-increase-score): Mention symbolic prefix in the + doc-string. Suggested by Karl Pfl,Ad(Bsterer . + +2003-12-21 Jesper Harder + + * gnus-agent.el (gnus-agent-read-agentview): Use + car-less-than-car. + +2003-12-20 Artem Chuprina (tiny change) + + * message.el (message-yank-buffer): Bind message-reply-buffer to + a buffer rather than a string. + +2003-12-19 Jesper Harder + + * gnus-msg.el (gnus-summary-followup): Correct documentation. + +2003-12-18 Jesper Harder + + * gnus-msg.el (gnus-inews-add-send-actions): `yanked' can be a + list of lists. Reported by Dmitri Paduchikh . + +2003-12-18 Reiner Steib + + * mm-url.el (mm-url-insert-file-contents-external) + (mm-url-insert-file-contents): Added doc-strings. Autoload. + +2003-12-18 Jesper Harder + + * gnus-cus.el (defvar): defvar + gnus-agent-cat-disable-undownloaded-faces. + +2003-12-17 Katsumi Yamaoka + + * message.el (message-forward-subject-name-subject): Use + gnus-extract-address-components instead of + mail-header-parse-address because it may be called with non-ascii + text. + +2003-12-16 Per Abrahamsen + + * nnmail.el (nnmail-split-fancy): The widget now supports + restrictions. + +2003-12-16 Katsumi Yamaoka + + * nnheader.el (nnheader-find-etc-directory): Find the newest one. + +2003-12-16 Simon Josefsson + + * sha1-el.el (autoload): Don't use ignore-errors. + (sha1-use-external): Use condition-case. Suggested by Katsumi + Yamaoka . + +2003-12-15 Katsumi Yamaoka + + * nnmail.el (nnmail-split-fancy): Make it customizable with Emacs + 20 as well. + +2003-12-15 Simon Josefsson + + * sha1-el.el (autoload): Ignore errors for + executable-find. (XEmacs ecrypto does not require sh-script where + executable.el is located.) + (sha1-use-external): Likewise. + + * sha1-el.el (sha1): Add defgroup. + (sha1-maximum-internal-length, sha1-program, sha1-use-external) + (sha1-program): Use 'sha1sum' from GNU CoreUtils instead of OpenSSL. + (sha1): Autoload. + + * nndraft.el (nndraft-request-move-article): Copy definition of + nnmh-request-move-article instead of calling it, because the nnmh + version uses nnmh-request-article which isn't the same as the + nndraft version. + +2003-12-13 Teodor Zlatanov + + * spam.el: added some gnus-registry autoloads + (spam-split-symbolic-return): makes spam-split return 'spam + instead of the value of spam-split-group when spam is detected + (spam-split-symbolic-return-positive): makes spam-split return + 'ham instead of nil when ham is detected + (spam-autodetect-recheck-messages): tells spam.el whether it + should recheck all messages in a group, or only the unseen ones + (spam-split-last-successful-check): spam-split will set this to + the last successful check; this was seen as a cleaner approach + than returning a cell like '(spam spam-use-bogofilter) + (spam-list-of-checks): documentation appended + (spam-split): accomodate the spam-split-symbolic-return and + spam-split-symbolic-return-positive variables + (spam-find-spam): new function called when the summary is built + (spam-log-registered-p): checks if a ham or spam registration has + already been done for an article + (spam-check-regex-headers, spam-check-blackholes, spam-check-BBDB) + (spam-check-ifile, spam-check-stat, spam-check-whitelist) + (spam-check-blacklist, spam-check-bogofilter-headers) + (spam-check-spamoracle): respect the spam-split-symbolic-return + and spam-split-symbolic-return-positive variables + (spam-initialize): add spam-find-spam to gnus-summary-prepare-hook + (spam-unload-hook): remove spam-find-spam from + gnus-summary-prepare-hook + + * gnus.el (spam-autodetect, spam-autodetect-methods): new + configuration items for spam autodetection + +2003-12-12 Reiner Steib + + * gnus-draft.el (gnus-draft-mode-map): Bind `e' to + `gnus-draft-edit-message'. We still have `B w' for + `gnus-summary-edit-article'. + +2003-12-12 Katsumi Yamaoka + + * nnheaderxm.el (nnheader-xmas-run-at-time): Use a simple function + definition if there is not a bug in start-itimer. + + * pgg.el (pgg-run-at-time): Ditto. + +2003-12-11 Kevin Greiner + + * gnus-agent.el (gnus-agent-possibly-alter-active): New Function. + (gnus-agent-regenerate-group): When necessary, alter the group's + active range to include articles newly recognized as being + downloaded. + (gnus-agent-regenerate): Removed code that updated the agent's + active file as the new gnus-agent-possibly-alter-active function + obsolesced it. + + * gnus-cus.el (gnus-agent-customize-category): Added missing + agent-disable-undownloaded-faces parameter. + + * gnus-start.el (gnus-activate-group): Backed out my 2003-11-29 + patch as it was too late at adjusting the active range. + (gnus-get-unread-articles-in-group): Added call to new + gnus-agent-possibly-alter-active to adjust the active range. + +2003-12-10 Jesper Harder + + * message.el (message-get-reply-headers): Narrow to headers. + +2003-12-10 Teodor Zlatanov + + * spam.el (spam-disable-spam-split-during-ham-respool): new + variable. From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) + (spam-ham-copy-or-move-routine): respect + spam-disable-spam-split-during-ham-respool. From + lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) + (spam-split-disabled): new variable. From + lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) + (spam-split): respect spam-split-disabled. From + lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) + +2003-12-10 Katsumi Yamaoka + + * nnheaderxm.el (nnheader-xmas-run-at-time): Make it work + correctly for the first argument. + + * pgg.el (pgg-run-at-time): New function. + (pgg-add-passphrase-cache): Use it. + +2003-12-10 Simon Josefsson + + * pgg-parse.el (pgg-decode-packets): Rewrite to handle corrupt + input. + (pgg-decode-armor-region): Don't parse packet if decoding fail. + +2003-12-09 Teodor Zlatanov + + * spam.el (spam-check-bogofilter): run in the correct buffer. + From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly). + (spam-bogofilter-database-directory): correct customization + group. From Xavier Maillard . + +2003-12-09 Per Abrahamsen + + * nnmail.el (nnmail-lazy, nnmail-split-fancy): New widgets. + (nnmail-split-fancy): Use it. + +2003-12-08 Joel Ray Holveck (tiny change) + + * gnus-sum.el (gnus-summary-save-parts-1): Consider the "name" + parameter of Content-Type. + +2003-12-08 Katsumi Yamaoka + + * gnus-util.el: Revert 2003-12-03 change, instead, provide the + compiler macro for rmail-select-summary if rmail is not available, + and bind rmail-summary-displayed and rmail-maybe-display-summary + in order to silence the compiler even if tm is not available. + +2003-12-08 Simon Josefsson + + * flow-fill.el (fill-flowed-encode-tests, fill-flowed-test): Add. + +2003-12-08 Jesper Harder + + * gnus-msg.el (gnus-extended-version): Bind float-output-format to + nil. + +2003-12-08 Simon Josefsson + + * mml-smime.el (mml-smime-sign): Replace CRLF with LF in OpenSSL + output. Reported by Arne J,Ax(Brgensen . + +2003-12-07 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-recipient-arg): Add. + (pgg-gpg-encrypt-region): Use it. Tiny patch from Lloyd Zusman + . + (pgg-gpg-recipient-argument): Doc fix. Renamed fro p-g-r-a. + (pgg-gpg-encrypt-region): Update. + +2003-12-07 Jesper Harder + + * spam.el (spam-check-spamoracle, spam-spamoracle-learn): Don't + use = or zerop to test the return value of call-process, because + it can be a string. + + * mail-source.el (mail-source-fetch-with-program): do. + + * mailcap.el (mailcap-viewer-passes-test): do. + + * gnus-uu.el (gnus-uu-treat-archive, gnus-uu-post-encode-mime) + (gnus-uu-post-encode-file): do. + + * gnus-soup.el (gnus-soup-pack, gnus-soup-unpack-packet): do. + + * message.el (message-fix-before-sending): Fix detection of + non-printables. Don't replace unencodable utf-8. + +2003-12-05 Jesper Harder + + * mm-url.el (mm-url-predefined-programs): Add user-agent for wget. + (mm-url-insert-file-contents-external): Signal an error if program + fails. + +2003-12-04 Teodor Zlatanov + + * spam-report.el (spam-report-gmane): iterate over articles + instead of a single one; remove interactive usage + +2003-12-03 Katsumi Yamaoka + + * dns.el: Fix misplaced eval-when-compile. + + * gnus-util.el: Require alist and provide tm-view when compiling + with XEmacs. + +2003-12-03 Steve Youngs + + * gnus-xmas.el: Add autoloads for macros defined in gnus.el. + From Jerry James . + + * gnus-util.el: Get rmail definitions when compiling. + From Jerry James . + + * dns.el: Require gnus-xmas at compile time instead of trying to + autoload `gnus-xmas-open-network-stream' because it wasn't picking + up the macro. + From Jerry James . + +2003-12-01 Kevin Greiner + * gnus-agent.el (gnus-agent-consider-all-articles): Updated + docstring. + (gnus-predicate-implies-unread, gnus-predicate-implies-unread-1): + Fixed implementation such that the predicate `true' no longer + evaluates to t. + +2003-12-01 Teodor Zlatanov + + * spam.el (spam-check-bogofilter): check the bogofilter headers + AFTER the save-excursion scope is over. From Adrian Lanz + . + (spam-fetch-field-message-id-fast): doc fix + +2003-12-01 Simon Josefsson + + * gnus-agent.el (gnus-agent-expire-days): Doc fix. + +2003-11-30 Simon Josefsson + + * gnus-agent.el (gnus-agent-expire-group-1): Bind message-log-max + when messaging "X % completed" to inhibit logging them to the + message buffer. + (gnus-agent-expire-group-1): Mention group name in messages. + (gnus-agent-expire-group-1): Only print a message for an article + when there actually was something done to it. + + * mm-util.el (mm-enable-multibyte): Call set-buffer-multibyte with + 'to argument. Fixes something or other in Emacs 22, and is + backwards compatible. From Kenichi Handa . + + * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Custom fix. + +2003-11-30 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-covered-methods): Remove nil methods. + +2003-11-29 Kevin Greiner + * gnus-start.el (gnus-activate-group): The active range of the + group must include the articles known to the agent. + + * gnus.el (gnus-agent-method-p): Accept a server name as the + method being tested. + +2003-11-29 Alexander Kreuzer (tiny change) + + * nnrss.el (nnrss-check-group): Set xml when nnrss-use-local is t. + +2003-11-29 Jesper Harder + + * gnus-group.el (gnus-group-make-menu-bar): Add + gnus-group-make-rss-group. + +2003-11-28 Reiner Steib + + * message.el: Added custom-manual links to all variables that have + an index entry in the message manual. + (message-generate-headers-first): Fixed doc-string. + +2003-11-27 Katsumi Yamaoka + + * gnus-msg.el (gnus-summary-yank-message): Don't bind + gnus-display-mime-function to nil so that non-ascii text is + decoded and attachments are not shown. + + * message.el (message-cite-original-without-signature): Replace + the value of message-reply-headers with the yanked article since + it may be a different article from the original. + (message-cite-original): Ditto. + +2003-11-25 Teodor Zlatanov + + * spam.el (spam-blacklist-ignored-regexes): new variable, so + blacklisting can ignore certain regular expressions (e.g. the + user's e-mail address) + (spam-bogofilter-spam-strong-switch, + spam-bogofilter-ham-strong-switch): options used when articles are + already registered as the opposite classification + (spam-old-ham-articles, spam-old-spam-articles): lists of ham and + spam articles, generated when a summary buffer is entered, and + consulted when it's exited so we know what articles are changing + state from spam to ham or vice-versa + (spam-xor): everyone needs a little convenience + (spam-list-of-processors): lookup table for old-style spam/ham + exits processors + (spam-group-processor-p): support old-style and new-style spam/ham + exit processors + (spam-group-processor-multiple-p): handle new-style spam/ham exit + processors + (spam-summary-prepare): use spam-old-{ham,spam}-articles; change + logic to iterate over list of processors instead of manual + individual lookup, unregister any articles that change from ham to + spam or vice-versa in the course of the summary buffer usage; use + the new spam-register-routine + (spam-ham-copy-routine, spam-ham-move-routine, + spam-mark-spam-as-expired-and-move-routine): check that the list + of groups is not nil, because apply doesn't like to apply a + function across nil + (spam-registration-functions): variable for looking up spam/ham + registration/unregistration functions based on a spam-use-* symbol + (spam-classification-valid-p, spam-process-type-valid-p) + (spam-registration-check-valid-p) + (spam-unregistration-check-valid-p): convenience functions + (spam-registration-function, spam-unregistration-function): look + up the registration/unregistration function based on a + classification and the check (spam-use-* symbol) + (spam-list-articles): generate list of spam/ham articles from a + given list of articles + (spam-register-routine): do the heavy work of registering and + unregistering articles, using all the articles in the group or + specific ones as needed + (spam-generic-register-routine): removed, no longer used + (spam-log-unregistration-needed-p, spam-log-undo-registration): + handle article registration/unregistration with a given spam/ham + processor and group + (BBDB, ifile, spam-stat, blacklists, whitelists, spam-report, + bogofilter, spamoracle): rewrite registration/unregistration + functions to take a list of articles and the unregister option. + Much hilarity ensues. + (spam-initialize): spam-stat-maybe-{save,load} already respect spam-use-stat + (spam-stat-register-ham-routine, spam-stat-register-spam-routine): + don't load and save unnecessarily + + * spam-stat.el (spam-stat-dirty): new variable, set when the stats + database is modified + (spam-stat-buffer-is-spam, spam-stat-buffer-is-non-spam) + (spam-stat-buffer-change-to-spam, spam-stat-to-hash-table) + (spam-stat-buffer-change-to-non-spam): set spam-stat-dirty when + needed + (spam-stat-save): respect spam-stat-dirty, unless the force + parameter is specified + (spam-stat-load): clear spam-stat-dirty + + * gnus.el (gnus-install-group-spam-parameters): marked the + old-style exit processors as obsolete in the docs, added the + new-style exit processors while the old ones are still allowed + + +2003-11-25 Jesper Harder + + * gnus-art.el (article-hide-boring-headers): Don't hide Reply-To + unless its list of addresses is identical to From. + +2003-11-25 Katsumi Yamaoka + + * dgnushack.el (mapc): Add the compiler macro for Emacs 20. + +2003-11-24 Kevin Greiner + * gnus-srvr.el (gnus-server-insert-server-line): The server names + used in gnus-agent are different (for example, the native server + uses the alias "native") from the names in gnus-srvr. + Compensating by adding a second text property storing the name + expected by gnus-agent. + (gnus-server-named-server): New function. + * gnus-agent.el (gnus-agent-remove-server, gnus-agent-add-server): + No longer expect an argument as it was ignored anyway. Uses the + new gnus-server-named-server function to get gnus-agent compatible + names from the server buffer. + +2003-11-20 Kevin Greiner + + * gnus.el (gnus-agent-covered-methods): Documented use of + named servers, not methods, to identity agentized groups. + Users may now change their server configurations without having + the server become "unagentized". + (gnus-agent-covered-methods): Removed from gnus-variable-list to + avoid storing two copies of gnus-agent-covered-methods, one in + .newsrc.eld and the other in agent/lib/servers. + (gnus-server-to-method): Do not cache server for the nil method. + (gnus-method-to-server): New function. Associate named server + with all, even foreign, methods. + (gnus-agent-method-p, gnus-agent-method-p-cache): Incorporated + simple last-response cache to offset performance lose of having to + always convert methods to named servers. + * gnus-agent.el (gnus-agent-expire-days): Removed obsolete + documentation. + (gnus-agentize, gnus-agent-add-server, gnus-agent-remove-server): + Modified to support new definition of gnus-agent-covered-method. + (gnus-agent-read-servers): Rewritten to convert old method data + into server names. + (gnus-agent-read-servers-validate) + (gnus-agent-read-servers-validate-native): New functions. + (gnus-agent-write-servers): No longer use gnus-method-simplify as + it failed to simplify foreign methods. + (gnus-agent-close-connections, gnus-agent-synchronize-flags) + (gnus-agent-possibly-synchronize-flags, gnus-agent-fetch-session) + (gnus-agent-regenerate): Uses new gnus-agent-covered-methods + function as gnus-agent-covered-methods variable no longer provides + methods. + (gnus-agent-covered-methods): New function + (gnus-agent-expire-group, gnus-agent-expire): Final message will, + if gnus-verbose is greater than 4, report statistics of NOV + entries and files deleted as well as total bytes recovered. + (gnus-agent-expire-done-message): New function + (gnus-agent-unread-articles): Bug fix. No longer drops last + unread article onto read list. + (gnus-agent-regenerate-group): Changed prompt to use typical + style. + (gnus-agent-group-covered-p): Rewrote to internally use + gnus-agent-method-p. + * gnus-int.el (gnus-start-news-server): Partially convert old + gnus-agent-covered-methods to new format so that gnus-open-server + functions correctly. + * gnus-srvr.el (gnus-server-insert-server-line): Replaced + gnus-agent-covered-methods with gnus-agent-method-p. + * gnus-start.el (gnus-clear-system): Added + gnus-agent-covered-methods to compensate for removing it from + gnus-variable-list. + (gnus-setup-news): Complete conversion of old + gnus-agent-covered-methods to new format so that secondary and + foreign servers can be correctly opened. + +2003-11-20 Teodor Zlatanov + + * spam.el (spam-ham-copy-or-move-routine): add respooling + support, not working well yet + + * gnus.el (ham-process-destination): make 'respool option the + only one, so it can't be chosen together with other groups + +2003-11-19 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-track-extra): make it a set of + choices instead of a boolean + (gnus-registry-track-subject-p, gnus-registry-track-sender-p): + new convenience functions + (gnus-registry-split-fancy-with-parent): use convenience + functions, also don't return extra tracking info if sender or + subject is found in more than one groups + (gnus-registry-add-group): use new convenience functions to + decide if sender and subject should be tracked + + * gnus.el (ham-process-destination): add 'respool option, + unused by spam.el yet + +2003-11-19 Katsumi Yamaoka + + * gnus-score.el (gnus-decay-score): Return a surely smaller value + than the argument in XEmacs. + +2003-11-18 Reiner Steib + + * message.el (message-insert-to): Don't use `gnus-message'. + (message-header-synonyms): New variable. + (message-carefully-insert-headers): Use it (check for synonyms). + Added doc-string. From Sam Steingold . + +2003-11-17 Lars Magne Ingebrigtsen + + * html2text.el (html2text-remove-tags): Remove the tag in a + simpler way to avoid inflooping. + +2003-11-17 Simon Josefsson + + * imap.el (imap-gssapi-auth-p): Don't check capability (some + servers remove AUTH=GSSAPI from capability response returned after + successful authentication). + +2003-11-16 Jesper Harder + + * gnus.el (gnus-getenv-nntpserver): Fix regexp and simplify. + Reported by Artem Chuprina . + +2003-11-14 Simon Josefsson + + * mm-util.el (mm-charset-synonym-alist): Map BIG5-HKSCS to BIG5 + when it isn't available. + +2003-11-13 Alex Schroeder + + * nnrss.el (nnrss-check-group): Use dc:contributor if neither + rss:author nor dc:creator is provided. + +2003-11-13 Katsumi Yamaoka + + * mm-decode.el (mm-dissect-buffer): Save start="" value + contained in Content-Type header of multipart/related messages. + + * mm-view.el (mm-w3m-cid-retrieve-1): New function. + (mm-w3m-cid-retrieve): Use it. + + * mml.el (mml-generate-mime-1): Add start="" to Content-Type. + (mml-insert-mime-headers): Insert Content-ID header. + (mml-insert-mml-markup): Insert start="" value. + +2003-11-12 Teodor Zlatanov + + * nnml.el (nnml-request-accept-article): pass sender to + nnmail-cache-insert + + * nnmh.el (nnmh-request-accept-article): pass sender to + nnmail-cache-insert + + * nnmbox.el (nnmbox-request-accept-article): pass sender to + nnmail-cache-insert + + * nnfolder.el (nnfolder-request-accept-article): pass sender to + nnmail-cache-insert + + * nnbabyl.el (nnbabyl-request-accept-article): pass sender to + nnmail-cache-insert + + * nnmail.el (nnmail-cache-insert): accept sender parameter and + pass it to the nnmail-spool-hook + + * gnus-registry.el (gnus-registry-track-extra): clarify doc + (gnus-registry-action): add sender lexical var and pass it to + gnus-registry-add-group + (gnus-registry-spool-action): take a sender parameter, pass to + gnus-registry-add-group + (gnus-registry-split-fancy-with-parent): trace by sender in + addition to subject + (gnus-registry-fetch-sender-fast): new function + (gnus-registry-add-group): accept sender parameter + +2003-11-11 Teodor Zlatanov + + * spam.el (spam-ham-copy-routine, spam-ham-move-routine) + (spam-mark-spam-as-expired-and-move-routine): allow for the + groups to be a list of a single item + + * gnus.el (gnus-install-group-spam-parameters): + ham-process-destination and spam-process-destination allow lists now + +2003-11-10 Reiner Steib + + * message.el (message-insert-to): Do error out when the user + requested no Cc. Don't insert empty To. Can be added to + `message-setup-hook' now. From Sam Steingold . + (message-mode-field-menu): Moved some entries, added + `message-insert-wide-reply'. + (message-change-subject): Fixed comment. + +2003-11-10 Simon Josefsson + + * pgg-def.el (pgg-encrypt-for-me): Change default from nil to t. + +2003-11-09 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-encrypt-region): Cache passphrase under hex + key id too (for decryption). + (pgg-gpg-sign-region): Likewise. + +2003-11-09 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-all-secret-keys): New variable. + (pgg-gpg-lookup-all-secret-keys): New function. + (pgg-gpg-select-matching-key): Likewise. + (pgg-gpg-decrypt-region): Use new functions. From Satyaki Das + . + +2003-11-07 Teodor Zlatanov + + * nnmail.el (nnmail-cache-insert): make sure that the + nnmail-spool-hook is called with a valid newsgroup name (though + it may be wrong) + + * gnus.el (gnus-group-real-prefix): return nil if group is not a + string, instead of triggering an error + +2003-11-06 Teodor Zlatanov + + * gnus.el (gnus-group-guess-full-name-from-command-method): new function + + * gnus-registry.el (gnus-registry-fetch-group): use long names if + requested + (gnus-registry-split-fancy-with-parent): when long names are in + use, strip the name if we're in the native server, or else return nothing + (gnus-registry-spool-action, gnus-registry-action): use + gnus-group-guess-full-name-from-command-method instead of + gnus-group-guess-full-name + + * spam.el (spam-mark-spam-as-expired-and-move-routine) + (spam-ham-copy-or-move-routine): prevent article deletions or + moves unless the backend allows it + + * gnus.el (gnus-install-group-spam-parameters): fixed parameters + to list spamoracle as well, suggested by Jean-Marc Lasgouttes + + + * spam.el (spam-spamoracle): doc change, suggested by Jean-Marc + Lasgouttes + +2003-11-04 Katsumi Yamaoka + + * gnus-score.el (gnus-decay-score): Protect against arithmetic + errors. Tiny patch from Norbert Koch . + +2003-10-31 Teodor Zlatanov + + * spam.el + (spam-log-processing-to-registry): improved message and comments + (spam-log-unregistration-needed-p): new function + (spam-ifile-register-spam-routine) + (spam-ifile-register-ham-routine, spam-stat-register-spam-routine) + (spam-stat-register-ham-routine) + (spam-blacklist-register-routine) + (spam-whitelist-register-routine) + (spam-bogofilter-register-spam-routine) + (spam-bogofilter-register-ham-routine) + (spam-spamoracle-learn-ham, spam-spamoracle-learn-spam): change + spam-log-processing-to-registry invocations appropriately + +2003-10-31 Simon Josefsson + + * imap.el (imap-kerberos4-open): Ignore output from ATHENA imtest. + Tiny patch from Derek Atkins . + (imap-process-connection-type): Improve docstring. Suggested by + Derek Atkins . + +2003-10-31 Teodor Zlatanov + + * spam.el (autoload): autoload the gnus-registry functions we'll + need + (spam-log-to-registry): new variable for interfacing with the + gnus-registry + (spam-install-hooks): variable had the wrong customization group + (spam-fetch-field-message-id-fast): convenience function for fetch + a message ID quickly + (spam-log-processing-to-registry): new function + (spam-ifile-register-spam-routine) + (spam-ifile-register-ham-routine, spam-stat-register-spam-routine) + (spam-stat-register-ham-routine) + (spam-blacklist-register-routine) + (spam-whitelist-register-routine) + (spam-bogofilter-register-spam-routine) + (spam-bogofilter-register-ham-routine) + (spam-spamoracle-learn-ham, spam-spamoracle-learn-spam): add + spam-log-processing-to-registry invocations + + * gnus-registry.el: fixed docs in the preface to mention + gnus-registry-initialize + (gnus-registry-store-extra): remove cached extra entry + information when new extra entry is stored + +2003-10-29 Simon Josefsson + + * message.el (message-forward-make-body-plain): Fix ARG=1 mode + after separating m-f-m-b. + +2003-10-29 Simon Josefsson + + * message.el (message-forward-make-body-plain): Remove ignored + headers. Tiny patch from Andre Srinivasan . + (message-forward-make-body-plain): Fix ARG=1. + +2003-10-28 Jesper Harder + + * message.el (message-forward-subject-name-subject) + (message-forward-subject-author-subject): Decode non-ASCII + newsgroup names. + (autoload): Autoload gnus-group-decoded-name. + +2003-10-27 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): New optional + parameter key, overrides the key id used to store passphrase + under (uses true key id from gpg output if nil). + (pgg-gpg-encrypt-region): Search for passphrase using user suplied + string STR, instead of (pgg-lookup-key STR t). + (pgg-gpg-encrypt-region): Store passphrase under user suplied + string, instead of real key id taken from gpg output. + (pgg-gpg-decrypt-region): Likewise. + (pgg-gpg-sign-region): Likewise. + * pgg.el (pgg-decrypt-region): Don't set pgg-default-user-id. + +2003-10-27 Romain FRANCOISE + + * gnus-art.el (gnus-article-goto-prev-page): Doc fix. + +2003-10-27 Simon Josefsson + + * mm-bodies.el (mm-body-encoding): Don't use QP when message body + only consists of short lines and ASCII, when + mm-use-ultra-safe-encoding. Refer to 'About foo' thread in + gnus-bug, e.g. , for more discussion. + This make it possible to pipe the raw RFC 822 message into 'gpg' + and have the signature work. Potential problem: what if message + contain data that would be dash-escaped by OpenPGP + implementations? Then PGP 2.x might not be able to parse the raw + RFC 822 message correctly. If that problem is worth fixing, it + should be fixed by detecting the situation, instead of applying QP + to everything. Based on discussion with "John A. Martin" + . + +2003-10-27 Teodor Zlatanov + + * spam.el (spam-mark-spam-as-expired-and-move-routine) + (spam-ham-copy-or-move-routine): don't ask when deleting copied + articles, and use move instead of copy when possible + (spam-split): added the option of specifying a string as a + spam-split parameter; such a string will override + spam-split-group temporarily. + + * nnmail.el (nnmail-cache-insert): protect from nil message IDs, + but should we do something else? + + * gnus-registry.el (gnus-registry-spool-action): protect from nil + message IDs + +2003-10-26 Simon Josefsson + + * gnus-art.el (gnus-button-alist): Allow & in mailto URLs. + (gnus-header-button-alist): Likewise. + (gnus-url-mailto): Handle ?to parameters. Replace \r\n with \n. + Reverse parameter list to use same order as in the URL. Reported + by f95-msv@f.kth.se (M,Ae(Brten Svantesson). + +2003-10-25 Teodor Zlatanov + + * spam.el (spam-move-spam-nonspam-groups-only): documentation fix + for the variable + +2003-10-25 Steve Youngs + + * Makefile.in (clean-some): Remove auto-autoloads.* and + custom-load.* as well. + (distclean): Ditto. + + * dgnushack.el (dgnushack-make-load): Add a local vars section to + the dummy gnus-load.el. + +2003-10-24 Teodor Zlatanov + + * spam.el (spam-ham-copy-or-move-routine): do not delete if copy + is t, also don't intepret the list of groups as a list of lists + (spam-mark-spam-as-expired-and-move-routine) + (spam-ham-copy-or-move-routine): delete articles only if 1 or + more groups were specified (and "copy" was not specified for + spam-ham-copy-or-move-routine) (fixed twice) + +2003-10-24 Katsumi Yamaoka + + * nndoc.el (nndoc-guess-type): Reverse the sort order. Suggested + by ARISAWA Akihiro . + (nndoc-dissect-buffer): Don't miss even-numbered articles. + +2003-10-24 Steve Youngs + + * dgnushack.el (dgnushack-gnus-load-file): Set to + "auto-autoloads.el" if building with XEmacs. + (dgnushack-cus-load-file): Set to "custom-load.el" if building + with XEmacs. + (dgnushack-make-cus-load): We don't delete the resulting file if + building with XEmacs so byte-compile it. + (dgnushack-make-load): When building with XEmacs do nothing except + byte-compile the autoload file and create a dummy gnus-load.el + file. + +2003-10-23 Katsumi Yamaoka + + * message.el (message-make-fqdn): Bind case-fold-search. + Suggested by Christopher Richards . + +2003-10-23 Teodor Zlatanov + + * gnus.el (spam-process-destination, ham-process-destination): + allow multiple groups as a choice + + * spam.el (spam-check-blackholes): remove "[IP address]" + requirement, now just "IP address" is enough for detection for + blackhole checking + (spam-check-blackholes): oops, the dots were not escaped + (spam-mark-spam-as-expired-and-move-routine): added multiple group + support (multiple copies, then delete) + (spam-ham-copy-routine): new function + (spam-ham-move-routine): new function + (spam-ham-copy-or-move-routine): new function (used to be + spam-ham-move-routine), handle multiple groups + (spam-summary-prepare-exit): call the new functions + +2003-10-23 Simon Josefsson + + * flow-fill.el (fill-flowed-encode, fill-flowed): Autoload. + +2003-10-22 Katsumi Yamaoka + + * gnus-art.el (gnus-emphasis-strikethru): Use the :strike-through + attribute in Emacs. + +2003-10-21 Katsumi Yamaoka + + * message.el (message-bounce): Don't erase except bounced header. + +2003-10-21 Teodor Zlatanov + + * spam.el (spam-reverse-ip-string): new function to reverse an IP + address in a string + (spam-check-blackholes): use spam-reverse-ip-string + +2003-10-21 Katsumi Yamaoka + + * gnus-art.el (gnus-narrow-to-page): Clear as well as set the + value for gnus-page-broken. + + * gnus-sum.el (gnus-summary-beginning-of-article): Use + gnus-break-pages instead of gnus-page-broken. + (gnus-summary-end-of-article): Use gnus-break-pages instead of + gnus-page-broken; narrow to the end of a page beforehand. + (gnus-summary-toggle-header): Use gnus-break-pages instead of + gnus-page-broken; remove delimiter buttons unless gnus-break-pages + is non-nil. + +2003-10-21 Lars Magne Ingebrigtsen + + * gnus-picon.el (gnus-picon-transform-address): Protect against + errors. + +2003-10-20 Katsumi Yamaoka + + * gnus-msg.el (nnspool-rejected-article-hook): Remove defvar. + (xemacs-codename): Move defvar to gnus-util.el. + + * gnus-util.el (xemacs-codename): Defvar when compiling. + +2003-10-20 Lars Magne Ingebrigtsen + + * spam-report.el (spam-report-url-ping-plain): Include a + User-Agent. + + * gnus-msg.el (gnus-extended-version): Use it. + + * gnus-util.el (gnus-emacs-version): Separated out into own + function. + +2003-10-19 Reiner Steib + + * message.el (message-mode-field-menu): Added + message-generate-unsubscribed-mail-followup-to. + (message-forward-subject-fwd): Avoid double "Fwd: " + (message-change-subject): Added comment. + +2003-10-19 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-nov-parse-line): Remove condition-cases. + + * mml.el (mml-insert-mime): Quote mml. + +2003-10-19 Katsumi Yamaoka + + * gnus-sum.el (gnus-remove-odd-characters): Use + mm-subst-char-in-string instead of subst-char-in-string. + (gnus-summary-refer-article): Use gnus-replace-in-string instead + of replace-regexp-in-string. + +2003-10-19 Jesper Harder + + * gnus-uu.el (gnus-uu-uustrip-article): Really strip directory + from file name. + +2003-10-18 Jesper Harder + + * gnus-sum.el (gnus-summary-save-parts-last-directory): Default + to mm-default-directory. + (gnus-summary-save-parts-1): Use mm-file-name-rewrite-functions. + +2003-10-18 Lars Magne Ingebrigtsen + + * pop3.el (pop3-read-response): Check whether the process is + alive. + + * gnus-sum.el (gnus-summary-refer-article): Strip spaces. + + * rfc2047.el (rfc2047-encode-region): Do error out on invalid + strings. + + * nntp.el (nntp-retrieve-headers-with-xover): Get error messages + right. + + * gnus-agent.el (gnus-agent-read-servers): Remove sit-for. + + * gnus-art.el (article-treat-dumbquotes): Doc fix. + + * message.el (message-field-value): New function. + (message-insert-disposition-notification-to): Use Reply-To, too. + + * imap.el (imap-mailbox-status): Upcase STATUS commands. + + * gnus-sum.el (gnus-remove-odd-characters): New function. + (gnus-nov-parse-line): Use it. + +2003-10-18 Matt Swift + + * mm-decode.el (mm-inline-media-tests): Recognize pjpeg as jpeg. + +2003-10-18 Romain FRANCOISE + + * message.el (message-forward-make-body): does both + m-f-make-body-mml and m-f-make-body-plain, resulting in a strange + message buffer. + +2003-10-18 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-narrow-to-page): Only break page if it's + broken. + + * nnrss.el (nnrss-find-rss-via-syndic8): Return nil if xml-rpc + isn't available. + + * message.el (message-hidden-headers): Doc fix. + +2003-10-18 Jesper Harder + + * gnus-msg.el (gnus-summary-resend-message-edit): Avoid error when + fields aren't found. + +2003-10-18 Simon Josefsson + + * message.el (message-forward-make-body-plain) + (message-forward-make-body-mime, message-forward-make-body-mml) + (message-forward-make-body-digest-plain) + (message-forward-make-body-digest-mime) + (message-forward-make-body-digest): New, derived from + message-forward-make-body. + (message-forward-make-body): Use them. + (message-forward-show-mml): New default 'best. + (message-forward-make-body): Support it. + +2003-10-18 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-mode): Set gnus-page-broken to nil. + (gnus-article-prepare): Don't set to t. + (gnus-narrow-to-page): Set to t if we break. + +2003-06-11 Daniel N,Ai(Bri + + * message.el (message-resend): Generate Resent-Message-ID header. + +2003-10-18 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-next-page): Don't go to the next line + before checking end-of-buffer. + (gnus-mime-delete-part): Don't insert parts twice. + +2003-10-17 Lars Magne Ingebrigtsen + + * gnus-art.el (article-update-date-lapsed): Make sure point + doesn't move around (much). + +2003-07-28 Vasily Korytov + + * mail-source.el (mail-source-keyword-map): List "cur" before + "new" for maildirs. + +2003-10-17 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-enter-digest-group): ogroup, nor + group. + + * gnus-msg.el (gnus-inews-insert-archive-gcc): Use the parent + name for gcc-self. + (gnus-inews-insert-archive-gcc): Paren mistake. + + * gnus-sum.el (gnus-summary-enter-digest-group): Add + parent-group. + + * gnus-art.el (gnus-ignored-headers): Add more headers. + + * rfc2047.el (rfc2047-encode): See which encoding is shorter -- + base64 or QP. + + * nnmail.el (nnmail-article-group): Default to "bogus". + + * mail-source.el (mail-source-delete-incoming): Change to nil. + +2003-10-16 Katsumi Yamaoka + + * mail-source.el (mail-source-fetch-imap): Fix mismatched parens. + +2003-10-16 Lars Magne Ingebrigtsen + + * mail-source.el (defvar): Add post/pre/scripts. + (mail-source-fetch-imap): Use them. + + * nndraft.el (nndraft-request-move-article): Fix infinite + recursion. + + * gnus-group.el (gnus-group-mark-regexp): Jump to groups. + +2003-10-16 Ed L. Cashin + + * imap.el (imap-interactive-login): Set imap-password to nil if + login fails. + +2003-10-16 Lars Magne Ingebrigtsen + + * message.el (message-inserted-headers): New variable. + (message-mode): Make local. + (message-mode): Set all the local action variables to nil. + +2003-10-16 Katsumi Yamaoka + + * mm-decode.el (mm-inline-text-html-with-images): Doc fix. + (mm-w3m-safe-url-regexp): Doc fix. + +2003-10-12 Jesper Harder + + * gnus-sum.el (gnus-summary-respool-query): Don't narrow to head, + it's done by nnmail-article-group. + + * gnus-uu.el (gnus-uu-grab-articles): Fix misplaced parens. + From Mark Hood (tiny change) + +2003-10-10 Jesper Harder + + * mm-decode.el (mm-file-name-delete-gotchas): Avoid infloop in + XEmacs. + +2003-10-10 Teodor Zlatanov + + * spam.el (spam-initialize): new function, does the spam-face + update and all the hooks, replaces spam-install-hooks-function + + * gnus-registry.el (gnus-registry-initialize): new autoloaded + function to explicitly initialize the registry + +2003-10-10 Katsumi Yamaoka + + * mm-decode.el (mm-w3m-safe-url-regexp): Doc fix. + + * mm-view.el (mm-w3m-mode-map): Doc fix. + (mm-inline-text-html-render-with-w3m): Add a comment. + +2003-10-10 Lars Magne Ingebrigtsen + + * gnus-group.el: Remove superfluous eval-when-compiles. + +2003-10-10 Jesper Harder + + * gnus-group.el (gnus-group-suspend): Reset gnus-backlog-articles. + +2003-10-08 Lars Magne Ingebrigtsen + + * dns.el (query-dns): Don't error out on malformed resolv files. + +2003-10-06 Jesper Harder + + * gnus.el (gnus-group-faq-directory): Update .tw entry. From + Albert Chun-Chieh Huang + +2003-10-03 Teodor Zlatanov + + * spam.el (spam-check-blackholes): exit the loop if matches are + found (idea from Adrian Lanz ) + (spam-check-bogofilter-headers, spam-check-blackholes, spam-check-BBDB) + (spam-from-listed-p): use nnmail-fetch-field instead of message-fetch-field + + +2003-10-03 Katsumi Yamaoka + + * mm-decode.el (mm-attachment-file-modes): Change the default + value into 384 from ?\600 which doesn't mean an integer in XEmacs. + +2003-10-03 Jesper Harder + + * mm-decode.el (mm-file-name-delete-control) + (mm-file-name-delete-gotchas): New functions. + (mm-file-name-rewrite-functions): Use them. + (mm-attachment-file-modes): New option. + (mm-save-part-to-file): Use it. + +2003-10-02 Reiner Steib + + * spam.el (spam-install-hooks-function): Added Autoload cookie. + +2003-10-02 Jesper Harder + + * pgg-def.el (pgg-default-keyserver-address): Change to + subkeys.pgp.net. From Michael Shields + +2003-10-01 Simon Josefsson + + * message.el (message-idna-to-ascii-rhs-1): RHS can be terminated + by ',', as in 'foo@example.org, bar@example.org'. + +2003-10-01 Jesper Harder + + * message.el (message-send): Fix reversed logic of supersedes + check. + +2003-09-30 Reiner Steib + + * gnus-art.el (gnus-article-view-part-as-charset): Doc fix, + suggested by Norbert Koch . + +2003-09-29 Katsumi Yamaoka + + * gnus-topic.el (gnus-topic-goto-missing-topic): Revert 2003-02-09 + change in order to correct the position where an invisible topic + (because gnus-topic-display-empty-topics is nil) may be inserted. + +2003-09-22 Katsumi Yamaoka + + * message.el (message-ignored-supersedes-headers): Add X-Payment. + +2003-09-20 Jesper Harder + + * rfc2047.el (rfc2047-encode): Limit line length to 76 characters. + +2003-09-20 Simon Josefsson + + * tls.el (tls-process-connection-type): Doc fix. + + * imap.el (imap-starttls-open): Rewrite, should support both old + starttls.el and new starttls.el that uses GNUTLS. + +2003-09-18 Katsumi Yamaoka + + * gnus-art.el (gnus-treat-display-x-face): Use set-default instead + of custom-set-default which isn't available in old XEmacsen. + +2003-09-17 Jesper Harder + + * gnus-msg.el (gnus-summary-resend-message-edit): Don't convert + to MML. MIME -> MML -> MIME does not work for PGP/MIME. + + * message.el (message-bounce, message-forward-show-mml): do. + +2003-09-13 Jesper Harder + + * rfc2047.el (rfc2047-charset-encoding-alist): Add viscii. + (rfc2047-encode): Add factors for big5, gb2312 and euc-kr. + + * nnweb.el (nnweb-google-parse-1): Fix parsing. + +2003-09-12 Jesper Harder + + * gnus-group.el (gnus-group-fetch-control): ISC changed + compression from .Z to .gz. + + * rfc2047.el (rfc2047-header-encoding-alist): Add "Approved" to + address-mime. + +2003-09-11 Jesper Harder + + * rfc2047.el (rfc2047-encode): Restrict encoded-words to 75 + characters. + +2003-09-10 Jesper Harder + + * gnus.el (gnus-group-charter-alist): Update. + +2003-09-10 Teodor Zlatanov + + * spam-report.el: use mm-url.el functions for external URL + loading when the built-in HTTP GET is insufficient (e.g. proxies + are in the way). From Eric Knauel + . + (spam-report-url-ping-function): new option, defaults to the + built-in HTTP GET (spam-report-url-ping-plain) + (spam-report-url-ping): calls spam-report-url-ping-function now + (spam-report-url-ping-plain): new function, does what + spam-report-url-ping used to do + (spam-report-url-ping-mm-url): function that delegates to + mm-url.el (autoloaded) + +2003-09-08 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-delete-id): function to + completely delete an ID, including all the cache hashtables + (gnus-registry-delete-group): use gnus-registry-delete-id + (gnus-registry-simplify-subject): only run if the argument is a + string, return nil otherwise + +2003-09-07 Jesper Harder + + * gnus-msg.el (gnus-summary-resend-bounced-mail): Docstring fix. + +2003-09-05 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-split-fancy-with-parent): yet + another error *sigh* + + * gnus-registry.el (gnus-registry-fetch-extra-entry): don't use + puthash unless gnus-registry-entry-caching is on + (gnus-registry-split-fancy-with-parent): misplaced parenthesis + made everything a part of the 'else' + (gnus-registry-save): used 'entry-caching' instead of 'caching' + +2003-09-05 Jesper Harder + + * gnus-art.el (gnus-button-alist): Improve Info regexp. + +2003-09-04 Teodor Zlatanov + + * gnus-registry.el: added brief explanation of basics + (gnus-registry-track-extra): new variable for tracking of message + subjects + (gnus-registry-entry-caching): caching parameter, used for extra + data + (gnus-registry-minimum-subject-length): minimum subject length + before it's considered when tracing subjects + (gnus-registry-save): accomodate extra data entry caching + (gnus-registry-action): change function name, add the subject and + pass it to gnus-registry-add-group + (gnus-registry-spool-action): change function name, add the + subject and pass it to gnus-registry-add-group + (gnus-registry-split-fancy-with-parent): add subject tracking + (gnus-registry-register-message-ids): pass subject to + gnus-registry-add-group + (gnus-registry-simplify-subject) + (gnus-registry-fetch-simplified-message-subject-fast): new + functions + (gnus-registry-fetch-extra, gnus-registry-fetch-extra-entry): add + extra data entry caching + (gnus-registry-add-group): handle the extra subject parameter + (gnus-registry-install-hooks, gnus-registry-unload-hook): fix the + gnus-register-* function names + + * nnmail.el (nnmail-cache-insert): add subject parameter, pass it + on to the nnmail-spool-hook + + * nnbabyl.el (nnbabyl-request-accept-article): added subject to + nnmail-cache-insert call + + * nndiary.el (nndiary-request-accept-article): added subject to + nnmail-cache-insert call + + * nnfolder.el (nnfolder-request-accept-article): added subject to + nnmail-cache-insert call + + * nnimap.el (nnimap-split-articles): added subject to + nnmail-cache-insert call + (nnimap-request-accept-article): added subject to + nnmail-cache-insert call + + * nnmbox.el (nnmbox-request-accept-article): added subject to + nnmail-cache-insert call + + * nnmh.el (nnmh-request-accept-article): added subject to + nnmail-cache-insert call + + * nnml.el (nnml-request-accept-article): added subject to + nnmail-cache-insert call + +2003-09-04 Jesper Harder + + * gnus-art.el (gnus-button-handle-info-url) + (gnus-button-handle-info-url-gnome) + (gnus-button-handle-info-url-kde, gnus-button-alist): Handle GNOME + and KDE style Info URLs. + + * gnus-util.el (gnus-url-unhex-string): Don't replace "+" with " ". + +2003-09-02 Jesper Harder + + * rfc2047.el (rfc2047-fold-region): Don't fold at the beginning + of the field. + +2003-09-01 Simon Josefsson + + * mml.el (mml-insert-mime-headers-always): New variable. + (mml-insert-mime-headers): Use it. Based on (tiny) patch from + Lars Balker Rasmussen . + +2003-08-30 Simon Josefsson + + * mail-source.el (mail-source-fetch-imap): Pass correct buffer to + imap-open, reverts 2003-03-17 change. Reverse remove before + calling gnus-compress-sequence. From Gaute Strokkenes + (tiny change). + +2003-08-29 Simon Josefsson + + * gnus-group.el (gnus-group-delete-group): Doc fix. Suggested by + Jochen K,A|(Bpper . + +2003-08-29 Katsumi Yamaoka + + * gnus-art.el (article-display-x-face): Make it possible to set + the gnus-article-x-face-command variable to the lambda form. + +2003-08-27 Simon Josefsson + + * mm-decode.el (mm-remove-part): Try to kill external displayers + cleanly first (if it refuses, C-g aborts loop and kill process + unconditionally). Also make sure process is dead before we remove + the files it may be using. Reported by David Coe + . + +2003-08-27 Jesper Harder + + * gnus-cache.el (gnus-cache-generate-active): Fix bug in + replacement. From Vagn Johansen (tiny + change). + +2003-08-25 Katsumi Yamaoka + + * gnus-art.el: Don't use defvaralias. + (gnus-treat-display-x-face): Warn if the obsolete variable + `gnus-treat-display-xface' exists. + +2003-08-25 Jesper Harder + + * gnus-art.el (gnus-treat-display-face): Fix typo. + (gnus-treat-display-xface): Rename to gnus-treat-display-x-face + (reported by Jochen K,A|(Bpper ) + +2003-08-24 Jesper Harder + + * gnus-art.el (gnus-header-button-alist, gnus-button-alist): Fix + type. + +2003-08-22 Jesper Harder + + * message.el (message-make-forward-subject-function): Fix + customize mismatch. + + * gnus.el (gnus-message-archive-method): do. + +2003-08-20 Reiner Steib + + * gnus.el (gnus-read-group): Offer to continue only if the invalid + char is `/' and add more information for the user. + + * gnus-art.el (gnus-button-alist): Add `+' (gnus-button-handle-man). + (gnus-header-button-alist): Added `In-Reply-To'. + + * nnimap.el (nnimap-open-connection): Allow different user names + on the same server (and in the same authinfo file). + +2003-08-20 Jesper Harder + + * gnus-sieve.el (gnus-sieve-crosspost): Fix type. + + * message.el (message-make-forward-subject-function): Add + message-forward-subject-name-subject to choices. + + * gnus-art.el (gnus-article-edit-done, gnus-article-edit-exit): + Redisplay article after editing. + +2003-08-20 Simon Josefsson + + * gnus.el (gnus-read-group): Added check to ask confirmation if + Group name contains invalid character. You can use '/' in IMAP, + but not in filenames. G m cannot know what the user is creating, + so let user decide. See thread m2oeysiev3.fsf@naima.lensflare.org. + Tiny patch from letters@hotpop.com (Jari Aalto+mail.linux). + +2003-08-13 Reiner Steib + + * gnus-score.el (gnus-summary-score-effect): Fix interactive use. + +2003-08-10 Teodor Zlatanov + + * gnus-draft.el (gnus-draft-send-all-messages): ask if all drafts + should be sent unless gnus-expert-user is on + +2003-08-09 Jesper Harder + + * pgg-gpg.el (pgg-gpg-extra-args): Fix customization type. + +2003-08-07 Jesper Harder + + * pgg-gpg.el (pgg-gpg-process-region): Bind + default-enable-multibyte-characters to nil. + +2003-08-07 Katsumi Yamaoka + + * canlock.el (canlock-password): Fix customization type. + (canlock-password-for-verify): Ditto. + * deuglify.el (gnus-outlook-deuglify-unwrap-min): Ditto. + (gnus-outlook-deuglify-unwrap-max): Ditto. + (gnus-outlook-deuglify-unwrap-stop-chars): Ditto. + * gnus-sum.el (gnus-sum-thread-tree-root): Ditto. + (gnus-sum-thread-tree-false-root): Ditto. + (gnus-sum-thread-tree-single-indent): Ditto. + * message.el (message-archive-note): Ditto. + (message-subscribed-address-file): Ditto. + (message-user-fqdn): Ditto. + * spam-report.el (spam-report-gmane-regex): Ditto. + * spam.el (spam-blackhole-good-server-regex): Ditto. + + * gnus-start.el (gnus-save-killed-list): Fix last change. + * message.el (message-courtesy-message): Ditto. + +2003-08-07 Jesper Harder + + * gnus-art.el (gnus-header-face-alist): Revert previous change. + (gnus-header-newsgroups-face): Explain that it's only used for + crossposts. + +2003-08-07 Katsumi Yamaoka + + * gnus-registry.el (gnus-registry-max-entries): Fix customization + type. + * gnus-score.el (gnus-adaptive-word-length-limit): Ditto. + * gnus.el (gnus-refer-article-method): Ditto. + * message.el (message-courtesy-message): Ditto. + +2003-08-06 Jesper Harder + + * gnus-art.el (gnus-header-face-alist): Fix "Newsgroups" entry. + From Chunyu Wang (tiny patch) + +2003-08-05 Katsumi Yamaoka + + * gnus-start.el (gnus-save-killed-list): Fix customization type. + * gnus-sum.el (gnus-thread-hide-subtree): Ditto. + * gnus.el (gnus-use-long-file-name): Ditto. + +2003-08-04 Jesper Harder + + * gnus-group.el (gnus-group-rename-group): Don't allow renaming to + an existing name. + + * gnus-sum.el (gnus-summary-highlight): Add uncached to docstring. + + * nnmail.el (nnmail-large-newsgroup): Docstring fix. + + * nntp.el (nntp-large-newsgroup): do. + + * nnspool.el (nnspool-large-newsgroup): do. + + * gnus-cus.el (gnus-group-parameters): Typo. + +2003-07-31 Simon Josefsson + + * mml-sec.el (mml-signencrypt-style-alist): Use separate S/MIME + method by default (revert partial 2003-07-10 patch). + +2003-07-28 Dave Love + + * pgg-gpg.el, pgg-pgp.el, pgg-pgp5.el: Require cl when compiling. + +2003-07-26 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-install): add an initial + registry read to the loading when gnus-registry-install is set + +2003-07-26 Kai Gro,A_(Bjohann + + * flow-fill.el (fill-flowed): Empty lines separate paragraphs + even if the preceding line ends with a soft break. Tiny patch + from Mark Thomas . + +2003-07-25 Teodor Zlatanov + + * spam.el (spam-use-regex-body, spam-regex-body-spam) + (spam-regex-body-ham): new variables, default to nil/empty/empty + (spam-install-hooks): added spam-use-regex-body to list or + pre-install conditions + (spam-list-of-checks): added spam-use-regex-body and + spam-check-regex-body to list of checks + (spam-list-of-statistical-checks): added spam-use-regex-body to + list of statistical checks + (spam-check-regex-body): invokes spam-check-regex-headers with + appropriate variable masking + (spam-check-regex-headers): changes to print "body" or "header" + where appropriate + +2003-07-25 Jesper Harder + + * smime.el (smime-ask-passphrase): Use read-passwd rather than + comint-read-noecho. The former is more secure. + +2003-07-24 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-cache-whitespace): make "adding + whitespace" message level 5 instead of 4 + (gnus-registry-clean-empty-function): new function to remove empty + registry entries + (gnus-registry-clean-empty): new variable to enable cleaning the + registry when saving it by calling gnus-registry-clean-empty-function + + * spam.el (spam-summary-prepare-exit): use spam-process-ham-in-spam-groups + (spam-process-ham-in-spam-groups): new variable + +2003-07-24 Jesper Harder + + * pgg-gpg.el (pgg-gpg-process-region): Add "--yes" to options. + + * pgg-gpg.el, pgg-pgp.el, pgg-pgp5.el, pgg.el: Reapply changes + from 2003-04-03 to fix security problem. See + http://www.debian.org/security/2003/dsa-339 + +2003-07-23 Teodor Zlatanov + + * gnus.el (gnus-install-group-spam-parameters): add the + gnus-ticked-mark to the possible choices of ham marks + + * spam.el (spam-process-ham-in-nonham-groups): new variable + (spam-summary-prepare-exit): use spam-process-ham-in-nonham-groups + +2003-07-23 Jesper Harder + + * rfc2047.el (rfc2047-header-encoding-alist): Add Mail-Followup-To + and Mail-Copies-To to address-mime. + (rfc2047-narrow-to-field): Use rfc2047-point-at-bol. + +2003-07-19 Jesper Harder + + * mm-util.el (mm-coding-system-priorities): Docstring improvement. + +2003-07-17 Jesper Harder + + * gnus-sum.el (gnus-thread-latest-date): Move condition-case to + the right place. + +2003-07-14 Simon Josefsson + + * mail-source.el (mail-source-fetch-imap): Don't assume + imap-error-text returns something. + +2003-07-12 Nevin Kapur + + * nnimap.el (nnimap-request-newgroups): Use the pattern in + nnimap-list-pattern instead of "*". + +2003-07-10 Simon Josefsson + + * mml-sec.el (mml-signencrypt-style-alist): Use "combined" by + default. Improve docstring. + +2003-07-10 Kai Gro,A_(Bjohann + + * imap.el (imap-arrival-filter): Fix test for missing process + buffer. + +2003-07-09 Kai Gro,A_(Bjohann + From Gaute B Strokkenes (tiny patch). + + * imap.el (imap-wait-for-tag): Clarify comment. Use timeout zero + for second, after-process-has-died, accept-process-output. + (imap-arrival-filter): If PROC has no buffer, do nothing. + +2003-07-09 Jesper Harder + + * flow-fill.el: Docstring and message fixes. + + * deuglify.el: do. + + * gnus-int.el: do. + + * gnus-msg.el: do. + + * gnus-util.el: do. + + * gnus-draft.el: do. + + * gnus-start.el: do. + + * gnus.el: do. + + * gnus-group.el: do. + + * gnus-art.el: do. + + * gnus-sum.el: do. + + * mail-source.el (mail-source-movemail): Handle non-numerical + return values. + +2003-07-08 Jesper Harder + + * mailcap.el (mailcap-parse-args-syntax-table) + (mailcap-viewer-passes-test): Docstring fix. + + * mm-bodies.el (mm-long-lines-p): Docstring fix. + + * mm-decode.el (mm-w3m-safe-url-regexp, mm-verify-option) + (mm-decrypt-option, mm-handle-set-external-undisplayer) + (mm-file-name-replace-whitespace): Docstring fix. + + * mm-uu.el (mm-uu-emacs-sources-regexp): Docstring fix. + (mm-uu-pgp-signed-test): Fix message. + + * mml.el (mml-tweak-sexp-alist): Docstring fix. + (mml-parse-1, mml-insert-mime-headers): Fix message. + + * message.el (message-archive-header) + (message-subscribed-address-functions) + (message-subscribed-addresses, message-subscribed-regexps) + (message-canlock-generate) + (message-generate-new-buffer-clone-locals): Docstring fixes. + +2003-07-07 Kai Gro,A_(Bjohann + + * imap.el (imap-wait-for-tag): After the process has died, look + for more output still pending. From Gaute B Strokkenes + (tiny patch). + +2003-07-07 Teodor Zlatanov + + * spam.el (spam-bogofilter-score): redisplay article normally + after spam-bogofilter-score is called + +2003-07-06 Jesper Harder + + * message.el (message-send-mail-with-sendmail): Handle + non-numeric return values. + + * gnus-sum.el (gnus-print-buffer): Apply emphasis. + From Michael Piotrowski (tiny change). + + * gnus-start.el (gnus-clear-system): Revert change from + 2003-06-19. + +2003-07-04 Dave Love + + * rfc2047.el (rfc2047-q-encode-region): Exclude especials from + characters not encoded, and make the list more legible. + +2003-07-04 Jesper Harder + + * message.el (message-make-from): Revert change from 2002-01-08. + +2003-06-29 Lars Magne Ingebrigtsen + + * nnheader.el (nnheader-init-server-buffer): Don't add + nntp-server-buffer to list of Gnus buffers. + +2003-06-25 Teodor Zlatanov + + * spam.el (spam-parse-list): prevent empty ("") strings + +2003-06-24 Teodor Zlatanov + + * spam.el (spam-parse-list): use gnus-extract-address-components + instead of ietf-drums-parse-addresses + (spam-from-listed-p): let* was unnecessary + +2003-06-24 Lars Magne Ingebrigtsen + + * gnus-ems.el (gnus-put-image): Mark the right text segment with + gnus-image-category. + + * gnus-srvr.el (gnus-browse-unsubscribe-group): Strip prefix from + native groups. + + * gnus-topic.el (gnus-group-prepare-topics): Update topic line + format specs. + + * gnus-picon.el: Written by moi, moi, moi. + + * gnus-group.el (gnus-group-kill-group): Clean up. + +2003-06-23 Teodor Zlatanov + + * spam.el (spam-from-listed-p, spam-parse-list): use + ietf-drums-parse-addresses to extract the address portion of the + whitelist/blacklist file if it looks like an address can be found + +2003-06-23 Didier Verna + + * gnus-ems.el (gnus-put-image): New argument CATEGORY. Add it as a + text property. + (gnus-remove-image): New argument CATEGORY. Only remove if + category matches. + * gnus-xmas.el (gnus-xmas-put-image): + (gnus-xmas-remove-image): Ditto, with extents. + * gnus-art.el (gnus-delete-images): Pass CATEGORY argument to + gnus-[xmas-]remove-image. + (article-display-face): Don't always act as a toggle. Call + `gnus-put-image' with CATEGORY argument. + (article-display-x-face): Call `gnus-put-image' with CATEGORY + argument. + * smiley.el (smiley-region): Ditto. + * gnus-fun.el (gnus-display-x-face-in-from): Ditto. + * gnus-picon.el (gnus-picon-insert-glyph): Ditto. + (gnus-treat-mail-picon): Don't always act as a toggle. + * gnus-picon.el (gnus-treat-newsgroups-picon): Ditto. + +2003-06-23 Didier Verna + + * gnus-art.el (article-display-face): Check for existence of the + original article buffer before switching to it. + +2003-06-20 Jesper Harder + + * mm-util.el (mm-append-to-file): Say "Appended to". Suggested by + Dan Jacobson . + + * mm-view.el (mm-inline-message): Bind + gnus-original-article-buffer to the buffer in the mml handle + holding the message. + +2003-06-20 Katsumi Yamaoka + + * message.el (sender, from): No need to bind them. + +2003-06-19 Teodor Zlatanov + + * spam.el (spam-enter-list): search-forward specified wrong + +2003-06-19 Lars Magne Ingebrigtsen + + * gnus-art.el: Comment fix. + +2003-06-20 Jesper Harder + + * gnus-msg.el (gnus-configure-posting-styles): Remove unused + variable. From Jan Rychter . + + * spam.el (spam-spamoracle-learn): insert-string is obsolete. + +2003-06-19 Teodor Zlatanov + + * spam.el (spam-enter-list): do not enter duplicate addresses into + the whitelist/blacklist + +2003-06-19 Jesper Harder + + * nnheader.el (nnheader-init-server-buffer): Add + nntp-server-buffer to gnus-buffers. + + * gnus-start.el (gnus-clear-system): Now we don't need to kill + nntp-server-buffer separately. + +2003-06-18 Didier Verna + + * gnus-art.el (article-display-face): Correctly toggle between + display and hiding. Handle multiple Face headers. + +2003-06-17 Dave Love + + * nnimap.el: Require cl when compiling. + + * message.el (message-fix-before-sending): Reinstate nullifying + the invisible text property. + (sender, from): Defvar when compiling. + (message-is-yours-p): Remove autoload cookie. + +2003-06-17 Reiner Steib + + * gnus-util.el (gnus-extract-address-components): Added + doc-string. + +2003-06-16 Kai Gro,A_(Bjohann + + * nnml.el (nnml-current-group-article-to-file-alist): Don't read + overview when using compressed files. From Michael Albinus + . + +2003-06-16 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-refer-parent-article): Extract + Message-ID from In-Reply-To header. + +2003-06-16 Katsumi Yamaoka + + * message.el (message-is-yours-p): Narrow to head; extract from + and sender by itself. + (message-cancel-news, message-supersede): Remove useless things. + +2003-06-15 Reiner Steib + + * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Bind + `gnus-article-emulate-mime'. + +2003-06-15 Kai Gro,A_(Bjohann + From Tommi Vainikainen . + + * message.el (message-is-yours-p): New function. Separated common + code from message-cancel-news and message-supersede. Added + matching code which uses message-alternative-emails regexp as last + resort. + (message-cancel-news, message-supersede): Use message-is-yours-p. + +2003-06-13 Kai Gro,A_(Bjohann + + * nnimap.el (nnimap-split-articles): Narrow the right buffer to + the headers. From Niklas Morberg . + +2003-06-12 Dave Love + + * nnheader.el (nnheader-functionp): Deleted. + + * nnmail.el (nnmail-split-fancy-syntax-table): Define all in + defvar. + (nnmail-version): Deleted. + (nnmail-check-duplication, nnmail-expiry-target-group): Don't use + nnheader-functionp. + +2003-06-10 Teodor Zlatanov + + * spam.el (spam-check-bogofilter-headers): fix for when the score + is requested but the message is not spam + +2003-06-09 Teodor Zlatanov + From Eric + + + * spam.el (spam-use-spamoracle): new variable + (spam-install-hooks): add spamoracle to the list of conditions + for activation of spam-install-hooks + (spam-spamoracle): new variable customization group + (spam-spamoracle, spam-spamoracle): new variables + (spam-group-spam-processor-spamoracle-p) + (spam-group-ham-processor-spamoracle-p): new functions + (spam-summary-prepare-exit): added spamoracle ham/spam exit processing + (spam-list-of-checks, spam-list-of-statistical-checks): add + spam-use-spamoracle + (spam-check-spamoracle, spam-spamoracle-learn) + (spam-spamoracle-learn-ham, spam-spamoracle-learn-spam): new functions + + * gnus.el (gnus-group-spam-exit-processor-spamoracle) + (gnus-group-ham-exit-processor-spamoracle): new variables for SpamOracle + (spam-process, ham-process): added spamoracle spam/ham processors + +2003-06-08 Jesper Harder + + * message.el (message-beginning-of-line): Docstring improvement. + Suggested by Michael R. Wolf + +2003-06-07 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-make-menu-bar): Removed ["Add buttons" + gnus-summary-display-buttonized t] + +2003-06-07 Kai Gro,A_(Bjohann + + * nnmail.el (nnmail-split-fancy-match-partial-words): Doc string + fix. Reported by Johan Bockg,Ae(Brd . + +2003-06-07 Jesper Harder + + * message.el (message-beginning-of-line): Docstring improvement. + +2003-06-06 Jesper Harder + + * gnus-srvr.el (gnus-browse-foreign-server): Parse garbage NNTP + groups correctly. + +2003-06-06 Kai Gro,A_(Bjohann + From Benjamin Rutt . + + * message.el (message-fetch-field): Augment documentation to state + the narrowed-to-headers restriction. + (message-change-subject, message-reduce-to-to-cc) + (message-generate-unsubscribed-mail-followup-to) + (message-insert-importance-high, message-insert-importance-low) + (message-insert-or-toggle-importance) + (message-insert-disposition-notification-to): Narrow to headers + before calling message-fetch-field or message-remove-header. + +2003-06-06 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-trim): fix for when + gnus-registry-max-entries is nil + +2003-06-05 Lars Magne Ingebrigtsen + + * qp.el (quoted-printable-decode-region): Don't error out on + malformed text. + +2003-06-04 Lars Magne Ingebrigtsen + + * rfc2047.el (rfc2047-encode-region): Don't error out on invalid + strings. + +2003-06-04 Jesper Harder + + * mml1991.el (mml1991-pgg-sign): Insert pgg output as unibyte. + From: Ivan Boldyrev (tiny + change) + +2003-06-03 Dave Love + + * gnus-soup.el (gnus-soup-send-packet): Don't use + message-functionp. + + * gnus.el (gnus-agent-cache): Doc fix. + (gnus-other-frame): Quote lambda used as hook. + + * message.el: Doc fixes. + (message-functionp): Deleted. Callers changed. + (message-fix-before-sending): Highlight with overlays. Clarify + `illegible text' messages. + (rmail-enable-mime-composing, gnus-message-group-art): Defvar when + compiling. + (gnus-find-method-for-group, nnvirtual-find-group-art): Autoload. + +2003-06-03 Kai Gro,A_(Bjohann + + * nnmail.el (nnmail-split-fancy-match-partial-words): New user + option. + (nnmail-split-it): Obey it. Don't let-bind regexp twice. + + * message.el (message-fetch-field): Mention narrow-to-headers + requirement. + +2003-06-03 Jesper Harder + + * gnus-xmas.el (gnus-xmas-create-image): Use + insert-file-contents-literally. From: Eric Eide + + +2003-06-02 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-fetch-group): always return the + short name of the group + +2003-06-02 Jesper Harder + + * gnus-cus.el (defvar): Silence byte-compiler warnings. + + * gnus-sum.el (gnus-get-newsgroup-headers): Unfold headers. + +2003-05-31 Jesper Harder + + * gnus-art.el (article-unsplit-urls): Use gnus-treat-article + rather than gnus-display-mime-function. + +2003-05-30 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-use-long-group-names): new variable + (gnus-registry-add-group): use it + (gnus-registry-trim-articles-without-groups): new variable + (gnus-registry-delete-group): use it + (gnus-registry-unload-hook): uninstall all the hooks + + * spam.el (spam-install-hooks-function, spam-unload-hook): new + functions so users that load spam.el for customization don't get + all the hooks installed + (spam-install-hooks): new variable, set to t by default if user + has one of the spam-use-* variables set + + * spam-stat.el (spam-stat-install-hooks, spam-stat-unload-hook): new + functions so users that load spam-stat.el for customization don't get + all the hooks installed + +2003-05-30 Dave Love + + * rfc2047.el (rfc2047-decode): Don't use + mm-with-unibyte-current-buffer. + + * qp.el (quoted-printable-decode-string): Use + mm-with-unibyte-buffer. + +2003-05-29 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-save): allow forced saving even + when registry is not dirty. Use gnus-registry-trim to shorten the + gnus-registry-alist. + (gnus-registry-max-entries): new variable + (gnus-registry-trim): new function, trim gnus-registry-alist to + size gnus-registry-max-entries, sorting by entry mtime so the + newest entries stick around + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): instead of + just one specific variable, allow a list of specific variables + +2003-05-28 Dave Love + + * rfc2047.el (rfc2047-encode-region): Skip ASCII at beginning and + end of region. + +2003-05-28 Jesper Harder + + * lpath.el: Add put-char-table and get-char-table. + +2003-05-28 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-dirty): flag for modified registry + (gnus-registry-save, gnus-registry-read) + (gnus-registry-store-extra, gnus-registry-clear): use it (note + that gnus-registry-store-extra is invoked for all modifications to + set the mtime, so gnus-registry-dirty only needs to be set there) + +2003-05-23 Simon Josefsson + + * mml1991.el (mml1991-pgg-sign): Use mml-sender instead of + message-sender. + + * gnus-art.el (gnus-use-idna): Check if idna-program is installed. + + * message.el (message-use-idna): Ditto. + +2003-05-20 Dave Love + + * rfc2047.el (rfc2047-q-encoding-alist): Deleted. + (rfc2047-q-encode-region): Don't use it. + (rfc2047-encode-message-header) <(eq method 'mime)>: Bind + rfc2047-encoding-type to `mime'. + (rfc2047-encode-string, rfc2047-encode): Doc fix. + +2003-05-20 Jesper Harder + + * message.el (message-send-mail): Don't insert a courtesy copy + notice in base64 encoded messages. + +2003-05-16 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-move-article): Don't copy expirable + marks if the destination group is not auto-expirable. + +2003-05-14 Katsumi Yamaoka + + * dgnushack.el (assq-delete-all): Removed the compiler macro. + +2003-05-14 Kevin Greiner + + * gnus-agent.el (gnus-agentize): Updated documentation to match + usage. + (gnus-agent-expire-group-1): Do not skip over a group when the + force argument is set. + * gnus.el (gnus-agent): Updated documentation to reflect that + gnus-agent now defaults to t. + +2003-05-14 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-05-14 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.10.2 is released. + +2003-05-14 Lars Magne Ingebrigtsen + + * 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 + + * gnus-sum.el (gnus-summary-exit): Added `leave-hidden'. (Tiny + patch.) + +2003-05-13 Lars Magne Ingebrigtsen + + * 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 + + * dgnushack.el (assq-delete-all): New compiler macro for Emacs 20. + +2003-05-12 Katsumi Yamaoka + + * lpath.el: Fbind find-coding-system. + + * dgnushack.el (dgnushack-make-load): Remove redundant format call + in message. Suggested by Yoichi NAKAYAMA . + * pop3.el (pop3-movemail): Ditto. + +2003-05-12 Colin Marquardt (tiny change) + + * gnus.el (gnus-agent): Docstring fix. + +2003-05-12 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-install): new variable + (gnus-registry-fetch-extra, gnus-registry-fetch-extra-entry) + (gnus-registry-store-extra-entry, gnus-registry-delete-group) + (gnus-registry-add-group): add a modification timestamp to each entry + (gnus-registry-install-hooks): new function + +2003-05-12 Kevin Greiner + + * gnus-agent.el (gnus-agent-cat-name): Eval macro while compiling. + (gnus-agent-cat-disable-undownloaded-faces): New function. + Accessor for new agent property + 'agent-disable-undownloaded-faces'. + gnus-cus.el (gnus-agent-parameters): Added + agent-disable-undownloaded-faces and corrected documentation. + (gnus-agent-cat-prepare-category-field, + gnus-agent-customize-category): Changed to avoid creating free + references to each field's symbol. + gnus-sum.el (gnus-summary-use-undownloaded-faces): New local variable. + (gnus-select-newgroup): Initialize it. + (gnus-summary-highlight-line): Use it. + +2003-05-12 Dave Love + + * mm-util.el (mm-read-charset): Deleted. + (mm-coding-system-mime-charset): New. + (mm-read-coding-system, mm-mule-charset-to-mime-charset) + (mm-charset-to-coding-system, mm-mime-charset) + (mm-find-mime-charset-region): Use it. + (mm-default-multibyte-p): Fix non-mule case. + + * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-bol): Eval + and compile. + (rfc2047-syntax-table): Fix building table to work in Emacs 22. + (rfc2047-unfold-region): Delete unused var `leading'. + +2003-05-12 Simon Josefsson + + * pgg.el (pgg-temp-buffer-show-function): Reuse existing visible + output window if one is available. Tiny patch from Ville Skytt,Ad(B + . + +2003-05-11 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Added + space. + +2003-05-11 Jesper Harder + + * gnus-sum.el (gnus-summary-enter-digest-group): Don't do article + washing etc. + (gnus-handle-ephemeral-exit): Don't reload article after exiting. + + * nndoc.el (nndoc-type-alist): `mime-digest' should be before + `mime-parts'. + +2003-05-10 Jesper Harder + + * gnus-cite.el (gnus-article-hide-citation-maybe): Make toggling + work. Update mode-line. + +2003-05-10 Lars Magne Ingebrigtsen + + * gnus.el (gnus-logo-color-alist): Added no colours. + +2003-05-09 Dave Love + + * utf7.el (mm-util): Require. + (utf7-direct-encoding-chars, utf7-imap-direct-encoding-chars): + Defconst, not defvar. + (utf7-utf-16-coding-system): New. + (utf7-encode-internal): Hoist concat out of loop. + (utf7-fragment-encode): Use mm-with-unibyte-current-buffer. + (utf7-get-u16char-converter) [utf7-utf-16-coding-system]: New + case. + (utf7-latin1-u16-char-converter): Encode the region. + (utf7-u16-latin1-char-converter): Decode the region. + (utf7-encode, utf7-decode): Fix multibyteness. + + * mm-bodies.el (mm-body-7-or-8): Don't special-case mule. + (mm-encode-body): Use mm-read-coding-system, not mm-read-charset. + (mm-uu-yenc-decode-function): Defvar when compiling. + (mm-encode-body, mm-decode-body): Doc fix. + +2003-05-09 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-unregistered-group-regex): + removed in favor of the group/topic/global variables + (gnus-registry-register-message-ids): fixed test to omit + gnus-registry-unregistered-group-regex + + * gnus.el (gnus-variable-list): removed gnus-registry-alist and + gnus-registry-headers-alist from the list + (gnus-registry-headers-alist): removed + (registry-ignore): new parameter, with accompanying + gnus-registry-ignored-groups global variable + + * gnus-start.el (gnus-clear-system): no need to clear the + registry, we can do it ourselves + (gnus-gnus-to-quick-newsrc-format): extra parameters so it can be + used by gnus-registry.el + + * gnus-registry.el (gnus-registry-cache-file): new file variable + (gnus-registry-cache-read, gnus-registry-cache-save): new + functions + (gnus-registry-cache-whitespace): new function. From Dan + Christensen + (gnus-registry-save, gnus-registry-read): use the new + gnus-registry-cache-{read|save} functions, and change the name + from gnus-registry-translate-{from|to}-alist + (gnus-registry-clear): fixed so it doesn't refer to old function name + +2003-05-09 Jesper Harder + + * gnus-picon.el (gnus-picon-transform-address): Parse the encoded + address. + +2003-05-08 Teodor Zlatanov + + * gnus-start.el (gnus-clear-system): added gnus-registry-alist to + the list of cleared variables + + * gnus-registry.el (gnus-registry-split-fancy-with-parent): + nnmail-split-fancy-with-parent-ignore-groups can be a single regex + in addition to a list of regexes. + + * spam.el (spam-use-regex-headers): docstring fix. From Niklas + Morberg + +2003-05-08 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-summary-next-page): Mention + `gnus-article-skip-boring' in docstring. + +2003-05-08 Jesper Harder + + * rfc2231.el (rfc2231-parse-string): "=" should have whitespace + syntax here. + + * ietf-drums.el (ietf-drums-syntax-table): "=" should not have + whitespace syntax class when parsing email addresses. + + * message.el (message-forward-subject-name-subject): Don't use + mail-decode-encoded-word-string before parsing from. + +2003-05-07 ShengHuo ZHU + + * message.el (message-setup-1): Setup alternative email before + generate-headers. + + (message-forward-subject-name-subject): Fix the case when the + field "from" doesn't exist. + +2003-05-07 Dave Love + + * rfc2047.el (rfc2047-encode-region): Skip \n as whitespace. + + * mm-util.el (mm-find-mime-charset-region): Expurgate utf-16 from + possible values. + +2003-05-07 Jesper Harder + + * message.el (message-kill-to-signature): Fix. + +2003-05-06 Jesper Harder + + * gnus-sum.el (gnus-auto-goto-ignores): Docstring fix. + + * gnus-art.el (gnus-mime-display-multipart-as-mixed) + (gnus-mime-display-multipart-related-as-mixed) + (gnus-button-mid-or-mail-heuristic-alist): do. + +2003-05-05 Dave Love + + * mm-util.el (mm-default-multibyte-p): New. + (mm-coding-system-p): Maybe use find-coding-systems. + +2003-05-04 Dave Love + + * rfc2047.el (with-syntax-table): Define if necessary. + (rfc2047-syntax-table): Fix last change for XEmacs. + (rfc2047-parse-and-decode): Revert last change. + +2003-05-03 Jesper Harder + + * gnus.el: Don't test for `mm-guess-mime-charset'. + + * mm-util.el (mm-guess-mime-charset): Remove. Not used any more. + + * gnus.el (gnus-default-charset): Set default value to + `undecided'. + + * gnus-art.el (article-decode-charset): Don't supply 4th arg to + mm-decode-body. + + * mm-bodies.el (mm-decode-coding-region-safely): Remove. + (mm-decode-body): Don't use mm-decode-coding-region-safely. + +2003-05-03 Vasily Korytov (tiny change) + + * gnus-util.el (gnus-multiple-choice): Add ", ?". + +2003-05-03 Dave Love + + * rfc2047.el (rfc2047-syntax-table): Don't call make-char-table + with 2 args. + (rfc2047-decode-string): Don't set the buffer multibyte before + calling buffer-string. + + * mm-encode.el (mm-long-lines-p): Autoload. + (mm-encode-content-transfer-encoding): Doc fix. Don't make buffer + unibyte. Signal error on unknown encoding. + (mm-encode-buffer, mm-qp-or-base64): Doc fix. + + * rfc2047.el (rfc2047-point-at-bol, rfc2047-point-at-eol): New. + Callers of gnus- versions changed to use them. + (rfc2047-header-encoding-alist): Add `address-mime' part. Doc + fixes. + (rfc2047-encoding-type): New. + (rfc2047-encode-message-header): Use mm-charset-to-coding-system. + Don't include header name field in encoding. Add `address-mime' + case and bind rfc2047-encoding-type for `mime' case. + (rfc2047-encodable-p): Deleted. + (rfc2047-syntax-table): New. + (rfc2047-encode-region, rfc2047-encode): Rewritten to take account + of rfc2047 rules with respect to rfc2822 tokens and to do encoding + in place rather than by passing strings. + (rfc2047-encode-string): Doc fix. + (rfc2047-q-encode-region): Don't use + mm-with-unibyte-current-buffer. + (rfc2047-encoded-word-regexp): eval-and-compile. + (rfc2047-decode-region): Avoid concatenation in loop. + (rfc2047-parse-and-decode): Remove useless disjunction. + +2003-05-02 Dave Love + + * rfc2047.el (rfc2047-q-encode-region, rfc2047-decode): Use + mm-with-unibyte-current-buffer. + (ietf-drums, gnus-util): don't require. + + * sieve.el (sieve-manage-mode-menu): Define before use. + + * mml-smime.el (message-narrow-to-headers): Autoload. + + * mm-util.el (mm-coding-system-p): Don't override nil from + coding-system-p. + (mm-mule4-p, mm-disable-multibyte-mule4) + (mm-with-unibyte-current-buffer-mule4): Deleted. + (mm-multibyte-p): Use defun, not defalias. + (mm-make-temp-file): Moved to group at top of file. + (mm-point-at-eol, mm-point-at-bol): New. + + * gnus-cite.el (gnus-art): Require. + + * gnus-ems.el (gnus-get-buffer-create) + (nnheader-find-etc-directory, message-text-with-property): + Autoload. + (gnus-tmp-unread, gnus-tmp-replied, gnus-tmp-score-char) + (gnus-tmp-indentation, gnus-tmp-opening-bracket, gnus-tmp-lines) + (gnus-tmp-name, gnus-tmp-closing-bracket, gnus-tmp-subject-or-nil) + (gnus-check-before-posting): Only defvar when compiling. + + * gnus-int.el (gnus-agent-expire): Autoload, don't defun. + + * gnus-util.el (rmail-default-rmail-file, mm-text-coding-system): + Defvar when compiling. + (gnus-output-to-rmail): Require mm-util. + + * mail-source.el (mail-source-callback): Use mm-make-temp-file. + (mail-source-make-complex-temp-name): Deleted. + + * message.el (message-use-idna): Use mm-coding-system-p. + (message-tokenize-header, message-make-organization) + (message-make-from): Use with-temp-buffer. + (message-set-work-buffer): Deleted. + (message-fill-paragraph): Use `if' not `and' for compiler warning. + (message-check-news-header-syntax): Remove useless lambda. + (message-forward-make-body): Use mm-disable-multibyte, + mm-with-unibyte-current-buffer, mm-enable-multibyte. + (message-replace-chars-in-string): Deleted. + + * mm-extern.el (mm-extern-local-file): Use mm-disable-multibyte. + (mm-extern-url): Use mm-with-unibyte-current-buffer, + mm-disable-multibyte. + (mm-extern-anon-ftp): Use mm-disable-multibyte. + + * mml1991.el (mml1991-mailcrypt-encrypt, mml1991-gpg-encrypt): Use + mm-with-unibyte-current-buffer. + + * mml2015.el (mml): Require. + (mml2015-mailcrypt-encrypt, mml2015-gpg-encrypt): Use + mm-with-unibyte-current-buffer. + + * nnheader.el (gnus-util): Require. + + * nntp.el (format-spec, format-spec-make, open-tls-stream): + Autoload. + + * rfc2231.el (mail-header-remove-comments, mm-encode-body) + (mail-header-remove-whitespace): Autoload. + + * sieve-manage.el (starttls-negotiate): Autoload. + +2003-05-01 Lars Magne Ingebrigtsen + + * nnrss.el (nnrss-find-rss-via-syndic8): Indent. + +2003-05-01 Mark A. Hershberger + + * nnrss.el (nnrss-find-rss-via-syndic8): Don't error out. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-05-01 Teodor Zlatanov + + * spam-report.el (spam-report-gmane-regex): docstring fix. From + Jon Ericson (tiny change) + + * gnus.el (gnus-install-group-spam-parameters): docstring fix. + From Jon Ericson (tiny change) + + * gnus-registry.el (gnus-registry-fetch-extra) + (gnus-registry-store-extra, gnus-registry-group-count): new functions + (gnus-registry-fetch-group, gnus-registry-delete-group) + (gnus-registry-add-group): changed to work with extra data element + if present + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.10.1 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.24 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * dgnushack.el (when): Check whether defadvice is fbound. + +2003-05-01 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-unregistered-group-regex): new variable + (gnus-registry-register-message-ids): use it + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + + * gnus.el: Update copyright for several files. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.23 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * spam-stat.el (spam-stat-test-directory): Compare against zero. + +2003-05-01 Trey Jackson (tiny change) + + * spam-stat.el (spam-stat-test-directory): Skip 0 length files. + +2003-05-01 Lars Magne Ingebrigtsen + + * message.el (message-forward-subject-name-subject): Decode + string when forwarding. + +2003-05-01 Oystein Viggen + + * dgnushack.el (when): Add defadvice. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.22 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.21 is released. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-05-01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.20 is released. + +2003-05-01 Vasily Korytov + + * gnus-dired.el (gnus-dired-mode-map): Move to C-c C-l. + +2003-04-30 Mark A. Hershberger + + * mm-url.el (mm-url-insert-file-contents): set url-current-object + in the case where mm-url-use-external is set. + + * nnrss.el (nnrss-request-article): Change the messages created to + multipart/alternative. Hopefully fixes a problem interaction with + w3m. + (nnrss-find-rss-via-syndic8): Better handling if xml-rpc.el isn't + around. + +2003-05-01 Lars Magne Ingebrigtsen + + * message.el (message-check-news-header-syntax): Alter "posting" + message. + + * nnrss.el (nnrss-node-text): Don't use char classes. + +2003-05-01 David Z. Maze + + * nnrss.el (nnrss-find-rss-via-syndic8): Have an `error' branch + in condition-case. + +2003-05-01 Lars Magne Ingebrigtsen + + * message.el (message-required-headers): Remove In-Reply-To. + + * gnus-int.el (gnus-open-server): Revert changes. + +2003-04-30 Kai Gro,A_(Bjohann + + * gnus-int.el (gnus-open-server): Try to open unagentized servers + even when unplugged. + +2003-04-30 Reiner Steib + + * gnus-art.el (gnus-button-prefer-mid-or-mail): Fixed typo in + doc-string. + +2003-05-01 Steve Youngs + + * lpath.el: Add a section for non-Mule XEmacsen. + fbind `find-charset-string' and `coding-system-base' in that + section. + + * gnus-util.el (gnus-completing-read-maybe-default): New. + (gnus-completing-read): Use it. + + * mm-view.el (mm-view-pkcs7-decrypt): Ditto. + + * gnus-art.el (gnus-read-string): New. + (gnus-summary-pipe-to-muttprint): Use it. + + * gnus-xmas.el (gnus-xmas-open-network-stream): New. + + * dns.el (dns-make-network-process): Use it. + + Take care of some differences between XEmacs 21.1 and newer + versions of XEmacs. + +2003-04-30 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-split-fancy-with-parent): added + diagnostic message + (gnus-registry-grep-in-list): don't run when word is nil + (gnus-registry-fetch-message-id-fast): new function + (gnus-registry-delete-group, gnus-registry-add-group): make sure + the id and group are not nil + (gnus-registry-register-message-ids): new function + (gnus-register-action): optimized logical flow + (gnus-summary-prepare-hook): added gnus-registry-register-message-ids + +2003-04-30 Kai Gro,A_(Bjohann + + * gnus-delay.el (gnus-delay-article): Call + `gnus-agent-queue-setup' to create the delay group. + + * gnus-agent.el (gnus-agent-queue-setup): Support optional arg + for the (queue) group name. + +2003-04-30 Simon Josefsson + + * mm-util.el (mm-charset-to-coding-system): Use user specified + charset unless coding-system-get is fboundp. + +2003-04-30 Kevin Greiner + + * gnus-agent.el (gnus-agent-cat-defaccessor, gnus-agent-cat-name): + Wrapped in eval-when-compile. + (gnus-agent-mode): Bind gnus-agent-go-online to nil as you + shouldn't be asked twice to go online with each server. + (gnus-agent-get-undownloaded-list, gnus-agent-fetch-articles, + gnus-agent-crosspost, gnus-agent-flush-cache, + gnus-agent-fetch-session, gnus-agent-unread-articles, + gnus-agent-uncached-articles, gnus-agent-regenerate-group, + gnus-agent-group-covered-p): Expanded pop macros used for + effect. Avoids compilation warning in emacs 21.3. + + * gnus-int.el (gnus-open-server): Restructured to only open + nnagent when gnus-plugged is nil. + +2003-04-30 Katsumi Yamaoka + + * lpath.el: Fbind string-to-multibyte. + +2003-04-30 Steve Youngs + + * dgnushack.el: Add some missing autoloads for XEmacs 21.1. + +2003-04-29 Teodor Zlatanov + + * gnus-registry.el (gnus-registry-fetch-group): faster + (gnus-registry-delete-group): new function + (gnus-registry-add-group): new function + (gnus-register-spool-action): use it + (gnus-register-action): use it + (gnus-registry-translate-from-alist) + (gnus-registry-translate-to-alist): remove the headers registry + for now + +2003-04-29 Reiner Steib + + * gnus-art.el (gnus-button-alist): Fixed CTAN regexp. + +2003-04-29 Teodor Zlatanov + + * spam-report.el (spam-report-gmane): gnus-summary-article-number + is not necessary, just use the function parameter + +2003-04-29 Karl Pflysterer + + * spam-stat.el (spam-stat-save): No longer font-locks the file + when saving + +2003-04-29 Katsumi Yamaoka + + * canlock.el: Bind mail-header-separator when compiling (XEmacs + provides it in mail-lib/auto-autoloads.el). + +2003-04-29 Simon Josefsson + + * mml2015.el (mml2015-pgg-sign): Use mml-sender instead of + message-sender. + + * mml.el (mml-generate-mime-1): Set mml-sender too. + +2003-04-29 Jesper Harder + + * gnus-sum.el (gnus-summary-display-while-building): Docstring fix. + + * mm-url.el (mm-url-use-external): do. + +2003-04-29 Simon Josefsson + + * canlock.el (mail-fetch-field): Autoload it (fix xemacs compile + warnings). + + * sieve-mode.el (c-mode): Ditto. + + * pgg.el (run-at-time): Ditto. + + * mm-url.el (require): Require timer when compiling for + with-timeout macro (fix xemacs compile warnings). + +2003-04-28 Dave Love + + * gnus-util.el (nnheader): Don't require. + (Nnheader-narrow-to-headers, nnheader-replace-chars-in-string): + Autoload. + + * spam.el: Require cl when compiling. + + * dns.el: Require cl when compiling. + +2003-04-28 Jesper Harder + + * gnus-art.el (gnus-article-goto-next-page) + (gnus-article-goto-prev-page): Revert 2003-02-12 change to make + gnus-pick-mode work. + +2003-04-28 Steve Youngs + + * Makefile.in (FLAGS): Use @FLAGS@. + +2003-04-27 Reiner Steib + + * gnus-art.el (gnus-mime-display-multipart-as-mixed) + (gnus-mime-display-multipart-alternative-as-mixed) + (gnus-mime-display-multipart-related-as-mixed): Added doc-strings, + allow customization. + +2003-04-27 Kevin Greiner + + * dgnushack.el (dgnushack-compile-verbosely): New function. Not + currently called (See source for explanation). + +2003-04-27 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-catchup): Don't mark ticked messages. + (gnus-summary-mark-read-and-unread-as-read): Take an optional + mark. + + * gnus.el (gnus-version-number): Bump. + +2003-04-27 06:47:31 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.19 is released. + +2003-04-27 Kevin Greiner + + * gnus-registry.el (gnus-register-spool-action): Replaced literal + carriage-return character with its escape sequence. + +2003-04-27 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-catchup-from-here): Doc fix. + + * nnrss.el (nnrss-node-text): Use only one + gnus-replace-in-string. + + * gnus.el: Remove gnus-functionp throughout. + + * gnus-util.el (gnus-functionp): Removed. + + * gnus-msg.el (gnus-summary-wide-reply-with-original): Doc fix. + + * message.el (message-required-headers): Add In-Reply-To. + +2003-04-27 Marshall T. Vandegrift + + * gnus-fun.el (gnus-face-from-file): Bind coding-system-for-read + to binary. + +2003-04-27 Jesper Harder + + * mml.el (mml-preview): do. + + * message.el (message-mode): do. + + * gnus-undo.el (gnus-undo-mode): do. + + * gnus-topic.el (gnus-topic-mode): do. + + * gnus-sum.el (gnus-summary-mode, gnus-summary-edit-article): do. + + * gnus-msg.el (gnus-setup-message) + (gnus-inews-add-send-actions, gnus-configure-posting-styles): do. + + * gnus-gl.el (gnus-grouplens-mode): do. + + * gnus-art.el (gnus-mime-save-part-and-strip) + (gnus-mime-delete-part): Use it. + + * gnus-util.el (gnus-make-local-hook): New function. + +2003-04-25 Simon Josefsson + + * nnrss.el (nnrss-node-text): Don't use a star. + (nnrss-node-text): Use g-r-i-s, not g-r-r-i-s which doesn't exist. + +2003-04-24 Dave Love + + * mm-encode.el (mm-long-lines-p): Autoload. + (mm-encode-content-transfer-encoding): Don't try to make buffer + unibyte before decoding. Don't ignore errors for base64 encoding. + + * qp.el (quoted-printable-decode-region): Use mm-insert-byte. + Signal error on malformed text, as for base64. + (quoted-printable-encode-region): DTRT in Emacs 22. + + * mm-util.el (mm-make-temp-file, mm-insert-byte): New. + (mm-auto-save-coding-system): Consider utf-8-emacs. + (mm-mime-mule-charset-alist, mm-mule-charset-to-mime-charset) + (mm-charset-to-coding-system, mm-mime-charset) + (mm-find-mime-charset-region): Check for :mime-charset coding + systems property. + + * mml-sec.el (mml2015, mml1991): Don't require. + (mml2015-sign, mml2015-encrypt, mml1991-sign, mml1991-encrypt) + (message-goto-body, mml-insert-tag): Autoload. + + * mm-decode.el (mm-tmp-directory): Re-write to help avoid warnings. + + * gnus-start.el (message-make-date): Autoload rather than + requiring message. + + * gnus-group.el (gnus-group-name-charset-group-alist): Use + mm-coding-system-p. + (gnus-cache-active-altered): Defvar when compiling. + (gnus-group-delete-group): Re-write to help avoid warnings. + + * gnus-art.el (gnus-use-idna): Use mm-coding-system-p. + + * pgg.el: Split eval-when-compile forms. + +2003-04-24 Reiner Steib + + * gnus-group.el (gnus-large-ephemeral-newsgroup) + (gnus-fetch-old-ephemeral-headers): News variables. + (gnus-group-read-ephemeral-group): Use them. + +2003-04-24 Simon Josefsson + + * sieve.el (sieve-upload): Don't use replace-regexp-in-string. + + * nnrss.el (nnrss-node-text): Ditto. + +2003-04-24 Katsumi Yamaoka + + * gnus-msg.el (gnus-inews-do-gcc): Make sure the obsolete variable + gnus-inews-mark-gcc-as-read exists. + +2003-04-23 Simon Josefsson + + * gnus-sieve.el (gnus-sieve-generate): Rewrite regexp search so it + doesn't exceed the regexp stack space. + +2003-04-23 Jesper Harder + + * gnus-msg.el (gnus-inews-mark-gcc-as-read): Don't defvar it. + + * gnus-art.el (gnus-article-hide-pgp-hook): do. + +2003-04-23 Reiner Steib + + * mml.el (mml-preview): Bind `=', RET, and mouse-2. + +2003-04-23 Jesper Harder + + * mm-bodies.el (mm-decode-body): Don't override supplied charset. + +2003-04-23 Katsumi Yamaoka + + * dgnushack.el (merge, copy-list): Remove compiler macros. + (butlast): Add a compiler macro. + +2003-04-22 Paul Jarc + + * gnus-util.el (gnus-merge): Added "type" argument to match CL + merge and gnus-sum.el's expectations. + +2003-04-21 Reiner Steib + + * gnus-art.el (gnus-button-url-regexp): Added nntp. + + * message.el (message-generate-headers-first): Default to + '(references). + + * gnus-art.el (gnus-mime-delete-part): Require confirmation. + +2003-04-21 Jesper Harder + + * smime.el (smime-decrypt-region): Insert From header. + +2003-04-21 Kai Gro,A_(Bjohann + + * gnus-fun.el (gnus-face-from-file, gnus-convert-png-to-face): + Max length of header is 726, not 740. From Gaute B Strokkenes + . + +2003-04-20 Jesper Harder + + * nndb.el, mml1991.el: Fix license template. + +2003-04-20 Simon Josefsson + + * nnimap.el (nnimap-split-articles): Don't download body unless + required. + + * imap.el (imap-gssapi-open, imap-ssl-open): Erase buffer before + starting process, like imap-kerberos4-open does. + + * mml-smime.el, rfc1843.el, dig.el, smime.el, uudecode.el: Fix + license template. + + * mml-sec.el: Fix license template. + + * gnus-sieve.el, sieve.el, sieve-manage.el, sieve-mode.el: Fix + license template. + + * pgg-def.el, pgg.el, pgg-gpg.el, pgg-parse.el, pgg-pgp5.el, + pgg-pgp.el: Fix license template. + +2003-04-19 Jesper Harder + + * gnus-sum.el (gnus-summary-delete-article): Improve docstring. + +2003-04-19 Teodor Zlatanov + + * spam.el (spam-move-spam-nonspam-groups-only): dumb typo fix + +2003-04-18 Teodor Zlatanov + + * spam.el (spam-split): allow a particular check as a parameter, + e.g. (: spam-split 'spam-use-bogofilter) + (spam-mark-only-unseen-as-spam): new parameter, see doc + (spam-mark-junk-as-spam-routine): use + spam-mark-only-unseen-as-spam, simplify routine to take advantage + of gnus-newsgroup-unread as well as gnus-newsgroup-unseen + +2003-04-17 Teodor Zlatanov + + * gnus.el (gnus-group-short-name, gnus-group-prefixed-p): new functions + (gnus-group-guess-full-name): don't prefix the group twice + + * nnmail.el (nnmail-split-fancy-with-parent): docstring fix + + * gnus-registry.el (gnus-registry-clear) + (gnus-registry-fetch-group, gnus-registry-grep-in-list) + (gnus-registry-split-fancy-with-parent): new functions + (gnus-register-spool-action, gnus-register-action): simplified the format + (gnus-registry): new customization group + (gnus-registry-unfollowed-groups): new variable + +2003-04-17 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-button-alist): Add nntp: urls. + (gnus-header-button-alist): Ditto. + +2003-04-17 Dave Love + + * gnus-util.el (gnus-string-equal): Revert last change. + +2003-04-17 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-browse-make-menu-bar): Fix typo. + +2003-04-17 Mike Woolley + + * gnus-sum.el (gnus-sum-thread-tree-false-root): New variable. + +2003-04-15 Michael Shields + + * gnus-art.el (article-hide-boring-headers): Hide Reply-To: if + the broken-reply-to group parameter is set. Idea from Vasily + Korytov . + +2003-04-17 Steve Youngs + + * dgnushack.el: 'setenv' is in env.el for XEmacsen <= 21.4, but in + process.el in XEmacsen >= 21.5. + +2003-04-17 Steve Youngs + + * dgnushack.el: Add a whole swag of autoloads and defaliases to + satisfy the byte-compiler when building with XEmacs. + + * lpath.el (maybe-bind): Add 'w3-meta-content-type-charset-regexp' + and 'w3-meta-charset-content-type-regexp' in XEmacs. The upstream + W3 doesn't have these. + + * mailcap.el: Maybe require 'lpr in XEmacs. + +2003-04-16 Simon Josefsson + + * mml2015.el (mml2015-pgg-sign): Bind pgg-default-user-id to MML + sender tag, if available. + +2003-04-16 Teodor Zlatanov + + * gnus-registry.el (gnus-register-action) + (gnus-register-spool-action, hashtable-to-alist) + (gnus-registry-translate-from-alist, alist-to-hashtable) + (gnus-registry-translate-to-alist, gnus-registry-headers-hashtb): + new variables and function fixes + + * gnus.el (gnus-registry-headers-alist): new variable to hold + article header data + (gnus-variable-list): save gnus-registry-headers-alist + + * spam-report.el (Module): new module for spam reporting + + * gnus.el (spam-process): added + gnus-group-spam-exit-processor-report-gmane to the list of choices + (gnus-install-group-spam-parameters): defined new spam exit processor + + * spam.el (autoload): autoload spam-report-gmane when needed + (spam-report-gmane-register-routine): glue for spam-report.el + (spam-group-spam-processor-report-gmane-p): glue for the + gnus-group-spam-exit-processor-report-gmane spam processor + (spam-summary-prepare-exit): check the report-gmane spam processor + and run spam-report-gmane-register-routine if it's active + + From John Wiegley + + * spam.el (spam-bogofilter-score): check bogofilter headers before + checking bogofilter itself + +2003-04-16 Dave Love + + * gnus-agent.el: Wrap defsetf in eval-when-compile. + (gnus-agent-cat-defaccessor): Don't use gensym. + + * mml1991.el: Require cl, mm-util when compiling. + (quoted-printable-decode-region, quoted-printable-encode-region): + Autoload. + + * pgg.el: Require cl when compiling. + + * nnmail.el (gnus): Require. + + * gnus-util.el: Move provide to end. + (gnus-string-equal): Maybe use compare-strings. + (gnus-merge): New. + + * gnus-sum.el (gnus-summary-prepare-threads): Don't use copy-list. + (gnus-summary-insert-articles): Use gnus-merge. + + * gnus-fun.el: Require cl and mm-util when compiling. + + * gnus-diary.el (gnus-diary-delay-format-french) + (gnus-diary-delay-format-english): Don't use setf with nthcdr. + + * nndiary.el (nndiary-compute-reminders): Don't use setf with + nthcdr. + +2003-04-16 Kevin Greiner + + * gnus-agent.el (gnus-agent-make-cat): Added optional parameter to + specify a predicate other than false. + (gnus-category-read): Use the new feature to create a 'default' + category with a 'short' predicate. + +2003-04-16 Lars Magne Ingebrigtsen + + * message.el (message-unique-id): Comment change. + + * gnus-art.el (gnus-article-next-page-1): New function. + (gnus-article-next-page): Use it. + +2003-04-15 Teodor Zlatanov + + * spam.el (spam-split): added save-restriction to save-excursion + +2003-04-15 Reiner Steib + From Julien Avarre + + * gnus-fun.el: Fixed autoload cookie. + +2003-04-15 Paul Jarc + From Remi Letot + + * nnmaildir.el (nnmaildir-request-scan): Use gnus-remove-if + instead of remove-if. + +2003-04-14 Katsumi Yamaoka + + * gnus-msg.el (gnus-summary-news-other-window): Use delq and + copy-sequence instead of remove which is a cl run-time function in + Emacs 20. + +2003-04-14 Jesper Harder + + * gnus-msg.el (gnus-summary-news-other-window): Make a buffer + local copy of gnus-discouraged-post-methods with the current + method removed. + +2003-04-14 Simon Josefsson + + * mailcap.el (mailcap-mime-data): Add application/pgp-keys. + +2003-04-13 Reiner Steib + + * mm-util.el (mm-sort-coding-systems-predicate): Convert elements + of `mm-coding-system-priorities' to base coding system. + + * gnus-sum.el: Added coding cookie ("middle dot" in + gnus-summary-morse-message). + +2003-04-13 Simon Josefsson + + * gnus-art.el (article-fill-long-lines) + (article-verify-x-pgp-sig, article-decode-group-name) + (gnus-mime-button-menu): Split >80 character lines. + +2003-04-13 Jesper Harder + + * gnus-sum.el (gnus-summary-local-variables): Use defvar since + we're let-binding it. + + * nnmbox.el (nnmbox-mbox-buffer): It's not a constant. + +2003-04-13 Lars Magne Ingebrigtsen + + * message.el (message-hide-headers): Don't do intangible. + + * gnus.el (gnus-group-prefixed-name): Comment out the test for + colon. + + * gnus-srvr.el (gnus-browse-read-group): Don't give the real name + to the ephemeral entry, but the prefixed name. + + * gnus.el (gnus-group-prefixed-name): Clean up. + +2003-04-13 Kevin Greiner + + * gnus-agent.el (gnus-agent-group-pathname): Bind + gnus-command-method so that gnus-agent-directory will always + return a valid directory. + * gnus-cache.el (gnus-cache-enter-article): Remove article from + gnus-newsgroup-undownloaded so that the summary will display the + article as downloaded. + (gnus-cache-remove-article): If the article isn't in the agent, + remove it from gnus-newsgroup-undownloaded so that the summary + will display the article as undownloaded. + +2003-04-13 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-04-13 01:12:01 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.18 is released. + +2003-04-13 Lars Magne Ingebrigtsen + + * gnus-draft.el (gnus-draft-send): Add message-hidden-headers. + +2003-04-12 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-next-page): Use + gnus-article-over-scroll. + (gnus-article-over-scroll): New variable. + + * message.el (message-newline-and-reformat): Place a boundary + before filling. + (message-make-forward-subject-function): Changed default to + message-forward-subject-name-subject. + (message-forward-subject-name-subject): New function. + + * nnimap.el (nnimap-split-fancy): Ditto. + + * gnus-sum.el (gnus-summary-line-message-size): Ditto. + + * gnus-cus.el (gnus-group-parameters): Removed "which see". + + * mml.el (mml-minibuffer-read-file): Bind + completion-ignored-extensions to nil. + + * message.el (message-fix-before-sending): Comment fix. + (message-fix-before-sending): Make hidden headers visible. + (message-hide-headers): Bind after-change-functions to nil. + (message-forbidden-properties): Put invisible and intangible + back. + (message-strip-forbidden-properties): Ignore message-hidden text. + + * gnus-msg.el: Hide headers. + + * message.el (message-hidden-headers): New variable. + (message-hide-headers): New function. + (message-hide-header-p): New function. + (message-hide-header-p): Change logic. + (message-forbidden-properties): Remove intangible nil invisible + nil. + (message-hide-headers): Narrow to headers. + + * lpath.el (featurep): Bind Info-directory, Info-menu. + +2003-04-12 Jesper Harder + + * mm-bodies.el (mm-body-charset-encoding-alist): UTF-16 *must* be + encoded. + (mm-encode-body): Don't corrupt UTF-16. + (mm-body-encoding): Pay attention to mm-body-charset-encoding-alist. + +2003-04-10 Kevin Greiner + + * gnus-agent.el (gnus-agent-get-undownloaded-list): Articles in + the CACHE are now detected and handled the same as an article + downloaded into the agent. + (gnus-agent-group-path): Modified to match nnmail-group-pathname + so that the agent front-end and back-end (nnagent) always use the + same directory. + (gnus-agent-group-pathname): New function. Wrapper for + nnmail-group-pathname. + (gnus-agent-expire-unagentized-dirs): New variable. May be + customized to disable gnus-agent-expire-unagentized-dirs. + (gnus-agent-expire-unagentized-dirs): Expand gnus-agent-directory + as the directories in gnus-agent-expire-current-dirs were + expanded. + +2003-04-10 Jesper Harder + + * gnus-sum.el (gnus-summary-make-menu-bar): Disable "Encrypt + body" entry in read only groups. + +2003-04-09 Jesper Harder + + * gnus-sum.el (gnus-summary-make-menu-bar): Disable "Import file" + and "Create article" items in non-editable groups. + +2003-04-09 Kevin Greiner + + * gnus-agent.el (gnus-agent-write-active): Added option of + replacing, rather than updating, the agent's active file. Do NOT + use the fully qualified group name as gnus-active-to-gnus-format + blindly prefixes group names with server names. + (gnus-agent-save-group-info): Merge BOTH min/max of current active + range, was just merging min, with specified active range. + (gnus-agent-expire): Save agent's active ranges after + expiring all groups. + (gnus-agent-expire-group-1): Update min of agent's active range to + min article currently fetched. + (gnus-agent-expire-unagentized-dirs): Avoid asking to delete the + same ancestor multiple times. + + * gnus-async.el (gnus-asynchronous): Moved defcustom of + gnus-asynchronous away from defgroup of gnus-asynchronous. This + seems to fix an intermittant error in which loading gnus-async + fails to define gnus-asynchronous (the variable). + + * gnus-sum.el: Concur with Steve Young, 5th argument to 'load' is + non-essential. Removed on all platforms. + (gnus-select-newsgroup): When the agent is active, expand the + group's active range to include fetched articles that are no + longer in the server's active range. + + * gnus-util.el (gnus-with-output-to-file): Removed all of the + print-* bindings as they should be handled by the function doing + the printing. + +2003-04-09 Jesper Harder + + * mm-uu.el (mm-uu-copy-to-buffer): buffer-file-coding-system + might be unbound in non-MULE XEmacsen. + +2003-04-08 Jesper Harder + + * mm-uu.el (mm-uu-diff-groups-regexp, mm-uu-type-alist) + (mm-uu-diff-extract, mm-uu-diff-test): New functionality: + recognize diffs. + + * mm-bodies.el (mm-decode-body): Use the supplied charset + unconditionally if `code-pages' hasn't been loaded. + +2003-04-07 Jesper Harder + + * gnus-art.el (article-verify-x-pgp-sig): Don't use + `insert-buffer', the docstring says "This function is meant for + the user to run interactively. Don't call it from programs!" + + * mm-extern.el (mm-extern-mail-server): do. + + * mml1991.el (mml1991-mailcrypt-sign, mml1991-mailcrypt-sign) + (mml1991-gpg-sign, mml1991-gpg-encrypt, mml1991-pgg-sign) + (mml1991-pgg-encrypt): do. + + * pgg.el (pgg-decrypt-region): do. + + * mm-view.el (mm-view-pkcs7-decrypt): do. + + * mml-smime.el (mml-smime-verify): do. + + * mml.el (mml-insert-mime, mml-preview): do. + + * mml2015.el (mml2015-gpg-decrypt-1, mml2015-gpg-sign) + (mml2015-gpg-encrypt, mml2015-pgg-clear-decrypt) + (mml2015-pgg-encrypt): do. + +2003-04-06 Katsumi Yamaoka + + * mm-bodies.el (mm-decode-body): Silence XEmacs when compiling. + +2003-04-06 Jesper Harder + + * mm-uu.el (mm-uu-copy-to-buffer): Copy + `buffer-file-coding-system' to the new buffer. + (mm-uu-pgp-signed-extract-1): Don't copy + `buffer-file-coding-system' here. + + * mm-bodies.el (mm-decode-body): last-coding-system-used doesn't + exist in XEmacs. + (mm-decode-body): Add missing quote. + + * mm-uu.el (mm-uu-pgp-signed-extract-1): Set + buffer-file-coding-system. + + * mm-bodies.el (mm-decode-body): Set buffer-file-coding-system to + last-coding-system-used. + + * mml2015.el (mml2015-pgg-clear-verify): Encode the text + according to buffer-file-coding-system. + + * pgg-gpg.el (pgg-gpg-process-region): Revert previous change. + + * pgg-pgp.el (pgg-pgp-process-region, pgg-pgp-verify-region) + (pgg-pgp-snarf-keys-region): do. + + * pgg-pgp5.el (pgg-pgp5-verify-region) + (pgg-pgp5-snarf-keys-region, pgg-pgp5-process-region): do. + + * pgg.el (pgg-make-temp-file, pgg-temporary-file-directory): do. + +2003-04-05 Teodor Zlatanov + + * spam.el (spam-split): (save-excursion) around (widen) + (spam-ham-move-routine): Use spam-group-ham-mark-p, not + spam-group-spam-mark-p (from Michael Shields ) + +2003-04-05 Steve Youngs + + * gnus-sum.el: XEmacs doesn't support the 5th arg to 'load', so + don't use it when loading gnus-sum.el if we're in XEmacs. + +2003-04-05 Kevin Greiner + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound + print-escape-nonascii to fix more characters in compiled format + specs. + +2003-04-05 Jesper Harder + + * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): + Fix customization type. + +2003-04-04 Kevin Greiner + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound + print-quoted, print-readably, print-escape-multibyte, and + print-level to match original behavior of gnus-prin1. This should + repair the format of .newsrc.eld when using compiled format specs. + +2003-04-04 Jesper Harder + + * gnus-group.el (tool-bar-map): defvar it. + + * gnus-art.el (tool-bar-map): do. + + * gnus-sum.el (tool-bar-map): do. + +2003-04-03 Jesper Harder + + * earcon.el (earcon-regexp-alist): catmeow is a wav file. + +2003-04-03 Reiner Steib + + * gnus-art.el (gnus-button-ctan-directory-regexp): Changed meaning + and value. + (gnus-button-alist): Use it. + +2003-04-03 Jesper Harder + + * pgg-gpg.el (pgg-gpg-process-region): do. + + * pgg-pgp.el (pgg-pgp-process-region, pgg-pgp-verify-region) + (pgg-pgp-snarf-keys-region): do. + + * pgg-pgp5.el (pgg-pgp5-verify-region) + (pgg-pgp5-snarf-keys-region, pgg-pgp5-process-region): Use it. + + * pgg.el (pgg-make-temp-file): New function. `make-temp-name' is + unsafe. + (pgg-temporary-file-directory): Remove. + +2003-04-02 Katsumi Yamaoka + + * lpath.el: Fbind Info-directory and Info-menu. + +2003-04-02 Reiner Steib + + * gnus-util.el (gnus-message): Added doc-string. + + * gnus-score.el (gnus-score-find-trace): Changed behavior of `q'. + (gnus-score-edit-file-at-point): Goto first match when using `e'. + +2003-04-01 Reiner Steib + + * gnus-art.el (gnus-button-ctan-directory-regexp): New variable. + (gnus-button-alist): Use it. Changed CTAN and "setq" entries. + +2003-04-01 Katsumi Yamaoka + + * nntp.el (nntp-via-rlogin-command-switches): Doc fix. + (nntp-open-via-rlogin-and-telnet): Disable the telnet linemode. + +2003-03-31 Kevin Greiner + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound + print-escape-newlines to print escape sequences rather than + literal newline characters. + +2003-03-31 Reiner Steib + + * gnus-art.el (gnus-button-valid-fqdn-regexp): Use + `message-valid-fqdn-regexp' for initialization. + (gnus-button-handle-info-url): Renamed and extended version of + `gnus-button-handle-info'. + (gnus-button-message-level): Renamed from `gnus-button-mail-level' + (gnus-button-handle-symbol, gnus-button-handle-library) + (gnus-button-handle-info-keystrokes): New functions. + (gnus-button-browse-level): New variable. + (gnus-button-alist): Use them. Added levels. + (gnus-header-button-alist): Added levels. + +2003-03-31 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-03-31 20:08:19 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.17 is released. + +2003-03-31 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-unload): Removed. + + * pop3.el (pop3-read-response): Use + nnheader-accept-process-output. + (pop3-retr): Ditto. + + * mm-view.el (mm-text-html-renderer-alist): Add -nolist to Lynx. + (mm-text-html-washer-alist): Ditto. + +2003-03-31 Simon Josefsson + + * imap.el (imap-gssapi-program): Also try GNU SASL. + (imap-gssapi-open): Accept GNU SASL greeting. + (imap-read-timeout): New. + (imap-wait-for-tag): Use it. + +2003-03-31 Lars Magne Ingebrigtsen + + * nntp.el (nntp-accept-process-output): Use new function. + + * nnheader.el (nnheader-read-timeout): New variable. + (nnheader-accept-process-output): New function. + + * nntp.el (nntp-read-timeout): Removed. + + * gnus-sum.el (gnus-summary-prepare-threads): Add comment. + +2003-03-30 Katsumi Yamaoka + + * gnus-cache.el (gnus-cache-braid-nov): Revoke last change. + +2003-03-30 Simon Josefsson + + * message.el (message-idna-inside-rhs-p): Narrow to header before + searching. + + * gnus-art.el (article-decode-idna-rhs): More restrictive regexp. + +2003-03-30 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-process-mmdf-mail-format): Indent. + +2003-03-28 Vasily Korytov + + * message.el (message-make-in-reply-to): Use + mail-extract-address-components to determine sender's + name/address. + +2003-03-30 Lars Magne Ingebrigtsen + + * nndoc.el (nndoc-type-alist): Move mime-parts further ahead. + + * gnus-registry.el (gnus-registry-translate-to-alist): Make a + valid lambda. + (gnus-registry-translate-from-alist): Ditto. + + * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bind + print-length to nil. + + * gnus-sum.el (gnus-summary-highlight-line-0): Indent. + + * gnus-fun.el (gnus-fun-ppm-change-string): New function. + (gnus-grab-cam-face): Use it. + +2003-03-28 Paul Jarc + + * nnmaildir.el (nnmaildir-request-set-mark) + (nnmaildir-close-group): Allow each mark directory in a group to + have its own inode for mark files, to accommodate AFS. + +2003-03-28 Teodor Zlatanov + + * gnus-start.el (gnus-read-newsrc-el-hook): new hook called by + gnus-read-newsrc-el-file + (gnus-read-newsrc-el-file): call the gnus-read-newsrc-el-hook + + * gnus-registry.el (gnus-registry-translate-to-alist) + (gnus-registry-translate-from-alist, alist-to-hashtable) + (hashtable-to-alist): new functions + (gnus-register-spool-action): add a spool item to the registry + + * gnus.el (gnus-variable-list): added gnus-registry-alist to the + list of saved variables + (gnus-registry-alist): new variable + +2003-03-27 Simon Josefsson + + * gnus-art.el (article-decode-group-name): Be correct instead of + smart. + +2003-03-27 Katsumi Yamaoka + + * lpath.el: Bind url-current-object for Emacs; bind + gnus-agent-expire-current-dirs for XEmacs; fbind open-ssl-stream + for both Emacsen. + +2003-03-27 Jesper Harder + + * gnus-sum.el (gnus-article-loose-mime) + (gnus-article-emulate-mime): Move to gnus-article-mime customize + group. + + * gnus-msg.el (gnus-mailing-list-groups): Fix customize type and + doc string. + +2003-03-26 Kevin Ryde + + * gnus-sum.el (gnus-summary-find-for-reselect): Renamed from + gnus-summary-find-uncancelled, skip temporary articles inserted by + "refer" functions. + +2003-03-26 Vasily Korytov + + * smiley.el (smiley-buffer): New function. + +2003-03-26 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-selected-article): Replaced + gnus-summary-update-line (which updated the article's face) with + gnus-summary-update-download-mark (which updates the article's + face by calling gnus-summary-update-line AND updates the download + mark to show that the article was fetched). + +2003-03-23 Kevin Greiner + + * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Provides + option of deleting agent directories for groups/servers that are + not currently agentized. + (gnus-agent-expire): Use gnus-agent-expire-unagentized-dirs. + + * gnus-int.el (gnus-open-server): Report backend errors in + condition handler. + +2003-03-23 Simon Josefsson + + * message.el (message-idna-to-ascii-rhs-1): Don't continue outside + header. + + * rfc2047.el (rfc2047-header-encoding-alist): Make Followup-To + same as Newsgroups. + + * nntp.el (nntp-open-connection-function): Mention + nntp-open-tls-stream. + (nntp-open-tls-stream): New function. + + * tls.el: New file. + + * nnimap.el (nnimap-server-port, nnimap-stream): Say TLS/SSL + instead of SSL. + (nnimap-stream): Add other streams, link to imap variables. + (nnimap-authenticator): Add other authenticator, link to imap + variables. + + * imap.el: Autoload open-tls-stream. + (imap-streams): Add tls in front of ssl. + (imap-stream-alist): Add tls. + (imap-default-tls-port): New variable. + (imap-tls-p, imap-tls-open): New functions. + +2003-03-22 ShengHuo ZHU + + * mm-url.el (mm-url-insert-file-contents): parse url only if + results is a list. + +2003-03-22 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch-imap): Revert. + +2003-03-22 Svend Tollak Munkejord + + * deuglify.el (gnus-outlook-repair-attribution-outlook): Use a + less strict regexp. + +2003-03-22 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch-imap): Use buffer name for + more imap function. + +2003-03-21 Simon Josefsson + + * gnus-art.el (article-decode-group-name): Replace Newsgroups and + Followup-To data inline. + +2003-03-21 Jesper Harder + + * gnus-art.el (gnus-treat-display-xface): Don't enable if + icontopbm isn't available. + +2003-03-21 Kevin Greiner + + * gnus-int.el (gnus-open-server): Catch errors in backend's + open-server method. Returns nil rather than crashing startup. + + * gnus-sum.el (eval-when-compile): Modified to resolve + compile-time warnings. + + * gnus-uu.el (gnus-uu-mark-series): Added informative msg. + Reports length of series so that the user can compare N with a + subject that should, if the entire series is present, contain + '(.../N)'. + (gnus-uu-delete-work-dir): Avoid hanging when O/S forbids deletion + of temp file (Win-XP may leave the temp file locked when the + uudecode process fails). + +2003-03-20 ShengHuo ZHU + + * message.el (message-split-line): Ignore error. + + * lpath.el (split-line): Avoid split-line warning message. + +2003-03-20 Kim F. Storm + + * message.el (message-split-line): New function. + (message-mode-map): Remap split-line to message-split-line. + +2003-03-20 Katsumi Yamaoka + + * message.el (message-make-overlay): Defalias it to make-overlay. + (message-delete-overlay): Defalias it to delete-overlay. + (message-overlay-put): Defalias it to overlay-put. + (message-idna-to-ascii-rhs-1): Use them. + + * messagexmas.el (message-xmas-redefine): Defalias some overlay + functions to extent functions. + +2003-03-20 Reiner Steib + + * message.el (message-check-news-header-syntax): Fixed regexp. + +2003-03-20 ShengHuo ZHU + + * rfc2231.el (rfc2231-decode-encoded-string): Downcase charset. + + * mm-url.el (mm-url-insert): Move url-current-object stuff into + mm-url-insert-file-contents. + + * nnrss.el (nnrss-fetch): Fetch the local stuff. + (nnrss-check-group): Use it. + +2003-03-20 Mark A. Hershberger + + * nnrss.el: Primitive XML Name-space support. This means that RSS + feeds like Kevin Burton's[1] can now be read in Gnus. + + Implemented support for Mark Pilgrim's RSS Autodiscovery.[2] This + means that if you want to read the RSS feed for example.com, all + you have to do is hit "G R http://www.example.com/ RET" and + nnrss.el will find and the feed listed on the site or (if you have + loaded xml-rpc.el) look it up on syndic8.com. + + Marked the message as HTML (by adding a Content-Type header) so + that Gnus will render it as html if the user wants that. + + Implemented the ability to save nnrss-group-alist so that any new + feeds the you subscribe to will be found the next time you start + up. + + Implemented support for RSS 2.0 elements (author, pubDate). + + Prefer for over where both + elements exist. + + * mm-url.el (mm-url-insert): Set url-current-object. + + * gnus-group.el (gnus-group-make-rss-group): New function. + +2003-03-20 Katsumi Yamaoka + + * message.el (message-idna-to-ascii-rhs-1): Don't use replace-* + for highlight overlays. + +2003-03-20 Katsumi Yamaoka + + * gnus-cache.el (gnus-cache-braid-nov): Test if a line looks like + a NOV. + +2003-03-20 Simon Josefsson + + * message.el (message-use-idna): Disable if UTF-8 unavailable. + (message-idna-to-ascii-rhs): Use it. + + * gnus-art.el (gnus-use-idna): Disable if UTF-8 unavailable. + +2003-03-19 Teodor Zlatanov + + * spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p) + (spam-group-ham-marks, spam-group-spam-marks): new functions + (spam-spam-marks, spam-ham-marks): removed in favor of the + spam-marks and ham-marks parameters + (spam-generic-register-routine, spam-ham-move-routine): use the + new spam-group-{spam,ham}-mark-p functions + + * gnus.el (spam-marks, ham-marks): new group parameters with + default values same as the old spam-spam-marks and spam-ham-marks + +2003-03-19 Simon Josefsson + + * gnus-art.el (gnus-article-decode-hook): Add IDNA. + (gnus-use-idna): New variable. + (article-decode-idna-rhs): New function. + + * message.el (message-use-idna): New variable. + (message-mode-field-menu): Add entry for IDNA. + (message-idna-inside-rhs-p, message-idna-to-ascii-rhs-1) + (message-idna-to-ascii-rhs): New function. + (message-generate-headers): Invoke IDNA code. + +2003-03-19 Paul Jarc + + * nnmaildir.el (nnmaildir--system-name): New function. + (nnmaildir-request-accept-article): Use it. + +2003-03-19 Katsumi Yamaoka + + * gnus-util.el (gnus-byte-compile): Make it work silently as the + gnus-compile function does. + + * gnus-sum.el (gnus-summary-highlight-line-0): Revoke the last + bogus change. + +2003-03-19 Jesper Harder + + * mm-util.el (mm-mule-charset-to-mime-charset): Test if + sort-coding-systems is defined. + +2003-03-18 Paul Jarc + + * nnmaildir.el (nnmaildir-open-server, nnmaildir-request-scan) + (nnmaildir-request-create-group, nnmaildir-request-delete-group): + Replace create-directory with target-prefix. + +2003-03-18 Jesper Harder + + * mm-bodies.el (mm-decode-coding-region-safely): Don't use + find-charset-string which is slooow in XEmacs. + +2003-03-18 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-highlight-line-0): Silence the byte- + compiler under XEmacs. + +2003-03-18 Jesper Harder + + * gnus-art.el (gnus-treat-highlight-signature): Make the default + work for multipart/signed where the message text isn't `last'. + +2003-03-18 Katsumi Yamaoka + + * mm-view.el (mm-setup-w3m): Set w3m-display-inline-images to + the value of mm-inline-text-html-with-images. + (mm-inline-text-html-render-with-w3m): Don't bind + w3m-display-inline-images. + + * gnus-art.el (gnus-article-wash-html-with-w3m): Don't bind + w3m-display-inline-images. + + * lpath.el: Bind w3m-display-inline-images; bind mm-w3m-mode-map + regardless of an Emacs flavor. + +2003-03-18 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump. + +2003-03-18 00:38:22 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.16 is released. + +2003-03-18 Lars Magne Ingebrigtsen + + * lpath.el (featurep): Bind mm-w3m-mode-map. + +2003-03-17 Paul Jarc + + * nnmail.el (nnmail-cache-primary-mail-backend): Not all + 'respool-able backends define a global nnchoke-get-new-mail + variable. + +2003-03-17 Reiner Steib + + * gnus-art.el (gnus-mime-delete-part): New function. + (gnus-mime-action-alist, gnus-mime-button-commands): Use it. + +2003-03-17 Lars Magne Ingebrigtsen + + * message.el (message-check-news-header-syntax): Don't push + groups twice onto list of unknown groups. + + * nndoc.el (nndoc-type-alist): Move exim-bounce a bit further + back. + + * nnheader.el (nnheader-find-etc-directory): Doc fix. + + * gnus-msg.el (gnus-inews-add-send-actions): Don't restore window + config unless the summary buffer exists. + + * gnus-sum.el (gnus-summary-next-group): Semi-exit group first to + that target group is computed correctly when articles are marked + as read by Xref handling. + + * mail-source.el (mail-source-fetch-imap): Pass buffer-name to + imap-open. + + * message.el (message-send-mail): Add courtesy string to Bcc's, + too. + + * gnus-cite.el (gnus-cited-line-p): New function. + +2003-03-15 Jesper Harder + + * mm-bodies.el (mm-decode-body): Add new optional parameter, + force, to use the supplied charset unconditionally. + + * gnus-art.el (article-decode-charset): Use it. + +2003-03-14 Jesper Harder + + * mm-bodies.el (mm-decode-coding-region-safely): New function. + (mm-decode-body): Use it. + + * rfc2047.el (rfc2047-decode-region): do. + (rfc2047-decode-string): Guess coding system if the default is + invalid. + +2003-03-12 Paul Jarc + + * nnmaildir.el (nnmaildir-request-update-info): Pretend missing + articles are marked 'read, so we get correct article counts. + +2003-03-13 Katsumi Yamaoka + + * gnus-art.el (gnus-insert-mime-button): Exclude a newline from + the button. + (gnus-insert-prev-page-button): Ditto. + (gnus-insert-next-page-button): Ditto. + (gnus-insert-mime-security-button): Ditto. + + * mm-view.el (mm-inline-image-emacs): Open the bottom of an image + one line. Suggested by Greg Klanderman . + (mm-inline-image-xemacs): Ditto. + +2003-03-12 Paul Jarc + + * nnmaildir.el (nnmaildir--parse-filename, nnmaildir--sort-files, + nnmaildir--scan, nnmaildir-request-accept-article): Changes for + the recent filename uniqueness discussion. + +2003-03-12 Katsumi Yamaoka + + * mm-view.el (mm-inline-image-emacs): Make it delete an excessive + newline next time. + (mm-inline-image-xemacs): Ditto. + +2003-03-10 Jesper Harder + + * gnus-agent.el (gnus-agent-synchronize-flags-server): Don't use + kill-line. + +2003-03-09 Jesper Harder + + * gnus-msg.el (gnus-inews-insert-archive-gcc): Don't use + kill-line. + +2003-03-09 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetched-hook): New variable. Just + fixing the code to match the documentation. + (gnus-agent-fetch-selected-article): Replaced + gnus-summary-update-article-line with gnus-summary-update-line as + the former did not correctly recalculate the thread indentation. + (gnus-agent-find-parameter): The agent-predicate, if not found + anywhere else, defaults to the value of gnus-agent-predicate. + (gnus-agent-fetch-session): Fixed typo; now executes + gnus-agent-fetched-hook rather than the undocumented + gnus-agent-fetch-hook. + (gnus-agent-fetch-group-1): Removed part of 2003-03-06 fix. The + default agent predicate is now provided by + gnus-agent-find-parameter. + (gnus-agent-message): New macro. This macro avoids potentially + costly parameter evaluation when the message's level is too high + to display. + (gnus-agent-expire-group-1): Disabled undo tracking in temp + overview buffer. Uses new gnus-agent-message macro to reduce + overhead of optional messages. Reversed message levels to + emphasize percent completion messages. Detailed messages of + little use except when debugging code. + +2003-03-08 Teodor Zlatanov + + * spam.el (spam-ham-move-routine): use + spam-mark-ham-unread-before-move-from-spam-group + (spam-mark-ham-unread-before-move-from-spam-group): new variable + +2003-03-07 Teodor Zlatanov + + * spam.el: load nnimap.el when compiling + (spam-setup-widening): use + nnimap-split-download-body-default instead of + nnimap-split-download-body which is a user-customizable variable + +2003-03-07 Simon Josefsson + + * nnimap.el (nnimap-split-download-body-default): New, holds + default for n-s-d-b. + (nnimap-split-download-body): Add new setting (symbol default), + which uses contents of n-s-d-b-d, and made it the default. + +2003-03-07 Teodor Zlatanov + + * spam.el (spam-use-hashcash): new variable + (spam-list-of-checks): added spam-use-hashcash with associated + spam-check-hashcash + (spam-check-hashcash): new function, installed iff hashcash.el is + loaded + (spam-setup-widening): don't use (return) + +2003-03-06 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-group-1): Added default + predicate of `false' to avoid an error when a group defines no + predicate. Fixed typo that disabled agent scoring (i.e. the + low/high predicates should now work). + +2003-03-06 Teodor Zlatanov + + * spam.el: add spam-maybe-spam-stat-load to + gnus-get-top-new-news-hook, remove it from gnus-get-new-news-hook + (spam-bogofilter-register-with-bogofilter): use + spam-bogofilter-spam-switch and spam-bogofilter-ham-switch + (spam-bogofilter-spam-switch, spam-bogofilter-ham-switch): new + custom variables to replace "-s" and "-n" + + * gnus-group.el (gnus-group-get-new-news): call the new + gnus-get-top-new-news-hook hook + + * gnus-start.el (gnus-get-top-new-news-hook): new hook, run ONLY + by gnus-get-new-news, NOT by gnus-group-get-new-news-this-group + +2003-03-06 Lars Magne Ingebrigtsen + + * mm-uu.el (mm-uu-pgp-encrypted-test): Fix message. + +2003-03-06 Katsumi Yamaoka + + * gnus-cus.el (gnus-group-customize): Don't use delete-if which is + a cl run-time function. + +2003-03-06 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-group-1): Added missing binding + on gnus-agent-short-article. + (gnus-category-read): Replaced CL function mapcar* with new macro: + gnus-mapcar. + * gnus-util.el (gnus-mapcar): New macro. Generalizes mapcar to + support functions that accept multiple parameters. A separate + sequence must be provided for each parameter in the function. + Iteration stops when the end of the shortest list is reached. + +2003-03-06 Jesper Harder + + * nnimap.el (nnimap-request-accept-article): Use delete-region. + + * html2text.el (html2text-clean-dtdd, html2text-delete-tags) + (html2text-delete-single-tag, html2text-clean-anchor) + (html2text-remove-tags): Use delete-region. + (html2text-fix-paragraphs): Simplify. + + * mml1991.el (mml1991-mailcrypt-sign, mml1991-mailcrypt-encrypt) + (mml1991-gpg-sign, mml1991-gpg-encrypt, mml1991-pgg-sign) + (mml1991-pgg-encrypt, mml1991-pgg-encrypt): Use delete-region, not + kill-region. + +2003-03-04 John Paul Wallington + + * gnus-agent.el (gnus-agent-enable-expiration) + (gnus-agent-article-alist, gnus-agent-article-alist) + (gnus-agent-cat-defaccessor): Doc fixes. + +2003-03-04 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-function-implies-unread-1): Grok + byte-compiled functions. + +2003-03-04 Kevin Greiner + + * gnus-sum.el (gnus-auto-goto-ignores): New variable. Provides + customization between new maneuvering (which permits selecting + undownloaded articles) and old maneuvering (which skipped over + undownloaded articles) behaviors. + (gnus-summary-find-next): Pass through the unread and subject + parameters when calling gnus-summary-find-prev. + (gnus-summary-find-next,gnus-summary-find-prev): Apply + gnus-auto-goto-ignores to filter out unacceptable articles. + +2003-03-04 Jesper Harder + + * mail-source.el (mail-source-read-passwd): Remove. `read-passwd' + exists in all supported Emacs versions, so we don't need this + compatibility function. + (mail-source-fetch-pop, mail-source-check-pop) + (mail-source-fetch-webmail): Use read-passwd. + + * nntp.el (nntp-send-authinfo, nntp-send-nosy-authinfo) + (nntp-open-telnet, nntp-open-via-telnet-and-telnet): Use + read-passwd. + + * nnwarchive.el (nnwarchive-open-server): Use read-passwd. + + * imap.el (imap-read-passwd): Remove. + (imap-interactive-login): Use read-passwd. + + * canlock.el (canlock-read-passwd): Remove. + (canlock-insert-header, canlock-verify): Use read-passwd. + + * sieve-manage.el (sieve-manage-read-passwd): Remove. + (sieve-manage-interactive-login): Use read-passwd. + + * pop3.el (pop3-read-passwd): Remove. + (pop3-movemail, pop3-get-message-count, pop3-apop): Use + read-passwd. + + * pgg.el (pgg-read-passphrase): Simplify. + +2003-03-04 Kevin Greiner + + * gnus-agent.el (gnus-agent-mode): Fixed the mode line reports + 'plugged' when actually 'unplugged' bug. + (gnus-category-read): Ignore nil values when converting an + old-format category so that the new-format category will default + those attributes to the global variables. + +2003-03-03 Reiner Steib + + * mail-source.el (mail-source-delete-old-incoming-confirm): Fixed + doc-string. + +2003-03-03 Jesper Harder + + * nnrss.el (nnrss-decode-entities-unibyte-string): Use `buffer-string'. + * nndoc.el (nndoc-dissect-mime-parts-sub): do. + * nndb.el (nndb-request-accept-article, nndb-status-message): do. + * mm-url.el (mm-url-decode-entities-string): do. + * mml1991.el (mml1991-mailcrypt-sign, mml1991-gpg-sign): do. + * mm-decode.el (mm-find-raw-part-by-type): do. + * message.el (message-send-mail-partially) + (message-send-mail-with-sendmail): do. + * gnus-uu.el (gnus-uu-save-article, gnus-uu-reginize-string): do. + * gnus-kill.el (gnus-pp-gnus-kill): do. + * gnus-art.el (gnus-article-treat-unfold-headers) + (gnus-article-encrypt-body): do. + +2003-02-24 Reiner Steib + + * mail-source.el (mail-source-delete-incoming): Allow integer value. + (mail-source-delete-old-incoming-confirm): New variable. + (mail-source-delete-old-incoming): Use it. New function. + (mail-source-callback): Call `mail-source-delete-old-incoming' if + `mail-source-delete-incoming' is a nonnegative integer. + +2003-03-03 Reiner Steib + + * gnus-msg.el (gnus-extended-version): Fix for 'emacs-gnus-config. + (gnus-user-agent): Fixed typo. + +2003-03-03 Kevin Greiner + + * gnus-agent.el (gnus-agent-enable-expiration): Fixed documentation. + (gnus-agent-expire-group-1): Removed invalid (interactive) specifier. + +2003-03-03 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-fetch-articles): Fix nil message. + (gnus-agent-fetch-session): Allow debugging to take place. + +2003-03-03 Jesper Harder + + * gnus-sum.el (gnus-highlight-selected-summary) + (gnus-article-get-xrefs, gnus-summary-show-thread): Use + `gnus-point-at-bol' and `gnus-point-at-eol' instead of + `(progn (beginning-of-line) (point))'. It's shorter, faster, + and makes it clear that we don't need the side effect. + * gnus-util.el (gnus-delete-line): do. + * gnus-xmas.el (gnus-group-add-icon): do. + * nnmail.el (nnmail-article-group, nnmail-cache-fetch-group): do. + * nntp.el (nntp-send-authinfo-from-file): do. + * nnml.el (nnml-header-value): do. + * nnheader.el (nnheader-insert-references): do. + * gnus-cite.el (gnus-article-highlight-citation) + (gnus-cite-parse): do. + * gnus-score.el (gnus-score-followup): do. + * gnus-draft.el (gnus-draft-send): do. + * gnus-group.el (gnus-group-highlight-line): do. + * gnus-cache.el (gnus-cache-braid-nov): do. + * nnfolder.el (nnfolder-retrieve-headers) + (nnfolder-request-article): do. + * gnus-art.el (article-hide-boring-headers) + (gnus-article-hide-header): do. + + * nnheader.el (nnheader-find-nov-line): Use gnus-delete-line. + * nnml.el (nnml-request-replace-article): do. + * nnmbox.el (nnmbox-request-move-article, nnmbox-delete-mail): do. + * nnfolder.el (nnfolder-request-move-article): do. + * gnus-cache.el (gnus-cache-possibly-remove-article): do. + * gnus-art.el (gnus-mm-display-part): do. + + * gnus-art.el (gnus-article-goto-part): Use gnus-goto-char. + +2003-03-02 Kevin Greiner + + * nntp.el (nntp-possibly-change-group): Avoid calling + process-buffer on nil (Which happened when you lost your + connection while fetching); instead signal a "Server Closed + Connection" error. + +2003-03-02 Kevin Greiner + + * gnus-agent.el (gnus-agent-enable-expiration): New + variable. Either ENABLE or DISABLE. Sets default behavior for + selecting which groups are expired. + (gnus-agent-cat-set-property, gnus-agent-cat-defaccessor, + gnus-agent-set-cat-groups): Provides abstract interface for + accessing agent category. Category now implemented by an alist. + (gnus-agent-add-group, gnus-agent-remove-group, + gnus-category-insert-line, gnus-category-edit-predicate, + gnus-category-edit-score, gnus-category-edit-groups, + gnus-category-copy, gnus-category-add, gnus-group-category): Use + new agent category abstraction. + (gnus-agent-find-parameter): New function. Search for agent + configuration parameter first in the group's parameters, then its + topics (if any), and then the group's category. If not found + anywhere, use the original defined constants. + (gnus-agent-fetch-headers, gnus-agent-fetch-group-1): Use new + gnus-agent-find-parameter. + (gnus-agent-fetch-headers, gnus-agent-uncached-articles): Clearing + gnus-agent-cache now blocks retrieving headers and articles from + the local cache. Fetched content is still added to the cache + before being returned. + (gnus-agent-fetch-session): Use error-message-string to generate + displayed error message. + (gnus-agent-customize-category): New Command. 'e' in category + buffer opens category customization buffer. + (gnus-category-read): Reads either positional or alist format; + returns alist format. + (gnus-category-write): Writes category file compatible with + current, and previous, versions of gnus-agent. + (gnus-category-make-function, gnus-category-make-function-1): + Corrected documentation; parameter is predicate NOT category. + (gnus-predicate-implies-unread): Now works in more cases per the + todo comment. + (gnus-function-implies-unread-1): New function. Supports + gnus-predicate-implies-unread. + (gnus-agent-expire-group): Command now provides default of group + under point. + (gnus-agent-expire-group-1): Obeys new agent-enable-expiration and + agent-days-until-old parameters. No longer supports + gnus-agent-expire-days being set to an alist. + (gnus-agent-request-article): Now performs its own checks of + gnus-agent, gnus-agent-cache, and gnus-plugged rather than + assuming that the caller will do them correctly. + (): Added one-time hook to gnus-group-prepare-hook. Detects when + gnus-agent-expire-days is set to an alist. Converts said alist + into group parameter so that gnus-agent-expire-days will not be + needed. + * gnus-art.el (gnus-request-article-this-buffer): Conditional + checks surrounding gnus-agent-request-article removed; now + performed by gnus-agent-request-article. + * gnus-cus.el (gnus-agent-parameters): New variable. List of + customizable group/topic parameters that regulate the agent. + (gnus-group-customize): Uses gnus-agent-parameters. Replaced + kill-buffer with gnus-kill-buffer to remove the killed buffer from + the list of gnus buffers. + (gnus-trim-whitespace): Removes leading and trailing whitespace + from multiline strings. + (gnus-agent-cat-prepare-category-field, + gnus-agent-customize-category): Constructs a category + customization buffer. + * gnus-int.el (gnus-retrieve-headers, + gnus-request-expire-articles): No longer checks gnus-agent-cache + as it is handled internally by the agent. + (gnus-request-head, gnus-request-body): Conditional checks + surrounding gnus-agent-request-article removed; now performed by + gnus-agent-request-article. + + * gnus-start.el (): Added defvar statements to resolve compilation + warnings. + (gnus-long-file-names): New function. Isolates platform dependent + msdos-long-file-names. + (gnus-save-startup-file-via-temp-buffer): New variable. Provides + option of writing directly to file. Avoids memory exhausted + errors when .newsrc.eld is huge. + (gnus-save-newsrc-file): Uses new + gnus-save-startup-file-via-temp-buffer. + (gnus-gnus-to-quick-newsrc-format): Rewritten to write to + standard-output. + (gnus-display-time-event-handler): Changed to alias from a defun + to avoid a compile-time warning when display-time-event-handler is + not defined. + * gnus-util.el (gnus-with-output-to-file): New macro. Binds + standard-output such that prin1 and princ will write directly to a + file. + + * gnus.el (gnus-agent-cache): Expanded documentation. + (gnus-summary-high-undownloaded-face): Removed second bold keyword + so that this face is actually bold. + + * nnkiboze.el (nnkiboze-request-article): Only use the cache when + gnus-use-cache has been set. + +2003-03-02 Jesper Harder + + * nnvirtual.el (nnvirtual-update-xref-header): Simplify. + +2003-03-01 Jesper Harder + + * gnus-art.el (gnus-article-refer-article): Be more permissive. + +2003-03-01 ShengHuo ZHU + + * spam.el: Fix typo. + +2003-03-01 Satyaki Das + (Trivial patch.) + + * pgg-gpg.el (pgg-gpg-process-region): Insert process status into + errors-buffer. This produces a nicer error message in case of + problems. + +2003-03-01 Teodor Zlatanov + + * spam.el (spam-maybe-spam-stat-load, spam-maybe-spam-stat-load): + load stats iff spam-use-stat is on + + * spam.el: add spam-maybe-spam-stat-load to gnus-startup hook, + also use spam-maybe-spam-stat-load and spam-maybe-spam-stat-save + instead of spam-stat-load and spam-stat-save in the + gnus-get-new-news-hook and gnus-save-newsrc-hook, respectively + +2003-03-01 ShengHuo ZHU + + * mm-view.el (mm-inline-text): Ignore errors from enriched-decode. + +2003-03-01 Lars Magne Ingebrigtsen + + * message.el (message-make-fqdn): Protect against nil user-mail. + +2003-02-28 Vasily Korytov + + * gnus-art.el (gnus-boring-article-headers): New values: + 'to-list and 'cc-list. + +2003-02-28 Teodor Zlatanov + + * spam.el (spam-setup-widening): new function to set + nnimap-split-download-body, we add it to gnus-get-new-news-hook + (spam-list-of-statistical-checks): list of statistical splitter + checks + (spam-split): added a widen call when a statistical check is + enabled + +2003-02-28 Reiner Steib + + * gnus-msg.el (gnus-user-agent): Changed default to + 'emacs-gnus-type, renamed 'full. + +2003-02-28 ShengHuo ZHU + + * nnfolder.el (nnfolder-request-accept-article): Don't use + mail-header-unfold-field. + +2003-02-27 ShengHuo ZHU + + * imap.el (imap-ssl-open): Don't depend on ssl.el. + * nntp.el (nntp-open-ssl-stream): Don't depend on ssl.el. + +2003-02-26 Teodor Zlatanov + + * spam.el: add spam-stat-load to gnus-get-new-news-hook + (spam-split): remove spam-stat-load call + +2003-02-26 Simon Josefsson + + * gnus-sum.el (gnus-summary-toggle-header): Run + gnus-article-decode-hook instead of calling a-decode-encoded-words + directly (the latter is run as part of the former). + +2003-02-26 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-expire-group): Remove debug. + +2003-02-25 Jesper Harder + + * message.el (message-sendmail-envelope-from): New option. + (message-sendmail-envelope-from): New function. + (message-send-mail-with-sendmail): Use it. + +2003-02-25 Reiner Steib + + * gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): Added + compensation for TDMA addresses. + +2003-02-24 Reiner Steib + + * gnus-msg.el (gnus-user-agent): New variable. + (gnus-version-expose-system): Removed. Obsoleted by + `gnus-user-agent'. + (gnus-extended-version): Use `gnus-user-agent'. + +2003-02-24 Teodor Zlatanov + + * spam.el (spam-stat-register-spam-routine, + spam-stat-register-ham-routine): remove spam-stat-save + (spam-stat hook): add spam-stat-save to the gnus-save-newsrc-hook + +2003-02-24 Kevin Greiner + + * gnus-group.el (gnus-topic-mode-p): Fixed free variable + reference. + +2003-02-24 Kevin Greiner + + * nnheader.el (nnheader-find-nov-line): Changed midpoint + calculation to avoid integer overflow. + +2003-02-24 Reiner Steib + + * gnus-start.el (gnus-backup-startup-file): Fixed custom type. + +2003-02-24 Ted Zlatanov + * spam.el: disabled spam-get-article-as-filename + + From Michael Shields + + * gnus-group.el (gnus-group-is-exiting-without-update-p): New. + * gnus-sum.el (gnus-summary-exit-no-update): Use it. + * gnus-sum.el (gnus-summary-expire-articles): Use it. + * spam.el (spam-summary-prepare-exit): Use it. + * gnus.el (gnus-install-group-spam-parameters): New. + * spam.el (spam-group-ham-processor-copy-p): New. + * spam.el (spam-summary-prepare-exit): Support for ham copying. + * spam.el (spam-mark-spam-as-expired-and-move-routine): Fix bug + that would cause the current message to be moved if the group had + no spam. + * spam.el (spam-ham-move-routine): New `copy' argument. + +2003-02-24 Kai Gro,A_(Bjohann + From Martin Thornquist + + * gnus-topic.el (gnus-topic-select-group): Select last group if + after last group. + * gnus-group.el (gnus-group-select-group): Ditto. + +2003-02-24 Katsumi Yamaoka + + * gnus-art.el (popup-menu): Compiler macro for Emacs 20. + (gnus-article-refer-article): Use gnus-point-at-(b|e)ol instead of + point-at-(b|e)ol which aren't available in Emacs 20. + + * gnus-registry.el (puthash): Alias to cl-puthash for Emacs 20. + +2003-02-23 Kevin Greiner + + * gnus-start.el (gnus-activate-group): Re-enabled the catch error + clause of the condition-case statement. Errors connecting to a + server no longer terminate gnus. + + * gnus-agent.el (gnus-agent-toggle-plugged): Renamed parameter to + make its use obvious. Added no-nothing case to avoid + opening(closing) servers when already open(closed). + (gnus-agent-while-plugged): Added macro to facilitate internal use + of gnus-agent-toggle-plugged. + (gnus-agent-fetch-group): Use new gnus-agent-while-plugged to + temporarily open servers. + (gnus-agent-get-undownloaded-list): Sort list of article numbers + as sorting gnus-newsgroup-headers is wrong. + (gnus-agent-summary-fetch-group): Use new gnus-agent-while-plugged + to temporarily open servers. Corrected logic to handle setting + gnus-agent-mark-unread-after-downloaded. + (gnus-agent-fetch-articles): Now handles headers with missing + article sizes and/or missing article lengths. Now clears the + message buffer when finished. + (gnus-agent-fetch-group-1): Position point before calling + gnus-summary-set-agent-mark. + (gnus-get-predicate): Corrected description, parameter is + predicate not category. + (gnus-agent-expire-group): Adapted the gnus-agent-expire-* code to + provide a separate single group expiration function. + (gnus-agent-regenerate-group): Now clears the message buffer when + finished. + +2003-02-23 Kai Gro,A_(Bjohann + + * gnus.el (gnus-agent-target-move-group-header): New variable. + * gnus-draft.el (gnus-draft-send): If special header + "X-Gnus-Agent-Target-Move-Group" is present, do like Gcc into + that group, instead of performing the regular sending functions. + +2003-02-23 Katsumi Yamaoka + + * gnus-xmas.el (gnus-xmas-mime-button-menu): Accept a prefix arg. + +2003-02-20 Reiner Steib + + * message.el (message-user-fqdn, message-valid-fqdn-regexp): New + variables. + (message-make-fqdn): Use it. Improved validity check. + +2003-02-23 Lars Magne Ingebrigtsen + + * message.el (message-user-mail-address): Check whether + user-mail-address looks valid. + + * gnus-msg.el (gnus-mailing-list-followup-to): New function. + + * gnus-util.el (gnus-fetch-original-field): New function. + +2003-02-23 Kai Gro,A_(Bjohann + + * message.el (message-mode): \\(...\\) around additional + paragraph-separate alternative. + +2003-02-23 Jesper Harder + + * gnus-art.el (gnus-mime-button-commands): Add ellipsis. + (gnus-mime-button-menu): Define MIME popup menu with easy-menu to + display key bindings. + (gnus-mime-button-menu): Rewrite. + +2003-02-23 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-button-url-regexp): Removed `. + +2003-02-23 Max Froumentin + + * gnus-art.el (gnus-button-url-regexp): Remove `, enter '. + +2003-02-23 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-mime-action-on-part): Require a match + interactively. + + * gnus-start.el (gnus-save-newsrc-file): Use + gnus-backup-startup-file. + (gnus-backup-startup-file): New variable. + +2003-02-22 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-buffer-name): Moved function here. + + * gnus-draft.el (defun): Remove debug. + +2003-02-22 Jesper Harder + + * gnus-sum.el (gnus-summary-refer-article): Skip method if we + can't open server. + +2003-02-22 Lars Magne Ingebrigtsen + + * gnus-draft.el (defun): Configure posting styles. + + * gnus-start.el (gnus-get-unread-articles-in-group): Make sure + the entry for the group exists before we alter it. + +2003-02-22 Kai Gro,A_(Bjohann + + * message.el (message-mode): MML tags separate paragraphs. Small + change from David S Goldberg . + + * gnus-agent.el (gnus-agent-get-undownloaded-list): Sort + `gnus-newsgroup-headers'. + + * gnus-art.el (gnus-article-refer-article): Grok more message id + formats. From Karl Pfl,Ad(Bsterer . + +2003-02-22 Jesper Harder + + * mm-decode.el (mm-path-name-rewrite-functions): Doc fix: don't + use "path name". + +2003-02-21 Teodor Zlatanov + + * gnus-sum.el (gnus-summary-move-article) + (gnus-summary-expire-articles): send data header for article, not + just article ID + + * gnus-registry.el (gnus-registry-hashtb, gnus-register-action) + (gnus-register-spool-action): added hashtable of message ID keys + with message motion data + +2003-02-21 Florian Weimer + From Reiner Steib . + + * gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): New + variable, used in `gnus-button-mid-or-mail-heuristic'. + (gnus-button-mid-or-mail-heuristic): New function derived from + Florian Weimer's Perl script. + (gnus-button-handle-mid-or-mail): Allow a function instead of + 'guess. + (gnus-button-guessed-mid-regexp): Removed. + +2003-02-20 Katsumi Yamaoka + + * message.el (message-resend): Bind message-setup-hook to nil; + remove X-Draft-From header. + +2003-02-20 Jesper Harder + + * gnus-sum.el (gnus-simplify-subject-fully, gnus-subject-equal) + (gnus-newsgroup-undownloaded) + (gnus-summary-save-parts-default-mime, gnus-auto-select-next): + Doc fixes. + +2003-02-17 John Paul Wallington + + * gnus.el (gnus-shell-command-separator, gnus-email-address) + (gnus-default-charset, gnus-other-frame-parameters): Doc fixes. + +2003-02-20 Jesper Harder + + * gnus-spec.el (gnus-xmas-format): Use insert instead of + insert-string which is obsolete in Emacs 21.4. + + * message.el (message-cross-post-followup-to-header): do. + + * spam.el (spam-ifile-register-with-ifile) + (spam-stat-register-spam-routine) + (spam-stat-register-ham-routine) + (spam-bogofilter-register-with-bogofilter): do. + + * mailcap.el (mailcap-mime-data): Fix typo. + + * gnus-topic.el (gnus-topic-make-menu-bar): Add ellipsis. + +2003-02-19 Reiner Steib + + * gnus-cite.el (gnus-cite-unsightly-citation-regexp) + (gnus-cite-parse): Renamed `gnus-unsightly-citation-regexp' to + `gnus-cite-unsightly-citation-regexp'. + +2003-02-19 Katsumi Yamaoka + + * gnus-msg.el (gnus-copy-article-buffer): Copy an article header + even if there's just a header. + +2003-02-19 Jesper Harder + + * message.el (message-fix-before-sending): Fix highlighting of + illegible and invisible text. + + * gnus-util.el (gnus-multiple-choice): Separate choices with + ",,A (B". Suggested by Dan Jacobson . + +2003-02-18 Jesper Harder + + * gnus-sum.el (gnus-summary-exit-no-update): Use gnus-kill-buffer. + +2003-02-18 Teodor Zlatanov + + * spam.el (spam-ham-move-routine) + (spam-mark-spam-as-expired-and-move-routine): use + gnus-summary-kill-process-mark and gnus-summary-yank-process-mark + around process-mark manipulation on the group + +2003-02-17 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-summary-make-menu-bar): Add MIME/Multipart + submenu. + +2003-02-17 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch): Reverse the return value of + the continuation question. + +2003-02-16 Lars Magne Ingebrigtsen + + * nndraft.el (nndraft-request-move-article): Bind + nnmh-allow-delete-final to t. + +2003-02-14 ShengHuo ZHU + + * mm-uu.el (mm-uu-uu-filename): Fix use of character constant. + +2003-02-11 Stefan Monnier + + * nntp.el (nntp-accept-process-output): Don't use point-max to get + the buffer's size. + +2003-01-31 Joe Buehler + + * nnheader.el: Added cygwin to system-type comparisons. + +2003-01-27 Juanma Barranquero + + * imap.el (imap-mailbox-status): Fix typo. + +2003-02-14 ShengHuo ZHU + + * gnus-art.el (gnus-article-prepare): Don't set agent mark if + online. + +2003-02-14 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-group-make-menu-bar): Include all + commands. + * gnus-sum.el: Small change from Frank Weinberg + : + (gnus-auto-center-group): New variable. + (gnus-summary-read-group-1): Use it. + (gnus-summary-next-group): Fix docstring. + +2003-02-13 Katsumi Yamaoka + + * gnus-util.el (gnus-faces-at): Simplify. + +2003-02-13 Teodor Zlatanov + + * spam.el (spam-ham-move-routine) + (spam-mark-spam-as-expired-and-move-routine): made the article + move conditional, so it's not called even if there's nothing to move + +2003-02-13 Kai Gro,A_(Bjohann + + * message.el (message-unix-mail-delimiter): Accept any whitespace + after the email address and before the date; do not require the + space character. From Kurt B. Kaiser . + +2003-02-13 Katsumi Yamaoka + + * gnus-art.el (gnus-article-only-boring-p): Make sure that the + gnus-article-boring-faces variable is bound; use gnus-faces-at. + + * gnus-util.el (gnus-faces-at): New macro. + +2003-02-13 Michael Shields + + * gnus-cite.el + (gnus-cite-attribution-suffix, gnus-cite-parse): + Better handling for Microsoft citation styles. + (gnus-unsightly-citation-regexp): New. + +2003-02-12 Michael Shields + + * gnus-art.el (article-strip-banner): Strip both per-group and + per-user-address banners. + (article-really-strip-banner): New. + +2003-02-12 Michael Shields + + * gnus-sum.el (gnus-article-goto-next-page, + gnus-article-goto-prev-page): Call gnus-summary-*-page, instead of + relying on the summary bindings of `n' and `p'. + +2003-02-12 Michael Shields + + * gnus-art.el (gnus-article-only-boring-p): New. + (gnus-article-skip-boring): New. + * gnus-cite.el (gnus-article-boring-faces): New. + * gnus-sum.el (gnus-summary-next-page): Use + gnus-article-only-boring-p. + +2003-02-12 Teodor Zlatanov + + * spam.el (spam-mark-spam-as-expired-and-move-routine) + (spam-ham-move-routine): unmark all articles before marking those + of interest and calling gnus-summary-move-article + +2003-02-12 Jesper Harder + + * gnus.el (gnus-kill-buffer): Move to gnus.el because it's + logically the complement of gnus-get-buffer-create and + gnus-add-buffer. + + * gnus-util.el (gnus-kill-buffer): do. + + * nnmail.el: Autoload gnus-kill-buffer. + +2003-02-11 Kevin Greiner + + * gnus-agent.el (gnus-summary-set-agent-mark): Added call to + gnus-summary-goto-subject as gnus-summary-update-mark operates on + the current LINE. + (gnus-agent-summary-fetch-group): Minimized the number of times + that the article is updated in the buffer. + +2003-02-11 Teodor Zlatanov + + * spam.el (spam-ham-move-routine): use the process-mark instead of + gnus-current-article when moving articles + (spam-mark-spam-as-expired-and-move-routine): ditto, use the process-mark + +2003-02-11 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-expire-articles): Recursive. + (gnus-topic-catchup-articles): Ditto. + (gnus-topic-mark-topic): Reverse recursive logic. + +2003-02-11 Jesper Harder + + * gnus-sum.el (gnus-summary-refer-thread): Handle case where + gnus-refer-thread-limit is t. + +2003-02-10 Jesper Harder + + * mm-util.el (mm-mule-charset-to-mime-charset): Use + sort-coding-systems to prefer utf-8 over utf-16. + +2003-02-09 Kevin Greiner + + * gnus-agent.el (gnus-agent-expire-days): + gnus-request-move-article depends on gnus-agent-expire to clean up + the cache after moving the article. Therefore, g-a-e-d can NOT + default to nil or can gnus-agent-expire be disabled by doing so. + If you don't want to run gnus-agent-expire, don't call it. + (gnus-agent-expire): The broken test to disable gnus-agent-expire + when g-a-e-d was NOT nil was removed. + (gnus-agent-article-name): Removed unnecessary input test as + article IDs are always strings. + (gnus-agent-regenerate-group): Added check to protect against + servers that generate absurdly long article IDs. Valid IDs are + less than 10 digits to avoid overflow errors. Fixed logic error + when ensuring that the final article ID is present in the new + alist. + +2003-02-09 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-goto-missing-topic): Just move to the + next line after finding the parent. + +2003-02-08 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bumped. + +2003-02-08 23:23:27 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.15 is released. + +2003-02-08 Michael Welsh Duggan + + * nnmail.el (nnmail-split-it): If a message ends up matching the + same mailbox more than once, it will cause duplicates to appear + in the mailbox. + +2003-02-08 Simon Josefsson + + * gnus-sum.el (gnus-summary-select-article): Remove blink removal + code that only worked under Emacs. + + * pgg-gpg.el (pgg-gpg-process-region): Don't blink. From Satyaki + Das . + +2003-02-08 Jesper Harder + + * gnus-art.el (gnus-article-refer-article): Use + gnus-replace-in-string. + + * gnus-util.el (gnus-map-function): Remove unneeded let-binding. + (gnus-remove-duplicates): do. + +2003-02-07 Teodor Zlatanov + + * gnus-int.el (gnus-internal-registry-spool-current-method): new variable + (gnus-request-scan): set + gnus-internal-registry-spool-current-method to gnus-command-method + before a request-scan operation + + * gnus-registry.el (regtest-nnmail): use + gnus-internal-registry-spool-current-method + +2003-02-07 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch): Typo fix. + +2003-02-07 Teodor Zlatanov + + * nnmail.el (nnmail-spool-hook): new hook + (nnmail-cache-insert): call nnmail-spool-hook + + * gnus-registry.el: new file with examples of using the hooks + + * gnus.el (gnus-registry): added registry customization group + (gnus-group-prefixed-name): improve function to return full group + name optionally + (gnus-group-guess-prefixed-name): shortcut to + gnus-group-prefixed-name, using just the group name + (gnus-group-full-name): always get a group's full name + (gnus-group-guess-full-name): shortcut, using just the group name + + * gnus-sum.el (gnus-summary-article-move-hook) + (gnus-summary-article-delete-hook) + (gnus-summary-article-expire-hook): new hooks + (gnus-summary-move-article, gnus-summary-expire-articles) + (gnus-summary-delete-article): invoke the new hooks + +2003-02-07 Frank Weinberg + + * gnus-art.el (gnus-article-refer-article): Strip leading "news:" + from message-ID + +2003-02-07 Jesper Harder + + * gnus-util.el (gnus-run-hooks): Use save-current-buffer. + +2003-02-07 John Paul Wallington + + * mm-util.el (mm-delete-duplicates, mm-append-to-file) + (mm-write-region, mm-detect-coding-region): Doc fixes. + +2003-02-07 Lars Magne Ingebrigtsen + + * mail-source.el (mail-source-fetch): Ignore errors. + (mail-source-ignore-errors): New variable. + + * gnus-sum.el (gnus-summary-refer-thread): Don't re-fetch current + articles. + + * gnus-msg.el (gnus-version-expose-system): Change default. + +2003-02-07 Vasily Korytov + + * gnus-msg.el (gnus-version-expose-system): New variable. + +2003-02-07 Simon Josefsson + + * mml-sec.el (mml-unsecure-message): Don't use kill-region. Tiny + patch from deskpot@myrealbox.com (Vasily Korytov). + +2003-02-02 Lars Magne Ingebrigtsen + + * gnus-art.el (article-display-face): Get the Face header from + the current buffer. + +2003-02-06 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-view-part-internally): Bind + buffer-read-only to nil. + +2003-02-05 Katsumi Yamaoka + + * gnus-agent.el (gnus-agent-expire-1,2): Pass the dir argument + from g-a-e-1 to g-a-e-2. + +2003-02-05 Teodor Zlatanov + + * spam.el (spam-check-BBDB): no need to regexp-quote the argument + of bbdb-search-simple, use spam-use-BBDB-exclusive + (spam-check-whitelist): use spam-use-whitelist-exclusive + (spam-use-whitelist-exclusive): new variable affecting + spam-use-whitelist + (spam-use-BBDB-exclusive): new variable affecting spam-use-BBDB + +2003-02-05 Simon Josefsson + + * gnus-agent.el (gnus-agent-expire-days): Change default to nil. + (gnus-agent-expire): Don't expire if g-a-e-d is nil. + (gnus-agent-expire): Move most code into gnus-agent-expire-1. + (gnus-agent-expire-1): New. + (gnus-agent-expire-1): Move code into gnus-agent-expire-2. + (gnus-agent-expire-2): New. + +2003-02-05 Jesper Harder + + * gnus-util.el (gnus-delete-if): Rename to gnus-remove-if. + "delete-if" is misleading because it isn't actually destructive. + + * gnus-topic.el (gnus-group-prepare-topics): Use new name. + + * nnmail.el (nnmail-purge-split-history): do. + + * gnus-win.el (gnus-get-buffer-window): do. + + * gnus-sum.el (gnus-simplify-whitespace): Remove unnecessary + let-binding. + (gnus-simplify-all-whitespace): do. + +2003-02-05 Katsumi Yamaoka + + * gnus-delay.el (gnus-delay-article): Fix binding of the + nndraft:delayed group. + +2003-02-04 Teodor Zlatanov + + * gnus.el (spam group parameters): change 'other to 'const in + the group parameter definitions to soothe XEmacs + +2003-02-04 Kai Gro,A_(Bjohann + + * gnus-delay.el (gnus-delay-article): Really create + nndraft:delayed group if it doesn't exist. + +2003-02-04 Jesper Harder + + * gnus-sum.el (gnus-summary-search-article): Speed up by + disabling various visual features while searching. + (gnus-summary-recenter): Test gnus-auto-center-summary first. + +2003-02-03 Jesper Harder + + * spam.el (spam-list-of-checks): Don't quote nil and t in + docstrings. From the elisp manual: + + When a documentation string refers to a Lisp symbol, write + it [..] with single-quotes around it. [..] There are two + exceptions: write t and nil without single-quotes. + + * messcompat.el (message-from-style): do. + + * message.el (message-send-mail): do. + + * gnus-util.el (gnus-use-byte-compile): do. + + * gnus-score.el (gnus-score-lower-thread): do. + + * gnus-int.el (gnus-server-unopen-status): do. + + * gnus.el (gnus-define-group-parameter, gnus-large-newsgroup) + (large-newsgroup-initial, gnus-install-group-spam-parameters): do. + + * gnus-cus.el (gnus-group-customize, gnus-score-parameters) + (gnus-group-parameters): do. + + * gnus-art.el (gnus-article-mime-match-handle-function): do. + + * mm-decode.el (mm-text-html-renderer): do. + +2003-02-02 Katsumi Yamaoka + + * nnheader.el (nnheader-directory-separator-character): Change the + way to compute the dafault value. + +2003-02-02 Jesper Harder + + * gnus-art.el (gnus-button-handle-describe-key): Implement it. + (gnus-button-alist): Fix regexp for describe-key. + (gnus-button-handle-describe-function) + (gnus-button-handle-describe-variable) + (gnus-button-handle-apropos, gnus-button-handle-apropos-command) + (gnus-button-handle-apropos-variable) + (gnus-button-handle-apropos-documentation): Docstring fix. + + * gnus-util.el (gnus-kill-buffer): Use get-buffer. + +2003-02-01 Lars Magne Ingebrigtsen + + * gnus-draft.el (gnus-group-send-queue): Bind gnus-posting-styles + to nil. + + * nnmail.el: Removed gnus-util autoload. + + * gnus.el: Use gnus-prin1-to-string throughout. + + * gnus-util.el (gnus-prin1-to-string): Bind print-length and + print-level. + + * gnus-art.el (article-display-x-face): Removed grey x-face stuff. + (gnus-treat-display-grey-xface): Removed. + + * gnus-fun.el (gnus-grab-cam-face): New. + (gnus-convert-image-to-gray-x-face): Removed. + (gnus-convert-gray-x-face-to-xpm): removed. + (gnus-convert-gray-x-face-region): Removed. + (gnus-grab-gray-x-face): Removed. + + * nnmail.el (nnmail-expiry-wait-function): Doc indent. + +2003-01-31 Jesper Harder + + * gnus-util.el (gnus-kill-buffer): Functions in gnus-util + shouldn't depend on the rest of Gnus, so test if gnus-buffers is + bound. + + * nnmail.el (nnmail-cache-close): Use gnus-kill-buffer. + +2003-01-30 Jesper Harder + + * gnus-cite.el (gnus-cite-reply-regexp, gnus-cite-always-check): + Remove -- these are bogus options which are never used. + +2003-01-29 Jesper Harder + + * gnus-art.el (gnus-article-mode): Use summary tool bar. + +2003-01-27 Teodor Zlatanov + + * spam.el (spam-check-blackholes) + (spam-blackhole-good-server-regex): new variable to skip some IPs + when checking blackholes; use it + (spam-check-bogofilter-headers) + (spam-bogofilter-bogosity-positive-spam-header): new variable, in + case more X-Bogosity is used than just "Yes/No" + (spam-ham-move-routine): semi-fixed, only first article is + properly moved now + +2003-01-27 Jesper Harder + + * gnus-util.el (gnus-kill-buffer): Remove buffer from gnus-buffers + as well. + + * gnus-sum.el (gnus-select-newsgroup): Use gnus-kill-buffer. + + * gnus-score.el (gnus-score-headers, gnus-score-find-bnews): do. + + * gnus-start.el (gnus-save-newsrc-file, gnus-clear-system): do. + + * gnus-bcklg.el (gnus-backlog-shutdown): do. + + * gnus-srvr.el (gnus-server-exit, gnus-browse-exit): do. + +2003-01-26 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-face-encode): New function. + (gnus-convert-png-to-face): Use it. + + * gnus-sum.el (gnus-summary-make-menu-bar): Added M-& to marks. + +2003-01-26 Jesper Harder + + * mm-decode.el (mm-dissection-list): Remove. + (mm-dissect-singlepart): Don't push to mm-dissection-list, it's + only used in mm-remove-all-parts. + (mm-remove-all-parts): Remove it, it's never called. + +2003-01-25 Simon Josefsson + + * gnus-group.el (gnus-group-make-group): Report errors. + + * nnimap.el (nnimap-request-create-group): Ditto. + + * sieve-manage.el (sieve-manage-is-okno): Parse literal strings. + + * sieve.el (sieve-upload): Fix error printing. + + * mm-encode.el (mm-qp-or-base64): Always QP iff + mm-use-ultra-safe-encoding and cleartext PGP. + + * gnus-sum.el (gnus-summary-select-article): Inhibit + redisplay (mainly for secured messages). + + * nnmail.el (nnmail-article-group): Copy body too (but don't + process it). + +2003-01-25 Jesper Harder + + * gnus-art.el (gnus-article-setup-buffer): Reset + gnus-button-marker-list. + +2003-01-25 Lars Magne Ingebrigtsen + + * nntp.el (nntp-read-timeout): Default to using a second delay + under Microsoft Windows. + +2003-01-24 Lars Magne Ingebrigtsen + + * nnheader.el (nnheader-directory-separator-character): New + variable. + +2003-01-24 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-max-fetch-size) + (gnus-agent-article-alist, gnus-agent-get-undownloaded-list) + (gnus-agent-catchup, gnus-agent-summary-fetch-group) + (gnus-agent-fetch-articles, gnus-agent-backup-overview-buffer) + (gnus-agent-flush-cache, gnus-agent-fetch-headers) + (gnus-agent-braid-nov, gnus-agent-load-alist) + (gnus-agent-article-alist-save-format) + (gnus-agent-read-agentview, gnus-agent-save-alist) + (gnus-agent-fetch-group-1, gnus-agent-expire) + (gnus-agent-uncached-articles, gnus-agent-retrieve-headers) + (gnus-agent-regenerate-group): Reformat to keep under eighty + columns. Reword docstrings so that first line is under eighty + chars and a complete sentence. Still need to work on the rear + end of the file, in particular gnus-agent-expire. + +2003-01-24 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agentize): Indent. + + * gnus.el (gnus-version-number): Bumped. + +2003-01-24 20:32:44 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.14 is released. + +2003-01-24 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-summary-prepare-threads): Reset state for %B + before beginning. Tiny patch from Mark Thomas + . + +2003-01-24 Teodor Zlatanov + + * spam.el (spam-check-blackholes, spam-split) + (spam-mark-junk-as-spam-routine, spam-summary-prepare-exit): added + gnus-message calls to show to users what spam.el is doing + +2003-01-24 Jesper Harder + + * gnus-msg.el (gnus-message-replysign) + (gnus-message-replyencrypt): Fix typo. + +2003-01-24 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-mime-security-show-details): Toggle showing + details. + +2003-01-23 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-press-button): let* -> let. + (gnus-mime-security-show-details): Cleaned up. + (gnus-mime-security-press-button): Save excursion. + (gnus-insert-mime-security-button): Clean up. + + * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Doc fix. + + * gnus-async.el (gnus-async-wait-for-article): Don't use a + timeout. + + * nntp.el (nntp-accept-process-output): Removed timeout. + (nntp-read-timeout): New variable. + (nntp-accept-process-output): Use it. + + * gnus-sum.el (gnus-data-find-list): Remove *. + +2003-01-23 Kevin Greiner + + * gnus-sum.el (gnus-summary-first-subject): Fixed bug that I + introduced on 2002-01-22. + (gnus-summary-first-unseen-or-unread-subject): Ditto. + +2003-01-23 Teodor Zlatanov + + * spam.el (spam-check-regex-headers, spam-list-of-checks) + (spam-regex-headers-spam, spam-regex-headers-ham): added spam/ham + checks of incoming mail based on simple header regexp matching + +2003-01-22 Teodor Zlatanov + + * gnus-sum.el (gnus-spam-mark): set to `$' + +2003-01-22 Kevin Greiner + + * gnus-agent.el (gnus-agent-get-undownloaded-list): Now computes + gnus-newsgroup-unfetched, the list of articles whose headers have + not been fetched from the server. + + * gnus-sum.el (gnus-summary-find-next): Removed undownloaded + parameter as it never worked due to a bug. Added check to prevent + selection of any article in the gnus-newsgroup-unfetched list. + (gnus-summary-find-prev): Added check to prevent selection of any + article in the gnus-newsgroup-unfetched list. + (gnus-summary-first-subject): Documented API. Modified + implementation so that constraints are handled independently. + Added check to prevent selection of any article in the + gnus-newsgroup-unfetched list. + (gnus-summary-first-unseen-subject): Updated parameters in + gnus-summary-first-subject call to match new API. + (gnus-summary-first-unseen-or-unread-subject): Ditto. + (gnus-summary-catchup): Do not mark unfetched articles as read. + +2003-01-22 Jesper Harder + + * gnus-art.el (gnus-treat-strip-pgp, gnus-article-hide-pgp-hook): + make-obsolete-variable allows only two arguments in XEmacs and + Emacs 20. + + * gnus-sum.el (gnus-summary-wash-hide-map): Remove + gnus-article-hide-pgp. + (gnus-summary-make-menu-bar): do. + + * gnus-art.el (gnus-treat-strip-pgp): Make obsolete. + (gnus-treatment-function-alist): Remove gnus-treat-strip-pgp and + gnus-article-hide-pgp. + (article-hide-pgp): Remove. + (gnus-article-hide): Remove gnus-article-hide-pgp. + + * gnus.el: Remove gnus-article-hide-pgp + +2003-01-21 Lars Magne Ingebrigtsen + + * message.el (message-required-headers): Doc fix. + +2003-01-21 Teodor Zlatanov + + * spam.el (spam-group-ham-processor-bogofilter-p): fixed bug + (spam-ifile-register-ham-routine, spam-ifile-ham-category): new + option to make ifile a purely binary classifier + +2003-01-21 Lars Magne Ingebrigtsen + + * mml-sec.el (mml-secure-sign-pgpauto): Renamed. + (mml-secure-encrypt-pgpmime): Removed double. + + * gnus-sum.el (gnus-summary-mark-article-as-replied): Added + debugging statements. + +2003-01-21 Andreas Fuchs + + * mml-sec.el (mml-sign-alist): Added pgpauto. + +2003-01-21 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bumped version number. + +2003-01-21 07:15:41 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.13 is released. + +2003-01-21 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-button-url-regexp): Removed |. + + * message.el (message-send-hook): Doc fix. + + * gnus-win.el (gnus-buffer-configuration): Display article + instead of article-copy when `reply'. + +2003-01-21 Jesper Harder + + * gnus.el (gnus-format): Change customize group to gnus. + (gnus-cache): Add link. + (gnus-group-charter-alist): Fix docstring. + +2003-01-20 Jesper Harder + + * mailcap.el (mailcap-print-command): lpr-command might be + unbound in XEmacs. + +2003-01-18 Kevin Greiner + + * gnus-agent.el (gnus-agent-regenerate-group): Added interactive form. + + * gnus-sum.el (gnus-summary-update-article-line): Fixed + calculation of net characters added for use in the gnus-data + structure. + +2003-01-18 Kai Gro,A_(Bjohann + + * nnmail.el (nnmail-process-unix-mail-format): Improve error + message. Suggested by Jari Aalto. + +2003-01-17 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-followup-with-original): Clean up. + (gnus-article-reply-with-original): Ditto. + + * gnus-sum.el (gnus-summary-catchup): Make sure downloadable, + read articles don't become unread. + +2003-01-17 Simon Josefsson + + * gnus-fun.el (gnus-x-face-from-file): + (gnus-face-from-file): Suggest image format in minibuffer prompt. + + * gnus-fun.el (gnus-convert-image-to-x-face-command) + (gnus-convert-image-to-face-command): Doc fix. + +2003-01-17 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-convert-face-to-png): Protect against errors. + +2003-01-17 Jesper Harder + + * gnus-art.el (gnus-mime-print-part): Use mm-save-part-to-file to + avoid encoding problems. + + * mailcap.el (mailcap-ps-command): New variable. + (mailcap-mime-data): Add print entry where applicable. Use + pdftotext on a tty. + +2003-01-16 ShengHuo ZHU + + * gnus-sum.el (gnus-alter-header-function): Add type and group. + +2003-01-16 Simon Josefsson + + * gnus-fun.el (gnus-convert-image-to-x-face-command) + (gnus-convert-image-to-face-command, gnus-x-face-from-file) + (gnus-face-from-file): Doc fix; don't mention image format. + +2003-01-16 Teodor Zlatanov + + * spam.el (spam-get-article-as-filename): new function (unused for now) + (spam-get-article-as-buffer): new function + (spam-get-article-as-string): use spam-get-article-as-buffer + (spam-summary-prepare-exit): fixed bug, noticed by Malcolm Purvis + +2003-01-15 ShengHuo ZHU + + * gnus-agent.el: Don't use `path'. + From the GNU coding standards: + + Please do not use the term ``pathname'' that is used in Unix + documentation; use ``file name'' (two words) instead. We use + the term ``path'' only for search paths, which are lists of + directory names. + + * nnsoup.el (nnsoup-file-name): Ditto. + + * nnmail.el (nnmail-pathname-coding-system): Ditto. + (nnmail-group-pathname): Ditto. + + * nnimap.el (nnimap-group-overview-filename): Ditto. + + * nnheader.el (nnheader-pathname-coding-system): Ditto. + (nnheader-group-pathname): Ditto. + + * nnfolder.el (nnfolder-group-pathname): Ditto. + + * gnus.el (gnus-home-directory): Ditto. + + * gnus-group.el (gnus-group-icon-list): Ditto. + +2003-01-16 Jesper Harder + + * gnus-art.el (gnus-mime-print-part): Use mm-handle-media-type. + + * message.el (message-mode-menu): Use it. + (message-mode-menu): Deactivate "Yank Original" if there's no + reply buffer. + + * messagexmas.el (message-xmas-redefine): Redefine in XEmacs. + + * message.el (message-mark-active-p): New function. + +2003-01-15 Teodor Zlatanov + + * spam.el (spam-use-bogofilter-headers, spam-bogofilter-header) + (spam-bogofilter-database-directory): new variables + (spam-check-bogofilter-headers, spam-check-bogofilter) + (spam-bogofilter-register-with-bogofilter) + (spam-bogofilter-register-spam-routine) + (spam-bogofilter-register-ham-routine) + (spam-group-ham-processor-bogofilter-p): new functions for the new + Bogofilter interface + (spam-summary-prepare-exit): use the new Bogofilter functions + (spam-list-of-checks): added spam-use-bogofilter-headers + (spam-bogofilter-score): rewrote function + (spam-check-bogofilter): optional score parameter, uses + spam-check-bogofilter-headers better + (spam-check-bogofilter-headers): optional score parameter + + * gnus.el (gnus-install-group-spam-parameters): new variable, t by + default, in the gnus-start customization group. Used to disable + the spam-*/ham-* parameters. + (gnus-group-ham-exit-processor-bogofilter): new ham processor + +2003-01-15 Jesper Harder + + * gnus-xmas.el (gnus-xmas-redefine): Use region-exists-p in + XEmacs. + + * gnus-ems.el (gnus-mark-active-p): do. + +2003-01-15 Kevin Ryde + + * gnus.texi (Using MIME): Mention auto-compression-mode with + gnus-mime-copy-part. + +2003-01-15 Lars Magne Ingebrigtsen + + * message.el (message-send): Don't warn about duplicates when + superseding. + +2003-01-15 Simon Josefsson + + * nnimap.el (nnimap-split-download-body): New variable. + (nnimap-split-articles): Use it. + +2003-01-14 Kevin Greiner + + * gnus-agent.el (gnus-agent-check-overview-buffer): This data + integrity checker was incorrectly flagging, and removing, articles + whose article number was negative. + (gnus-agent-fetch-group-1): When executed in the group's summary + buffer, refresh each downloaded line to update the status flag and + font. Preserve the value of gnus-newsgroup-headers so that + gnus-agent-fetch-articles can split the requests by size. + (gnus-agent-expire): Corrected day calculation for when + gnus-agent-expire-days contains a list. + +2003-01-14 Lars Magne Ingebrigtsen + + * gnus-audio.el (gnus-audio-au-player): Use executable-find. + +2003-01-13 Jhair Tocancipa Triana + + * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): Use + /usr/bin/play as default player. + (gnus-audio-play): Added ARG-DESCRIPTOR to prompt for a file to play. + +2003-01-14 Katsumi Yamaoka + + * gnus-msg.el (gnus-inews-add-send-actions): Allow a list of + articles to be marked as well. + +2003-01-14 Kevin Greiner + * gnus-agent.el (gnus-agent-get-undownloaded-list): Include the + fictious headers generated by nnagent (ie. Undownloaded Article + ####) in the list of articles that have not been downloaded. + + * gnus-int.el (): Added require declarations to resolve + compile-time warnings. + (gnus-open-server): If the server status is set to offline, + recursively execute gnus-open-server to open the offline backend + (e.g. nnagent). + +2003-01-14 Jesper Harder + + * gnus-art.el (gnus-article-reply-with-original): Use + gnus-mark-active-p. + (gnus-article-followup-with-original): do. + +2003-01-13 Reiner Steib + + * gnus-sum.el: Removed `(when t ...)' around `gnus-define-keys'. + +2003-01-13 Reiner Steib + + * gnus-score.el (gnus-score-edit-file-at-point): New function. + (gnus-score-find-trace): Bind it to `e' key. Added `q' for quit. + +2003-01-13 Romain FRANCOISE + + * gnus-fun.el (gnus-x-face-from-file): Quote file name. + (gnus-face-from-file): Ditto. + +2003-01-13 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-articles-to-read): Don't just apply + gnus-alter-articles-to-read-function to the unread articles. + +2003-01-13 Reiner Steib + + * deuglify.el (gnus-article-outlook-unwrap-lines) + (gnus-article-outlook-repair-attribution) + (gnus-article-outlook-rearrange-citation): New function names, + renamed from "gnus-outlook-" to "gnus-article-outlook-". Changed + doc-string. + + * gnus-sum.el (gnus-summary-mode-map): Use new function names, + removed `W k' key binding (use `W Y f' instead). + (gnus-summary-make-menu-bar): Use new function names. + +2003-01-13 Simon Josefsson + + * gnus-fun.el (gnus-random-x-face): Doc fix. + (gnus-insert-random-x-face-header): New function. + +2003-01-13 Jesper Harder + + * gnus-sum.el (gnus-summary-make-menu-bar): Deactivate items if + mark is not active. + + * gnus-msg.el (gnus-inews-do-gcc): Comment. + + * gnus-ems.el (gnus-mark-active-p): New function. + + * gnus-group.el (gnus-topic-mode-p): New function. + (gnus-group-make-menu-bar): Show more key bindings in topic mode. + Deactivate items if mark is not active. + +2003-01-12 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bumped version. + (gnus-summary-line-format): Doc fix. + +2003-01-12 22:02:49 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.12 is released. + +2003-01-12 Lars Magne Ingebrigtsen + + * mail-source.el (mail-sources): Removed autoload to make it + compile under XEmacs. + +2003-01-12 Raymond Scholz + + * gnus-msg.el (gnus-confirm-mail-reply-to-news): May be a + regexp or a function too. + (gnus-confirm-treat-mail-like-news): New variable. Ask for + confirmation even if the original article is mail. + +2003-01-12 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-inews-add-send-actions): Get the right + articles to be marked when not yanking. + +2003-01-12 Fran,Ag(Bois-David Collin + + * mm-decode.el (mm-get-part): Use mm-with-unibyte-current-buffer. + +2003-01-12 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-face-from-file): Autoload. + + * gnus-cite.el (gnus-cite-delete-overlays): Protect against more + errors. + +2003-01-12 Simon Josefsson + + * sieve.el (sieve-upload-and-bury): New. Suggested by + kai.grossjohann@uni-duisburg.de (Kai Gro,A_(Bjohann). + + * sieve-mode.el (sieve-mode-map): Bind s-u-a-b to C-c C-c. + Suggested by kai.grossjohann@uni-duisburg.de (Kai Gro,A_(Bjohann). + +2003-01-12 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-ignored-headers): Don't include the ^ and : + in every string. + + * gnus.el (gnus-version-number): Bumped version number. + +2003-01-12 13:46:20 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.11 is released. + +2003-01-12 Jesper Harder + + * message.el (message-fetch-reply-field): Narrow to headers. + + * gnus-msg.el (gnus-inews-do-gcc): Don't try to mark GCC's as read + if Gnus isn't alive. + +2003-01-11 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-group-1): Remove downloadable + marks from articles that are already stored in the agent. + (gnus-agent-backup-overview-buffer): New debug tool. Creates a + backup copy of an invalid .overview file for later analysis. + +2003-01-12 Gregorio Gervasio, Jr. + + * gnus-sum.el (gnus-summary-exit): Reverse change to make group + exit work with two frames. + +2003-01-11 Fran,Ag(Bois-David Collin + + * message.el (message-forward-make-body): Use mule4. + +2003-01-11 Lars Magne Ingebrigtsen + + * message.el (message-mode-map): Move wide-reply command. + +2003-01-10 Reiner Steib + + * deuglify.el (gnus-outlook-deuglify-attrib-verb-regexp): Added + castellano. + (gnus-outlook-display-hook): New variable. + (gnus-outlook-display-article-buffer): New function. + (gnus-outlook-unwrap-lines, gnus-outlook-repair-attribution) + (gnus-outlook-deuglify-article): Made them interactive and added + optional arg. Use `g-o-d-a-b'. + (gnus-article-outlook-deuglify-article): Use `g-o-d-a-b'. + + * gnus-sum.el: Added autoloads. + (gnus-summary-mode-map): Added gnus-summary-wash-deuglify-map. + (gnus-summary-make-menu-bar): Added "(Outlook) Deuglify" menu. + +2003-01-11 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-display-mime): Use the mime emulation + variable. + + * gnus-sum.el (gnus-article-emulate-mime): New variable. + + * gnus-start.el (gnus-read-newsrc-el-file): Make sure that the + newsrc-alist is initialized properly. + + * mail-source.el (mail-sources): Autoload. + + * gnus-sum.el (gnus-summary-make-false-root-always): Default to + nil. + + * gnus-msg.el (gnus-configure-posting-styles): Make sure we don't + insert two newlines. + + * message.el (message-check-news-header-syntax): Compute the + header length correctly. + +2003-01-10 Kevin Greiner + + * gnus-agent.el (gnus-agent-expire): Do not remove article from + alist when keeping fetched article file. + (gnus-agent-retrieve-headers): When parsing response for article + numbers, use the same algorithm as gnus-agent-braid-nov to protect + against garbage in the server's response. + + * gnus-int.el (gnus-request-expire-articles, + gnus-request-move-article): Only expire when the group's server + has been agentized. + +2003-01-10 Lars Magne Ingebrigtsen + + * gnus-cite.el (gnus-cite-delete-overlays): Protect against + errors when deleting overlays. + + * gnus-score.el (gnus-score-followup): Allow tracing. + + * gnus-art.el (gnus-treat-display-face): New variable. + (article-display-face): New command. + + * gnus-fun.el (gnus-face-from-file): New function. + (gnus-convert-face-to-png): Ditto. + + * gnus-art.el (gnus-ignored-headers): Added Face. + +2003-01-10 Simon Josefsson + + * nndraft.el (nndraft-request-group): Avoid crash in + directory-files when draft directory doesn't exists. + + * gnus-sum.el (gnus-select-article-hook): Add :option. + +2003-01-10 Teodor Zlatanov + + * spam.el (spam-use-stat): new variable + (spam-group-spam-processor-stat-p) + (spam-group-ham-processor-stat-p): new convenience functions + (spam-summary-prepare-exit): add spam/ham processors to sequence + (spam-list-of-checks): add spam-use-stat to list of checks + (spam-split): conditionally load the spam-stat tables + (spam-stat-register-spam-routine, spam-stat-register-ham-routine, + spam-check-ifile): new functions + + * spam-stat.el (spam-stat): typo fix + (spam-stat-install-hooks): new variable + (spam-stat-split-fancy-spam-group): added documentation clarification + (spam-stat-split-fancy-spam-threshhold): new variable + (spam-stat-install-hooks): make hooks conditional + (spam-stat-split-fancy): use spam-stat-split-fancy-spam-threshhold + + * gnus.el (gnus-group-ham-exit-processor-stat, spam-process): add + spam-stat ham/spam processor symbols + +2003-01-10 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-read-newsrc-el-file): Make sure the .eld + file exists. + +2003-01-10 Simon Josefsson + + * gnus-sum.el (gnus-summary-read-group-1): Don't select first + undownloaded/downloadable only when unplugged. + +2003-01-10 Jesper Harder + + * gnus-srvr.el (gnus-browse-foreign-server): Optimize inner loop. + +2003-01-09 Teodor Zlatanov + + * spam.el (spam-check-ifile): fixed call-process-region to use the + db parameter only if it's set + (spam-ifile-register-with-ifile): ditto + +2003-01-09 Alex Schroeder + + * spam-stat.el (spam-stat-save): Set spam-stat-ngood and + spam-stat-nbad before creating the hash table. + (spam-stat-reset): Set spam-stat-ngood and spam-stat-nbad to 0. + Changed copyright statement to FSF. + +2003-01-09 Kevin Greiner + + * gnus-agent.el (gnus-agent-catchup): Do not mark cached nor + processable articles as read. + (gnus-agent-summary-fetch-series): Remove processable and + downloadable marks on all downloaded articles in the series. + + * nntp.el (nntp-report): Throw error after reporting the problem. + (nntp-accept-process-output): Corrected error check to report an + error when the process is nil. + +2003-01-09 Simon Josefsson + + * message.el (message-tool-bar-map): Add preview. + +2003-01-09 Jesper Harder + + * mml.el (mml-preview): Get rid of MIME handles and buffers after + previewing. + +2003-01-08 Paul Jarc + + * nnmaildir.el (nnmaildir--grp-add-art): Fix wrong-type-argument + bug when the (n+1)th article to be added to a group has a smaller + number than the n articles already added. + +2003-01-08 Jesper Harder + + * message.el (message-mode-field-menu): Use backquote. + +2003-01-08 Teodor Zlatanov + + * spam.el: fixed the BBDB autoloads again, using + bbdb-search-simple now (which is not a macro, thank god) + + * lpath.el (bbdb-search): removed function from maybe-fbind list + + * gnus.el (ham-process-destination): added new parameter for + destination of ham articles found in spam groups at summary exit + + * spam.el (spam-get-ifile-database-parameter): use spam-ifile-database-path + (spam-check-ifile, spam-ifile-register-with-ifile): use spam-get-ifile-database-parameter + (spam-ifile-database-path): added new parameter for ifile's database + (spam-move-spam-nonspam-groups-only): new parameter to determine + if spam should be moved from all groups or only some + (spam-summary-prepare-exit): fixed logic to use + spam-move-spam-nonspam-groups-only when deciding to invoke + spam-mark-spam-as-expired-and-move-routine; always invoke that + routine after the spam has been expired-or-moved in case there's + some spam left over; use spam-ham-move-routine in spam groups + (spam-ham-move-routine): new function to move ham articles to the + ham-process-destinations group parameter + +2003-01-08 Lars Magne Ingebrigtsen + + * gnus-spec.el (gnus-parse-complex-format): %~ => ~*. + + * gnus-agent.el (gnus-agent-fetch-selected-article): Use + gnus-summary-update-article-line. + +2003-01-08 Simon Josefsson + + * nnmail.el (nnmail-expiry-target-group): Request group, create it + not successful. + +2003-01-08 Katsumi Yamaoka + + * lpath.el (bbdb-records): Fbind it for both Emacs and XEmacs. + +2003-01-07 Teodor Zlatanov + + * spam.el (spam-check-ifile): fixed the spam-ifile-all-categories + logic, finally + +2003-01-08 Lars Magne Ingebrigtsen + + * gnus-spec.el (gnus-parse-format): %C is a complex format. + (gnus-parse-format): Change to %~. + + * message.el (message-generate-headers): Don't generate optional + empty headers. + +2003-01-07 Reiner Steib + + * message.el (message-cross-post-default) + (message-cross-post-note-function, message-shoot-gnksa-feet) + (message-strip-subject-trailing-was, message-change-subject) + (message-mark-insert-file, message-cross-post-followup-to) + (message-cross-post-followup-to, message-mode-map) + (message-generate-unsubscribed-mail-followup-to) + (message-make-mail-followup-to): Minor changes to doc-strings and + error messages. Updated copyright line. + + * message.el (message-make-mail-followup-to, + message-generate-unsubscribed-mail-followup-to): New function + names. Renamed functions: "-mft" -> "-mail-followup-to". + (message-make-mft, message-gen-unsubscribed-mft): Removed function + names. + + * mml.el (mml-preview-insert-mail-followup-to): New function name. + (mml-preview-insert-mft): Removed function name. + (mml-preview): Use new function names. + + * gnus-art.el (gnus-article-edit-mode-map): Use new function names. + + * message.el (message-mode-field-menu): Moved header related + commands from "Message" to "Field" menu. + +2003-01-07 Reiner Steib + + * message.el (message-generate-headers-first): Added customization + if variable is a list. + +2003-01-07 Michael Shields + + * gnus-art.el (gnus-article-next-page): Correctly handle the case + where the last line of the article is the last line of the window. + +2003-01-08 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-debug): Use ignore-errors. + + * gnus-agent.el (gnus-agent-fetch-selected-article): Use + `gnus-summary-update-line'. + +2003-01-08 Simon Josefsson + + * gnus-art.el (gnus-unbuttonized-mime-types) + (gnus-buttonized-mime-types): Doc fix. + +2003-01-08 Jesper Harder + + * mm-decode.el (mm-inline-media-tests): .xpm is 'x-xpixmap'. + +2003-01-07 ShengHuo ZHU + + * nnrss.el (nnrss-group-alist): Add and clear up. + +2003-01-07 Teodor Zlatanov + + * spam.el: removed unnecessary condition-case for loading bbdb-com.el + + * lpath.el (bbdb-search): added BBDB functions for a better way to + fix missing functions + + * spam.el (spam-check-ifile): if should be an unless + + * spam.el: define 'ignore alias for spam-BBDB-register-routine, + spam-enter-ham-BBDB, and bbdb-create-internal initially to hush up warnings + (spam-ifile-all-categories): doc string fixed to be less than 80 chars + +2003-01-07 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-make-menu-bar): Added + gnus-summary-refer-thread to thread menu. + +2003-01-07 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-group-1): When fetching within a + summary buffer, articles that cannot be fetched are marked as + canceled. + + * nntp.el (nntp-with-open-group): The quit signal handler must + propagate the quit signal to the next outer handler so that the + caller knows that the request aborted abnormally. + +2003-01-07 Teodor Zlatanov + + * spam.el (spam-check-ifile, spam-ifile-register-with-ifile) + (spam-ifile-register-spam-routine) + (spam-ifile-register-ham-routine): added ifile functionality that + does not use ifile-gnus.el to classify and register articles + (spam-get-article-as-string): convenience function + (spam-summary-prepare-exit): added ifile spam and ham registration + (spam-ifile-all-categories, spam-ifile-spam-category) + (spam-ifile-path, spam-ifile): added customization options + + * gnus.el (gnus-group-ham-exit-processor-ifile): added ifile ham + exit processor + (spam-process): added gnus-group-ham-exit-processor-ifile to the + list of choices + +2003-01-07 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-followup): Also score immediate + followups. + +2003-01-06 Lars Magne Ingebrigtsen + + * nnweb.el (nnweb-asynchronous-p): Changed to nil. + +2003-01-07 Simon Josefsson + + * message.el (message-mode-menu): Fix receipt balloon help. + +2003-01-07 Jesper Harder + + * gnus-msg.el (gnus-group-post-news): Don't assume that "" will + always be interpreted as news. + +2003-01-07 Simon Josefsson + + * gnus-sieve.el (gnus-sieve-script): Use the crosspost argument to + gnus-sieve-script, instead of the global variable + gnus-sieve-crosspost. One-line patch from Steinar Bang + . + +2003-01-06 Kevin Greiner + + * gnus.el: Renamed gnus-summary-*-uncached-face as + gnus-summary-*-undownloaded-face to avoid confusing the agent with + the cache. + + * gnus-sum.el: Ditto. + +2003-01-06 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-group): Modified to permit execution + in either the group or summary buffer. + New command "JS", in summary buffer, will fetch articles per the + group's category, predicate, and processable flags. + (gnus-agent-summary-fetch-series): Rewritten to call + gnus-agent-session-fetch-group once with all articles in the + series. + (gnus-agent-summary-fetch-group): Fixed bug and modified code to + return list of fetched articles. + (gnus-agent-fetch-articles): Split fetch list into sublists such + that the article buffer is only slightly larger than + gnus-agent-max-fetch-size. Added unwind-protect to ensure that + the group's article alist is saved. + (gnus-agent-fetch-headers): The 'killed' and 'cached' marks no + longer result in the agent trying to fetch an article. + (gnus-agent-fetch-group-1): Can now be called in either the group + or summary buffer. Removed the max-fetch-size code that I added + on 2002-12-13 as that capability is now part of + gnus-agent-fetch-articles. Added code to update summary buffer. + When called in the group buffer, articles that can not be fetched + are AUTOMATICALLY MARKED AS READ. + + * gnus-sum.el (): Modified eval-when-compile to minimize + misleading compilation warnings. + (gnus-update-summary-mark-positions): Changed code to use + gnus-undownloaded-mark rather than gnus-downloaded-mark. + + * nnheader.el (nnheader-insert-nov-file): Do not try to insert an + empty file as the parser assumes that the file isn't empty. + + * nntp.el (nntp-send-string): The process-send-string call can, + because it performs I/O on the process, change the process' state + from open to closed. If this happens, call nntp-report + immediately to report the broken connection. + (nntp-report): Rewritten to avoid needing a global variable to + determine the appropriate course of action. Instead, two function + implementations are provided and the nntp-report function value is + bound to the appropriate implementation. + (nntp-retrieve-data): Moved nntp-report call to end of implementation. + (nntp-with-open-group): Now binds nntp-report's function cell + rather than binding gnus-with-open-group-first-pass. Added a + condition-case to detect a quit during a nntp command. When the + quit occurs, the current connection is closed as a fetch articles + request could have several megabytes queued up for reading. + (nntp-retrieve-headers): Bind articles to itself. If + nntp-with-open-group repeats this command, I must have access to + the original list of articles. + (nntp-retrieve-groups): Ditto for groups. + (nntp-retrieve-articles): Ditto for articles. + (*): Replaced nntp-possibly-change-group calls to + nntp-with-open-group forms in all, but one, occurrance. + (nntp-accept-process-output): Bug fix. Detect when called with + null process. + +2003-01-06 Jesper Harder + + * mm-util.el (mm-find-mime-charset-region): Don't do Latin-9 hack + if we don't need to. + (mm-iso-8859-x-to-15-region): Fix misplaced parenthesis. + +2003-01-06 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-make-web-group): Pass the select + method on to group-create. + (gnus-group-line-format-alist): %U is an integer. + + * gnus-sum.el (gnus-summary-exit-no-update): Don't update + ephemeral groups. + (gnus-summary-read-group-1): Ditto. + (gnus-group-make-articles-read): Ditto. + + * mm-url.el (mm-url-program): Doc fix. + + * message.el (message-mode-map): Rebound + message-insert-wide-reply. + +2003-01-05 Katsumi Yamaoka + + * gnus-xmas.el (gnus-xmas-group-startup-message): Bind the oort + color as `gnus-group-startup-message' does. + +2003-01-05 Teodor Zlatanov + + * spam.el: fixed line lengths to 80 chars or less + + * gnus-sum.el (gnus-read-mark-p): added the spam-mark as a + "not-read" mark + (gnus-summary-mark-forward): added the spam-mark to the list of + marks not to be marked as "read" when viewed + +2003-01-05 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-inews-make-draft): Quote article-reply. + + * gnus-group.el (gnus-number-of-unseen-articles-in-group): + Protect against unactive groups. + + * message.el (message-check-news-header-syntax): Check long + header lines. + (message-check-news-header-syntax): Update `start'. + + * gnus-group.el (gnus-group-expire-articles): Doc fix. + (gnus-group-line-format): %U. + (gnus-group-line-format-alist): ?U. + (gnus-number-of-unseen-articles-in-group): New function. + + * nntp.el (nntp-accept-process-output): Use a 0.1 second timeout. + + * gnus.el (gnus-version-number): Bump version number. + +2003-01-05 01:53:30 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.10 is released. + +2003-01-05 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Fix version number. + +2003-01-05 01:40:09 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.08 is released. + +2003-01-04 Jesper Harder + + * mm-util.el: Add mm-string-make-unibyte. + + * gnus-group.el (gnus-group-jump-to-group): Make it work for + UTF-8 groups. + +2003-01-04 Lars Magne Ingebrigtsen + + * gnus.el (gnus-variable-list): Write gnus-format-specs last. + + * gnus-sum.el (gnus-summary-goto-subjects): Fix typo. + +2003-01-04 Kevin Ryde + + * gnus-art.el (gnus-mime-jka-compr-maybe-uncompress): New + function. + +2003-01-04 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-exit): Bind gnus-group-is-exiting-p. + (gnus-summary-read-group-1): Update group line. + (gnus-summary-exit-no-update): Update group on exit. + + * gnus-group.el (gnus-group-line-format): Add %*. + (gnus-group-line-format-alist): Ditto. + (gnus-group-insert-group-line): Set it. + (gnus-group-is-exiting-p): New variable. + (gnus-group-insert-group-line): Use it. + +2003-01-03 Teodor Zlatanov + + * spam.el (spam-enter-ham-BBDB, spam-BBDB-register-routine): + enable BBDB ham processing + (spam-blacklist-register-routine): enable blacklist spam processing + (spam-whitelist-register-routine): enable whitelist ham processing + (spam-fetch-field-from-fast): fast fetching of the "from" field + from (gnus-data-list) + (spam-summary-prepare-exit): works completely now + (spam-use-blacklist): oops, should be nil by default + (spam-summary-prepare-exit): spam-use-PROCESSOR is only for + split processing now; before it was for summary exit as + well but that's done with the spam-contents and spam-process + parameters now + +2003-01-03 Jesper Harder + + * mml.el (mml-insert-tag): Don't quote non-ASCII unibyte + characters. + +2003-01-02 Teodor Zlatanov + + * spam.el (spam-group-spam-contents-p, spam-group-ham-contents-p) + (spam-group-processor-p, spam-group-processor-bogofilter-p) + (spam-group-processor-ifile-p, spam-group-processor-blacklist-p) + (spam-group-processor-whitelist-p, spam-group-processor-BBDB-p) + (spam-mark-spam-as-expired-and-move-routine) + (spam-generic-register-routine, spam-BBDB-register-routine) + (spam-ifile-register-routine, spam-blacklist-register-routine) + (spam-whitelist-register-routine): new functions + (spam-summary-prepare-exit): added summary exit processing (expire + or move) of spam-marked articles for spam groups; added slots for + all the spam-*-register-routine functions + +2003-01-03 Lars Magne Ingebrigtsen + + * pop3.el (pop3-retr): Wait 500 msecs. + (pop3-read-response): Ditto. + + * gnus-msg.el (gnus-setup-message): Get the evaliation order + right. + (gnus-inews-make-draft): New function. + (gnus-setup-message): Use it. + + * message.el (message-required-headers): Add From. + +2003-01-02 Katsumi Yamaoka + Trivial patch from Norbert Koch . + + * gnus-msg.el (gnus-gcc-externalize-attachments): Fix typo. + +2003-01-02 Lars Magne Ingebrigtsen + + * message.el (message-generate-headers): Let header formatters do + their work. + +2003-01-02 Raymond Scholz + + * deuglify.el (gnus-article-outlook-deuglify-article): + Rehighlight, reapply treatments and call + `gnus-article-prepare-hook'. Suggested by Niels Olof Bouvin. + (gnus-outlook-repair-attribution-block): Recognize cited + attributions. Suggested by Niklas Morberg. + +2003-01-02 Pete Kazmier + + * gnus-art.el (gnus-treat-predicate): Check condition first. + +2003-01-02 Jesper Harder + + * lpath.el: Add url-http-file-exists-p. + + * gnus-group.el (gnus-group-fetch-charter): Use + http://TLH.news-admin.org/charters/GROUPNAME as a fallback. + +2003-01-02 Lars Magne Ingebrigtsen + + * message.el (message-draft-headers): Also generate From to get a + nicer draft buffer summary. + + * gnus-xmas.el (gnus-xmas-read-event-char): Take an optional + parameter. + + * gnus-art.el (article-wash-html): Clean up. + (article-wash-html): Typo fix. + + * gnus-msg.el (gnus-summary-mail-forward): Clean up. + (gnus-summary-mail-forward): To many lists of lists. + + * gnus-art.el (article-wash-html): Clean up. + +2003-01-02 pete-temp + + * gnus-art.el (gnus-treat-wash-html): New variable. + +2003-01-02 Lars Magne Ingebrigtsen + + * message.el (message-check-news-header-syntax): Allow posting. + (message-check-news-header-syntax): Fix logic for sure, this + time. + +2003-01-02 Matthieu Moy + + * message.el (message-check-news-header-syntax): Check syntax of + continuation headers. + +2003-01-02 Reiner Steib + + * gnus-art.el (gnus-button-url-regexp, + (gnus-button-mid-or-mail-regexp, gnus-button-alist, + (gnus-header-button-alist): Regexps are case insensitive here. + +2003-01-02 Simon Josefsson + + * dig.el (query-dig): Doc fix. + +2003-01-02 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetch-selected-article): Update whole + summary buffer line, not just the download mark. + +2003-01-02 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-goto-subjects): New function. + (gnus-summary-insert-dormant-articles): New command and + keystroke. + + * gnus-cache.el (gnus-summary-insert-cached-articles): Use new + function for mass insertion of subjects. + + * nndraft.el (nndraft-generate-headers): Don't move point. + + * gnus.el (nnheader): Require nnheader. + + * nndraft.el (nndraft-request-associate-buffer): Use + make-local-variable. + +2003-01-02 Michael Shields + + * nndraft.el (nndraft-request-associate-buffer): Make + write-contents-hooks buffer-local before setting it. + +2003-01-02 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-parameter-value): Take an extra param. + (gnus-group-fast-parameter): Let group param results be nil. + + * gnus-art.el (gnus-article-forward-header): New function. + (article-date-ut): Use it to remove continuation date headers. + + * gnus-sum.el (gnus-summary-walk-group-buffer): Supply prompt to + read-event. + (gnus-summary-remove-bookmark): Clean up. + (gnus-summary-set-bookmark): Clean up. + + * gnus-util.el (gnus-read-event-char): Take an optional prompt. + + * gnus.el (gnus-group-startup-message): Bind data-directory to + the Gnus etc directory. + +2003-01-01 Teodor Zlatanov + + * spam.el (spam-summary-prepare-exit): added slots for spam- and + ham-processing of articles; use the new + spam-group-(spam|ham)-contents-p functions + (spam-group-spam-contents-p, spam-group-ham-contents-p): new + convenience functions + (spam-mark-junk-as-spam-routine): use the new + spam-group-spam-contents-p function + + * gnus.el (spam-process, spam-contents, spam-process-destination): + added new parameters with corresponding global variables + (gnus-group-spam-exit-processor-ifile, + gnus-group-spam-exit-processor-bogofilter, + gnus-group-spam-exit-processor-blacklist, + gnus-group-spam-exit-processor-whitelist, + gnus-group-spam-exit-processor-BBDB, + gnus-group-spam-classification-spam, + gnus-group-spam-classification-ham): added new symbols for the + spam-process and spam-contents parameters + + * spam.el (spam-ham-marks, spam-spam-marks): changed list + customization and list itself to store mark symbol rather than + mark character. + (spam-bogofilter-register-routine): added logic to generate mark + values list from spam-ham-marks and spam-spam-marks, so (member) + would work. + +2003-01-02 Katsumi Yamaoka + + * message.el (message-cross-post-followup-to): Fix comment. + +2003-01-01 Teodor Zlatanov + + * spam.el (spam-ham-marks, spam-spam-marks): changed list + customization and list itself to store mark symbol rather than + mark character. + (spam-bogofilter-register-routine): added logic to generate mark + values list from spam-ham-marks and spam-spam-marks, so (member) + would work. + +2003-01-01 Raymond Scholz + + * message.el (message-signature-insert-empty-line): New variable. + +2002-12-30 Reiner Steib + + * message.el: Renamed functions and variables: "xpost" -> + "cross-post", "-fup2" -> "-followup-to". + (message-cross-post-old-target, message-cross-post-default, + message-cross-post-note, message-followup-to-note, + message-cross-post-note-function): New variables names. + (message-xpost-old-target, message-xpost-default, + message-xpost-note, message-fup2-note, + message-xpost-note-function): Removed variable names. + (message-cross-post-followup-to-header, + message-cross-post-insert-note, message-cross-post-followup-to): + New function names. + (message-xpost-fup2-header, message-xpost-insert-note, + message-xpost-fup2): Removed function names. + +2002-12-30 Reiner Steib + + * message.el (message-send-mail): Added message-cleanup-headers to + prevent newlines in headers. + +2003-01-01 Lars Magne Ingebrigtsen + + * dns.el (dns-make-network-process): Comment. + + * gnus-sum.el (gnus-summary-display-while-building): Default to + nil. + +2003-01-01 Wes Hardaker + + * gnus-sum.el (gnus-summary-display-while-building): New + variable. + +2003-01-01 Raymond Scholz + + * deuglify.el (gnus-outlook-rearrange-article): Kill overlays + before rearranging the article. + +2003-01-01 Lars Magne Ingebrigtsen + + * nndraft.el (nndraft-generate-headers): New function. + (nndraft-request-associate-buffer): Use it to write headers on + buffer save. + + * message.el (message-generate-headers): Let the function be a + lambda form. + (message-draft-headers): New variable. + + * gnus-msg.el (gnus-inews-make-draft-meta-information): New + function. + (gnus-setup-message): Use it. + + * message.el (message-generate-headers-first): Doc fix. + (message-setup-1): Use new function for getting which headers to + generate. + (message-headers-to-generate): New function. + +2003-01-01 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-save-alist): Make directory. + +2002-12-31 Reiner Steib <4uce.02.r.steib@gmx.net> + + * gnus-sum.el (gnus-summary-limit-to-age): Make prompt string + mention negatives. + +2002-12-31 Raymond Scholz + + * deuglify.el (gnus-outlook-rearrange-article): Use + `transpose-regions' instead of tempering the kill-ring. + (gnus-article-outlook-deuglify-article): Rehighlight article + instead of a complete redisplay. + +2002-12-31 Teodor Zlatanov + + * spam.el: most defvars are defcustoms now + + patches from Michael Shields + + * spam.el (spam-bogofilter-articles): Select the article + body using gnus-summary-show-article t instead of + gnus-summary-select-article; this presents the raw text + without running any hooks. + + * spam.el (spam-bogofilter-articles): Use message-remove-header + to remove headers; the old way incorrectly removed just the first + line of folded headers. + +2002-12-31 Katsumi Yamaoka + + * gnus-start.el (gnus-load): Replace `ding-file' with `file'. + +2002-12-30 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-load): New function. + (gnus-read-newsrc-el-file): Use it. + +2002-12-30 Reiner Steib + + * gnus-art.el (gnus-button-valid-fqdn-regexp): New variable. + (gnus-button-handle-apropos-documentation): New function. + (gnus-button-handle-ctan): New function. + (gnus-button-alist): Use them. Improve some regexps. + (gnus-button-prefer-mid-or-mail): Addition to doc-string. + +2002-12-30 Reiner Steib + + * message.el (message-subscribed-p): New function. + (message-send-mail): Use it. + * mml.el (mml-preview-insert-mft): New function. + (mml-preview): Use it. + +2002-12-30 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-thread-latest-date): Protect against errors + when sorting by date. + + * gnus-art.el (gnus-article-edit-mode): New variable. + (gnus-article-setup-buffer): Warn user about discarding edits. + + * gnus-sum.el (gnus-summary-pipe-output): Clean up. + (gnus-summary-pipe-output): Take a symbolic prefix to save all + headers. + + * mm-uu.el (mm-uu-configure-list): Default to (shar . disabled). + +2002-12-30 Reiner Steib + + * message.el (message-completion-alist): Added "Mail-Followup-To" + and "Mail-Copies-To". + +2002-07-21 Jesper harder + + * gnus-group.el: Add key bindings for + gnus-group-sort-groups-by-real-name and + gnus-group-sort-selected-groups-by-real-name. + +2002-07-21 Jesper harder + + * gnus.texi (Sorting Groups): Add key bindings for + gnus-group-sort-groups-by-real-name and + gnus-group-sort-selected-groups-by-real-name. + +2002-12-30 Teodor Zlatanov + + * spam.el (spam-use-dig): new variable for blackhole checking + through dig.el + (spam-check-blackholes): added dig.el checking functionality and + more verbose reporting; query-dig is autoloaded from dig.el + (spam-use-blackholes): disabled by default + (spam-blackhole-servers): removed rbl.maps.vix.com from the + blackhole servers list + +2002-12-30 Lars Magne Ingebrigtsen + + * message.el (message-required-headers): New variable. + +2002-12-30 Teodor Zlatanov + + * dig.el (query-dig): new function + +2002-12-30 Lars Magne Ingebrigtsen + + * flow-fill.el (fill-flowed): Don't infloop on too long fill + prefixes. + + * dns.el (query-dns): Protect against errors. + + * gnus-msg.el (gnus-article-yanked-articles): New variable. + (gnus-inews-add-send-actions): Mark all answered messages as + answered. + +2002-08-10 Jari Aalto + + * nnmail.el (nnmail-split-it): Added tracing to + `:' split rule + +2002-08-13 Hrvoje Niksic + + * mm-decode.el (mm-mailcap-command): Remove the quotes around '%s' + and "%s" so we don't overquote them. + +2002-08-13 Hrvoje Niksic + + * (mm-display-external): Display the actual command that has been + executed in the echo area. + +2002-12-29 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-display-missing-topic): Bind entry. + + * message.el (message-with-reply-buffer): New macro. + (message-fetch-reply-field): Use it. + (message-insert-wide-reply): New command and keystroke. + (message-carefully-insert-headers): New function. + (message-insert-to): Use new function. + + * gnus-topic.el (gnus-topic-display-missing-topic): New function. + (gnus-topic-goto-missing-group): Use it. + + * message.el (message-required-news-headers): Removed Lines. + (message-reply): Don't insert References first. + (message-followup): Ditto. + (message-make-references): New function. + (message-followup): Set message-reply-headers before generating + the buffer stuff. + +2002-12-29 Jesper Harder + + * mml.el (mml-generate-mime-1): Reverse the order of + encoding/flowing. + +2002-12-29 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-expiry-target-group): Mark articles as read + after moving them. + + * gnus-sum.el (gnus-summary-dummy-line-format): Update format to + fit with newer standard format. + (gnus-summary-make-false-root-always): New variable. + (gnus-gather-threads-by-subject): Use it. + + * message.el (message-get-reply-headers): Take an address list + optional argument. + +2002-12-28 Lars Magne Ingebrigtsen + + * gnus.el (gnus-keep-backlog): Change default to 20. + + * gnus-agent.el (gnus-agent-check-overview-buffer): Start from + start. + (gnus-agent-check-overview-buffer): Remove negative article + numbers. + + * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups): Doc fix. + (nnmail-cache-ignore-groups): Doc fix. + + * nnimap.el (nnimap-debug): Made into a flag and defcustomed. + (nnimap-debug-buffer): New variable. + (nnimap-debug): Use it. + +2002-12-28 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-high-uncached-face): New color scheme. + +2002-12-28 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-check-overview-buffer): Sort lines if + they aren't already sorted. + +2002-12-28 Jesper Harder + + * message.el (message-mode-menu): Add ellipses to menu items + expecting user interaction. + (message-mode-field-menu): do. + +2002-12-26 Jesper Harder + + * gnus-sum.el (gnus-summary-highlight-line): Don't bind `list' -- + it isn't used any more. + +2002-12-22 Jesper Harder + + * binhex.el (binhex-decoder-program): Fix docstring. + +2002-12-21 Kai Gro,A_(Bjohann + + * mm-decode.el (mm-mailcap-command): Do not backslash-quote + special chars if the mailcap file uses single quotes around %s. + From Laurent Martelli . + +2002-12-19 Paul Jarc + + * gnus-int.el (gnus-request-update-info): nnchoke-r-u-i might not + return the info object. + +2002-12-18 Paul Jarc + + * gnus-int.el (gnus-request-update-info): Artificially add + (1 . (1- min)) to the read range, in case the backend doesn't + store marks for nonexistent articles. + +2002-12-17 Katsumi Yamaoka + + * binhex.el (binhex-insert-char): Eval-and-compile. + +2002-12-17 Jesper Harder + + * lpath.el: Add tool-bar-local-item-from-menu. + + * message.el (message-tool-bar-local-item-from-menu): New function. + (message-tool-bar-map): Use it. + +2002-12-14 Jesper Harder + + * gnus-uu.el (gnus-uu-digest-headers): Mention nil value in docstring. + + * gnus-art.el (gnus-article-header-rank): Last header in + gnus-sorted-header-list should have higher rank than non-members. + +2002-12-13 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-close-agent): Don't blank out the list of + covered methods. + +2002-12-12 Kai Gro,A_(Bjohann + + * nntp.el (nntp-with-open-group-first-pass): Do not wrap in + eval-when-compile. Suggested by Kevin Greiner. + +2002-12-13 Kevin Greiner + + * gnus-agent.el (gnus-agent-max-fetch-size): New, defcustom. + (gnus-agent-fetch-headers): Initialize gnus-agent-overview-buffer + even though no headers may have been fetched + (gnus-agent-fetch-group-1, and perhaps others, require this + behavior). + (gnus-agent-fetch-group-1): Fetch articles in chucks so that the + server buffer is constrained by gnus-agent-max-fetch-size. + Multiple chunks in the same group may perform arbitrarily large + updates. + +2002-12-12 Kevin Greiner + + * gnus-agent.el (gnus-agent-fetch-selected-article): Added call to + gnus-summary-update-download-mark to update the article in the + summary. + +2002-12-11 Kevin Greiner + + * gnus.el (gnus-summary-high-uncached-face, + gnus-summary-normal-uncached-face, gnus-summary-low-uncached-face) + New faces. + + * gnus-agent.el (gnus-agent-downloaded-article-face): REMOVED. I + added this on 2002-11-23 but it just wasn't working out as + intended. The idea isn't entirely dead, three new faces + gnus-summary-*-uncached-face are being added to gnus.el to provide + the basis for an improved implementation. + (gnus-agent-read-servers): Undo the change made on 2002-11-23. The + proper file to open is lib/servers. + (gnus-summary-set-agent-mark): Expanded documentation. Unmarking + (i.e. removing the article from gnus-newsgroup-downloadable) will + now restore the article's default mark rather than simply setting + no mark. + (gnus-agent-get-undownloaded-list): Corrected documentation. + Added code to set new summary local variable, + gnus-newsgroup-agentized. Reworked impl so that it doesn't create + a temporary list. No longer sets gnus-newsgroup-downloadable. + (gnus-agent-summary-fetch-group): Keep gnus-newsgroup-undownloaded + up to date. Call new gnus-summary-update-download-mark to keep + summary buffer up-to-date. + (gnus-agent-fetch-selected-article): Keep + gnus-newsgroup-undownloaded up to date. + (gnus-agent-fetch-articles): Return list of articles that were + successfully fetched. + (gnus-agent-check-overview-buffer): No more thingatpt. + (gnus-agent-expire): No longer deletes NOV entries of unread + articles. + (gnus-agent-unread-articles): New function. + (gnus-agent-regenerate-group): The article number must be + terminated by a tab character. Added more messages to report + repairs. Inhibit quits while writing changes so it is now safe + have to quit regeneration. Renamed gnus-tmp-downloaded back to + downloaded to 1) resolve the unbound references and 2) avoid + confusing this list with the gnus-tmp-downloaded in gnus-sum.el + + * gnus-art.el (gnus-article-prepare): The agent + downloaded/undownloaded mark is no longer stored as the article's + mark. + + * gnus-salt.el (gnus-tree-highlight-node): Added uncached as + gnus-summary-highlight may use it. Added downloaded as + gnus-summary-highlight was using it. + + * gnus-sum.el (gnus-undownloaded-mark): Changed from ?@ to ?- as + the download mark now follows Kai's +/- convention. + (gnus-downloaded-mark): Added ?+ mark. + (gnus-summary-highlight): Added rules to select + gnus-summary-high-uncached-face, + gnus-summary-normal-uncached-face, and + gnus-summary-low-uncached-face. Removed the + gnus-agent-downloaded-article-face. + (gnus-summary-line-format-alist): Implemented the download flag + format (?O) as named in the manual. This implementation displays + either gnus-undownloaded-mark, gnus-downloaded-mark, or + gnus-no-mark. + (gnus-newsgroup-agentized): New local variable that identifies + which groups are agentized. While the agent is now on by default, + you don't have to agentize every server that you use. + (gnus-update-summary-mark-positions): Completed support for the + download type of mark. + (gnus-summary-insert-line): Added undownloaded to the parameters. + (gnus-summary-prepare-threads): Set gnus-tmp-downloaded for + reference by the gnus-summary-line-format-spec. + + * nntp.el (nntp-with-open-group): This macro handles dropped or + broken connections by opening a new connection and repeating the + failed command. + (nntp-retrieve-headers-with-xover): Some NNTP servers respond to + XOVER commands preceeding the active articles with the nov entry + of the first available article. When gnus connected to such a + server, the unexpected nov entry would result in duplicate lines + in the agent's overview file. This patch fixes the duplicate + lines problem and improves performance by skipping over all + articles IDs that preceed the first nov entry in the server's + reply. + +2002-12-11 Katsumi Yamaoka + + * gnus-sum.el (gnus-tmp-downloaded): New internal variable. + (gnus-summary-highlight): Use it instead of `downloaded'. + (gnus-summary-highlight-line): Ditto. + + * gnus-agent.el (gnus-agent-regenerate-group): Ditto. + +2002-12-11 Lars Magne Ingebrigtsen + + * gnus.el (gnus-variable-list): Add gnus-agent-covered-methods. + + * gnus-agent.el (gnus-agent-check-overview-buffer): Remove debug + calls. + + * gnus-sum.el (gnus-summary-highlight-line): Don't set the + downloaded variable if we're in an uncovered group. + + * gnus-agent.el (gnus-agent-downloaded-article-face): Change the + font to soemthing less noticeable. + (gnus-agent-group-covered-p): New function. + +2002-12-09 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-braid-nov): Remove corrupted lines. + Because of an unknown bug, the group buffer is saved in .overview + file. + +2002-12-09 Kai Gro,A_(Bjohann + + * nntp.el (nntp-send-command): Braino in last commit. Replace + `and' with `or'. + +2002-12-08 Kai Gro,A_(Bjohann + + * nntp.el (nntp-send-command): Assume that echo does not happen + when nntp-open-connection-function is nntp-open-network-stream. + Suggested by Sebastian D.B. Krause . + +2002-12-07 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-retrieve-headers-1): Update the parser. + +2002-12-06 Paul Jarc + + * nnmaildir.el (nnmaildir-request-group): bugfix: don't erase + nntp-server-buffer if we aren't going to write to it. + +2002-12-04 Katsumi Yamaoka + Trivial patch from Itai Zukerman . + + * mm-decode.el (mm-w3m-safe-url-regexp): Fix parenthesis. + +2002-12-04 Katsumi Yamaoka + + * rfc2047.el (rfc2047-decode-region): Remove newlines between + decoded words. + +2002-12-03 Kai Gro,A_(Bjohann + + * gnus.el (fboundp): After loading mm-util, make sure it was the + right one. + +2002-11-29 Kai Gro,A_(Bjohann + + * gnus-art.el (gnus-inhibit-mime-unbuttonizing): Moved here from + gnus-sum. Made into a user option. + + * gnus-sum.el (gnus-simplify-ignored-prefixes) + (gnus-summary-mark-article-as-unread) + +2002-11-29 ShengHuo ZHU + + * time-date.el (date-to-time): Typo. + + * parse-time.el: Typo. + + * nnsoup.el (nnsoup-retrieve-headers): Typo. + + * nnmail.el (nnmail-split, nnmail-process-unix-mail-format): Typos. + + * nnimap.el: + (nnimap-split-rule, nnimap-find-minmax-uid): Typos. + + * mm-encode.el (mm-safer-encoding): Typo. + + * messcompat.el: Typo. + + * message.el (message-face-alist): Typo. + + * imap.el (imap-interactive-login, imap-open): Typos. + + * ietf-drums.el (ietf-drums-text-token, ietf-drums-qtext-token): Typos. + + * gnus.el: Typo. + + * gnus-win.el (gnus-configure-frame): Typo. + + * gnus-util.el (gnus-atomic-progn-assign): Typo. + + * gnus-topic.el (gnus-topic-sort-topics): Typo. + + * gnus-sum.el (gnus-summary-article-number) + (gnus-summary-read-group-1, gnus-summary-mark-article) + (gnus-summary-fetch-faq, gnus-refer-article-methods): Typos. + + * gnus-mule.el (gnus-mule-add-group): Typo. + + * gnus-mlspl.el (gnus-group-split-fancy): Typo. + + * gnus-group.el (gnus-group-fetch-faq): Typo. + + * gnus-art.el (gnus-decode-header-methods): Typo. + + * flow-fill.el: Typo. + +2002-11-19 Stefan Monnier + + * binhex.el (binhex-decode-region): Don't hardcode point-min == 1. + +2002-11-29 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-simplify-ignored-prefixes) + (gnus-summary-mark-article-as-unread) + (gnus-mark-article-as-unread, gnus-summary-highlight-line): + Reformatting to avoid long lines. + (gnus-inhibit-mime-unbuttonizing): Moved to gnus-art. + +2002-11-28 Daiki Ueno + + * gnus-agent.el (gnus-agent-fetch-group-1): Article numbers should + be accessed through `mail-header-number'. + +2002-11-27 Kevin Greiner + + * gnus-sum.el (gnus-summary-insert-old-articles): No longer passes + compressed range to gnus-summary-insert-articles. + +2002-11-26 Kevin Ryde + + * gnus-art.el (gnus-mime-copy-part): Look for filename + parameter under content-disposition, not content-type. + + * gnus-sum.el (gnus-summary-find-uncancelled): New function. + (gnus-summary-reselect-current-group): Use it. + +2002-11-26 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-uncached-articles): if + gnus-agent-load-alist fails, return ARTICLES. + + * nnrss.el (nnrss-group-alist): Update the link of Jabber. + +2002-11-26 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-summary-insert-old-articles): Remove + superfluous function call. + (gnus-summary-catchup-all, gnus-summary-catchup-all-and-exit): + Add warning to docstring. + +2002-11-26 Katsumi Yamaoka + + * gnus-agent.el: Autoload number-at-point instead. + (gnus-agent-check-overview-buffer): No warning for deactivate-mark. + +2002-11-26 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-check-overview-buffer): Explicitly + require thingatpt (for number-at-point) and protect against + deactivate-mark being unbound (on XEmacs). + +2002-11-25 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-check-overview-buffer): Make debugger + print message on entry. + + From Kevin Greiner . + + * gnus-range.el (gnus-range-difference): New function. + * gnus-sum.el (gnus-summary-insert-old-articles): Use it. + +2002-11-24 Kai Gro,A_(Bjohann + + * gnus-sum.el (gnus-summary-insert-old-articles): Use + gnus-remove-from-range instead of gnus-range-difference which + doesn't exist. + +2002-11-23 Kai Gro,A_(Bjohann + From Kevin Greiner . + + * gnus-agent.el (gnus-agent-downloaded-article-face): New face, + used for showing which articles have been downloaded. + (gnus-agent-article-alist): Format change. Add documentation. + (gnus-agent-summary-mode-map): New keybinding `J s' for fetching + process-marked articles. + (gnus-agent-summary-fetch-series): Command for `J s'. Articles + in the series are individually fetched to minimize lose of + content due to an error/quit. + (gnus-agent-synchronize-flags-server, gnus-agent-add-server): Use + gnus-message instead of message. + (gnus-agent-read-servers): Use file lib/methods instead of + lib/servers. TODO: Why? + (gnus-summary-set-agent-mark): Adapt to new agent-alist format. + (gnus-agent-get-undownloaded-list): Remove articles that appear to + come from the agent. This means that they are not downloaded. + (gnus-agent-fetch-selected-article): Don't use history. + (gnus-agent-save-history, gnus-agent-enter-history) + (gnus-agent-article-in-history-p, gnus-agent-history-path): + Removed function; history is not used anymore. + (gnus-agent-fetch-articles): Fix handling of crossposted articles. + (gnus-agent-crosspost): Started rewrite then realized that a typo + in gnus-agent-fetch-articles ensures that this function is never + called. This will need to be fixed later. + (gnus-agent-check-overview-buffer): Some sanity checks on the + agent overview buffer. This is a safety net used during + development. + (gnus-agent-flush-cache): The gnus-agent-article-alist format has + changed, write a number to the file indicating this. + (gnus-agent-fetch-headers): Rewrite to respect + gnus-agent-consider-all-articles without relying on the + `.fetched' files. Make it fast. + (gnus-agent-braid-nov): Change resulting from + gnus-agent-fetch-headers change. + (gnus-agent-load-alist, gnus-agent-save-alist): Don't use + `.fetched' files. + (gnus-agent-read-agentview): New function, used by + gnus-agent-load-alist. + (gnus-agent-load-fetched-headers): Remove. + (gnus-agent-save-alist): Rewrite to accomodate new format. + (gnus-agent-fetch-group-1): Make sure list of articles is in the + same order as in gnus-newsgroup-headers. + (gnus-agent-expire): Document and implement extra args ARTICLES, + GROUP, FORCE. Do not restrict usage. + (gnus-agent-uncached-articles): New function. + (gnus-agent-retrieve-headers): Use it. + (gnus-agent-regenerate-group): No longer needs to be called from + gnus-agent-regenerate. Individual groups may be regenerated. The + regeneration code now fixes duplicate, and mis-ordered, NOV entries. + The article fetch dates are validated in the article alist. The + article alist is pruned of entries that do not reference existing + NOV entries. All changes are computed then applied with + inhibit-quit bound to t. As a result, it is now safe to quit out of + regeneration. The optional clean parameter has been replaced with + an optional reread parameter. Clean is no longer necessary as + regeneration gets the appropriate setting from + gnus-agent-consider-all-articles. The new reread parameter will + result in fetched, or all, articles being marked as unread. + (gnus-agent-regenerate): Removed code to regenerate the history + file as it is no longer used. + + * gnus-start.el (gnus-make-ascending-articles-unread): New + function, for efficient mass-marking. + + * gnus-sum.el (gnus-summary-highlight): Use new face for + downloaded articles. + (gnus-article-mark): Prefer to indicate read/unread status over + downloaded status. + (gnus-summary-highlight-line-0): New function, maybe rehighlights + line. + (gnus-summary-highlight-line): Use new face for downloaded + articles. + (gnus-summary-insert-old-articles): Improved performance by + replacing the initial LIST of older articles with a compressed + RANGE of older articles. Some servers appear to lie about + their active range so the original list could contain millions + of article numbers. The range is not expanded into a list + until the optional ALL parameter has been applied. + +2002-11-18 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-category-mode): Typo in doc string. + +2002-11-21 Teodor Zlatanov + + * spam.el: + added patch from Andreas Fuchs to prevent apply errors + + * spam.el: added `M s t' and `M s x' key mappings + +2002-11-20 Simon Josefsson + + * gnus-sum.el (gnus-summary-morse-message): Narrow to body. + +2002-11-19 Simon Josefsson + + * gnus-sum.el (gnus-summary-morse-message): Load + morse.el (unmorse-region not autoloaded in Emacs 20 nor XEmacs). + (unmorse-region): Autoload it instead. + +2002-11-18 Simon Josefsson + + * gnus-sum.el (gnus-summary-morse-message): New function. + (gnus-summary-wash-map): Bind to `W m'. + (gnus-summary-make-menu-bar): Add. + + * nnimap.el (nnimap-request-expire-articles): Compress sequence + before storing \Deleted mark on expired articles. + +2002-11-17 Shenghuo Zhu + Trivial patch from Markus Rost + + * gnus-sum.el (gnus-summary-goto-unread): Doc fix - escape open + parens in column 0. + +2002-11-17 Juanma Barranquero + + * nnweb.el (nnweb-google-create-mapping): Fix typo. + + * nnlistserv.el (nnlistserv-kk-create-mapping): Likewise. + + * gnus-nocem.el (gnus-nocem-liberal-fetch): Likewise. + +2002-11-17 ShengHuo ZHU + + * message.el (message-set-auto-save-file-name): Use + make-directory, to avoid the dependence on gnus-util. + +2002-11-16 Simon Josefsson + + * nnimap.el (nnimap-callback-callback-function): + (nnimap-callback-buffer): Removed, these cannot be global but must + be embedded into the callback. + (nnimap-make-callback): New. Embedd article number, callback and + buffer in function. + (nnimap-callback, nnimap-request-article-part): Update. + +2002-11-15 Katsumi Yamaoka + + * mml.el (mml-preview): Bind message-this-is-mail if it is mail. + +2002-11-13 Kai Gro,A_(Bjohann + + * gnus.el (gnus-summary-line-format): Document %C. + +2002-11-11 Simon Josefsson + + * pgg.el (pgg-encrypt, pgg-decrypt, pgg-sign, pgg-verify): Display + output when called interactively. + +2002-11-08 Katsumi Yamaoka + + * gnus-art.el (gnus-article-edit-exit): Kill local variables. + + * message.el (message-draft-coding-system): Improve comment; use + mm-auto-save-coding-system for the default value. + + * nndraft.el (nndraft-request-article): Revert to the state before + 2002-10-29; regexp-quote mail-header-separator. + +2002-11-06 Jesper Harder + + * gnus-draft.el (gnus-draft-setup): Set gnus-message-group-art to + allow editing of drafts from an nnvirtual group. + +2002-11-06 Katsumi Yamaoka + + * nndraft.el (nndraft-request-article): Replace emacs-mule with + mm-auto-save-coding-system. + + * message.el (message-draft-coding-system): Default to + iso-2022-7bit. + + * mm-util.el (mm-auto-save-coding-system): Undo last change to + restore the default value to emacs-mule or escape-quoted. + +2002-11-05 Katsumi Yamaoka + + * gnus-art.el (gnus-article-encrypt-body): Inhibit encrypting of + a delayed or a queued article as well as a draft. + + * gnus-sum.el (gnus-summary-edit-article): Inhibit editing of a + delayed or a queued article in the raw format; treat a delayed + article as a raw article as well as a draft. + (gnus-summary-setup-default-charset): Clear gnus-newsgroup-charset + for the delayed group. + + * nndraft.el (nndraft-request-article): Ignore auto save files for + a delayed or a queued article; don't bother to decode a queued + article; don't bind nnmail-file-coding-system for a queued article. + + * nnmail.el (nnmail-split-fancy-with-parent): Ignore the delayed + and the queue group. + +2002-11-04 Jesper Harder + + * gnus-group.el (gnus-group-delete-group): + gnus-cache-active-hashtb might be void. + +2002-11-02 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-encrypt-region): Makes PGG respect the + setting of the default user ID. From Raymond Scholz + . + +2002-11-01 Jesper Harder + + * mm-bodies.el (mm-body-encoding): Don't return 8bit for 7bit + charset. + +2002-10-31 Ted Zlatanov + From Alex Schroeder + * spam-stat.el (spam-stat-process-directory): add dir to message + (spam-stat-reduce-size): No longer remove words + with values close to 0.5, because the default value is 0.2. + +2002-10-31 Kai Gro,A_(Bjohann + + * gnus-util.el (gnus-user-date-format-alist): Clarify and correct + documentation. + +2002-10-28 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetched-headers) + (gnus-agent-load-fetched-headers) + (gnus-agent-save-fetched-headers): Remove variable and two + functions. Kevin Greiner's version of gnus-agent-fetch-headers + works better. + (gnus-agent-fetch-headers): New implementation from Kevin + Greiner. Uses gnus-agent-article-alist to store information + about fetched messages which aren't on the server anymore. The + trick is to return a list of considered messages to the caller, + but to only fetch those which haven't been fetched yet. + +2002-10-30 Simon Josefsson + + * pgg-def.el (pgg-passphrase-cache-expiry): New, defcustom. + + * pgg.el (pgg-passphrase-cache-expiry): Removed. + +2002-10-30 TSUCHIYA Masatoshi + + * mm-view.el (mm-w3m-local-map-property): Make it work with older + versions of emacs-w3m than 1.3.3. + + * lpath.el: Bind w3m-minor-mode-map. + + * mm-view.el (mm-w3m-mode-command-alist) + (mm-w3m-mode-dont-bind-keys, mm-w3m-mode-ignored-keys): Removed. + (mm-w3m-mode-map): Undefined for Emacs21 and XEmacs. + (mm-setup-w3m): Simplified. + (mm-w3m-local-map-property): New function. + (mm-inline-text-html-render-with-w3m): Use it. + + * gnus-art.el (gnus-article-wash-html-with-w3m): Use + mm-w3m-local-map-property. + +2002-10-29 Katsumi Yamaoka + + * mm-util.el (mm-auto-save-coding-system): Default to + iso-2022-7bit. + + * nndraft.el (nndraft-request-article): Decode an article using + the coding-system emacs-mule if it seems to have been saved using + emacs-mule. + (nndraft-request-replace-article): Use message-draft-coding-system + instead of mm-auto-save-coding-system for the draft or delayed + group. + +2002-10-28 Josh + + * mml.el (mml-mode-map): Fixed keybindings for mml-secure-* + functions. + +2002-10-28 Katsumi Yamaoka + From mah@everybody.org (Mark A. Hershberger). + + * mm-url.el (mm-url-insert-file-contents): Make it return the same + type values ("url" size) regardless of the values of + mm-url-use-external. + +2002-10-26 Kai Gro,A_(Bjohann + + * nnimap.el (nnimap-request-article-part): Try harder to show + group name in debugging message. + +2002-10-25 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-save-fetched-headers): Create + directory if it doesn't exist. + (gnus-agent-fetch-headers): Remove old cruft that tried to + abstain from downloading articles more than once if + gnus-agent-consider-all-articles was true. This is now done + properly via the .fetched files. + +2002-10-25 Katsumi Yamaoka + + * nndraft.el (nndraft-request-article): Treat delayed articles + like drafts. + +2002-10-24 Katsumi Yamaoka + + * gnus-agent.el (gnus-agent-load-alist): Fix parenthesis. + +2002-10-24 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-save-alist, gnus-agent-load-alist): + Remove unused optional arg DIR and corresponding code. + + * nnimap.el (nnimap-request-article-part): Include group name in + debugging output. + +2002-10-24 Paul Jarc + + * gnus-agent.el (gnus-agent-fetch-headers): Add some comments. + +2002-10-23 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetched-headers): New variable, + contains range of headers that have been fetched by the agent + already. Compare gnus-agent-article-alist. + (gnus-agent-file-header-cache): Like + gnus-agent-file-loading-cache, but for gnus-agent-fetched-headers. + (gnus-agent-fetch-headers): Improve comment. Revert to old + seen/recent logic. + Remember which headers have been fetched before and don't fetch + them again the next time round. + (gnus-agent-load-fetched-headers) + (gnus-agent-save-fetched-headers): New functions, for remembering + which headers have been fetched before. + +2002-10-23 Katsumi Yamaoka + + * lpath.el: Remove useless bindings. + +2002-10-22 Jesper Harder + + * gnus-sum.el (gnus-summary-execute-command): Disable visual + features while searching. + +2002-10-22 TSUCHIYA Masatoshi + + * pgg.el (pgg-snarf-keys): Do not refer unbinded local variables. + +2002-10-22 Simon Josefsson + + * pgg.el (pgg-encrypt, pgg-decrypt, pgg-sign, pgg-verify) + (pgg-snarf-keys): Add. + +2002-10-22 Katsumi Yamaoka + + * lpath.el: Fbind bbdb-records. + + * spam.el: Don't autoload bbdb-records. + +2002-10-22 Katsumi Yamaoka + + * spam.el: Set autoload for bbdb-records after loading bbdb-com to + prevent inf-loop. + +2002-10-22 Lars Magne Ingebrigtsen + + * nnslashdot.el: Removed some test lines. + More test. + +2002-10-21 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetch-headers): Remove articles that + are known to be downloaded already. + +2002-10-21 Lars Magne Ingebrigtsen + + * mm-view.el (mm-text-html-renderer-alist): Add w3m-standalone. + (mm-text-html-washer-alist): Ditto. + +2002-10-19 TSUCHIYA Masatoshi + + * nnheader.el (nnheader-remove-body): Fix an error of detecting + boundary between headers and body. + * nnml.el (nnml-parse-head): Ditto. + +2002-10-20 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-generate-active): Ignore any bogus + entries. + + * gnus-group.el (gnus-fetch-group): Allow an optional + specification of the articles to select. + + * gnus-srvr.el (gnus-server-prepare): Removed superfluous cdr. + +2002-10-20 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetch-group-1): After fetching + headers from the group, update variable `articles' to contain + only those numbers where headers exist. (When fetching all + articles in a group, Gnus creates lots of numbers where there is + no articles.) + +2002-10-20 Steve Youngs + + * pgg-parse.el (pgg-parse-public-key-algorithm-alist): XEmacs + doesn't have the 'alist custom type, use cons cells instead. + (pgg-parse-symmetric-key-algorithm-alist): Ditto. + (pgg-parse-hash-algorithm-alist): Ditto. + (pgg-parse-compression-algorithm-alist): Ditto. + (pgg-parse-signature-type-alist): Ditto. + + * pgg-gpg.el (pgg-gpg-extra-args): Fix custom mismatch. + + * pgg-pgp5.el (pgg-pgp5-extra-args): Ditto. + + * pgg-pgp.el (pgg-pgp-extra-args): Ditto. + +2002-10-19 Simon Josefsson + + * nnimap.el (nnimap-open-server): Check imap-state in IMAP server + buffer. + +2002-10-18 Kai Gro,A_(Bjohann + + * gnus-spec.el (gnus-make-format-preserve-properties) + (gnus-xmas-format, gnus-parse-simple-format): Preserve text + properties also on XEmacs. `gnus-xmas-format' is like format but + preserves text properties on XEmacs (though it only understands + simple format specs). The variable + `gnus-make-format-preserve-properties' controls whether the + function is used, and is checked in `gnus-parse-simple-format'. + Patch by Paul Moore . + + * gnus-agent.el (gnus-agent-fetch-articles): More debugging + output. + (gnus-agent-consider-all-articles): New variable. + (gnus-agent-get-undownloaded-list): Comment that marks todo item. + (gnus-agent-fetch-headers): Depending on + gnus-agent-consider-all-articles, maybe get all articles. + (gnus-category-predicate-alist, gnus-agent-read-p): New predicate + `read'. + (gnus-predicate-imples-unread): New function. + (gnus-agent-fetch-headers): Optimize to call + gnus-list-of-unread-articles if that is sufficient. + Check unseen and recent instead of seen and recent. + (gnus-agent-fetch-headers): Abstain from calling + gnus-list-range-intersection if range (a . b) would have (> a b). + +2002-10-18 Katsumi Yamaoka + + * message.el (message-send-mail): Make it possible to perform + edebug-defun. + +2002-10-18 Simon Josefsson + + * gnus-art.el (gnus-button-man-handler): Change default to + `manual-entry' (defined in both emacsen). + (gnus-button-man-handler): Remove emacsen difference and use + `manual-entry'. + +2002-10-18 Katsumi Yamaoka + + * spam.el: Wrap autoload settings for bbdb-records, + executable-find and ifile-spam-filter with eval-and-compile. + (spam-display-buffer-contents): Remove. + (spam-bogofilter-score): Merge spam-display-buffer-contents. + +2002-10-17 Ted Zlatanov + + * spam.el (spam-display-buffer-contents): New function. + (spam-bogofilter-score): use spam-display-buffer-contents, patch + from Katsumi Yamaoka . + +2002-10-17 TSUCHIYA Masatoshi + + * nnheader.el (nnheader-parse-naked-head): New function. + (nnheader-parse-head): Use the above function, in order to handle + continuation lines properly. + (nnheader-remove-body): New function. + (nnheader-remove-cr-followed-by-lf): New function. + (nnheader-ms-strip-cr): Use the above function. + + * gnus-agent.el (gnus-agent-regenerate-group): Call + `nnheader-remove-body'; use `nnheader-parse-naked-head' instead of + `nnheader-parse-head'. + * gnus-cache.el (gnus-cache-possibly-enter-article): Ditto. + + * gnus-msg.el (gnus-inews-yank-articles): Do not unfold + continuation lines by itself; call `nnheader-parse-naked-head' + instead of `nnheader-parse-head'. + * nndiary.el (nndiary-parse-head): Ditto. + * nnfolder.el (nnfolder-parse-head): Ditto. + * nnimap.el (nnimap-retrieve-headers-progress): Ditto. + * nnmaildir.el (nnmaildir--update-nov): Ditto. + * nnml.el (nnml-parse-head): Ditto. + +2002-10-17 Steve Youngs + + * gnus-art.el (gnus-button-man-handler): Add 'manual-entry' for + XEmacs, default to it if featurep 'xemacs. + +2002-10-16 Katsumi Yamaoka + + * spam-stat.el: Check for the existence of hash functions instead + of the Emacs version to decide whether to load cl. Suggested by + Kai Gro,A_(Bjohann. + +2002-10-15 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetch-selected-article): Open history + if it isn't open yet. + +2002-10-14 Katsumi Yamaoka + + * gnus-group.el: Require mm-url only when compiling. + (gnus-group-fetch-charter): Require mm-url. + + * spam-stat.el: Require cl for the functions gethash, + hash-table-count, make-hash-table and mapc for Emacs 20. + (puthash): Alias to cl-puthash for Emacs 20. + (with-syntax-table): New macro for Emacs 20. + +2002-10-12 Jesper Harder + + * gnus-spec.el (gnus-pad-form): Use gnus-string-width-function. + +2002-10-11 Ted Zlatanov + + * spam.el (spam-check-ifile): added ifile as a spam checking + backend, and spam-use-ifle as the variable to toggle that check. + +2002-10-12 Simon Josefsson + + * message.el (message-beginning-of-line): New variable. + (message-beginning-of-line): Use it. + +2002-10-11 Ted Zlatanov + + * spam.el: more compilation fixes for BBDB + + * spam-stat.el added code from Alex Schroeder + (spam-stat-reduce-size): Interactive. + (spam-stat-reset): New function. + (spam-stat-save): Interactive. + +2002-10-11 Katsumi Yamaoka + + * gnus.el: Autoload gnus-delay-initialize. + + * message.el: Autoload gnus-delay-article. + +2002-10-11 Jesper Harder + + * gnus-spec.el (gnus-balloon-face-function): Use the help-echo + text property in Emacs. + +2002-10-11 Simon Josefsson + + * mml2015.el (mml2015-pgg-decrypt, mml2015-pgg-clear-decrypt) + (mml2015-pgg-verify, mml2015-pgg-clear-verify): Remove CR. + + * mml1991.el (mml1991-pgg-sign): Remove CR. + +2002-10-10 Simon Josefsson + + * mml2015.el (mml2015-pgg-decrypt): Set gnus details even when + decrypt failed. + (mml2015-trust-boundaries-alist): Removed. + (mml2015-gpg-extract-signature-details): Don't use it. + (mml2015-unabbrev-trust-alist): New. + (mml2015-gpg-extract-signature-details): Use it. + +2002-10-10 Ted Zlatanov + + * spam.el: compilation fixes, spam-check-bbdb function is nil if no + BBDB installed + + * spam-stat.el: added code from Alex Schroeder to do + statistical analysis of spam in Lisp only + +2002-10-10 Simon Josefsson + + * nnimap.el (nnimap-open-server): Re-open server if it isn't in + auth, selected or examine state. + + * pgg-gpg.el (pgg-gpg-verify-region): Filter out stuff into output + buffer and error buffer depending on type of information. + + * mml2015.el (mml2015-gpg-extract-signature-details): Parse + --status-fd stuff even if gpg.el is not used (revert earlier + change). + (mml2015-pgg-{clear-,}verify): Store both output and errors as + gnus details. + (mml2015-pgg-{clear-,}verify): Extract signature info from errors + buffer. + + * pgg.el (pgg-verify-region): Use it. + + * pgg-def.el (pgg-query-keyserver): New variable. + + * pgg.el (pgg-decrypt-region): Bind pgg-default-user-id to + key-identifier in packet. Is this a good idea? + + * mml.el (mml-mode-map): Add security commands that operates on + MIME parts. + (mml-menu): And menu items for them. + + * mml1991.el (mml1991-pgg-encrypt): Remove headers. + + * mml.el (mml-parse-1): Support sender in #secure tags. + + * mml1991.el (mml1991-pgg-sign): Only use message-sender if it is + defined. + + * mml-sec.el (mml-smime-encrypt-buffer): Warn about combined signing. + (mml-pgp-encrypt-buffer): Support combined signing. + + * mml1991.el (mml1991-mailcrypt-encrypt): Support combined signing. + (mml1991-gpg-encrypt): Ditto. + (mml1991-pgg-encrypt): Ditto. + (mml1991-encrypt): Pass sign parameter. + + * mml-sec.el (mml-signencrypt-style-alist): Defcustom. + (mml-signencrypt-style): Mention the variable. + +2002-10-09 Simon Josefsson + + * mml1991.el (mml1991-pgg-sign): Bind pgg-default-user-id, not + pgg-gpg-user-id. + + * pgg.el (pgg-insert-url-with-w3): Ignore errors. + (pgg-fetch-key-function): Nil if w3 is not installed. + +2002-10-08 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetch-selected-article): Bind + gnus-agent-current-history. + +2002-10-06 Simon Josefsson + + * imap.el (imap-parse-status): Don't use read to read token. + +2002-10-05 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-fetch-selected-article): Do nothing + for methods not covered by the agent, and when unplugged. + +2002-10-05 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-encrypt-region): Query passphrase when + signing. + + * gnus-agent.el (gnus-agent-read-servers): If getting method from + a named server fails, ignore the server. + + * mml1991.el (mml1991-pgg-sign): Do QP. + + * pgg-gpg.el (pgg-gpg-encrypt-region): Make signencrypt really + work. + +2002-10-04 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-encrypt-region): Make signencrypt work. + + * pgg-pgp.el (pgg-pgp-verify-region): Inline + binary-write-decoded-region from MEL. + + * pgg.el (pgg-encrypt-region): Support sign. + + * pgg-gpg.el (pgg-gpg-encrypt-region): Ditto. + + * mml2015.el (mml2015-pgg-encrypt): Ditto. + + * pgg.el, pgg-def.el, pgg-parse.el, pgg-gpg.el, pgg-pgp5.el, + pgg-pgp6.el: Moved from ../pgg/. Modifications compared to EMIKO + branch where PGG was taken from in the ChangeLog entries below. + +2002-10-01 Simon Josefsson + + * pgg-pgp.el: Don't require mel. Don't use luna. + (pgg-scheme-pgp-instance, pgg-make-scheme-pgp): Remove. + (pgg-pgp-process-region): Use expand-file-name instead of concat. + (pgg-pgp-process-region): Don't use binary-funcall. + + * pgg-pgp5.el (pgg-pgp5-process-region): Don't use binary-funcall. + + * pgg-gpg.el (pgg-gpg-process-region): Use expand-file-name + instead of concat. + + * pgg-pgp5.el (pgg-pgp5-process-region): Ditto. + +2002-09-29 Simon Josefsson + + * pgg-parse.el (pgg-char-int, pgg-string-as-unibyte): Prevent byte + compile warnings. + + * pgg.el (pgg-decrypt-region): Don't parse packet. + + * pgg.el, pgg-gpg.el, pgg-pgp5.el: Don't depend on luna.el. + +2002-09-29 Daiki Ueno + + * pgg.el: Remove dependency on calist.el. + +2002-09-28 Simon Josefsson + + * pgg.el (pgg-temporary-file-directory): New variable. + (pgg-verify-region): Don't assume set-buffer-multibyte exists. + + * pgg-pgp5.el (pgg-pgp5-process-region, pgg-scheme-verify-region) + (pgg-scheme-snarf-keys-region): Use pgg-temporary-file-directory. + + * pgg-parse.el (pgg-char-int): Defalias. + (pgg-format-key-identifier, pgg-byte-after, pgg-read-byte) + (pgg-read-bytes, pgg-read-body): Use it. + (pgg-decode-packets): Don't use MEL, use base64-*. + (pgg-parse-armor): Don't assume set-buffer-multibyte exists. + (pgg-string-as-unibyte): Defalias. + (pgg-parse-armor-region): Use it. + + * pgg-gpg.el (pgg-gpg-process-region): Use + pgg-temporary-file-directory. + + * luna.el: Don't def-edebug. + + * pgg-pgp5.el (pgg-scheme-verify-region): Inline + binary-write-decoded-region from MEL. + + * pgg-pgp5.el, pgg-gpg.el: Don't require mel. + + * alist.el, calist.el: Don't require product/APEL. + + * pgg-parse.el (top-level): Remove dependency on static.el, + pccl.el, mel.el. + (pgg-parse-crc24, pgg-parse-crc24-string): Only define if + `define-ccl-program' is boundp, instead of using broken. + +2002-10-01 Simon Josefsson + + * message.el (message-required-mail-headers): Remove Lines:. + +2002-10-03 Kai Gro,A_(Bjohann + From Jesper Harder. + + * gnus-group.el (gnus-group-fetch-charter, + gnus-group-fetch-control): Prompt for group if given a prefix + argument. + * gnus-sum.el (t): Add gnus-group-fetch-charter and + gnus-group-fetch-control to summary key map and menu. + +2002-10-03 Paul Jarc + + * nnmaildir.el (nnmaildir--group-maxnum-art): fix maximum article + number when there are no articles. + +2002-10-03 Kai Gro,A_(Bjohann + + * gnus-agent.el (gnus-agent-summary-fetch-group): Optional prefix + arg ALL means to fetch all articles, not only downloadable ones. + (gnus-agent-fetch-selected-article): New function for + gnus-select-article-hook or gnus-mark-article-hook. + +2002-10-02 Katsumi Yamaoka + From Peter von der Ahe . + + * gnus-ems.el (gnus-x-splash): Set coding-system-for-read to + raw-text. + +2002-09-30 Ted Zlatanov + + * spam.el: merged changes from pinard@iro.umontreal.ca (Fran,Ag(Bois + Pinard). + Major revamp of the code, documentation is in comments in the file + for now. + +2002-09-30 Simon Josefsson + + * mml2015.el (mml2015-pgg-clear-verify): Verifying in a unibyte + buffer seem to be needed? + +2002-09-29 Simon Josefsson + + * mml1991.el (pgg-output-buffer, pgg-errors-buffer): Prevent byte + compile warnings. + + * mml1991.el (mml1991-function-alist): Add pgg. + (mml1991-pgg-sign, mml1991-pgg-encrypt): New functions. + (mml1991-pgg-encrypt): Fix recipients querying. + +2002-09-28 Simon Josefsson + + * mml2015.el (autoload): Autoload correct files. Trivial patch + from dme@dme.org. + (mml2015-pgg-decrypt, mml2015-pgg-verify): Make sure either nil or + handle is returned. + +2002-09-27 Katsumi Yamaoka + + * gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news): + Protect against non-existent of `nnimap-mailbox-info'. + +2002-09-27 Simon Josefsson + + * gnus-start.el (gnus-fixup-nnimap-unread-after-getting-new-news): New. + (gnus-setup-news-hook): Use it. + (gnus-after-getting-new-news-hook): Ditto. + + * nnimap.el (nnimap-fixup-unread-after-getting-new-news): Remove. + +2002-09-27 Katsumi Yamaoka + From Mats Lidell . + + * gnus-art.el (gnus-article-mode-syntax-table): Replace "-" to " ". + +2002-09-27 TSUCHIYA Masatoshi + + * gnus-sum.el (gnus-nov-parse-line): When an error is signaled in + the part to decode encoded words, use raw words instead of decoded + words. + +2002-09-26 ShengHuo ZHU + + * nnimap.el (nnimap-update-unseen): Use gnus-gethash-safe. + + * mm-view.el (mm-w3m-mode-ignored-keys): New variable. + (mm-setup-w3m): Use it. + +2002-09-27 Simon Josefsson + + * gnus-art.el (gnus-article-mode-syntax-table): Make M-. work in + article buffers. + + * nnimap.el (nnimap-fixup-unread-after-getting-new-news): Autoload + it just in case. + (nnimap-update-unseen): New function; update unseen count in + `n-m-info'. + (nnimap-close-group): Call it. + + * gnus-start.el (gnus-setup-news-hook): Add n-f-u-a-g-n-n. + (gnus-after-getting-new-news-hook): Ditto. + + * nnimap.el (nnimap-retrieve-groups): Move the quick mail check + message into verboselevel 9. Change slow mail check message. + (nnimap-retrieve-groups): Use prefixed names in n-mailbox-info. + (nnimap-fixup-unread-after-getting-new-news): New function, to be + used as a hook after getting new mail. + +2002-09-26 Simon Josefsson + + * imap.el (imap-parse-resp-text-code): The UNSEEN value in + SELECT/EXAMINE is first unseen article, not number of unseen + articles. Make them distinct by renaming the former to + `first-unseen' instead of `unseen'. + + * nnimap.el (nnimap-retrieve-groups): Get uidvalidity and unseen + too. + (nnimap-retrieve-groups): Don't used cached data if uidvalidity + changed. + (nnimap-retrieve-groups): Store uidvalidity and unseen data too. + + * gnus-int.el (gnus-server-unopen-status): Defcustom. + + * mml-sec.el (mml-signencrypt-style): Docstring to font-lock + better. + + * mml2015.el (mml2015-pgg-decrypt): Only add security information + if dissecting resulting buffer actually had any information. + +2002-09-26 Katsumi Yamaoka + + * gnus-group.el (gnus-group-sort-by-method): Remove `symbol-name' + because the function `string<' allows symbols. + + * gnus-sum.el (gnus-summary-make-menu-bar): Ditto. + +2002-09-25 ShengHuo ZHU + + * message.el (message-forward-make-body): Revert an early change + because 8-bit utf-8 emails. + +2002-09-25 Bj,Av(Brn Torkelsson + + * gnus-agent.el (gnus-category-line-format): Doc fixes (mostly added + links to Info) + * gnus-art.el (gnus-treat-highlight-signature): + * gnus-art.el (gnus-treat-buttonize): + * gnus-art.el (gnus-treat-buttonize-head): + * gnus-art.el (gnus-treat-emphasize): + * gnus-art.el (gnus-treat-strip-cr): + * gnus-art.el (gnus-treat-unsplit-urls): + * gnus-art.el (gnus-treat-leading-whitespace): + * gnus-art.el (gnus-treat-hide-headers): + * gnus-art.el (gnus-treat-hide-boring-headers): + * gnus-art.el (gnus-treat-hide-signature): + * gnus-art.el (gnus-treat-fill-article): + * gnus-art.el (gnus-treat-hide-citation): + * gnus-art.el (gnus-treat-hide-citation-maybe): + * gnus-art.el (gnus-treat-strip-list-identifiers): + * gnus-art.el (gnus-treat-strip-pgp): + * gnus-art.el (gnus-treat-strip-pem): + * gnus-art.el (gnus-treat-strip-banner): + * gnus-art.el (gnus-treat-highlight-headers): + * gnus-art.el (gnus-treat-highlight-citation): + * gnus-art.el (gnus-treat-date-ut): + * gnus-art.el (gnus-treat-date-local): + * gnus-art.el (gnus-treat-date-english): + * gnus-art.el (gnus-treat-date-lapsed): + * gnus-art.el (gnus-treat-date-original): + * gnus-art.el (gnus-treat-date-iso8601): + * gnus-art.el (gnus-treat-date-user-defined): + * gnus-art.el (gnus-treat-strip-headers-in-body): + * gnus-art.el (gnus-treat-strip-trailing-blank-lines): + * gnus-art.el (gnus-treat-strip-leading-blank-lines): + * gnus-art.el (gnus-treat-strip-multiple-blank-lines): + * gnus-art.el (gnus-treat-unfold-headers): + * gnus-art.el (gnus-treat-fold-headers): + * gnus-art.el (gnus-treat-fold-newsgroups): + * gnus-art.el (gnus-treat-overstrike): + * gnus-art.el (gnus-treat-display-xface): + * gnus-art.el (gnus-treat-display-smileys): + * gnus-art.el (gnus-treat-from-picon): + * gnus-art.el (gnus-treat-mail-picon): + * gnus-art.el (gnus-treat-newsgroups-picon): + * gnus-art.el (gnus-treat-body-boundary): + * gnus-art.el (gnus-treat-capitalize-sentences): + * gnus-art.el (gnus-treat-fill-long-lines): + * gnus-art.el (gnus-treat-play-sounds): + * gnus-art.el (gnus-treat-translate): + * gnus-art.el (gnus-treat-x-pgp-sig): + * gnus-art.el (gnus-mime-button-line-format): + * gnus-art.el (gnus-button-man-level): + * gnus-art.el (gnus-button-emacs-level): + * gnus-cus.el (gnus-group-parameters): + * gnus-gl.el (bbb-build-mid-scores-alist): + * gnus-group.el (gnus-group-line-format): + * gnus-mlspl.el (gnus-group-split-setup): + * gnus-mlspl.el (gnus-group-split): + * gnus-msg.el (gnus-mailing-list-groups): + * gnus-msg.el (gnus-posting-styles): + * gnus-nocem.el (gnus-nocem-issuers): + * gnus-score.el (gnus-score-regexp-bad-p): + * gnus-srvr.el (gnus-server-line-format): + * gnus-topic.el (gnus-topic-line-format): + * gnus.el (gnus-summary-line-format): + * mail-source.el (mail-sources): + * message.el (message-subscribed-address-file): + * nnmail.el (nnmail-split-fancy): + +2002-09-24 Evgeny Roubinchtein + + * mail-source.el(mail-source-run-script): use `functionp' to test + whether the argument `script' is in fact a function. + (mail-sources): adjust the defcustom to allow users to specify a + function or a string as the value of the `:prescript' and + `:postscript' arguments of the `file' and `pop3' mail sources. + +2002-09-25 Paul Jarc + + * nnmaildir.el (nnmaildir--grp-add-art): fix minimum article + number when article 1 does not exist. + +2002-09-25 Kai Gro,b_(Bjohann + + * gnus-art.el (gnus-button-handle-apropos-variable): Fall back to + apropos if apropos-variable does not exist. + (gnus-button-guessed-mid-regexp) + (gnus-button-handle-describe-prefix, gnus-button-alist): Better + regexes. From Reiner Steib. + (gnus-button-handle-describe-function) + (gnus-button-handle-describe-variable): Doc fix. From Reiner Steib. + (gnus-button-handle-describe-key, gnus-button-handle-apropos) + (gnus-button-handle-apropos-command): Doc fix. From Reiner Steib. + +2002-09-25 Mark A. Hershberger + Trivial patch. + + * nnrss.el (nnrss-save-server-data): Save nnrss-group-alist in + the file. + +2002-09-24 ShengHuo ZHU + + * gnus-start.el (gnus-1): Create nndraft:queue, nndraft:drafts. + +2002-09-24 Simon Josefsson + + * mml2015.el (top-level): Require mm-util for mm-make-temp-file. + (mml2015-use): Prefer PGG if installed. + (mml2015-function-alist): Add PGG wrappers. + (mml2015-gpg-extract-signature-details): Check mml2015-use too. + (mml2015-gpg-extract-signature-details): PGG strips "gpg: " + prefix, make regexp optionally skip it. + (mml2015-pgg-decrypt, mml2015-pgg-clear-decrypt) + (mml2015-pgg-verify, mml2015-pgg-clear-verify, mml2015-pgg-sign) + (mml2015-pgg-encrypt): New functions. + (defvar, autoload): Prevent byte-compile warnings. + +2002-09-24 Katsumi Yamaoka + From TSUCHIYA Masatoshi . + + * gnus-art.el (article-strip-banner): Check for the existence of + from header. + +2002-09-23 Kai Gro,b_(Bjohann + + * gnus-art.el (gnus-button-guessed-mid-regexp): Improved regexp. + (gnus-button-alist): Improved regexp for + gnus-button-handle-mid-or-mail (false positives), fixed + gnus-button-handle-man entries. + From Reiner Steib. + +2002-09-23 Paul Jarc + From Josh Huber. + + * nnmaildir.el (nnmaildir--update-nov): fix wrong-type error when + nnmail-extra-headers is non-nil. + +2002-09-23 Paul Jarc + + * nnmaildir.el: Store article numbers persistently. General + revision. + (nnmaildir-request-expire-articles): handle 'immediate and 'never + for nnmail-expiry-wait; delete instead of moving if 'force is + given. + +2002-09-23 Simon Josefsson + Trivial fix from beaker@iavmb.pl (Krzysztof J,Bj(Bdruczyk). + + * smime.el (smime-sign-buffer): Get key and extra certs. + (smime-get-key-with-certs-by-email): Utility function. + +2002-09-21 ShengHuo ZHU + Trivial patch from Micha Wiedenmann + + * gnus-soup.el (gnus-soup-add-article): Mark as read only when the + article exists. + +2002-09-20 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-next-group): Switch to the summary buffer. + +2002-09-20 Kai Gro,b_(Bjohann + From Reiner Steib. + + * gnus-art.el (gnus-button-handle-custom, + gnus-button-handle-mid-or-mail, + gnus-button-handle-describe-{function,variable,key}, + gnus-button-handle-apropos{,command,variable}): New functions. + (gnus-button-prefer-mid-or-mail,gnus-button-guessed-mid-regexp, + gnus-button-{man,emacs,mail}-level): New variables. + (gnus-button-alist): Use the above to buttonize emacs and mail + related links. + +2002-09-18 Juanma Barranquero + + * gnus-int.el (gnus-status-message): Fix spacing. + + * imap.el (imap-continuation): Fix typos. + +2002-09-18 ShengHuo ZHU + + * gnus-msg.el (gnus-configure-posting-styles): Sort results. + + * gnus-art.el (gnus-article-reply-with-original): Correct + with-current-buffer scope. + + * message.el (message-completion-alist): Add Reply-To, From, etc. + +2002-09-18 Simon Josefsson + + * nnimap.el (nnimap-request-expire-articles): Make flag setting + conditional. From Nevin Kapur . + +2002-09-17 Simon Josefsson + + * nnimap.el (nnimap-expiry-target): Don't search for which + articles exists here. + (nnimap-request-expire-articles): Do it here instead. Only expire + when articles are found. Suggested by Nevin Kapur + . + +2002-09-17 Kai Gro,A_(Bjohann + From Reiner Steib . + + * message.el (message-strip-subject-trailing-was) + (message-change-subject, message-add-archive-header) + (message-xpost-fup2-header, message-xpost-insert-note) + (message-xpost-fup2, message-reduce-to-to-cc): New functions + adopted from message-utils.el. Add functions to the keymap, mode + describtion and menu. + (message-change-subject,message-xpost-fup2): Signal error if + current header is empty. + (message-xpost-insert-note): Changed insert position. + (message-archive-note): Ensure to insert note in message body (not + in head). + (message-archive-header, message-archive-note) + (message-xpost-default, message-xpost-note, message-fup2-note) + (message-xpost-note-function): New variables adopted from + message-utils.el. Changed some doc-strings. + (message-mark-insert-{begin,end}): Rename from + message-{begin,end}-inserted-text-mark (message-utils.el), changed + values. + (message-subject-trailing-was-query) + (message-subject-trailing-was-ask-regexp) + (message-subject-trailing-was-regexp): New variables. + (message-to-list-only): Added doc-string and menu entry. + + * message-utils.el: Removed. Functions are now in message.el. + +2002-09-16 ShengHuo ZHU + + * gnus-art.el (gnus-article-reply-with-original, + gnus-article-followup-with-original): Switch to + gnus-summary-buffer before reply/followup. + +2002-09-15 John Paul Wallington + + * gnus-sum.el (gnus-summary-toggle-header): The article window may + not exist. Toggle it anyway. + +2002-09-13 ShengHuo ZHU + + * gnus-msg.el (gnus-copy-article-buffer): Bind mail-header-separator. + + * gnus-art.el (article-fill-long-lines): Fill-paragraph properly. + Trivial patch from Urban Engberg . + + * rfc2047.el (message-posting-charset): Defvar it. + (rfc2047-charset-encoding-alist): Use B for iso-8859-7 and + iso-8859-8. Fix doc. Suggested by Dave Love . + + * mail-source.el (mail-source-fetch): Hide password. + + * gnus-sum.el (gnus-summary-next-group): Semi-exit only when needed. + +2002-09-12 Katsumi Yamaoka + From John Paul Wallington . + + * gnus.el (gnus-visual, gnus-meta): Fix typo. + +2002-09-11 Katsumi Yamaoka + + * gnus-art.el (gnus-article-address-banner-alist): Doc fix. + +2002-09-11 Simon Josefsson + + * nnimap.el (nnimap-expiry-target): Only expiry-target existing articles. + (nnimap-split-rule): Doc fix. + (nnimap-request-expire-articles): Cleanup code. + +2002-09-11 Katsumi Yamaoka + From TSUCHIYA Masatoshi . + + * gnus-art.el (gnus-article-address-banner-alist): New option. + (article-strip-banner): Refer the above option to split banners of + free mail servers, when no group parameter is specified. + +2002-09-10 Katsumi Yamaoka + + * nntp.el (nntp-wait-for-string): Check for a process in the + current buffer instead of `nntp-server-buffer'. + +2002-09-09 Simon Josefsson + + * gnus-art.el (gnus-button-man-handler): New variable. + (gnus-button-alist): Use g-b-handle-man. + (gnus-button-handle-man): New, call g-b-man-handler. + +2002-09-08 Simon Josefsson + + * gnus-art.el (gnus-button-alist): Buttonize man page links. + +2002-09-07 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-dumbquotes-map): Add \230. + +2002-09-06 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-browse-make-menu-bar): Add "d". + + * gnus-sum.el (gnus-summary-limit-to-unseen): New command and + keystroke. + + * gnus-srvr.el (gnus-browse-describe-group): New command and + keystroke. + +2002-09-06 Katsumi Yamaoka + + * gnus-art.el (gnus-article-treat-body-boundary): Don't quote a + value for gnus-decoration property. + +2002-09-06 Kai Gro,b_(Bjohann + + * nnmail.el (nnmail-cache-fetch-group): Don't return "" (empty + string) as group name in case we have a CRLF in the file. + +2002-09-04 Jesper Harder + + * rfc1843.el (rfc1843-decode-loosely): Move to mime customization + group. + (rfc1843-decode-hzp): do. + (rfc1843-newsgroups-regexp): do. + +2002-09-04 Simon Josefsson + + * message.el (message-canlock-generate): Make sure sha1 doesn't + call external programs. + +2002-09-03 Simon Josefsson + + * nntp.el (nntp-wait-for-string): Dont infloop if process died. + + * gnus-agent.el (gnus-agent-batch): Add doc. + +2002-09-03 Josh Huber + + * gnus-msg.el (gnus-summary-handle-replysign): Change the order we + check for signed and encrypted parts. + * mml.el (mml-parse-1): Correct small typo which preventing + setting recipients in a secure tag. + +2002-09-03 Katsumi Yamaoka + + * mm-util.el (mm-coding-system-priorities): Default to a list of + iso-2022-jp and others for the Japanese environment. + +2002-09-03 Katsumi Yamaoka + + * gnus-util.el (gnus-frame-or-window-display-name): Exclude + invalid display names. + +2002-08-30 Simon Josefsson + + * gnus-group.el (gnus-group-fetch-control): Fix typo in last + commit. From Reiner Steib <4uce.02.r.steib@gmx.net>. + +2002-08-26 Jesper Harder + + * gnus.el (gnus-group-charter-alist): New option. + (gnus-group-fetch-control-use-browse-url): New option. + + * gnus-group.el (gnus-group-fetch-charter): New function. + (gnus-group-fetch-control): New function. + Add them to the keymap and menu. Require mm-url. + +2002-08-30 Katsumi Yamaoka + + * gnus-mlspl.el (gnus-group-split-fancy): Doc fix. + From Alex Schroeder . + +2002-08-29 Jesper Harder + + * gnus-group.el (gnus-group-make-menu-bar): Add ellipses to menu + items expecting user interaction. + + * gnus-topic.el (gnus-topic-make-menu-bar): do. + + * gnus-sum.el (gnus-summary-make-menu-bar): do. + + * gnus-srvr.el (gnus-server-make-menu-bar): do. + + * mml.el (mml-menu): do. + +2002-08-28 Katsumi Yamaoka + + * mail-source.el (mail-source-touch-pop): New function. + + * message.el (message-smtpmail-send-it): New function. + (message-send-mail-function): Add it for a candidate. + +2002-08-27 Simon Josefsson + + * gnus-msg.el (posting-charset-alist): Use + gnus-define-group-parameter instead of defcustom. + (gnus-put-message): Handle SPC in GCC. + (gnus-inews-insert-gcc): Ditto. + (gnus-inews-insert-archive-gcc): Ditto. + +2002-08-26 Simon Josefsson + + * gnus-agent.el (gnus-agent-auto-agentize-methods): New variable. + (gnus-agentize): Auto agentize all nntp and nnimap groups. + (gnus-agent-possibly-save-gcc): Autoload. + Suggested by (KOSEKI Yoshinori) . + +2002-08-26 Katsumi Yamaoka + + * gnus.el (gnus-other-frame-function): New user option. + (gnus-other-frame): Use it; add a doc-string; make it work with + the gnuclient program. + + * gnus-util.el (gnus-frame-or-window-display-name): New function. + + * lpath.el: Fbind `frame-parameter', `make-frame-on-display', + `device-connection' and `dfw-device'. + +2002-08-22 Kai Gro,b_(Bjohann + + * gnus-art.el (gnus-emphasis-alist): Strikethru had a lot of false + positives, make it stricter. From Jochen Hein (trivial change). + +2002-08-21 Katsumi Yamaoka + + * gnus.el (gnus-other-frame): Trivial fix. + +2002-08-21 Katsumi Yamaoka + + * gnus.el (gnus-other-frame-parameters): New user option. + (gnus-other-frame-object): New variable. + (gnus-other-frame): Make it search for existing Gnus frame; don't + read new news; delete frame on exit. + + * gnus-util.el (gnus-select-frame-set-input-focus): New function. + + * lpath.el: Fbind w32-focus-frame and x-focus-frame. + +2002-08-20 Katsumi Yamaoka + From $B>.4X(B $B5HB'(B (KOSEKI Yoshinori) . + + * message.el (message-set-auto-save-file-name): Add support for + the Cygwin Emacs; the system-type is `cygwin'. + * nnheader.el (nnheader-file-name-translation-alist): Ditto. + +2002-08-20 ShengHuo ZHU + + * gnus-art.el (gnus-button-url-regexp): Use POSIX regexp if possible. + + * nnmh.el (nnmh-request-list-1): Use %.0f instead of %d to + avoid arithmetic errors. + +2002-08-20 Katsumi Yamaoka + + * gnus-art.el: Don't fbind `gnus-article-replace-with-quoted-text'. + +2002-08-19 Katsumi Yamaoka + + * message.el (message-ignored-supersedes-headers): Add X-Hashcash. + (message-ignored-resent-headers): Add envelope From. + +2002-08-18 Kai Gro,b_(Bjohann + + * gnus.el (gnus-summary-line-format): Document %k specifier. + +2002-08-17 Kai Gro,b_(Bjohann + + * gnus-sum.el (gnus-summary-line-message-size): New function. + (gnus-summary-line-format-alist): Use it. + +2002-08-15 Katsumi Yamaoka + + * gnus-art.el (article-make-date-line): Refer to the value for + `gnus-article-time-format' in the summary buffer. + + * message.el (message-cite-prefix-regexp): Exclude ":" and ",A;(B". + +2002-08-14 Simon Josefsson + + * gnus-art.el (gnus-button-alist): Use ' not ` for default value + quoting. + (gnus-button-alist): Fix doc. + (gnus-header-button-alist): Use ' not ` for default value quoting. + (gnus-header-button-alist): Don't inline gnus-button-url-regexp, + rationale similar to 2002-05-01 change. + (gnus-article-add-buttons-to-head): Evaluate expression. + + * gnus-sum.el (gnus-summary-make-menu-bar): Add MIME button option. + +2002-08-14 Katsumi Yamaoka + + * message.el (message-font-lock-keywords): Refer to the value for + `message-cite-prefix-regexp' dynamically. + +2002-08-13 Katsumi Yamaoka + + * gnus-art.el (gnus-decode-header-methods): Doc fix. + +2002-08-12 Simon Josefsson + + * imap.el (imap-shell-open): Allow non-list `imap-shell-program'. + (imap-shell-open): Skip initial junk before IMAP greeting. + +2002-08-11 Simon Josefsson + + * message-utils.el (message-xpost-default, + message-xpost-fup2-header, message-xpost-fup2): Fixed + Typos. Trivial changes from Reiner Steib + <4uce.02.r.steib@gmx.net>. + +2002-08-09 Simon Josefsson + + * message.el (message-canlock-password): Set + canlock-password-for-verify to newly generated canlock-password. + When Emacs is restarted, Custom makes sure this is set, but during + the same session we must set it manually. + +2002-08-07 Jesper Harder + + * yenc.el: New file. + + * mm-uu.el (mm-uu-yenc-decode-function): New variable. + (mm-uu-type-alist): Add yenc. + (mm-uu-yenc-filename): New function. + (mm-uu-yenc-extract): New function. + + * mm-bodies.el (mm-decode-content-transfer-encoding): Add yenc. + +2002-08-06 ShengHuo ZHU + + * dgnushack.el (merge): Don't use coerce. + +2002-05-27 Jesper Harder + + * mailcap.el (mailcap-mime-data): Test window-system rather than + mm-device-type. + (mailcap-mime-data): Call xdvi and gv with "-safer". + + * mm-util.el: Don't define mm-device-type. + +2002-08-05 Simon Josefsson + + * mm-util.el (mm-coding-system-priorities): coding-system type not + supported everywhere. + +2002-08-04 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bumped version number. + +2002-08-04 01:48:57 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.07 is released. + +2002-08-04 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-thread-sort-functions): Doc fix. + (gnus-article-sort-functions): Doc fix. + (t): New keystroke. + (gnus-article-sort-by-random): New function. + (gnus-thread-sort-by-random): New function. + +2002-08-02 Simon Josefsson + + * gnus-logic.el (gnus-advanced-integer): Swap arguments in + funcall. From Scott A Crosby . + +2002-07-31 Danny Siu + + * nnimap.el (nnimap-split-articles): do not call nnmail-fetch-field + when splitting malformed messages without message-id + +2002-07-28 Kai Gro,b_(Bjohann + From Niklas Morberg . + + * nnweb.el (nnweb-type, nnweb-type-definition) + (nnweb-gmane-create-mapping, nnweb-gmane-wash-article) + (nnweb-gmane-search, nnweb-gmane-identity): Added gmane + functionality. + * nnweb.el: Removed old non-functioning search engines. + +2002-07-27 Simon Josefsson + + * message.el (message-forward-make-body): Don't use + `message-forward-ignored-headers' when doing a "raw" followup (it + is important to preserve e.g. CTE). + + * flow-fill.el (fill-flowed): Disable filladapt-mode. + + * gnus-sieve.el (gnus-sieve-guess-rule-for-article): Don't + regexp-quote, Cyrus Sieve is fixed. + + * sieve-manage.el (sieve-manage-deletescript): New function. + + * sieve.el (sieve-manage-mode-map): Fix down-mouse-2 and down-mouse-3. + (sieve-manage-mode): Fix menubar. + (sieve-activate): Change some messages. + (sieve-deactivate-all): New function. + (sieve-deactivate): New alias. + (sieve-remove): New function. + (sieve-help): Fix help. + All suggested by Ned Ludd. + +2002-07-24 Katsumi Yamaoka + + * mm-decode.el (mm-inline-text-html-with-images): Doc fix. + (mm-w3m-safe-url-regexp): New user option. + + * mm-view.el (mm-inline-text-html-render-with-w3m): Use + `mm-w3m-safe-url-regexp' to bind `w3m-safe-url-regexp'. + +2002-07-23 Karl Kleinpaste + + * gnus-sum.el (gnus-summary-delete-article): Force + nnmail-expiry-target to 'delete, so that absolute deletion + happens when absolute deletion is requested. + +2002-07-21 Kai Gro,b_(Bjohann + From Nevin Kapur . + + * nnmail.el (nnmail-fancy-expiry-target): Treat nonexisting + headers as empty headers. + +2002-07-21 Kai Gro,b_(Bjohann + From Jochen Hein . + + * gnus-art.el (gnus-emphasis-alist): Add strikethrough and + correct typo. + (gnus-emphasis-strikethru): New face. + +2002-07-20 Kai Gro,b_(Bjohann + From Jason Merrill . + + * nnfolder.el (nnfolder-retrieve-headers): Avoid searching the + entire file for each of a sequence of missing articles. + + * gnus-salt.el (gnus-binary-display-article): Respect an existing + value for gnus-view-pseudos. + + * gnus-sum.el (gnus-summary-insert-new-articles): Count down to + avoid nreverse. + +2002-07-14 Kai Gro,b_(Bjohann + From Ted Zlatanov . + + * gnus-sum.el (gnus-auto-expirable-marks): Remove `spam'. + (gnus-summary-mode-line-format-alist): Add %h for number of + spams. + (gnus-newsgroup-spam-marked): New variable. + (gnus-summary-local-variables): Add gnus-newsgroup-spam-marked. + (gnus-article-read-p, gnus-article-mark) + (gnus-set-global-variables, gnus-set-global-variables) + (gnus-article-marked-p, gnus-summary-mark-article-as-read) + (gnus-summary-mark-article-as-unread) + (gnus-summary-mark-article-as-unread, gnus-summary-mark-article) + (gnus-mark-article-as-read, gnus-mark-article-as-unread) + (gnus-mark-article-as-unread, gnus-summary-catchup): Grok spam. + +2002-07-10 Simon Josefsson + + * nnimap.el (nnimap-split-to-groups): Allow group string to be a + function. From KANEMATSU Daiji . + +2002-07-09 Nevin Kapur + + * gnus-sum.el (gnus-summary-delete-article): Respect group + parameters while expiring. + +2002-07-08 Simon Josefsson + + * gnus-art.el (article-make-date-line): Fix string. From Henrik + Enberg. + +2002-07-08 Kai Gro,b_(Bjohann + + * gnus-art.el (article-unsplit-urls): Only display MIME when this + function is called interactively. From Niklas Morberg. + +2002-07-06 ShengHuo ZHU + + * gnus-topic.el (gnus-topic-indent, gnus-topic-unindent): Change + cdaar to cdar and car. + + * nnsoup.el (nnsoup-retrieve-headers, nnsoup-request-type) + (nnsoup-read-active-file, nnsoup-article-to-area): Ditto. + +2002-07-05 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-toggle-header): Show headers anyway; + don't break a narrowed article. + + * nntp.el (nntp-via-rlogin-command-switches): Doc fix. + (nntp-open-via-rlogin-and-telnet): Ditto. + +2002-07-02 Didier Verna + + * nnmail.el (nnmail-split-methods): fix custom type. + +2002-07-02 Kai Gro,b_(Bjohann + + * gnus-art.el (article-unsplit-urls): Keep URL buttonized after + unsplitting. From Niklas Morberg . + +2002-07-01 Kai Gro,b_(Bjohann + + * gnus-msg.el (gnus-summary-resend-default-address): New user option. + (gnus-summary-resend-message): Use it. + +2002-06-28 Katsumi Yamaoka + + * nntp.el (nntp-via-rlogin-command-switches): New variable. + (nntp-open-via-rlogin-and-telnet): Re-revert; use the var above. + +2002-06-28 Kai Gro,b_(Bjohann + + * message.el (message-font-lock-keywords): Don't fontify + headers in the message body, only in the header. + (message-font-lock-make-header-matcher): New function, used by + message-font-lock-keywords. + From Katsumi Yamaoka . + +2002-06-28 Katsumi Yamaoka + + * nntp.el (nntp-open-via-rlogin-and-telnet): Revert last change. + +2002-06-28 Katsumi Yamaoka + + * nntp.el (nntp-open-via-rlogin-and-telnet): Hide commandline args. + +2002-06-26 Kai Gro,b_(Bjohann + + * message.el (message-font-lock-keywords): Revert 2002-06-22 + change. + +2002-06-24 Kai Gro,b_(Bjohann + + * message.el (message-font-lock-keywords): Put colon in header + name match. + +2002-06-22 Kai Gro,b_(Bjohann + + * message.el (message-font-lock-keywords): Don't use header faces + in the body. Thanks to Stefan Monnier for the hint on the + implementation. + +2002-05-09 Miles Bader + + * gnus-cite.el (gnus-cite-blank-line-after-header): New variable. + (gnus-article-hide-citation): Respect it. + +2002-04-12 Juanma Barranquero + + * pop3.el (pop3-open-server): Fix typo. + +2002-06-18 Josh Huber + + * gnus.el (gnus-find-subscribed-addresses): Use add-to-list + instead of push to ignore duplicate to-(list|address) values. + * nnmail.el (nnmail-cache-ignore-groups): New. + * nnmail.el (nnmail-cache-insert): Obey nnmail-cache-ignore-groups + +2002-06-18 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-send-queue): Delete the delay header + before sending. Suggested by Jan Rychter. + +2002-06-18 Katsumi Yamaoka + + * dgnushack.el (remove): New compiler macro. + (last, coerce, subseq): Remove compiler macros for those built-in + or unused functions. + +2002-06-17 Kai Gro,b_(Bjohann + + * gnus-start.el (gnus-clear-system, gnus-read-newsrc-file): Make + sure to write byte-compiled versions of gnus-*-format-alist to + .newsrc.eld. From Simon Josefsson. + +2002-06-16 Kai Gro,b_(Bjohann + + * gnus-agent.el (gnus-agent-read-servers) + (gnus-agent-write-servers): Put server name (string like + "nnchoke:frumple") in the file instead of a server specification + (Lisp expression like (nnchoke "frumple" ...parameters...)). + From Bj,Ax(Brn Mork . + +2002-06-16 Simon Josefsson + + * gnus-cache.el (gnus-cache-remove-article): n is &optional. From + Reiner Steib <4uce.02.r.steib@gmx.net>. + +2002-06-15 ShengHuo ZHU + + * nnheader.el (nnheader-file-name-translation-alist): Set the + default value for MS Windows systems. + + * gnus-ems.el (nnheader-file-name-translation-alist): Removed. + +2002-06-14 Katsumi Yamaoka + + * message.el (message-beginning-of-line): Keep the region active + in XEmacs. Suggested by TAKAHASHI Kaoru . + +2002-06-13 Josh Huber + + * gnus-msg.el (gnus-summary-followup): Use g-s-handle-replysign. + * gnus-msg.el (gnus-summary-reply): Ditto. + * gnus-msg.el (gnus-summary-handle-replysign): New. + +2002-06-12 Katsumi Yamaoka + + * message.el (message-send-mail-with-sendmail): Kill errbuf even + if sending failed. + +2002-06-11 Josh Huber + + * gnus-start.el (gnus-dribble-enter): Don't call set-window-point anymore + * mml2015.el (mml2015-mailcrypt-encrypt): Accept optional argument + to sign while encrypting. + +2002-06-11 Simon Josefsson + + * gnus-int.el (gnus-request-move-article): Agent expire article if + successfuly moved. + + * nnweb.el (nnweb-google-create-mapping): Honors the value of + nnweb-max-hits. From Niklas Morberg . + +2002-06-10 Simon Josefsson + + * gnus-int.el (gnus-request-expire-articles): Fix last change? + +2002-06-09 Simon Josefsson + + * gnus-sum.el (gnus-summary-delete-article): Don't agent expire here. + + * gnus-int.el (gnus-request-expire-articles): Do it here instead. + +2002-06-08 ShengHuo ZHU + + * flow-fill.el (fill-flowed): Ignore errors. + +2002-06-06 Simon Josefsson + + * message.el (message-send-mail-with-sendmail): Improve error message. + +2002-06-06 Kai Gro,b_(Bjohann + + * message.el (message-interactive): Change default from nil to t. + Better to be safe than to be fast. + +2002-06-05 Kai Gro,b_(Bjohann + + * message.el (message-send-mail-with-sendmail): Check return value + from call-process-region. + +2002-06-04 Simon Josefsson + + * gnus-msg.el (gnus-group-mail, gnus-group-news) + (gnus-group-post-news, gnus-summary-mail-other-window) + (gnus-summary-news-other-window, gnus-summary-post-news): Bind + gnus-article-copy to nil, thereby inhibiting the `header' posting + style match to use data from last viewed article. + Suggested by Hrvoje Niksic. + +2002-06-04 Katsumi Yamaoka + + * spam.el (spam-point-at-eol): New alias. + (spam-parse-whitelist): Use it. + +2002-06-03 Simon Josefsson + + * nnmail.el (nnmail-mail-splitting-decodes): New variable. + (nnmail-article-group): Use it. + +2002-05-30 Kai Gro,b_(Bjohann + + * gnus-msg.el (gnus-inews-yank-articles): Merge split header lines + so that code reading them won't be surprised. From Jesper Harder + . + +2002-05-29 Simon Josefsson + + * gnus-sum.el (gnus-summary-delete-article): Agent expire deleted + articles. + + * gnus.el (gnus-agent-cache): Doc fix. + (gnus-agent): Change default to t. + + * gnus-agent.el (gnus-agent-expire): Make it accept optional + ARTICLES, GROUP and FORCE parameters. + +2002-05-28 Simon Josefsson + + * gnus-group.el (gnus-group-line-format): Doc fix. + +2002-05-28 Kai Gro,b_(Bjohann + + * gnus-msg.el (gnus-inews-yank-articles): Unfold headers of + original article before yanking. From Jesper Harder + . + +2002-05-26 Simon Josefsson + + * gnus-sum.el (gnus-summary-menu-split): New function. + (gnus-summary-make-menu-bar): Split charset submenu. + (gnus-summary-menu-maxlen): New variable. + (gnus-summary-menu-split): Use it. + +2002-05-25 Simon Josefsson + + * mml.el (mml-preview): Generate some headers. + + * gnus.el (gnus-large-newsgroup): Fix :type. + + * nnimap.el (nnimap-nov-is-evil): Change default to t (because the + Agent cache NOV's by default now). + (nnimap-nov-is-evil): Make it default to `gnus-agent' instead. + +2002-05-18 Jesper Harder + + * gnus-sum.el (gnus-dependencies-add-header): Avoid one unecessary + call to gnus-parent-id when we check for References loops. + (gnus-summary-prepare-threads): Avoid simplifying every Subject + twice by saving the simplified subject string in simp-subject. + +2002-05-23 Simon Josefsson + + * gnus-msg.el (gnus-confirm-mail-reply-to-news): Typo. Trivial + change from Benjamin Rutt . + + * nnweb.el (nnweb-type): Remove dejanewsold. Trivial change from + Niklas Morberg . + +2002-05-22 Simon Josefsson + + * sieve.el (sieve-change-region): Define it before it is used. + + * gnus-msg.el (gnus-confirm-mail-reply-to-news) + (gnus-summary-reply): Ask for confirmation when replying to news. + Defaults to not ask. From Benjamin Rutt + . + + * nnimap.el (nnimap-nov-is-evil): Improve doc. + +2002-05-21 Simon Josefsson + + * sieve-mode.el (sieve-manage): Fix autoloads. + + * sieve-manage.el (sieve-manage-cram-md5-auth): Just send the SASL + name (makes it work with recent Cyrus timsieved). + +2002-05-20 Jason + Trivial patch. + + * gnus-art.el (gnus-request-article-this-buffer): Try + reconnecting if you don't get the message. + +2002-05-20 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-enter-digest-group): Only get + Reply-To headers from the headers. + +2002-05-18 Lars Magne Ingebrigtsen + + * mm-url.el (mm-url-insert): Remove junk message. + +2002-05-17 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-request-list): Parse new html. + (nnslashdot-use-front-page): New variable. + (nnslashdot-request-list): Use it. + + * mm-url.el (mm-url-timeout): New variable. + (mm-url-retries): Ditto. + (mm-url-insert): Use it. + +2002-05-16 Simon Josefsson + + * gnus-sum.el (gnus-simplify-all-whitespace): New function. + (gnus-simplify-subject-functions): Mention g-s-a-w. + +2002-05-15 Josh Huber + + * nnbabyl.el (nnbabyl-request-accept-article): Pass group to + nnmail-cache-insert. + * nndiary.el (nndiary-request-accept-article): Ditto. + * nnfolder.el (nnfolder-request-accept-article): Ditto. + * nnimap.el (nnimap-request-accept-article): Ditto. + * nnmail.el (nnmail-process-unix-mail-format): Ditto. + * nnmail.el (nnmail-check-duplication): Ditto. (from gnus-art) + * nnmbox.el (nnmbox-request-accept-article): Ditto. + * nnmh.el (nnmh-request-accept-article): Ditto. + * nnmail.el (nnmail-cache-insert): Change group to required, + removed code which tried to figure out the group. + +2002-05-13 Josh Huber + + * mml.el (mml-generate-mime-1): Fix mml generation for signed only + messages. From Hans de Graaff . + * nnml.el (nnml-request-accept-article): Pass in the group name to + nnmail-cache-insert, since it's available. + +2002-05-10 ShengHuo ZHU + + * nndoc.el (nndoc-mime-digest-type-p): Set proper file-end. + +2002-05-08 Kai Gro,b_(Bjohann + From Florian Weimer . + + * gnus.el (subscribed): New group parameter. + (gnus-find-subscribed-addresses): Use it. + +2002-05-08 Josh Huber + + * mml-sec.el (mml-signencrypt-style-alist): Rename. Also, changed + the default for pgpmime to support pgp v2. + * mml-sec.el (mml-signencrypt-style): New accessor function to + allow users to get/set the signencrypt style more easily without + frobbing the alist directly. + * mml.el (mml-generate-mime-1): Use accessor function. + +2002-05-08 Kai Gro,b_(Bjohann + + * gnus-art.el (gnus-article-mode-syntax-table): Specify matching + parenthesis for "<" and ">". Suggested by Andreas Schwab + . + +2002-05-07 Kai Gro,b_(Bjohann + + * nnmail.el (nnmail-cache-insert): Prefer group-art over group + when intuiting the group the message is written to. From Josh + Huber . + +2002-05-06 Simon Josefsson + + * gnus-topic.el (gnus-group-topic-parameters): Work when group + buffer doesn't show group. From Matt Armstrong . + +2002-05-06 Josh Huber + + * mml2015.el (mml2015-gpg-encrypt): Changed name of optional + argument, and fixed compiler warning. (added autoload for + gpg-encrypt). + +2002-05-04 Simon Josefsson + + * mml1991.el (mml1991-function-alist): Doc fix. + + * mml.el (mml-preview): Bind gnus-newsrc-hashtb temporarily if it + doesn't exist (for previewing messages without having Gnus + started). + + * mm-util.el (mm-coding-system-priorities): Defcustom. + + * mm-encode.el (mm-content-transfer-encoding-defaults): Defcustom. + +2002-05-01 Josh Huber + + * gnus-msg.el (gnus-message-replysignencrypted): enabled by + default. + * mml-sec.el: + * mml-sec.el (mml-signencrypt-style): New. + * mml-sec.el (mml-pgpmime-encrypt-buffer): Accept optional + argument `sign'. + * mml-sec.el (mml-secure-message-encrypt-pgp): Changed default to + signencrypt. + * mml-sec.el (mml-secure-message-encrypt-pgpmime): Ditto. + * mml.el (mml-generate-mime-1): Changed logic so a part which is + both signed & encryped is processed in one operation. (rather than + two separate ops: sign, then encrypt) + * mml2015.el (mml2015-gpg-extract-signature-details): Give some + indication if a message is signed by an expired key. + * mml2015.el (mml2015-gpg-encrypt): Accept optional argument which + enables combined sign & encrypt operation. (this was always on + before). + * mml2015.el (mml2015-encrypt): Accept optional argument `sign'. + +2002-05-01 Simon Josefsson + + * nnimap.el (nnimap-retrieve-groups): Use separate data for each + server. + (nnimap-mailbox-info): defvar instead of defvoo. + +2002-05-01 20:09:21 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.06 is released. + +2002-05-01 Lars Magne Ingebrigtsen + + * lpath.el: Bind url-package-version. + +2002-05-01 Simon Josefsson + + * nnfolder.el (nnfolder-request-delete-group): Figure out nov/mrk + filename before deleting the group itself, because the presence of + a group filename decides if long filenames are used or not. + + * gnus-art.el (gnus-button-alist): Don't inline + gnus-button-url-regexp. This makes it possible to change g-b-u-r + without also modifying g-button-alist. + (gnus-button-alist): Fix type to allow variable as well as regexp. + (gnus-article-add-buttons): Evaluate regexp. Strings evaluate to + themselves, variables to its contents. + (gnus-button-entry): Ditto. + +2002-05-01 Simon Josefsson + + * imap.el (imap-parse-resp-text-code, imap-parse-status): Treat + UIDNEXT as a string. + + * nnimap.el (nnimap-string-lessp-numerical): New function. + (nnimap-retrieve-groups): Compare UIDNEXT as strings instead of + integers. + +2002-04-29 Simon Josefsson + + * nnmail.el (nnmail-cache-insert): Accept optional group + parameter. + + * nnimap.el (nnimap-retrieve-groups): Don't send STATUS when + n-r-g-a is disabled. + +2002-04-29 Simon Josefsson + + * nnimap.el (nnimap-split-fancy): Fix doc. + (nnimap-split-fancy): Fix doc. + + * nnimap.el (nnimap-retrieve-groups-asynchronous): New variable. + (nnimap-mailbox-info): New internal variable. + (nnimap-retrieve-groups): Implement faster new mail check. + + * nnimap.el (nnimap-split-articles): Support + nnmail-cache-accepted-message-ids. + (nnimap-request-accept-article): Ditto. + + * imap.el (imap-mailbox-status-asynch): New command. + +2002-04-29 Nevin Kapur + + * gnus.el (gnus-find-subscribed-addresses): Return nil when there + are no subscribed mail groups. + - Strip quoted names when comparing addresses + +2002-04-28 Jesper Harder + + * mm-decode.el (mm-text-html-renderer): Change customize type to + const. + + * gnus-msg.el (gnus-discouraged-post-methods): Fix typo. + (gnus-debug-exclude-variables): do. + +2002-04-27 ShengHuo ZHU + + * gnus-msg.el (gnus-article-mail): Use gnus-msg-mail instead. + Trivial change from Karl Pfl,Ad(Bsterer . + +2002-04-27 Katsumi Yamaoka + + * dns.el (dns-make-network-process): New macro. + (query-dns): Use it. + +2002-04-27 ShengHuo ZHU + + * gnus-msg.el (gnus-summary-reply): Remove unbound variable + article-buffer. + + * mm-url.el (mm-url-package-name): New variable. + (mm-url-package-version): New variable. + (mm-url-insert-file-contents): Bind url-package-name and + url-package-version here. + * nnrss.el (nnrss-insert-w3): Move the bindings. + + * nnrss.el (nnrss-insert-w3): Bind url-package-name and + url-package-version. Trivial change from Andrew J Cosgriff + + + * mm-decode.el (mm-save-part): Fill in file name when GUI saving + attachments. Trivial change from Peter 'Luna' Runestig + . + +2002-04-19 Jesper Harder + + * nnkiboze.el (nnkiboze-request-scan): Call + nnkiboze-possibly-change-group. + (nnkiboze-generate-group): Use mm-with-unibyte to avoid encoding + problems. + (nnkiboze-generate-group): Set newsrc to the *highest* article + number kibozed, not the lowest. + +2002-04-15 Jesper Harder + + * gnus-art.el (article-unsplit-urls): Allow trailing SPC. + +2002-04-24 Kai Gro,b_(Bjohann + From Dan Christensen . + + * nndoc.el (nndoc-type-alist, nndoc-lanl-gov-announce-type-p) + (nndoc-transform-lanl-gov-announce, nndoc-generate-lanl-gov-head): + Recognize math postings. Extract Date (now ignores "(15kb)"). + Extract email address using gnus-extract-address-components + instead of just taking the first word. Create Date and From + headers for message which are missing these headers. Get rid + of spurious \\ lines (purely cosmetic). Extend body-end and + file-end regexps, to exclude more garbage from the message. + Make URL rephrasing regexp more flexible, to match current + format. + +2002-04-23 Simon Josefsson + + * netrc.el: New file, functions copied from gnus-util.el by Ted + Zlatanov . + + * gnus-util.el: Require netrc. + (gnus-netrc-get, gnus-netrc-machine, gnus-parse-netrc): Aliased to + new code in netrc.el. + +2002-04-23 Kai Gro,b_(Bjohann + + * gnus-msg.el (gnus-summary-resend-message-edit): Remove + message-ignored-resent-headers, too. From Matthieu Moy + . + +2002-04-22 Bj,Av(Brn Torkelsson + + * gnus-srvr.el (gnus-server-browse-in-group-buffer): it is a + boolean not a string + * gnus-group.el (gnus-group-line-format): add description of %C + * gnus-group.el (gnus-group-line-format-alist): add gnus-tmp-comment + as %C + * gnus-group.el (gnus-group-insert-group-line): add gnus-tmp-comment + +2002-04-22 Paul Jarc + + * nnmaildir.el (nnmaildir-request-scan): typo: set + nnmaildir-get-new-mail, not nnmaildir-new-mail. Don't call + nnmail-get-new-mail for 'find-new-groups. + +2002-04-21 Paul Jarc + + * nnmaildir.el (nnmaildir-request-update-info, + nnmaildir-request-group, nnmaildir-retrieve-groups): remove + unnecessary calls to nnmaildir-request-scan. + +2002-04-20 Josh Huber + + * gnus-msg.el: + * gnus-msg.el (gnus-message-replysign): New. + * gnus-msg.el (gnus-message-replyencrypt): New. + * gnus-msg.el (gnus-message-replysignencrypted): New. + * gnus-msg.el (gnus-summary-reply): Use the three new variables + (above) to automatically encrypt/sign to encrypted/signed + messages. + * message.el: + * message.el (message-mode-map): Add keybinding for + `message-to-list-only' + * message.el (message-mode): Add description for + `message-to-list-only' + * message.el (message-to-list-only): New. + * message.el (message-make-mft): Changed to use the cl loop macro, + and added optional flag to return only the matched list. (for use + in new message-to-list-only function) + +2002-04-20 Josh Huber + + * gnus-msg.el: + * gnus-msg.el (gnus-message-replysign): + * gnus-msg.el (gnus-replysign): New. + * gnus-msg.el (gnus-replyencrypt): New. + * gnus-msg.el (gnus-replysignencrypted): New. + * gnus-msg.el (gnus-summary-reply): + * message.el: + * message.el (message-mode-map): + * message.el (message-mode): + * message.el (message-to-list-only): New. + * message.el (message-make-mft): + +2002-04-19 ShengHuo ZHU + + * gnus-win.el (gnus-configure-windows-hook): Fix typo. + +2002-04-18 Josh Huber + + * message.el (message-gen-unsubscribed-mft): accept a prefix + argument so CC can be included with C-u C-c C-f C-a + +2002-04-17 Kai Gro,b_(Bjohann + From Ted Zlatanov . + + * spam.el (spam-whitelist, spam-blacklist, spam-enter-whitelist): + Improve docstring. + (spam-enter-blacklist): New command. + + * gnus-sum.el (gnus-spam-mark): New mark. + (gnus-auto-expirable-marks): Add gnus-spam-mark. + (gnus-summary-make-tool-bar): Correct conditional. + (gnus-summary-limit-to-unread): Add gnus-spam-mark. + (gnus-summary-mark-as-spam): New command. + +2002-04-13 Josh Huber + + * mml-sec.el (mml-secure-message): changed to support arbritrary + modes. + * mml-sec.el (mml-secure-message-encrypt-(smime|pgp|pgpmime)): + changed to support "signencrypt" mode. + * mml.el (mml-parse-1): changed to support different secure modes + more easily. (for signencrypt) + +2002-04-11 Stefan Monnier + + * gnus-sum.el (gnus-update-summary-mark-positions) + (gnus-summary-toggle-header): + * gnus-uu.el (gnus-uu-binhex-article, gnus-uu-reginize-string) + (gnus-uu-expand-numbers, gnus-uu-post-make-mime) + (gnus-uu-post-encoded): + * nnfolder.el (nnfolder-possibly-change-group): + * nnimap.el (nnimap-retrieve-headers): + * nnmbox.el (nnmbox-create-mbox): Don't assume point-min == 1. + +2002-04-08 Stefan Monnier + + * nnml.el (nnml-save-nov, nnml-generate-nov-file): + * pop3.el (pop3-md5): Don't hardcode point-min == 1. + +2002-04-12 Katsumi Yamaoka + + * gnus-srvr.el (gnus-server-set-info): Clear + `gnus-server-method-cache' when `gnus-server-alist' is changed. + From Daiki Ueno . + +2002-04-11 Simon Josefsson + + * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Force + viewing of security buttons. Thanks to Nicolas Kowalski + . + + * smime.el (smime-CA-directory): Fix doc. Thanks to Arne + J,Ax(Brgensen . + (smime-sign-buffer): Work in XEmacs. Thanks to Nicolas Kowalski + . + (smime-decrypt-buffer): Ditto. + +2002-04-11 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-prepare): Place point on the emtpy + header line. + +2002-04-11 Per Abrahamsen + + * gnus.el (gnus-refer-article-method): Change `dejanews' to `google'. + +2002-04-08 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-delete-marked-with): Fix typo. + +2002-04-07 ShengHuo ZHU + + * mm-view.el (mm-inline-text-html-render-with-w3): Don't ignore + errors when debug. + +2002-04-07 Josh Huber + + * message.el (message-make-mft): Changed MFT code from using + message-recipients (which included Bcc) to use only the To and CC + headers. + +2002-04-05 Per Abrahamsen + + * gnus-art.el (gnus-treat-from-picon): Add to gnus-picon group and + add link. + (gnus-treat-mail-picon): Ditto. + (gnus-treat-newsgroups-picon): Ditto. + (gnus-picon-databases): Fix custom type. + (gnus-picon-databases): Add link. + (gnus-article-x-face-command): Add to gnus-picon group. + +2002-04-01 Jesper Harder + + * message.el (message-buffer-naming-style): Remove. + +2002-04-02 ShengHuo ZHU + + * gnus-group.el (gnus-group-make-tool-bar): Load tool-bar first. + + * message.el (message-tool-bar-map): Ditto. + + * gnus-sum.el (gnus-summary-make-tool-bar): Ditto. + +2002-04-01 ShengHuo ZHU + + * nnwarchive.el (nnwarchive-mail-archive-article): Fix typo. + +2002-04-01 Paul Jarc + + * nnmaildir.el: fixed some buggy invocations of nnmaildir--pgname. + +2002-03-31 Andrew Cohen + Trivial patch. + + * dns.el: open-network-stream under XEmacs does udp. + +2002-03-31 Lars Magne Ingebrigtsen + + * spam.el (spam-enter-whitelist): New function. + (spam-parse-whitelist): Ditto. + (spam-refresh-list-cache): Ditto. + (spam-address-whitelisted-p): New function. + + * dns.el (query-dns): Use TCP when make-network-process isn't + available. + (dns-servers): New variable. + (dns-parse-resolv-conf): New function. + (query-dns): Use it. + + * spam.el: New file. + + * dns.el (query-dns): Test. + +2002-03-31 Lars Magne Ingebrigtsen + + * lpath.el (featurep): Bind make-network-process. + +2002-03-31 Paul Jarc + + * nnmaildir.el: Use defstruct. Use a single copy of + nnmail-extra-headers to save memory. Store server's group name + prefix instead of each group's prefixed name. + * nnnil.el (nnnil-retrieve-headers, nnnil-request-list): Erase + nntp-server-buffer. + +2002-03-31 Lars Magne Ingebrigtsen + + * dns.el: New file. + +2002-03-28 Simon Josefsson + + * gnus-sum.el (gnus-summary-dummy-line-format): + * gnus.el (gnus-summary-line-format): Fixing links to Info. + Trivial change from Bj,Av(Brn Torkelsson . + +2002-03-29 Kai Gro,b_(Bjohann + + * gnus-sum.el (gnus-summary-move-article) + (gnus-summary-copy-article): Mention `gnus-move-split-methods' in + the doc string. + +2002-03-28 Simon Josefsson + + * mml-sec.el (mml-secure-message): Search after + mail-header-separator from top of message. + +2002-03-28 Paul Jarc + + * nnmaildir.el: Cosmetic changes. + (nnmaildir--with-nntp-buffer, nnmaildir--with-work-buffer, + nnmaildir--with-nov-buffer, nnmaildir--with-move-buffer, + nnmaildir--group-ls): New macros/functions. Use them. + (nnmaildir--unlink): Evalutate argument only once. + +2002-03-27 Jesper Harder + + * gnus-sum.el (gnus-summary-highlight): Use `eq' when comparing + symbols. + (gnus-summary-highlight-line): Use `gnus-point-at-bol' and + `gnus-point-at-eol'. + +2002-03-27 Paul Jarc + + * nnmaildir.el (nnmaildir--subdir, nnmaildir--nov-dir, + nnmaildir--marks-dir): New macros. Use them. + Use inhibit-quit for atomicity instead of in-memory journaling. + (nnmaildir--edit-prep): New function. + (Local Variables): Use it. + +2002-03-26 Pavel@Janik.cz (Pavel Jan,Am(Bk) + + * gnus-sum.el (gnus-summary-make-menu-bar): Fix typo. + +2002-03-25 Simon Josefsson + + * message.el (message-mode): Fix doc. + +2002-03-25 Simon Josefsson + + * message.el (message-subject-re-regexp): Skip Re[42]: junk. From + Matthieu Moy . + +2002-03-24 Jesper Harder + + * mml-sec.el (mml-unsecure-message): Add docstring. + +2002-03-23 ShengHuo ZHU + + * nnmail.el (nnmail-large-newsgroup): Fix doc, allow non-numeric + value. + Trivial change from andre@slamdunknetworks.com + +2002-03-22 Josh Huber + + * mml.el (mml-mode-map): Added a keybinding for + `mml-unsecure-message'. Also, added a menu entry for said + function in the Attachments menu. + +2002-03-22 Katsumi Yamaoka + + * canlock.el (canlock-version): Remove. + (canlock-sha1-with-openssl): Don't use `canlock-string-as-unibyte' + here; simplify \x insertions. + (canlock-sha1): New function, always return a unibyte string. + (canlock-make-cancel-key): Use `canlock-sha1'; simplify truncation + of a password. + (canlock-insert-header): Use `canlock-sha1'. + (canlock-verify): Ditto. + +2002-03-21 ShengHuo ZHU + + * message.el (message-fix-before-sending): Add an option that + ignores illegible text. + Trivial change from Mark Milhollan + + * message.el (message-font-lock-keywords): Support multi-line MML + tags. + + * gnus-sum.el (gnus-print-buffer): Remove gnus-decoration. + Trivial change from lorentey@elte.hu (L,Bu(Brentey K,Aa(Broly) + +2002-03-20 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-make-menu-bar): Use intern'ed function + symbols for "View as different encoding" submenu. + +2002-03-19 Simon Josefsson + + * gnus-sum.el (gnus-summary-make-menu-bar): Add "View as different + encoding" submenu. + +2002-03-19 ShengHuo ZHU + + * gnus-group.el (gnus-group-process-prefix): Make sure there is a mark. + +2002-03-19 Kai Gro,b_(Bjohann + + * gnus-sum.el (gnus-sum-thread-tree-root) + (gnus-sum-thread-tree-single-indent) + (gnus-sum-thread-tree-vertical, gnus-sum-thread-tree-indent) + (gnus-sum-thread-tree-leaf-with-other) + (gnus-sum-thread-tree-single-leaf): Make customizable. + +2002-03-16 Simon Josefsson + + * gnus-util.el (gnus-extract-address-components): Don't break on + names such as James "Kibo" Parry. From Francis Litterio + . + +2002-03-13 Simon Josefsson + + * pop3.el (pop3-open-server): Revert multibyte change. From + Pavel@Janik.cz (Pavel Jan,Am(Bk). + + * message.el (message-send-mail-with-qmail): Make it work. From + Pavel@Janik.cz (Pavel Jan,Am(Bk). + +2002-03-13 Josh Huber + + * message.el (message-make-mft): Set case-fold-search while + generating the MFT. Also, a little cleanup in the MFT code. + +2002-03-12 Simon Josefsson + + * message.el (message-qmail-inject-args): May be function. + (message-send-mail-with-qmail): Call function if m-q-i-a is + function. From fn@hungry.org (Faried Nawaz). + +2002-03-12 ShengHuo ZHU + + * message.el (message-abbrevs-loaded): Remove. + (mailabbrev): Require it. + + * nnslashdot.el (nnslashdot-request-article): Remove IFRAME. + +2002-03-12 Katsumi Yamaoka + + * pop3.el (pop3-open-server): Set process buffer unibyte. + +2002-03-10 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-subscribe-to-mailing-list): New function. + +2002-03-10 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-request-article): Remove javascript + too. + +2002-03-09 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-save-parts-default-mime): Remove + duplication. + (gnus-summary-save-parts-type-history): Ditto. + (gnus-summary-save-parts-last-directory): Ditto. + Trivial change from andre@slamdunknetworks.com + +2002-03-09 Paul Jarc + + * gnus-start.el (gnus-auto-subscribed-groups): Include nnmaildir. + +2002-03-06 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-request-article): Use "" as the end of the first article. + + * gnus-msg.el (gnus-summary-resend-message-edit): New function. + From Matthieu Moy + + * message.el (message-add-action): Use add-to-list. + (message-delete-action): New function. + + * nndoc.el (nndoc-mail-in-mail-type-p): Break a long regexp into + pieces. + +2002-03-05 Paul Jarc + + * nnnil.el: New file. + * gnus.el (gnus-valid-select-methods): Include nnnil. + +2002-03-05 ShengHuo ZHU + + * message.el (message-syntax-checks): Because canlock is + supported, we disable sender syntax check. + (message-shoot-gnksa-feet): Add cancel-messages option doc. + + * gnus-draft.el (gnus-draft-send): If interactive, use its default + value of message-syntax-checks. + + * qp.el (quoted-printable-decode-region): Doc addition. + From: Eli Zaretskii + + * mail-source.el (make-source-make-complex-temp-name): Use + make-temp-file. + + * mm-util.el (mm-make-temp-file): New function. + * nneething.el (nneething-file-name): Use it. + * mml-smime.el (mml-smime-encrypt): Ditto. + * mm-view.el (mm-inline-wash-with-file): Ditto. + * mm-decode.el (mm-display-external, mm-create-image-xemacs): Ditto. + * gnus-uu.el (gnus-uu-decode-binhex, gnus-uu-decode-binhex-view) + (gnus-uu-digest-mail-forward, gnus-uu-initialize): Ditto. + * gnus-start.el (gnus-slave-save-newsrc): Ditto. + * gnus-fun.el (gnus-convert-image-to-gray-x-face): Ditto. + * gnus-art.el (gnus-mime-print-part): Ditto. + +2002-03-04 Paul Jarc + + * message.el (nnmaildir-article-number-to-base-name): New + function. + (nnmaildir-base-name-to-article-number): New function. + +2002-03-04 Katsumi Yamaoka + + * smime.el (smime-make-temp-file): Don't quote + `temporary-file-directory'. + +2002-03-04 Simon Josefsson + + * smime.el (smime-sign-region): Rename argument keyfiles to + keyfile. You only sign something with one key. + (smime-sign-buffer): Better completing-read prompt. + (smime-decrypt-buffer): Ditto. + + * smime.el (smime-make-temp-file): Make it work under XEmacs. + + * mm-view.el (mm-view-pkcs7-decrypt): Better prompt for + completing-read. + (mm-view-pkcs7-decrypt): CRLF->LF. + +2002-03-04 Paul Jarc + + * message.el (message-hierarchical-addresses): New variable. + (message-get-reply-headers): Use it. + From Ted Zlatanov + +2002-03-03 ShengHuo ZHU + + * message.el (message-mode): If buffer-file-name, don't set auto + save file name. + Trivial change from Geoff Greene + +2002-03-02 ShengHuo ZHU + + * gnus-util.el (gnus-multiple-choice): Use message. XEmacs only + takes one argument in read-char. + + * message.el (message-fix-before-sending): Forward a char. + Check mmu-multibyte-p, add control-1. + +2002-03-01 ShengHuo ZHU + + * gnus-start.el (gnus-read-init-file): Ditto. + + * gnus-agent.el (gnus-agent-fetch-session): Ditto. + + * dgnushack.el (dgnushack-make-load): Ditto. + + * mail-source.el (mail-source-fetch): Extract the right error + code. + + * message.el (message-fix-before-sending): Check illegible text. + + * gnus-util.el (gnus-multiple-choice): New function. + + * gnus-kill.el (gnus-score-insert-help): Removed, because it is + also defined in gnus-score.el. + +2002-03-01 Paul Jarc + + * message.el (message-get-reply-headers): downcase email addresses + for comaparisons for duplicate removal. + +2002-03-01 ShengHuo ZHU + + * mm-view.el (mm-view-pkcs7-verify): New function. A bogus + implementation of PKCS#7, which just allows users read the + message. + (mm-view-pkcs7): Use it. + +2002-02-27 ShengHuo ZHU + + * gnus.el (large-newsgroup-initial): New parameter. + + * gnus-sum.el (gnus-articles-to-read): Use large-newsgroup-initial. + (gnus-summary-insert-old-articles): Ditto. + +2002-02-26 ShengHuo ZHU + + * gnus-sum.el (gnus-articles-to-read): `gnus-large-newsgroup' is + used as the default answer of the question, "How many articles?". + From TSUCHIYA Masatoshi + + * nnagent.el (nnagent-retrieve-headers): Remove articles with + small numbers. + +2002-02-24 ShengHuo ZHU + + * deuglify.el: Fix comments. + +2002-02-23 ShengHuo ZHU + + * html2text.el (html2text-clean-anchor): If there is no HREF, + insert nothing. + + * mml.el (mml-generate-mime-1): Add cdr. + From: andre@slamdunknetworks.com + + * mm-view.el (mm-text-html-renderer-alist): Add html2text. + (mm-text-html-washer-alist): Ditto. + + * mm-decode.el (mm-text-html-renderer): Add html2text. + + * html2text.el: Face lift. + + * html2text.el: New file from Joakim Hove . + +2002-02-22 ShengHuo ZHU + + * gnus-sum.el: Add gnus-article-outlook-deuglify-article. + + * deuglify.el: Change copy right. Add autoload. Add coding-system. + + * deuglify.el: New file. The original file name is + gnus-outlook-deuglify.el from Raymond Scholz . + + * mm-decode.el (mm-display-external): Use + mm-file-name-rewrite-functions. From + +2002-02-22 Paul Jarc + + * nnmaildir.el (nnmaildir-request-list): Report the highest + article number, not the total number of articles. + +2002-02-21 ShengHuo ZHU + + * gnus-sum.el: Move uu key map here. + (gnus-summary-make-menu-bar): Add gnus-summary-save-parts. + +2002-02-21 Paul Jarc + + * nnmaildir.el (nnmaildir-request-expire-articles): Use + nnmail-expiry-wait* if expire-age parameter is not set. + +2002-02-21 ShengHuo ZHU + + * gnus-group.el (gnus-group-sort-groups-by-real-name): New + function. + (gnus-group-sort-selected-groups-by-real-name): New function. + (gnus-group-make-menu-bar): Add sort by real name. + + * gnus-sum.el (gnus-dependencies-add-header): If replaced, don't + rebuild. + (gnus-summary-edit-article-done): Gnus-get-newsgroup-headers takes + nil as dependencies as well. + +2002-02-20 ShengHuo ZHU + + * nndoc.el (nndoc-dissect-mime-parts-sub): Fix MIME-Version header + for mime-parts. + + * gnus-art.el (gnus-article-edit-done): Widen the buffer. + + * gnus-group.el (gnus-group-name-decode): Don't test + multibyte-string, because it breaks XEmacs. + From: TSUCHIYA Masatoshi + + * message.el (message-send-mail): Be talkative. + + * mm-decode.el (mm-inlined-types): Add application/x-emacs-lisp. + (mm-automatic-display): Ditto. + + * mailcap.el (mailcap-mime-data): Ditto. + From: Reiner Steib <4uce.02.r.steib@gmx.net> + +2002-02-20 Katsumi Yamaoka + + * many files: Remove trailing whitespaces, replace spc+tab with + tab, replace leading whitespaces with tabs. + +2002-02-19 Paul Jarc + + * gnus-sum.el (gnus-summary-toggle-header): Fix handling of + articles with no body and no blank line after the header. + +2002-02-19 ShengHuo ZHU + + * mm-decode.el (mm-dissect-multipart): Consider the case of empty + parts. + + * ietf-drums.el (ietf-drums-syntax-table): Modify syntax of + non-ascii chars. + + * rfc2231.el (rfc2231-parse-string): Support non-ascii chars. + + * gnus-art.el (gnus-article-wash-html-with-w3): Remove + w3-delay-image-loads. + * mm-view.el (mm-inline-text-html-render-with-w3): Ditto. + (mm-w3-prepare-buffer): Ditto. + + * mail-source.el (mail-source-fetch-directory): Run scripts. + +2002-02-19 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-respond-to-confirmation): Do the right thing + for Majordomo confirmations. + +2002-02-18 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-respond-to-confirmation): New command. + +2002-02-11 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Clean up. + +2002-02-18 Paul Jarc + + * gnus-util.el (gnus-parent-id): Ignore trailing whitespace in the + References header field. From Mark Thomas . + +2002-02-18 ShengHuo ZHU + + * mm-view.el (mm-inline-render-with-file): With unibyte buffer. + (mm-inline-render-with-stdin): Ditto. + (mm-inline-render-with-function): Ditto. + (mm-inline-wash-with-file): Bind coding-system-for-write. + (mm-inline-wash-with-stdin): Ditto. + +2002-02-18 ShengHuo ZHU + + Suggested by Felix Natter + + * gnus-art.el (gnus-mime-view-part-externally): Rename from + gnus-mime-externalize-view. + (gnus-mime-view-part-internally): Rename from + gnus-mime-internalize-view. + (gnus-article-view-part-externally): Rename from + gnus-article-externalize-part. + (gnus-mime-action-alist): Change correspondingly. + (gnus-mime-button-commands): Ditto. + (gnus-mime-action-alist): Remove duplication. + + * gnus-sum.el (gnus-summary-mime-map): Change correspondingly. + +2002-02-18 ShengHuo ZHU + + * mm-decode.el (mm-dissect-buffer): Add loose-mime parameter. + + * gnus-art.el (gnus-display-mime): Use it. + + * mm-partial.el (mm-partial-find-parts): Use it. + + * gnus-sum.el (gnus-article-loose-mime): Rename from + gnus-article-no-strict-mime. + (gnus-summary-save-parts): Use it. + +2002-02-18 Katsumi Yamaoka + + * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Remove unused + local variable. + + * gnus-art.el (article-display-x-face): Don't sort multiple + X-Faces. + +2002-02-18 Katsumi Yamaoka + + * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Improved to speed + up. Suggested by Yuuichi Teranishi . + + * gnus-art.el (article-display-x-face): Sort gray X-Faces. + +2002-02-17 ShengHuo ZHU + + Some ideas is inspired by code from Hrvoje Niksic + + + * gnus-art.el (gnus-article-wash-function): Set the default to + nil, so that we use mm-text-html-renderer instead. + (article-wash-html): Use mm-text-html-renderer. + + * mm-decode.el (mm-inline-media-tests): Use mm-inline-text-*. + (mm-text-html-renderer): New variable. + (mm-inline-text-html-renderer): Set the default to nil, so that we + use mm-text-html-renderer instead. + + * mm-view.el (mm-inline-text-html): New function. + (mm-text-html-renderer-alist): New variable. + (mm-inline-text-vcard): New function. + (mm-inline-text): Split. + (mm-links-remove-leading-blank): New function. + (mm-inline-render-with-file): New function. + (mm-inline-render-with-stdin): New function. + (mm-inline-render-with-function): New function. + (mm-text-html-washer-alist): New variable. + (mm-inline-wash-with-file): New function. + (mm-inline-wash-with-stdin): New function. + +2002-02-17 ShengHuo ZHU + + * message-utils.el: Fix installation doc. + From: Reiner Steib <4uce.02.r.steib@gmx.net> + +2002-02-16 ShengHuo ZHU + + * gnus-msg.el (gnus-discouraged-post-methods): New variable. + (gnus-post-method): Use it. + (gnus-summary-cancel-article): Find the correct post-method. + + * gnus-soup.el (gnus-soup-send-packet): Via ... using ... + * message.el (message-send-news): Ditto. + Suggested by Lloyd Zusman and IPmonger + + + * gnus.el (gnus-select-method): Fix doc. + (gnus-server-string): Use 'using nntp'. + + * gnus-agent.el (gnus-slave-unplugged): New command. + From: Felix Natter + +2002-02-15 ShengHuo ZHU + + * gnus-art.el (gnus-article-edit-done): Kill-all-local-variables. + Call edit-done-function first, then change the window + configuration. + (gnus-article-edit-mode-map): Add message key bindings. Add menu. + (gnus-article-edit-mode): mml-mode. + + * gnus-util.el (gnus-byte-compile): Work around a bug in XEmacs + 21.4. Suggested by Russ Allbery . + + * message-utils.el: Adopt the file. + + * message-utils.el: New file. + From Holger Schauer + +2002-02-14 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-move-article): Select-article only + when gnus-move-split-methods is non-nil. And we don't render or + mark the article. + + * gnus-fun.el (gnus-shell-command-to-string): New function. + (gnus-shell-command-on-region): New function. + (gnus-random-x-face): Use them. + (gnus-x-face-from-file): Ditto. + (gnus-convert-image-to-gray-x-face): Ditto. + (gnus-convert-gray-x-face-to-xpm): Ditto. + (gnus-convert-image-to-x-face-command): Don't use 2>/dev/null. + +2002-02-14 Katsumi Yamaoka + + * gnus-art.el (gnus-treat-display-xface): Don't use + `shell-command-to-string' when compiling. + (gnus-treat-display-grey-xface): Ditto. + +2002-02-13 Paul Jarc + + * nnmaildir.el (nnmaildir--article-count): If the group is + completely empty, report minimum article number as 1 instead of 0. + +2002-02-13 ShengHuo ZHU + + * gnus-agent.el (gnus-get-predicate): Use nconc. + + * gnus-sum.el (gnus-summary-display-make-predicate): Use + gnus-summary-display-cache as cache. + + * nndoc.el (nndoc-type-alist): Add mail-in-mail type. + (nndoc-mail-in-mail-type-p): New function. + (nndoc-mail-in-mail-article-begin): New function. + +2002-02-12 ShengHuo ZHU + + * mailcap.el (mailcap-mime-data): Use enriched-decode. + + * gnus-cite.el (gnus-article-fill-cited-article): Bind + use-hard-newlines to nil. + + * gnus-xmas.el (gnus-xmas-image-type-available-p): Assume that + image is not available if window-system is not available. + + * gnus-sum.el (gnus-summary-display-make-predicate): Add unread. + +2002-02-11 ShengHuo ZHU + + * gnus.el (gnus-article-unpropagated-mark-lists): Don't propagate + bookmark, because update-mark doesn't handle it correctly. + +2002-02-09 ShengHuo ZHU + + * gnus-soup.el (gnus-soup-send-packet): Send news and mail + directly instead of calling message-send-mail. + + * gnus-start.el (gnus-read-descriptions-file): Use + gnus-default-charset. + + * mm-util.el (mm-guess-mime-charset): New function. + + * gnus.el (gnus-default-charset): Use it. + (gnus-group-charset-alist): Remove .*, Let gnus-default-charset be + the default. + +2002-02-08 ShengHuo ZHU + + * gnus-art.el (gnus-treat-display-grey-xface): New variable. + (article-display-x-face): Use it. Disable grey xface, if + uncompface is not found. + + * message.el (message-mode): Don't enable multibyte on an indirect + buffer. + + * nnrss.el (nnrss-content-function): New variable. + (nnrss-request-article): Use it. + +2002-02-08 ShengHuo ZHU + + * gnus.el: Add article-unsplit-urls. + * gnus-sum.el: Ditto. + * gnus-art.el (gnus-treat-strip-cr): New variable. + (gnus-treatment-function-alist): Use it. + (article-unsplit-urls): New function. + (gnus-article-make-menu-bar): Use it. + From: Michael Cook + +2002-02-08 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-braid-nov): Find the first article to + copy. + +2002-02-07 Paul Jarc + + * gnus-util.el (gnus-split-references): Allow (broken) Message-IDs + with internal whitespace. + (gnus-parent-id): Ditto. + +2002-02-07 ShengHuo ZHU + + * gnus-art.el (gnus-article-treat-body-boundary): Add + gnus-decoration property. + * gnus-msg.el (gnus-copy-article-buffer): Remove gnus-decoration. + + * message.el (message-mode): Set local-abbrev-table. + From Matt Armstrong . + + * gnus-art.el (gnus-article-treat-unfold-headers): Don't remove + too many spaces. + + * rfc2047.el (rfc2047-unfold-region): Ditto. + (rfc2047-decode-region): Don't unfold. Let + gnus-article-treat-unfold-headers do it. + + * gnus-sum.el (gnus-dependencies-add-header): Fix typo. + From: Jesper Harder + +2002-02-06 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-posting-styles): Add x-face-file. + (gnus-configure-posting-styles): Use it. + (gnus-configure-posting-styles): Remove trailing newspaces. + +2002-02-06 ShengHuo ZHU + + * gnus-sum.el (gnus-articles-to-read): Fetch all if the predicate + is non-nil. + + * mm-util.el (mm-use-find-coding-systems-region): Add doc. + + * gnus.el (gnus-server-to-method): Switch position with + gnus-server-get-method. + (gnus-agent): Add doc. + + * gnus-sum.el (gnus-article-no-strict-mime): New variable. + (gnus-summary-save-parts): Use it. + + * gnus-art.el (gnus-display-mime): Use it. + * mm-partial.el (mm-partial-find-parts): Use it. + + * nnweb.el (nnweb-google-parse-1): Use a correct format of date. + + * gnus-agent.el (gnus-agent-summary-make-menu-bar): Fix typo. + From Stefan Reich,Av(Br . + + * nnagent.el (nnagent-request-expire-articles): Don't delete + files. + +2002-02-05 ShengHuo ZHU + + * message.el (message-gen-unsubscribed-mft): New function. + From Sriram Karra . + + * gnus.el (gnus-article-unpropagated-mark-lists): Backslash the + open parenthesis. + + * mm-view.el (mm-w3-prepare-buffer): Bind url-gateway-unplugged. + (mm-inline-text-html-render-with-w3): Ditto. + * gnus-art.el (gnus-article-wash-html-with-w3): Ditto. + Suggested by Dave Love . + + * mm-url.el (mm-url-load-url): Require w3-vars for old versions. + + * nntp.el (nntp-send-command-and-decode): Check PROCESS. + * nntp.el (nntp-send-command): Ditto. + * nntp.el (nntp-send-command-nodelete): Ditto. + +2002-02-04 ShengHuo ZHU + + * mm-url.el (mm-url-load-url): New function. + (mm-url-insert-file-contents): Use it. + + * gnus-msg.el (gnus-summary-mail-forward): Use gnus-article-charset. + + * message.el (message-forward-make-body): Correctly copy + forward-buffer. + + * rfc2047.el (rfc2047-decode-region): Don't decode us-ascii characters. + +2002-02-04 Simon Josefsson + + * gnus-art.el (gnus-article-followup-with-original): Mark with + force, prevent errors when following up from article buffer. + (gnus-article-reply-with-original): Ditto. + + * binhex.el (binhex-decoder-switches): Fix doc. From + Pavel@Janik.cz (Pavel Jan,Am(Bk). + +2002-02-04 ShengHuo ZHU + + * gnus-art.el (gnus-treatment-function-alist): Move hide-citation, + highlight-citation after emphasize. + +2002-02-04 Simon Josefsson + + * nnfolder.el (nnfolder-open-marks): + + * nnml.el (nnml-open-marks): Message when done. From David + Edmondson . + +2002-02-03 ShengHuo ZHU + + * imap.el (imap-anonymous-auth): Fix typo. + From: Steinar Bang + + * gnus-cache.el (gnus-cache-braid-nov): Use set-buffer instead of + save-excursion. + (gnus-cache-braid-heads): Ditto. + + * gnus-agent.el (gnus-agent-copy-nov-line): Move to the correct + line, because there are extra articles in the overview buffer. + + * nntp.el (nntp-retrieve-groups): Check whether BUF is live. + + * message.el (message-forward-rmail-make-body): Directly use + rmail-msg-restore-non-pruned-header to avoid calling + vertical-motion. + +2002-02-02 ShengHuo ZHU + + * gnus-cache.el (gnus-summary-insert-cached-articles): + (gnus-summary-limit-include-cached): gnus-newsgroup-cached is sorted. + + * gnus-group.el (gnus-group-mark-article-read): Nreverse + gnus-newsgroups-unselected. + + * gnus-agent.el (gnus-summary-set-agent-mark): Use + gnus-add-to-sorted-list. + + * gnus-sum.el (gnus-summary-update-info): gnus-newsgroup-unreads + gnus-newsgroup-unselected are sorted. Use gnus-sorted-union. + (gnus-build-all-threads): Use gnus-add-to-sorted-list. + (gnus-update-read-articles): UNREAD is sorted. + (gnus-newsgroup-unreads, gnus-newsgroup-unselected) + (gnus-newsgroup-marked, gnus-newsgroup-cached) + (gnus-newsgroup-expirable, gnus-newsgroup-downloadable) + (gnus-newsgroup-dormant): Require sorted. + + * gnus-dired.el (gnus-dired-find-file-mailcap): Correctly handle + directories. + (gnus-dired-print): New function. + + * gnus-art.el (gnus-mime-print-part): Add argument filename. Call + ps-despool. + +2002-02-02 Simon Josefsson + + * gnus-dired.el (turn-on-gnus-dired-mode): Autoload. Make defun. + +2002-02-02 ShengHuo ZHU + + * gnus-start.el (gnus-1): Call gnus-agentize if gnus-agent is + t. This makes gnus-agent customizable without putting + gnus-agentize into .gnus. + + * gnus.el (gnus-agent): Make it customizable. + + * gnus-dired.el: New file. + From Benjamin Rutt + + * gnus-cache.el (gnus-cache-articles-in-group): Remove from active + if no article. + (gnus-cache-possibly-remove-article): Ditto. + (gnus-cache-possibly-enter-article): Use gnus-add-to-sorted-list. + +2002-02-01 Simon Josefsson + + * gnus-int.el (gnus-request-accept-article): Use gnus-get-function. + +2002-02-01 Katsumi Yamaoka + + * mm-view.el (mm-w3m-mode-dont-bind-keys): New variable. + (mm-setup-w3m): Don't bind keys listed in the above. + +2002-02-01 Katsumi Yamaoka + + * mm-view.el (mm-inline-text-html-render-with-w3m): Bind + `w3m-safe-url-regexp' with nil if `mm-inline-text-html-with-images' + is non-nil; bind `w3m-force-redisplay' with nil. + + * gnus-art.el (gnus-article-wash-html-with-w3m): Ditto. + + * mm-decode.el (mm-inline-text-html-with-images): Supplement docs. + +2002-01-31 ShengHuo ZHU + + * nnfolder.el (nnfolder-request-replace-article): Unfold. Don't + use mail-header-unfold-field. + + * gnus-cache.el (gnus-summary-insert-cached-articles): Use + gnus-summary-limit. + + * gnus-range.el (gnus-add-to-sorted-list): New function. + * gnus-sum.el (gnus-mark-article-as-read): Use it. + (gnus-mark-article-as-unread): Ditto. + (gnus-summary-mark-article-as-unread): Ditto. + (gnus-build-get-header): Ditto. + (gnus-summary-prepare-threads): Ditto. + (gnus-summary-insert-pseudos): Ditto. + (gnus-articles-to-read): Use gnus-sorted-union and gnus-sorted-nunion. + (gnus-summary-insert-new-articles): Use gnus-sorted-nunion. + (gnus-summary-insert-old-articles): Ditto. + + * gnus-msg.el (gnus-posting-styles): Add new format of header. + (gnus-configure-posting-styles): Support the new format. + + * mail-source.el (mail-source-bind, mail-source-bind-common): Set + edebug-form-spec to (sexp body). + Suggested by Joe Wells . + + * message.el (message-reply-headers): Add doc. + +2002-01-30 ShengHuo ZHU + + * gnus-group.el (gnus-group-delete-group): Nix the entry in + gnus-cache-active-hashtb. + + * gnus-agent.el (gnus-agent-mark-unread-afer-downloaded): New variable. + (gnus-agent-summary-fetch-group): Use it. + + * gnus-msg.el (gnus-debug-files): New variable. + (gnus-debug-exclude-variables): New variable. + (gnus-debug): Use them. + + * gnus-range.el (gnus-range-length): Don't use gnus-uncompress-range. + +2002-01-30 ShengHuo ZHU + + * message.el (message-cite-prefix-regexp): Use text-mode-syntax-table. + (message-mode-syntax-table): Move back the previous position. + + * nnagent.el (nnagent-retrieve-headers): Use gnus-sorted-difference. + + * gnus-agent.el (gnus-agent-retrieve-headers): Use + gnus-sorted-difference. + + * nnsoup.el (nnsoup-request-expire-articles): Use + gnus-sorted-difference. + + * nnheader.el: Autoload gnus-sorted-difference. + + * nnfolder.el (nnfolder-request-expire-articles): Use + gnus-sorted-difference. + + * gnus-cache.el (gnus-cache-retrieve-headers): Use + gnus-sorted-difference. + + * gnus-range.el: Autoload cookies. + (gnus-sorted-difference): New function. + (gnus-sorted-ndifference): New function. + (gnus-sorted-nintersection): Rename from + gnus-set-sorted-intersection. + (gnus-sorted-nunion): Rename from gnus-set-sorted-union. + (gnus-list-range-difference): Rename from + gnus-inverse-list-range-intersection. + (gnus-inverse-list-range-intersection): Use defalias. + + * gnus-sum.el (gnus-select-newsgroup): Use gnus-sorted-difference, + gnus-sorted-ndifference, and gnus-sorted-nintersection. + (gnus-articles-to-read): Use gnus-sorted-difference. + (gnus-summary-limit-mark-excluded-as-read): Use + gnus-sorted-intersection and gnus-sorted-ndifference. + (gnus-list-of-read-articles): Use gnus-list-range-difference. + (gnus-summary-insert-articles): Use gnus-sorted-difference. + + * gnus-sum.el (gnus-summary-update-info): Use gnus-sorted-union. + +2002-01-30 Katsumi Yamaoka + + * gnus-art.el (gnus-article-wash-html-with-w3m): Add keymap + property to the buffer for using emacs-w3m command keys. + + * mm-decode.el (mm-inline-text-html-with-w3m-keymap): New user + option. + + * mm-view.el (mm-w3m-mode-map): New variable. + (mm-w3m-mode-command-alist): New variable. + (mm-w3m-minor-mode): Removed. + (mm-setup-w3m): Setup `mm-w3m-mode-map'; don't add minor mode. + (mm-inline-text-html-render-with-w3m): Add keymap property to the + buffer for using emacs-w3m command keys. + +2002-01-29 ShengHuo ZHU + + * message.el (message-mode-syntax-table): Move forward. + (message-cite-prefix-regexp): Auto detect non word constituents. + (message-cite-prefix-regexp): Don't use with-syntax-table. + + * gnus-sum.el (gnus-summary-update-info): Use + gnus-list-range-intersection. + + * gnus-agent.el (gnus-agent-fetch-headers): Use + gnus-list-range-intersection. + + * gnus-range.el (gnus-range-normalize): Use correct predicate. + (gnus-list-range-intersection): Use it. + (gnus-inverse-list-range-intersection): Ditto. + (gnus-sorted-intersection): Add doc. + (gnus-set-sorted-intersection): Add doc. + (gnus-sorted-union): New function. + (gnus-set-sorted-union): New function. + + * gnus-range.el (gnus-list-range-intersection): Correct the logic. + (gnus-inverse-list-range-intersection): Ditto. + +2002-01-29 Karl Kleinpaste + + * mm-uu.el (mm-uu-type-alist): Add optional leading `0'. + + * gnus-uu.el (gnus-uu-shar-name-marker): Add optional leading `0' + and permit `:' and `\' in order to handle full Windows pathnames. + (gnus-uu-begin-string): Add optional leading `0'. Leading `0' is + technically not correct per standard, but seems to have common use. + +2002-01-29 ShengHuo ZHU + + * gnus-uu.el (gnus-uu-expand-numbers): Ignore errors when + replacing numbers. + +2002-01-28 ShengHuo ZHU + + * gnus-art.el (gnus-article-followup-with-original): Use (mark). + + * gnus-score.el (gnus-score-insert-help): Move to (point-min). + Don't split when the window is small, e.g. when a small *BBDB* + window is the lowest one. + + * gnus-agent.el (gnus-agent-retrieve-headers): Use + nnheader-find-nov-line to speed up. Use nreverse, because it is + sorted. Use nnheader-insert-nov-file. + +2002-01-28 Katsumi Yamaoka + + * mm-decode.el (mm-inline-text-html-with-images): New user option. + + * mm-view.el (mm-inline-text-html-render-with-w3m): Bind the value + of `w3m-display-inline-images' with the value of + `mm-inline-text-html-with-images'. + From: TSUCHIYA Masatoshi . + + * gnus-art.el (gnus-article-wash-html-with-w3m): Ditto. + +2002-01-27 Richard M. Stallman + + * time-date.el: Add autoload cookies. Many doc fixes. + (time-add): New function. + (time-subtract): Renamed from subtract-time. + (subtract-time): New alias for time-subtract. + +2002-01-28 Katsumi Yamaoka + + * gnus-art.el (gnus-article-wash-html-with-w3m): Replace w3m to + emacs-w3m in doc-string. + + * lpath.el: Bind `w3m-cid-retrieve-function-alist' and + `w3m-current-buffer'. + +2002-01-27 TSUCHIYA Masatoshi + + * gnus-art.el (gnus-article-wash-html-with-w3m): Handle cid: URLs. + + * mm-view.el (mm-setup-w3m): Add `mm-w3m-cid-retrieve' to + `w3m-cid-retrieve-function-alist' for `gnus-article-mode'. + (mm-w3m-cid-retrieve): New function. + (mm-inline-text-html-render-with-w3m): Handle cid: URLs. + +2002-01-27 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-fetch-articles): Don't save empty articles. + +2002-01-27 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-cache-file-contents): Don't use equalp. + +2002-01-26 Lars Magne Ingebrigtsen + + * nnheader.el (nnheader-insert-nov-file): Increased cutoff to + 32K. + + * gnus-sum.el (gnus-summary-expire-articles): Clean up. + + * nnmail.el (nnmail-article-group): Decode headers before running + split rules over them. + (nnmail-mail-splitting-charset): New variable. + + * smiley.el: Replaced with smiley-ems.el. + +2002-01-26 ShengHuo ZHU + + * mm-url.el (mm-url-predefined-programs): Add w3m. + (mm-url-program): Ditto. + +2002-01-26 Lars Magne Ingebrigtsen + + * nnml.el (nnml-use-compressed-files): New variable. + (nnml-filenames-are-evil): Removed. + (nnml-current-group-article-to-file-alist): Don't use. + (nnml-update-file-alist): Inhibit. + (nnml-article-to-file): Use new var. + +2002-01-26 ShengHuo ZHU + + * gnus-util.el (gnus-parse-without-error): Add edebug-form-spec. + + * nnagent.el (nnagent-retrieve-headers): loop until eobp. + +2002-01-26 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-load-alist): Use new caching + function. + + * gnus-util.el (gnus-cache-file-contents): New function. + + * gnus-agent.el (gnus-agent-file-loading-cache): New variable. + (gnus-agent-load-alist): Use it. + + * nnagent.el (nnagent-retrieve-headers): Use optimized function. + + * nnheader.el (nnheader-insert-nov-file): New function. + + * gnus-util.el (gnus-parse-without-error): Correct the loop. + + * gnus-sum.el (gnus-dependencies-add-header): Use in-reply-to if + there are no references. + (gnus-extract-message-id-from-in-reply-to): New function. + (gnus-nov-parse-line): Use in-reply-to if there are no + references. + +2002-01-25 Lars Magne Ingebrigtsen + + * nnagent.el (nnagent-retrieve-headers): Use new macro. + + * gnus-util.el (gnus-parse-without-error): New macro. + +2002-01-25 ShengHuo ZHU + + * gnus-art.el (gnus-article-wash-html-with-w3m): Call w3m-region. + (gnus-article-wash-function): use locate-library to decide which + to use. + +2002-01-25 Simon Josefsson + + * pop3.el (pop3-munge-message-separator): Work if no date. + Trivial patch from Marius Vollmer . + +2002-01-25 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-save-alist): Fix. + + * nnagent.el (nnagent-retrieve-headers): Must have cut too much by + mistake. Reinstated lost code. + +2002-01-25 Josh Huber + + * mml2015.el (mml2015-mailcrypt-decrypt): Display a signature if + one exists in the case of an encrypted message with an internal + signature. + +2002-01-25 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-save-alist): Optimized. + +2002-01-25 Katsumi Yamaoka + + * dgnushack.el: Commented out the experimental code. + +2002-01-25 Lars Magne Ingebrigtsen + + * gnus-range.el (gnus-inverse-list-range-intersection): Off-by-one + error. + + * gnus.el (gnus-server-to-method): Made into subst. + (gnus-server-method-cache): New variable. + (gnus-server-to-method): Use it. + (gnus-group-method-cache): New variable. + (gnus-find-method-for-group-1): Renamed. + (gnus-find-method-for-group): New function. + (gnus-group-method-cache): Removed. + + * gnus-sum.el (gnus-compute-unseen-list): Use new optimized + function. + + * gnus-range.el (gnus-members-of-range): New function. + (gnus-list-range-intersection): Renamed. + (gnus-inverse-list-range-intersection): New function. + + * gnus-sum.el (gnus-compute-unseen-list): Made into own function. + + * nnagent.el (nnagent-retrieve-headers): New implementation. + + * gnus-agent.el (gnus-agent-get-undownloaded-list): New, faster + implementation. + +2002-01-25 Katsumi Yamaoka + + * lpath.el: Fbind `w3m-charset-to-coding-system'; bind + `w3m-meta-content-type-charset-regexp'. + + * mm-view.el (mm-inline-text-html-render-with-w3m): Decode + charset-encoded html contents. + +2002-01-24 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-request-article): Make sure it is not + an empty file. + + * nnweb.el (url): Ignore errors when request url. + + * nnrss.el: Clean up the comments. + +2002-01-24 Katsumi Yamaoka + + * lpath.el: Fbind `w3m-region'; bind `w3m-mode-map'. + + * mm-decode.el (mm-inline-text-html-renderer): New user option. + (mm-inline-media-tests): Test whether the value of + `mm-inline-text-html-renderer' is a function for text/html. + + * mm-view.el (mm-inline-text-html-render-with-w3): New function + separated from `mm-inline-text'. + (mm-w3m-minor-mode): New variable. + (mm-w3m-setup): New variable. + (mm-setup-w3m): New function. + (mm-inline-text-html-render-with-w3m): New function. + (mm-inline-text): Funcall `mm-inline-text-html-renderer' for + text/html. + +2002-01-23 Paul Jarc + + * lpath.el: fbind make-symbolic-link and unix-sync for nnmaildir. + +2002-01-23 Katsumi Yamaoka + + * gnus-xmas.el (gnus-xmas-redefine): Quote `gnus-completing-read' + and `gnus-xmas-completing-read'. + +2002-01-19 TSUCHIYA Masatoshi + + * nneething.el (nneething-message-id-number): Abolished. + (nneething-encode-file-name): Not encode numerical characters. + (nneething-make-head): `nneething-message-id-number' is not + used to generate message IDs. + +2002-01-23 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-emphasis-alist): Include !? as sentence-ending + characters. + +2002-01-22 Lars Magne Ingebrigtsen + + * gnus-xmas.el (gnus-xmas-completing-read): New function. + (gnus-xmas-redefine): Redefine conditionally. + +2002-01-22 Josh Huber + + * mml.el (mml-parse-1): Fixed usage of recipients in the secure + tag. + +2002-01-22 Josh Huber + + * message.el (message-font-lock-keywords): Added the secure tag. + * mml-sec.el: Added functions to generate/modify/remove the secure + tag while in message mode. + * mml-sec.el (mml-secure-message): New. + * mml-sec.el (mml-unsecure-message): New. + * mml-sec.el (mml-secure-message-sign-smime): New. + * mml-sec.el (mml-secure-message-sign-pgp): New. + * mml-sec.el (mml-secure-message-sign-pgpmime): New. + * mml-sec.el (mml-secure-message-encrypt-smime): New. + * mml-sec.el (mml-secure-message-encrypt-pgp): New. + * mml-sec.el (mml-secure-message-encrypt-pgpmime): New. + * mml.el (mml-parse-1): Added code to recognise the secure tag and + convert it to either a part or multipart depending on if there are + other parts in the message. + * mml.el (mml-mode-map): Changed default sign/encrypt keybindings + to use the secure tag, rather than the part tag. + * mml.el (mml-preview): Added a save-excursion to keep cursor + position after doing an MML preview. + +2002-01-22 Lars Magne Ingebrigtsen + + * nnheader.el (nnheader-parse-overview-file): New function. + (nnheader-write-overview-file): New function. + +2002-01-21 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-fast-parameter): Check better if expansion + in wanted. + + * nnweb.el (nnweb-type-definition): Clean up. + +2002-01-21 Alastair Burt + Trivial patch. + + * gnus-art.el (gnus-mm-display-part): Make sure that the summary + buffer exists before jumping to it. + +2002-01-21 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-wash-html-with-w3): Made into own + function. + (article-wash-html): Use it. + (gnus-article-wash-function): New variable. + (gnus-article-wash-html-with-w3m): New function. + +2002-01-20 Bj,Av(Brn Torkelsson + + * dgnushack.el (dgnushack-compile): Compile smiley-ems for + XEmacs. + +2002-01-20 John H. Palmieri + + * gnus-fun.el (gnus-convert-image-to-gray-x-face): More standard + command line. + +2002-01-21 Simon Josefsson + + * canlock.el (base64-encode-string): Autoload it from base64. + (canlock-make-cancel-key): Base64 encode unibyte string. + +2002-01-20 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-request-accept-article): Unfold + x-from-line. + (nnfolder-request-replace-article): Ditto. + +2002-01-20 Nevin Kapur + + * gnus-group.el (gnus-group-best-unread-group): Use the right + positioning function. + +2002-01-20 Lars Magne Ingebrigtsen + + * smiley-ems.el (smiley-region): Use new function. + (smiley-update-cache): Use general image functions. + (smiley-region): Use general functions. + + * gnus-util.el (gnus-graphic-display-p): New function. + + * nnmail.el (nnmail-article-group): Allow outputting traces of + non-strings. + + * nndoc.el (nndoc-type-alist): Rules for exim bounces. + (nndoc-exim-bounce-type-p): New function. + + * message.el (message-dont-send): Doc fix. + + * gnus-util.el (gnus-completing-read): Remove + inherit-input-method. + + * gnus-art.el (gnus-treat-smiley): Doc fix. + + * gnus-agent.el (gnus-agent-fetch-headers): Ignore seen and recent + articles. + +2002-01-19 Simon Josefsson + + * imap.el (imap-gssapi-open): Don't wait for logout to complete. + (imap-kerberos4-open): Ditto. + (imap-open): Set port correctly, don't set auth. + +2002-01-20 Lars Magne Ingebrigtsen + + * gnus.el (gnus-version-number): Bump version number. + +2002-01-20 05:33:30 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.05 is released. + +2002-01-20 Lars Magne Ingebrigtsen + + * nnkiboze.el (nnkiboze-generate-group): Make sure the directory + exists. + + * gnus-spec.el (gnus-string-width-function): New function. + (gnus-tilde-cut-form): Use it. + (gnus-tilde-max-form): Ditto. + (gnus-use-correct-string-widths): Default to (featurep 'xemacs). + (gnus-substring-function): Use it. + (gnus-tilde-cut-form): Ditto. + (gnus-substring-function): New function. + + * message.el (message-check-news-header-syntax): New message. + + * gnus.el (gnus-slave-no-server): Doc fix. + + * gnus-spec.el (gnus-use-correct-string-widths): Default to t. + +2002-01-15 Katsumi Yamaoka + + * gnus-sum.el (gnus-adjust-marked-articles): Fix the record for + `seen' if it looks like (seen NUM1 . NUM2). It should be + (seen (NUM1 . NUM2)). + +2002-01-20 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-catchup-articles): Update article + number in closed topics. + +2002-01-19 Daniel Pittman + + * gnus-sum.el (gnus-summary-first-unseen-or-unread-subject): New + functions. + +2002-01-19 Lars Magne Ingebrigtsen + + * gnus.el (gnus-group-find-parameter): Clean up. + + * gnus-sum.el (gnus-summary-goto-subject): Error on non-numerical + articles. + + * gnus-util.el (gnus-completing-read-with-default): Renamed. + + * nnmail.el (nnmail-article-group): Clean up. + +2002-01-19 Paul Stodghill + + * gnus-agent.el (gnus-category-name): Intern the category name. + +2002-01-19 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-move-group): Use gnus-topic-history. + + * gnus-util.el (gnus-completing-read): New function. + +2002-01-19 ShengHuo ZHU + + * gnus-art.el (gnus-add-wash-type): Use add-to-list. + + * smiley-ems.el (smiley-region): Register smiley. + (smiley-toggle-buffer): Rewrite the function. + (smiley-active): Removed. + +2002-01-19 Simon Josefsson + + * gnus-util.el (gnus-parent-id): Optimize null n case. From + Jesper Harder . + +2002-01-18 TSUCHIYA Masatoshi + + * gnus-art.el (gnus-request-article-this-buffer): Call + `nneething-get-file-name' to extract the file name from the + message id. + + * nneething.el (nneething-encode-file-name): New function. + (nneething-decode-file-name): Ditto. + (nneething-get-file-name): Ditto. + (nneething-make-head): Encode the file name and encapsulate it + into the field of the message id. + +2002-01-18 Simon Josefsson + + * nnml.el (nnml-request-update-info): Don't erase flags that isn't + stored in .marks. + + * nnfolder.el (nnfolder-request-update-info): Ditto. + +2002-01-18 ShengHuo ZHU + + * gnus-art.el (gnus-url-parse-query-string): Allow new line in value. + +2002-01-18 Simon Josefsson + + * imap.el (imap-starttls-p): Don't check for binary. + (imap-gssapi-auth-p): Ditto. + (imap-kerberos4-auth-p): Ditto. + (imap-open): Change logic. Iterate through all possible streams, + instead of bailing out after first failure. Move authenticator + decision to `imap-authenticate'. + (imap-authenticate): Change logic, now finds the authenticator to + use, was previously in `imap-open'. + (imap-open): Return nil on failure. + (imap-open): Setup temp buffer correctly. + (imap-open): Return buffer only on success. + (imap-interactive-login, imap-interactive-login): Tell the user + which stream/authenticator is used for the queried + username/password. + (imap-open, imap-authenticate): Set variables. + (imap-gssapi-auth-p, imap-kerberos4-auth-p): Fix typo. + (imap-open): Don't assume how `with-temp-buffer' is implemented. + +2002-01-17 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-grab-cam-x-face): New function. + +2002-01-16 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-emphasis-alist): Allow matching "*this*.)". + +2002-01-17 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-toggle-group-plugged): New function. + (gnus-agent-group-mode-map): Bind it to "Jo". + (gnus-agent-group-make-menu-bar): Add it into menu bar. + +2002-01-17 Karl Kleinpaste + + * gnus-xmas.el (gnus-group-toolbar): Add .newsrc save button. + (gnus-summary-mail-toolbar): Add mail article deletion button. + + * smiley.el (smiley-deformed-regexp-alist): Eliminate noseless + false positives for lines of "^^^^". + + * gnus-picon.el (gnus-picon-find-face): faces database is all + lowercase. + +2002-01-17 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-retrieve-headers): Use correct buffer. + (gnus-agent-braid-nov): Switch back to nntp-server-buffer. Remove + duplications. + (gnus-agent-batch): Bind gnus-agent-confirmation-function. + +2002-01-16 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-initial-limit): Inline + gnus-summary-limit-children. + (gnus-summary-initial-limit): Don't limit if + gnus-newsgroup-display is nil. + (gnus-summary-initial-limit): No, don't. + + * gnus-util.el + (gnus-put-text-property-excluding-characters-with-faces): Inline + gnus-put-text-property. + + * gnus-spec.el (gnus-default-format-specs): New variable. + + * gnus-start.el (gnus-read-newsrc-file): Don't clear + gnus-format-specs. + (gnus-read-newsrc-el-file): Default to gnus-default-format-specs. + + * gnus-spec.el (gnus-update-format-specifications): Really check + the Gnus version of the .newsrc.eld file. + (gnus-format-specs): Save the new default summary format. + + * gnus-util.el (gnus-parent-id): Check whether references is empty + before splitting. + + * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): Inline some + functions. + (gnus-gather-threads-by-references): Inline + `gnus-split-references'. + + * gnus-spec.el (gnus-summary-line-format-spec): New, optimized + default value of gnus-summary-line-format-spec. + +2002-01-15 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-retrieve-headers-1): A better error + message. + (nnslashdot-request-list): Ditto. + (nnslashdot-sid-strip): Removed. + +2002-01-15 Simon Josefsson + + * nnimap.el (nnimap-close-asynchronous): Enable. + (nnimap-close-group): Expunge. + +2002-01-15 ShengHuo ZHU + + * gnus-util.el (gnus-user-date-format-alist): Typo. + From: Frank Schmitt + +2002-01-15 TSUCHIYA Masatoshi + + * nneething.el (nneething-request-article): Set + `nnmail-file-coding-system' to `binary' locally, in order to read + files without any conversion. + +2002-01-15 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-retrieve-headers): Use + nnheader-file-coding-system and nnmail-active-file-coding-system. + (gnus-agent-regenerate-group): Ditto. + (gnus-agent-regenerate): Ditto. + (gnus-agent-write-active): Ditto. + Suggested by Katsumi Yamaoka + +2002-01-14 ShengHuo ZHU + + * gnus-art.el (gnus-button-alist): Don't highlight + +2002-01-14 ShengHuo ZHU + + * gnus.el: We don't need gnus-article-show-all-headers. + + * gnus-art.el (article-show-all, gnus-article-show-all-header): + Ditto. + + * gnus-sum.el (gnus-summary-select-article): Don't call + show-all-headers, because hidden headers are not hidden text any + more. + +2002-01-13 Simon Josefsson + + * message.el (message-newline-and-reformat): Use `newline' instead + of inserting \n, so that the newline is marked as hard. + + * gnus-spec.el (gnus-pad-form): Don't evaluate EL multiple times. + From Jesper Harder . + +2002-01-12 ShengHuo ZHU + + * imap.el (imap-close): Keep going if quit. + + * gnus-agent.el (gnus-agent-retrieve-headers): Erase + nntp-server-buffer. + +2002-01-12 Lars Magne Ingebrigtsen + + * mm-view.el (mm-display-inline-fontify): Require font-lock to + avoid unbinding shadowed variables. + + * gnus-art.el (gnus-picon-databases): Moved here. + (gnus-picons-installed-p): Moved here. + (gnus-article-reply-with-original): Use `mark'. + + * gnus.el (gnus-picon): Moved here and renamed. + + * gnus-art.el (gnus-treat-from-picon): Only be on if picons are + installed. + (gnus-treat-mail-picon): Ditto. + (gnus-treat-newsgroups-picon): Ditto. + + * gnus-picon.el (gnus-picons-installed-p): New function. + +2002-01-12 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-go-online): Fix doc. + +2002-01-12 Simon Josefsson + + * nnimap.el (nnimap-need-unselect-to-notice-new-mail) + (nnimap-before-find-minmax-bugworkaround): Use it. + (nnimap-find-minmax-uid): Don't reselect current mailbox. + (nnimap-dont-close): New variable. + (nnimap-close-group): Use it. + +2002-01-12 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-reply-with-original): Use + `mark-active'. + + * gnus-msg.el (gnus-summary-reply): Don't bug out on regions. + + * gnus-logic.el (gnus-advanced-score-rule): Thinko fix. + (gnus-score-advanced): Clean up. + (gnus-score-advanced): Accept a multiple of the score. + +2002-01-12 Simon Josefsson + + * flow-fill.el (fill-flowed-display-column) + (fill-flowed-encode-columnq): New variables. Suggested by + Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro,b_(Bjohann). + (fill-flowed-encode, fill-flowed): Use them. + + * message.el (message-send-news, message-send-mail): Use + m-b-s-n-p-e-h-n. + + * mml.el (autoload): Autoload fill-flowed-encode. + (mml-buffer-substring-no-properties-except-hard-newlines): New + function. + (mml-read-part): Use it. + (mml-generate-mime-1): Encode format=flowed if appropriate. + (mml-insert-mime-headers): Insert format=flowed. + + * flow-fill.el (fill-flowed-encode): New function. + (fill-flowed): Bind fill-column to window width. + +2002-01-12 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-buffer-name): Return the dead name if + it exists. + (gnus-summary-setup-buffer): Wake up dead summary buffers. + (gnus-summary-buffer-name): Don't return the dead name after all. + (gnus-summary-setup-buffer): Kill the dead buffer. + + * gnus-art.el (gnus-article-followup-with-original): Store the + value of the mark before deactivating it. + +2002-01-11 ShengHuo ZHU + + * gnus-fun.el (gnus-display-x-face-in-from): Fake it. + From: Karl Kleinpaste + + * gnus-art.el (article-display-x-face): Ditto. + (gnus-article-reply-with-original): Use gnus-region-active-p. + (gnus-article-followup-with-original): Ditto. + + * gnus-sum.el (gnus-summary-read-group-1): Don't select + downloadable article either. + +2002-01-11 ShengHuo ZHU + + * gnus-art.el (article-display-x-face): Insert From:. + + * gnus-sum.el (gnus-summary-move-article): Don't draw the + article. Bind gnus-display-mime-function and + gnus-article-prepare-hook. + + * gnus-agent.el (gnus-agent-retrieve-headers): Load agentview. + (gnus-agent-toggle-plugged): Use gnus-agent-go-online. Move + gnus-agent-possibly-synchronize-flags to the last. + (gnus-agent-go-online): New function. New variable. + +2002-01-11 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-regenerate-group): Add clean option. + (gnus-agent-regenerate): Ditto. + +2002-01-11 ShengHuo ZHU + + * message.el (message-ignored-news-headers) + (message-ignored-mail-headers): Add X-Gnus-Agent-Meta-Information:. + Suggested by ARISAWA Akihiro + + * gnus.el (gnus-gethash-safe): New macro. + + * gnus-agent.el (gnus-agent-regenerate-history): New function. + (gnus-agent-regenerate): Show messages. + +2002-01-11 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-regenerate-group): New function. + (gnus-agent-regenerate): New function. + (gnus-agent-save-alist): Sort. + (gnus-agent-copy-nov-line): Test eobp. + (gnus-agent-retrieve-headers): Erase buffer. + +2002-01-10 ShengHuo ZHU + + * mm-util.el (mm-charset-to-coding-system): Change charset to cs. + From: Torsten Hilbrich + + * gnus.el (gnus-agent-covered-methods): Move here. + (gnus-online): New function. + (gnus-agent-method-p): Move here. + + * nnagent.el (nnagent-retrieve-headers): Check whether arts is + nil. Remove articles-alist. + + * gnus-start.el (gnus-get-unread-articles): Check online. + (gnus-groups-to-gnus-format): Ditto. + (gnus-active-to-gnus-format): Ditto. + + * gnus-agent.el (gnus-agent-get-function): Use it. + (gnus-agent-get-undownloaded-list): Ditto. + (gnus-agent-fetch-session): Only fetch online methods. + + * gnus-srvr.el (gnus-server-make-menu-bar): Add offline. + (gnus-server-mode-map): Ditto. + (gnus-server-offline-face): New face. + (gnus-server-offline-face): New variable. + (gnus-server-font-lock-keywords): Add offline. + (gnus-server-insert-server-line): Ditto. + (gnus-server-offline-server): New function. + + * gnus-int.el (gnus-open-server): Turn to offline. + (gnus-server-unopen-status): New variable. + +2002-01-10 ShengHuo ZHU + + * nnkiboze.el (nnkiboze-request-article): Use + gnus-agent-request-article. + + * nnagent.el (nnagent-retrieve-headers): Don't use nnml + function. Insert undownloaded NOV. + + * gnus-agent.el (gnus-agent-retrieve-headers): New function. + (gnus-agent-request-article): New function. + + * gnus.el (gnus-agent-cache): New variable. + + * gnus-int.el (gnus-retrieve-headers): Use + gnus-agent-retrieve-headers. + (gnus-request-head): Use gnus-agent-request-article. + (gnus-request-body): Ditto. + + * gnus-art.el (gnus-request-article-this-buffer): Use + gnus-agent-request-article. + + * gnus-sum.el (gnus-summary-read-group-1): Don't show the first + article if it is undownloaded. + +2002-01-10 Katsumi Yamaoka + + * gnus-spec.el (gnus-spec-tab): Deal with wide characters. + +2002-01-09 Katsumi Yamaoka + + * canlock.el (canlock-string-as-unibyte): New macro. + (canlock-sha1-with-openssl): Return a unibyte string. + (canlock-make-cancel-key): Treat Message-ID as a unibyte string. + +2002-01-09 ShengHuo ZHU + + * gnus.el (gnus-expand-group-parameters): Match \N or \& only. + +2002-01-08 ShengHuo ZHU + + * mm-encode.el (mm-content-transfer-encoding-defaults): Add + application/x-emacs-lisp. + + * gnus-msg.el (gnus-bug): Use application/emacs-lisp. + + * nntp.el (nntp-request-article): Add group parameter. + (nntp-request-head): Ditto. + (nntp-find-group-and-number): Add parameter group. Figure out + number if the status line doesn't give (e.g. quimby.gnus.org). + +2002-01-08 Simon Josefsson + + * mml.el (mml-generate-mime-1): Set recipient correctly. + +2002-01-08 ShengHuo ZHU + + * message.el (message-read-from-minibuffer): Add parameter + initial-contents. + * gnus-msg.el (gnus-summary-resend-message): Use it. + + * gnus-group.el (gnus-group-read-ephemeral-group): Restore the old + behavior of quit-config. + + * message.el (message-make-from): Don't quote fullname. + From: Bj,Ax(Brn Mork + + * gnus-group.el (gnus-group-suspend): Don't kill message buffers. + From: + +2002-01-07 ShengHuo ZHU + + * gnus-group.el (gnus-group-mark-article-read): Typo. Increase n. + + * gnus-art.el (gnus-header-button-alist): Handle mailto. + + * mml.el (mml-preview): Bind gnus-original-article-buffer because + article-decode-group-name uses it. Bind gnus-article-prepare-hook + because bbdb may use it. + +2002-01-07 TSUCHIYA Masatoshi + + * nneething.el (nneething-request-article): When a non-text file + is converted to an article, its data is encoded in base64. Call + `nneething-make-head' with options to specify MIME types. + (nneething-make-head): Add optional arguments to specify MIME + types. + +2002-01-06 ShengHuo ZHU + + * gnus-fun.el (gnus-display-x-face-in-from): Fake a "From: " + header if there is not. + + * gnus-xmas.el (gnus-xmas-put-image): Insert " " if bobp. + + * gnus-msg.el (gnus-gcc-mark-as-read): New variable. + (gnus-inews-mark-gcc-as-read): Obsolete variable. + (gnus-inews-do-gcc): Use them. + + * gnus-group.el (gnus-group-mark-article-read): Put holes into + gnus-newsgroup-unselected. + +2002-01-06 Simon Josefsson + + * imap.el (imap-ssl-open, imap-ssl-open, imap-parse-fetch): Use + condition-case, not ignore-errors. + +2002-01-06 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-insert-old-articles): Bind + gnus-fetch-old-headers. + + * gnus-art.el (article-display-x-face): Use the current buffer + unless `W f'. Otherwise, X-Face may be shown in the header of a + forwarded part. + (gnus-treatment-function-alist): Treat xface before hiding + headers. + +2002-01-06 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-read-ephemeral-group): Fix + parameters. + +2002-01-06 ShengHuo ZHU + + * mm-util.el (mm-multibyte-p): Define conditionally when load. + (mm-guess-charset): New function. + (mm-charset-after): Use it. + (mm-detect-coding-region): New function. + (mm-detect-mime-charset-region): New function. + + * gnus-sum.el (gnus-summary-show-article): Use + mm-detect-coding-region. + +2002-01-06 Lars Magne Ingebrigtsen + + * message.el (message-make-fqdn): Be less violent. + + * gnus.el (gnus-logo-color-style): Compute custom form + automatically. + + * gnus-sum.el (gnus-summary-enter-digest-group): Feed the adaptive + score file of the parent to the document group. + + * gnus-group.el (gnus-group-read-ephemeral-group): Add an optional + parameters parameter. + + * gnus-score.el (gnus-score-load-file): Clean up. + +2002-01-06 ShengHuo ZHU + + * gnus-sum.el (gnus-thread-sort-by-most-recent-number): Fix typo. + From: Damien Wyart + + * gnus-util.el (gnus-local-map-property): In Emacs 21, use keymap. + +2002-01-05 ShengHuo ZHU + + * gnus-sum.el (gnus-select-group-hook): Typo. + + * rfc2047.el (rfc2047-decode-string): Return immediately if there + is no quoted-printable-encoded STRING. + From: Jesper Harder + + (rfc2047-decode-string): Decode it. + +2002-01-05 Lars Magne Ingebrigtsen + + * gnus.el (gnus-logo-color-alist): Added more colors from Luis. + +2002-01-05 Keiichi Suzuki + Trivial patch. + + * nntp.el (nntp-possibly-change-group): Erase contents of nntp + buffer to get rid of junk line. + +2002-01-05 Simon Josefsson + + * message.el (message-mode-map): Bind message-goto-from to C-c C-f + C-o. + (message-mode-map): Bind message-insert-or-toggle-importance to + C-c C-u. + (message-mode-map): Bind message-disposition-notification-to to + C-c M-n. + (message-mode-menu): Add m-d-n-t. + (message-mode-field-menu): Add m-goto-from. + (message-mode): Doc fix. + (message-goto-from): New function. + (message-insert-disposition-notification-to): New function. + (message-tool-bar-map): Add receipt button. + +2002-01-05 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-thread-latest-date): New function. + (gnus-thread-sort-by-most-recent-number): Renamed. + (gnus-thread-sort-functions): Doc fix. + (gnus-select-group-hook): Don't use setq on a hook. + (gnus-thread-latest-date): Use date, not number + + * gnus-agent.el (gnus-agent-expire-days): Doc fix. + (gnus-agent-expire): Allow regexp of expire-days. + + * gnus-art.el (gnus-article-reply-with-original): Deactivate + region. + (gnus-article-followup-with-original): Ditto. + + * gnus-sum.el (gnus-thread-highest-number): Doc fix. + + * gnus-art.el (gnus-mime-display-alternative): Use + gnus-local-map-property. + (gnus-mime-display-alternative): Ditto. + (gnus-insert-mime-security-button): Ditto. + (gnus-insert-next-page-button): Ditto. + (gnus-button-prev-page): Take optional args. + (gnus-insert-prev-page-button): widget-convert. + + * gnus-util.el (gnus-local-map-property): New function. + + * gnus-art.el (gnus-prev-page-map): Use parent map. + (gnus-next-page-map): Ditto. + + * gnus-spec.el (gnus-parse-format): Clean up. + (gnus-parse-format): Do complex formatting for %=. + + * gnus-fun.el (gnus-display-x-face-in-from): Add the string + "X-Face: " to the data in the built-in scenario. + + * gnus-spec.el (gnus-parse-simple-format): Use gnus-pad-form. + (gnus-correct-pad-form): Renamed. + (gnus-tilde-max-form): Clean up. + (gnus-pad-form): Use gnus-use-correct-string-widths. + + * gnus-fun.el (gnus-display-x-face-in-from): Use native xface + support if that is available. + + * gnus-sum.el (gnus-thread-highest-number): New function. + (gnus-thread-sort-by-most-recent-thread): New function. + (gnus-thread-sort-functions): Doc fix. + +2002-01-04 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-select-article): Disable multibyte in + all cases. + (gnus-summary-mode): Enable it in all cases. + (gnus-summary-display-article): Ditto. + (gnus-summary-edit-article): Ditto. + + * gnus-ems.el (gnus-put-image): Really return glyph. + + * gnus-art.el (gnus-article-x-face-command): Fix :type. + (gnus-treat-smiley): Don't take "P" in the interactive form. + +2002-01-04 Lars Magne Ingebrigtsen + + * compface.el (uncompface): XEmacs and Emacs have differing + capabilities. + + * gnus-fun.el (gnus-display-x-face-in-from): Use face. + + * gnus-ems.el (gnus-article-xface-ring-internal): Removed. + (gnus-article-xface-ring-size): Removed. + (gnus-article-display-xface): Removed. + (gnus-remove-image): Cleaned up. + + * gnus-xmas.el (gnus-xmas-create-image): Convert pbm to xbm. + (gnus-xmas-create-image): Take pbm files. + (gnus-x-face): Removed. + (gnus-xmas-article-display-xface): Removed. + + * gnus-fun.el (gnus-display-x-face-in-from): Bind + default-enable-multibyte-characters. + + * compface.el (uncompface): Doc fix. + + * gnus-art.el (gnus-article-x-face-command): Use + gnus-display-x-face-in-from. + + * gnus-xmas.el (gnus-xmas-put-image): Return the image. + + * gnus-ems.el (gnus-put-image): Return the image. + + * gnus-fun.el (gnus-display-x-face-in-from): New function. + (gnus-x-face): Moved here. + +2002-01-04 ShengHuo ZHU + + * gnus-xmas.el (gnus-xmas-put-image): Don't insert SPC or make + invisible if string is nil. + (gnus-xmas-article-display-xface): Use it. + + * gnus-ems.el (gnus-put-image): Explicitly use SPC, and add text + property when string is nil. + (gnus-article-display-xface): Use it. + +2002-01-04 Lars Magne Ingebrigtsen + + * gnus-art.el (article-display-x-face): Check whether valid grey + face was returned. + (article-display-x-face): Place image in the right spot. + + * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Get rid of + stderr. + (gnus-convert-gray-x-face-to-xpm): Check whether output is valid. + +2002-01-03 Lars Magne Ingebrigtsen + + * gnus-xmas.el (gnus-xmas-create-image): Take optional + parameters. + (gnus-xmas-put-image): Allow non-strings to be passed. + + * gnus-art.el (article-display-x-face): Use optional parameters. + + * gnus-ems.el (gnus-create-image): Take optional parameters. + + * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Use uncompface. + + * compface.el (compface-xbm-p): Removed. + + * gnus-ems.el (gnus-article-compface-xbm): Removed. + (gnus-article-display-xface): Use compface. + + * compface.el: New file. + + * gnus-fun.el (gnus-convert-pbm-to-x-face-command): Remove quotes. + (gnus-convert-image-to-x-face-command): Ditto. + (gnus-random-x-face): Quote argument. + (gnus-x-face-from-file): Ditto. + +2002-01-03 Paul Jarc + + * nnmaildir.el (nnmaildir-request-expire-articles): evaluate + the expire-group parameter once per article rather than once + per group; bind `nnmaildir-article-file-name' and `article' + for convenience. Leave article alone when expire-group + specifies the current group. + (nnmaildir--update-nov): be more concurrency-friendly with + temp file names. + +2002-01-03 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-read-init-file): Cleaned up. + +2002-01-03 Dave Love + + * gnus-start.el (gnus-startup-file-coding-system): Removed. + (gnus-read-init-file): Don't use it. + +2002-01-03 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-fetch-session): Run hook. + +2002-01-03 Kai Gro,b_(Bjohann + + * gnus-start.el (gnus-read-init-file): Don't force coding system + for ~/.gnus. From Dave Love . + +2002-01-03 ShengHuo ZHU + + * nntp.el (nntp-send-buffer): Use mm-with-unibyte-current-buffer. + * nnspool.el (nnspool-request-post): Ditto. + + * mm-util.el (mm-use-find-coding-systems-region): New variable. + (mm-find-mime-charset-region): Use it. + +2002-01-03 Per Abrahamsen + + * gnus.el (gnus-summary-line-format): Added :link. + * gnus-topic.el (gnus-topic-line-format): Ditto. + * gnus-sum.el (gnus-summary-dummy-line-format): Ditto. + * gnus-srvr.el (gnus-server-line-format): Ditto. + * gnus-group.el (gnus-group-line-format): Ditto. + + * gnus-sum.el (gnus-summary-make-menu-bar): Use correct syntax for + :keys, it works on both Emacsen. + +2002-01-03 ShengHuo ZHU + + * mm-util.el (mm-charset-to-coding-system): Don't setq charset. + +2002-01-03 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-summary-send-map): Fix binding for very-wide. + +2002-01-03 Reiner Steib + + * gnus-sum.el (gnus-summary-make-menu-bar): Menu bar entries for + very wide reply. + +2002-01-03 Lars Magne Ingebrigtsen + + * gnus-picon.el (gnus-picon-transform-address): Cache stuff. + (gnus-picon-cache): New variable. + (gnus-picon-transform-newsgroups): Cache stuff. + + * gnus-art.el (gnus-article-reply-with-original): New command. + (gnus-article-followup-with-original): New command. + + * gnus-msg.el (gnus-copy-article-buffer): Take optional BEG and + END parameters. + (gnus-summary-followup): Take a list of list of articles. + (gnus-inews-yank-articles): Allow lists of article/regions. + + * gnus-art.el (gnus-article-read-summary-keys): `R' and `F' are no + longer the usual commands. + + * gnus-fun.el (gnus-convert-image-to-gray-x-face): Use pnmnoraw. + (gnus-convert-gray-x-face-to-xpm): Don't use six parameters to + shell-command-on-region. + +2002-01-02 ShengHuo ZHU + + * gnus-picon.el (gnus-picon-transform-newsgroups): Fix for the case + "Newsgroups: rec.music.beatles.moderated, rec.music.beatles". + +2002-01-03 Steve Youngs + + * gnus-sum.el (gnus-summary-make-menu-bar): XEmacs doesn't + understand ':keys', wrap it in an featurep 'xemacs. + +2002-01-02 ShengHuo ZHU + + * gnus-ems.el (gnus-article-display-xface): Show xface in the + order of headers (Actually, it is called in a reversed order). Add + 'gnus-image-text-deletable property. + (gnus-remove-image): Remove text with such a property. + + * gnus-xmas.el (gnus-xmas-article-display-xface): Don't use + gnus-put-image. + + * gnus-art.el (gnus-article-treat-fold-newsgroups): Replace ", *" + with ", " + +2002-01-02 Lars Magne Ingebrigtsen + + * gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Renamed. + + * gnus-art.el (gnus-ignored-headers): Hide all X-Faces. + (article-display-x-face): Display grey X-Faces. + + * gnus-fun.el (gnus-convert-gray-x-face-region): New function. + (gnus-convert-gray-x-face-to-ppm): Ditto. + (gnus-convert-image-to-gray-x-face): Ditto. + + * gnus-sum.el (gnus-summary-make-menu-bar): Add a :keys to + gnus-summary-show-raw-article. + +2002-01-02 ShengHuo ZHU + + Display picons in XEmacs without showing text. + + * gnus-xmas.el (gnus-xmas-create-image): Don't use + mm-create-image-xemacs to create xbm glyph, because it deletes + temporary files. + (gnus-xmas-put-image): Use end-glyph. Make text invisible. + (gnus-xmas-remove-image): Make text visible, remove glyph. + + * gnus-picon.el (gnus-picon-transform-newsgroups) + (gnus-picon-transform-address): Insert spec backward, due to the + incompatibility of gnus-xmas-put-image. + +2002-01-02 Pavel Jan,Am(Bk + + * gnus-fun.el (gnus-convert-pbm-to-x-face-command): Doc fix. + +2002-01-02 Lars Magne Ingebrigtsen + + * gnus.el: Doc fix. + + * gnus-art.el: Doc fix. + + * gnus-agent.el: Doc fix. + +2002-01-01 ShengHuo ZHU + + * gnus-diary.el, gnus-delay.el: Fix copyright lines. + +2002-01-01 Paul Jarc + + * nnmaildir.el (nnmaildir--update-nov): automatically parse + NOV data out of the message again if nnmail-extra-headers has + changed. + +2002-01-02 Lars Magne Ingebrigtsen + + * gnus-fun.el: New file. + (gnus-convert-image-to-x-face-command): New variable. + (gnus-insert-x-face): New function. + (gnus-random-x-face): Renamed. + (gnus-x-face-from-file): Renamed. + + * gnus-art.el (gnus-body-boundary-delimiter): Changed default to + "_". + (gnus-body-boundary-delimiter): Typo fix. + +2002-01-02 Simon Josefsson + + * gnus-art.el (gnus-article-treat-body-boundary): Handle nil. + (gnus-body-boundary-delimiter): Fix type. + +2002-01-01 Simon Josefsson + + * gnus-art.el (gnus-treat-buttonize, gnus-treat-buttonize-head) + (gnus-treat-emphasize, gnus-treat-strip-cr) + (gnus-treat-leading-whitespace, gnus-treat-hide-headers) + (gnus-treat-hide-boring-headers, gnus-treat-hide-signature) + (gnus-treat-fill-article, gnus-treat-hide-citation) + (gnus-treat-hide-citation-maybe) + (gnus-treat-strip-list-identifiers, gnus-treat-strip-pgp) + (gnus-treat-strip-pem, gnus-treat-strip-banner) + (gnus-treat-highlight-headers, gnus-treat-highlight-citation) + (gnus-treat-date-ut, gnus-treat-date-local) + (gnus-treat-date-english, gnus-treat-date-lapsed) + (gnus-treat-date-original, gnus-treat-date-iso8601) + (gnus-treat-date-user-defined, gnus-treat-strip-headers-in-body) + (gnus-treat-strip-trailing-blank-lines) + (gnus-treat-strip-leading-blank-lines) + (gnus-treat-strip-multiple-blank-lines) + (gnus-treat-unfold-headers, gnus-treat-fold-headers) + (gnus-treat-fold-newsgroups, gnus-treat-overstrike) + (gnus-treat-display-xface, gnus-treat-display-smileys) + (gnus-treat-from-picon, gnus-treat-mail-picon) + (gnus-treat-newsgroups-picon, gnus-treat-body-boundary) + (gnus-treat-capitalize-sentences, gnus-treat-fill-long-lines) + (gnus-treat-play-sounds, gnus-treat-translate) + (gnus-treat-x-pgp-sig): Doc fix, add link to manual. + + * gnus-art.el (gnus-body-boundary-delimiter): New variable. + (gnus-article-treat-body-boundary): Use it. + + * message.el (message-mode): Fix doc. + (message-mode-menu): Fix names. + +2002-01-01 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-first-subject): Really go to unseen + articles. + + * gnus-picon.el (gnus-picon-find-face): Search MISC for all types. + (gnus-picon-transform-address): Search for unknown faces as well. + (gnus-picon-find-face): Don't search "news" for MISC. + (gnus-picon-user-directories): Changed default back to exclude + "unknown". + + * gnus-sum.el (gnus-summary-hide-all-threads): Reversed logic. + + * gnus-picon.el (gnus-picon-find-face): Search through all + databases. + (gnus-picon-find-face): New implementation. + + * gnus-topic.el (gnus-topic-goto-previous-topic): New command and + keystroke. + (gnus-topic-goto-next-topic): Ditto. + + * gnus.el (gnus-summary-line-format): Changed default. + + * nnmail.el (nnmail-extra-headers): Change default. + + * gnus-sum.el (gnus-extra-headers): Change default. + + * message.el (message-news-other-window): Changed "news" to + "posting". + (message-news-other-frame): Ditto. + (message-do-send-housekeeping): Ditto. + + * gnus-sum.el (gnus-summary-maybe-hide-threads): Use predicate + function. + (gnus-article-unread-p): New function. + (gnus-article-unseen-p): New function. + (gnus-dead-summary-mode-map): Typo. + + * gnus-util.el (gnus-make-predicate): New function. + (gnus-make-predicate-1): New function. + + * gnus-sum.el: New function. + (gnus-map-articles): New function. + + * gnus-art.el (gnus-treat-fold-headers): New variable. + (gnus-article-treat-fold-headers): New command and keystroke. + + * gnus-sum.el (gnus-dead-summary-mode-map): Clean up. + (gnus-dead-summary-mode-map): Bind q to bury-buffer. + +2002-01-01 ShengHuo ZHU + + * message.el (message-fcc-externalize-attachments): New variable. + (message-do-fcc): Use it. + + * gnus-msg.el (gnus-gcc-externalize-attachments): New variable. + (gnus-inews-do-gcc): Use it. + + * mml.el (mml-tweak-sexp-alist): New variable. + (mml-externalize-attachments): New variable. + (mml-tweak-part): Use mml-tweak-sexp-alist. + (mml-tweak-externalize-attachments): New function. + +2002-01-01 Steve Youngs + + * gnus-xmas.el (gnus-xmas-article-display-xface): Uncomment + 'set-glyph-face' so x-face back/foreground can be set. + +2001-12-31 ShengHuo ZHU + + * message.el (message-fix-before-sending): Fix a typo. + +2002-01-01 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-treat-smiley): Renamed command. + (gnus-article-remove-images): New command and keystroke. + + * gnus-sum.el (gnus-summary-toggle-smiley): Removed. + + * smiley-ems.el (gnus-smiley-display): Removed. + + * gnus.el (gnus-version-number): Update version. + + * message.el (message-text-with-property): Renamed and moved + here. + (message-fix-before-sending): Highlight invisible text and place + point there. + +2002-01-01 02:32:53 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.04 is released. + +2002-01-01 Lars Magne Ingebrigtsen + + * gnus-delay.el (gnus-delay-send-queue): Renamed. + + * gnus-art.el (gnus-ignored-headers): More headers, + + * ietf-drums.el (ietf-drums-parse-addresses): Use `error' instead + of `scan-error', since XEmacs doesn't seem to support that. + +2001-12-31 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-best-unread-article): Take a prefix + arg. + (gnus-summary-best-unread-subject): Ditto. + (gnus-summary-best-unread-subject): No, don't. + (gnus-summary-better-unread-subject): New command. + + * gnus-xmas.el (gnus-xmas-put-image): Insert the string itself. + + * lpath.el ((featurep 'xemacs)): fbind url function. + + * gnus-xmas.el (gnus-xmas-article-display-xface): Use data, not + buffer. + (gnus-xmas-remove-image): Implementation that does something. + (gnus-xmas-article-display-xface): Mark images properly. + + * gnus-art.el (gnus-mime-print-part): Use mm-temp-directory. + +2001-12-31 Florian Weimer + + * gnus.el (gnus): Warn if trying to run Gnus un-byte-compiled. + +2001-12-31 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-line-format): Added %O to the default + value. + + * gnus-util.el (gnus-text-with-property): The smallest point is + point-min. + + * smiley-ems.el (smiley-region): Return images. + (gnus-smiley-display): Allow toggling. + (smiley-region): Use text properties, not overlays. + + * gnus-xmas.el (gnus-xmas-remove-image): New function, not + implemented yet. + + * smiley-ems.el (smiley-update-cache): Check for valid types. + + * gnus-art.el (gnus-with-article-buffer): New macro. + + * gnus-picon.el (gnus-picon-transform-newsgroups): Keep the + strings as well as the glyphs. + (gnus-picon-transform-address): Ditto. + (gnus-picon-insert-glyph): Ditto. + (gnus-picon-transform-newsgroups): Toggle. + (gnus-picon-transform-address): Toggle. + + * gnus-ems.el (gnus-remove-image): New function. + (gnus-put-image): Take an optional string. + + * gnus-util.el (gnus-text-with-property): New function. + + * gnus-art.el (gnus-delete-images): New function. + + * gnus-ems.el (gnus-article-display-xface): Mark and store image. + + * gnus-art.el (gnus-article-wash-status-entry): Renamed. + (gnus-article-wash-status): Use it. + (gnus-signature-toggle): Clean up. + (gnus-add-wash-status): New function. + (gnus-delete-wash-status): New function. + (gnus-article-hide-text-type): Use them throughout. + (gnus-add-image): New function. + + * gnus-ems.el (gnus-article-display-xface): Use new interface. + + * gnus-xmas.el (gnus-xmas-article-display-xface): Use new + interface. + + * gnus-art.el (article-display-x-face): Cleaned up. + + * rfc2047.el (rfc2047-field-value): New function. + + * mail-parse.el (mail-header-field-value): New alias. + + * gnus-art.el (gnus-mime-print-part): Fix typos. + + * smiley-ems.el (gnus-smiley-file-types): New variable. + (smiley-update-cache): Use it. + (smiley-regexp-alist): Suffix-less smiley names. + (smiley-regexp-alist): Added more smileys. + + * gnus-sum.el (gnus-print-buffer): Made into own function. + (gnus-summary-print-article): Use it. + + * mailcap.el (mailcap-mime-info): Actually return the bit that we + looked for when REQUEST is a string. + + * gnus-art.el (gnus-mime-button-commands): Add printing + keystroke. + (gnus-mime-copy-part): Doc fix. + (gnus-mime-print-part): New command. + +2001-12-31 Simon Josefsson + + * imap.el (imap-parse-fetch): Notice empty flags responses. From + Nic Ferrier . + +2001-12-30 ShengHuo ZHU + + * gnus-picon.el (gnus-treat-from-picon): Autoload. + (picon): Fix doc. + + * gnus-win.el (gnus-window-to-buffer): gnus-picon-buffer-name no + longer exists. Remove those codes. + * gnus.el (gnus-use-picons): Ditto. + +2001-12-30 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-treat-fold-newsgroups): Don't + infloop. + + * gnus-sum.el (t): New `W D' map. + + * gnus-art.el (gnus-treat-fold-newsgroups): New variable. + (gnus-article-treat-body-boundary): Clean up. + (gnus-body-boundary-face): Removed. + (gnus-article-goto-header): Moved here. + (gnus-article-goto-header): Allow better regexps. + (gnus-article-treat-fold-newsgroups): New command. + + * gnus-sum.el (gnus-summary-move-article): We have to select an + article to give `gnus-read-move-group-name' an opportunity to + suggest an appropriate default. + + * rfc2047.el (rfc2047-fold-line): New function. + (rfc2047-unfold-line): Ditto. + (rfc2047-fold-region): Don't fold just after the header name. + + * mail-parse.el (mail-header-fold-line): New alias. + (mail-header-unfold-line): Ditto. + + * gnus-art.el (gnus-body-boundary-face): Renamed. + (gnus-article-treat-body-boundary): Use it. + (gnus-article-treat-body-boundary): Use an invisible header and a + line of underline characters. + +2001-12-30 ShengHuo ZHU + + * ietf-drums.el (ietf-drums-parse-addresses): Recover from errors. + + * gnus-picon.el (gnus-picon-transform-address): Skip bad addresses. + (gnus-picon-split-address): New function. + (gnus-picon-find-face): Use it. + (gnus-picon-transform-address): Use it. Set first to t for each + address. + + * gnus-art.el (gnus-with-article-headers): Move to here. Define + the macro then use it. + (gnus-treatment-function-alist): Treat picons earlier. + +2001-12-30 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-body-separator-face): New variable. + (gnus-article-treat-body-boundary): Use a blank, colored line. + + * gnus-picon.el (gnus-picon-find-face): Look into misc/MISC as + well. + + * gnus-art.el (gnus-treat-body-boundary): New variable. + (gnus-article-treat-unfold-headers): Use helper macro. + (gnus-article-treat-body-boundary): New command. + + * gnus.el (gnus-logo-color-style): Change the default color. + (gnus-splash-face): Gray, gray. + + * gnus-xmas.el (gnus-xmas-group-startup-message): Use general + colors. + + * gnus.el (gnus-logo-color-alist): Moved here and renamed. + (gnus-logo-color-style): Ditto. + (gnus-logo-colors): Ditto. + + * gnus-picon.el (gnus-picon-create-glyph): Cache glyphs. + + * gnus-art.el (gnus-treat-newsgroups-picon): New variable. + + * gnus-picon.el (gnus-treat-newsgroups-picon): New function. + (gnus-picon-transform-newsgroups): New function. + + * ietf-drums.el (ietf-drums-parse-addresses): Accept a nil + string. + + * gnus-picon.el (gnus-treat-mail-picon): Renamed. + + * gnus-art.el (gnus-treat-cc-picon): New variable. + (gnus-treat-mail-picon): Renamed. + + * gnus-picon.el: New implementation. + (gnus-picon-find-face): Renamed. + (gnus-treat-from-picon): Use it. + (gnus-picon-transform-address): Renamed. + (gnus-treat-from-picon): Use it. + (gnus-picon-create-glyph): Renamed. + (gnus-picon-transform-address): Use it. + (gnus-treat-cc-picon): New command. + + * mm-decode.el (mm-create-image-xemacs): Separated out into + function. + (mm-get-image): Use it. + + * gnus-art.el (gnus-treat-display-picons): Simplify. + (gnus-treat-from-picon): Renamed. + + * gnus-ems.el (gnus-create-image): New function. + (gnus-put-image): New function. + + * gnus-art.el (gnus-article-treat-unfold-headers): Doc fix. + (gnus-with-article-headers): New macro. + (gnus-article-goto-header): New function. + + * gnus-xmas.el (gnus-image-type-available-p): New function. + + * gnus-ems.el (gnus-image-type-available-p): New function. + +2001-12-30 ShengHuo ZHU + + * nnrss.el (nnrss-check-group): Find the correct tag, because + xml.el is changed. + +2001-12-30 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-treat-unfold-headers): Only fold when + lines are shorter than the window width. + (gnus-ignored-headers): More headers. + +2001-12-29 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-treat-unfold-lines): New variable. + (gnus-treat-unfold-headers): Renamed. + (gnus-article-treat-unfold-headers): New command and keystroke. + + * rfc2047.el (rfc2047-encode-message-header): Clean up. + + * gnus-int.el (gnus-open-server): Mark quit-ed server as denied. + +2001-12-29 ShengHuo ZHU + + * sha1-el.el (sha1-use-external): New variable. + (sha1-region): Use it. + (sha1-string): Ditto. + + * dgnushack.el (dgnushack-compile): Compile gnus-picon for Emacs. + * gnus-picon.el: Less warnings when compile. + +2001-12-29 Lars Magne Ingebrigtsen + + * gnus-picon.el (gnus-picons-news-directories): Removed obsolete + alias. + (gnus-picons-database): Default to list. + (gnus-picons-lookup-internal): Use it. + + * nnmail.el (nnmail-article-group): Default nnmail-split-methods + to "bogus". + + * gnus-win.el (gnus-configure-windows-hook): New hook. + +2001-12-29 Sascha L,A|(Bdecke + + * gnus-win.el (gnus-configure-windows): Minimize tree buffer. + +2001-12-29 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-update-marks): Don't uncompress the seen + lists. + (gnus-select-newsgroup): Don't append; push. + (gnus-adjust-marked-articles): Remove obsolete ranges from + `seen'. + (gnus-update-marks): Clean up. + (gnus-select-newsgroup): Don't stomp gnus-newsgroup-seen. + +2001-12-29 Frank Schmitt + + * gnus-sum.el (gnus-summary-limit-to-age): Allow negative days. + +2001-12-29 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-auto-select-subject): New variable. + (gnus-summary-best-unread-subject): New function. + (gnus-summary-best-unread-article): Use it. + (gnus-summary-first-unseen-subject): New function and command. + + * gnus-art.el (gnus-treatment-function-alist): Emphasize after + other treatments. + + * gnus-util.el (gnus-put-overlay-excluding-newlines): New + function. + + * gnus-art.el (gnus-article-show-hidden-text): Remove the type + from the list of hidden types. + + * mm-view.el (mm-inline-text): Ditto. + (mm-inline-text): Ditto. + (mm-w3-prepare-buffer): Ditto. + + * gnus-art.el (article-wash-html): Inhibit more remote fetching. + +2001-12-29 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-ignored-headers): Added more headers. + +2001-12-29 Jesper Harder + + * gnus-srvr.el (gnus-browse-foreign-server): Compute the prefix + once. + +2001-12-29 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-server-browse-in-group-buffer): Doc fix. + +2001-12-28 Simon Josefsson + + * gnus-srvr.el (gnus-browse-foreign-server): Fix typo. From + Jesper Harder . + +2001-12-27 Simon Josefsson + + * gnus-sum.el (gnus-select-newsgroup): Make + `gnus-newsgroup-unseen' sorted. Make `gnus-newsgroup-unseen' + contain all articles (instead of none) when no seen marks have + been set for the group. + (gnus-update-marks): Use `gnus-range-add' on a uncompressed list + instead, it seems to result in shorter ranges. + +2001-12-26 11:00:00 ShengHuo ZHU + + * mm-util.el (mm-iso-8859-x-to-15-region): Use + insert-before-markers. + From Jesper Harder + +2001-12-26 Paul Jarc + + * nnmaildir.el (nnmaildir-save-mail): create the destination + groups if they do not exist. + +2001-12-26 Katsumi Yamaoka + + * canlock.el (canlock-sha1-with-openssl): Remove unused variable. + +2001-12-22 22:00:00 ShengHuo ZHU + + * gnus-group.el (gnus-group-read-ephemeral-group): Call + gnus-group-real-name. + + * gnus-sum.el (gnus-decode-encoded-word-methods): Backslash paren. + (gnus-newsgroup-variables): Ditto. + + * gnus.el (gnus-group-prefixed-name): If group name is prefixed, + return it. + +2001-12-21 Paul Jarc + + * gnus.el (gnus-valid-select-methods): Include nnmaildir. + * nnmaildir.el (top-level): Add commentary. + (nnmaildir-version): Indicate that nnmaildir is now a standard + part of Gnus, not separately released. + +2001-12-21 08:00:00 ShengHuo ZHU + + * gnus-art.el, gnus-picon.el, gnus-sieve.el, gnus-sum.el: + * gnus-xmas.el, imap.el, mailcap.el, mm-util.el, nnfolder.el: + * nnheader.el, nnmail.el: Nil/NIL vs. nil. + From Pavel Jan,Am(Bk + +2001-12-20 15:00:00 ShengHuo ZHU + + * nnmaildir.el: Copyright changes. Require cl only at compile time. + +2001-12-20 Simon Josefsson + + * nnimap.el (top-level): Don't require cl. Suggested by ShengHuo + ZHU . + (nnimap-close-group): Don't quote KEYLIST items. Suggested by + Brian P Templeton . + +2001-12-19 17:00:00 ShengHuo ZHU + + * nnmaildir.el: New file. + From Paul Jarc . + +2001-12-19 16:00:00 ShengHuo ZHU + + * nndoc.el (nndoc-type-alist): Move forward to the end. + +2001-12-19 Katsumi Yamaoka + + * gnus.el (gnus-find-subscribed-addresses): Replace `mapc' with + `dolist'. + +2001-12-19 01:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-frames-on-display-list): New function. + (gnus-get-buffer-window): Use it. + +2001-12-19 00:00:00 ShengHuo ZHU + + * nnwarchive.el (nnwarchive-mail-archive-xover): Fix the regexp. + +2001-12-18 11:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-get-buffer-window): Use gnus-delete-if. + +2001-12-18 11:00:00 ShengHuo ZHU + From Harald Meland + + * gnus-win.el (gnus-get-buffer-window): New function. + (gnus-all-windows-visible-p): Use it. + + * gnus-util.el (gnus-horizontal-recenter) + (gnus-horizontal-recenter, gnus-horizontal-recenter) + (gnus-horizontal-recenter, gnus-set-window-start): Use it. + + * gnus-score.el (gnus-score-insert-help): Use it. + + * gnus-salt.el (gnus-tree-recenter, gnus-generate-tree) + (gnus-generate-tree, gnus-highlight-selected-tree) + (gnus-highlight-selected-tree, gnus-tree-highlight-article): Use + it. + + * gnus-art.el (gnus-article-set-window-start) + (gnus-mm-display-part, gnus-request-article-this-buffer) + (gnus-button-next-page, gnus-button-prev-page) + (gnus-article-button-next-page, gnus-article-button-prev-page): + Use it. + +2001-12-18 Josh Huber + + * ChangeLog, ChangeLog.1, nnwfm.el, smiley.el: + * gnus-cite.el, gnus-delay.el, gnus-spec.el, message.el: + * mml1991.el, nnultimate.el: Removed buffer-file-coding-system tag. + +2001-12-18 01:00:00 ShengHuo ZHU + + * ChangeLog, ChangeLog.1, nnwfm.el, gnus-smiley.el: + * gnus-cite.el, gnus-delay.el, gnus-spec.el, message.el: + * mml1991.el, nnultimate.el: Add `coding'. + +2001-12-17 Josh Huber + + * ChangeLog: changed coding to buffer-file-coding-system + * ChangeLog.1: same + * nnwfm.el: same + * gnus-smiley.el: same + * gnus-cite.el: moved -*- magic cookie -*- to Local Variables + * gnus-delay.el: same + * gnus-spec.el: same + * message.el: same + * mml1991.el: same + * nnultimate.el: same + +2001-12-16 Simon Josefsson + Inspired by code by Dirk Meyer . + + * gnus-sum.el (gnus-summary-muttprint-program): New variable. + (gnus-summary-save-map): Add muttprint. + (gnus-summary-make-menu-bar): Ditto. + (gnus-summary-muttprint): New function. + + * gnus-art.el (gnus-summary-pipe-to-muttprint): New function. + +2001-12-14 11:00:00 ShengHuo ZHU + + * uudecode.el (uudecode-decode-region-internal): Speedup by using + temporary list instead of buffer. + + * mm-url.el (executable-find): autoload. + +2001-12-12 Pavel Jan,Am(Bk + + * gnus-mlspl.el (gnus-group-split-fancy): Doc fix (add reference + to variable, follow doc-string conventions). + +2001-12-13 Josh Huber + + * gnus-cus.el (gnus-extra-topic-parameters): added topic parameter + subscribe-level + * gnus-topic.el (gnus-subscribe-topics): use it. + +2001-12-13 22:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-summary-mail-forward): Forward all marked + messages. (A small patch with indentation) + From Sean Neakums . + + * gnus-uu.el (gnus-uu-grab-articles): Set gnus-current-article to + nil after shooting down the gnus-original-article-buffer. + +2001-12-13 20:00:00 ShengHuo ZHU + + * uudecode.el (uudecode-use-external): New variable. + (uudecode-decode-region): Automatically detect external program. + + * binhex.el (binhex-use-external): New variable. + (binhex-decode-region-internal): New function. + (binhex-decode-region): Automatically detect external program. + + * mm-uu.el (mm-uu-decode-function,mm-uu-binhex-decode-function): + Use them. + +2001-12-12 Simon Josefsson + + * nnvirtual.el (nnvirtual-always-rescan) + (nnvirtual-component-regexp): Fix doc. + + * nnoo.el (defvoo): Add doc to defvoo variables. + + * nnml.el (nnml-directory, nnml-active-file) + (nnml-newsgroups-file, nnml-get-new-mail, nnml-nov-is-evil) + (nnml-marks-is-evil, nnml-filenames-are-evil) + (nnml-prepare-save-mail-hook, nnml-inhibit-expiry): Fix doc. + + * nnmh.el (nnmh-directory, nnmh-get-new-mail) + (nnmh-prepare-save-mail-hook, nnmh-be-safe): Fix doc. + (nnmh-possibly-change-directory): Use `nnheader-report' instead of + `error'. + + * nnmbox.el (nnmbox-mbox-file, nnmbox-active-file) + (nnmbox-get-new-mail, nnmbox-prepare-save-mail-hook): + + * nnfolder.el (nnfolder-directory, nnfolder-active-file) + (nnfolder-newsgroups-file, nnfolder-get-new-mail) + (nnfolder-save-buffer-hook, nnfolder-inhibit-expiry) + (nnfolder-nov-is-evil, nnfolder-marks-is-evil): Fix doc. + + * nnbabyl.el (nnbabyl-mbox-file, nnbabyl-active-file) + (nnbabyl-get-new-mail, nnbabyl-prepare-save-mail-hook): Fix doc. + + * imap.el, nnimap.el: Fix indentation. + + * gnus-sieve.el (gnus-sieve-article-add-rule): Autoload it. + +2001-12-12 Didier Verna + + * gnus-msg.el (gnus-group-news): New function. + * gnus-group.el (gnus-group-mode-map): bind it to `i'. + * gnus-group.el (gnus-group-make-menu-bar): add a menu item for it. + * gnus-salt.el (gnus-carpal-group-buffer-buttons): add a button + for it. + * gnus-msg.el (gnus-summary-news-other-window): New function. + * gnus-msg.el ((gnus-summary-send-map "S" gnus-summary-mode-map)): + bind it to `i'. + * gnus-sum.el (gnus-summary-mode-map): bind it to `i'. + * gnus-sum.el (gnus-summary-make-menu-bar): add a menu item for it. + * gnus-salt.el (gnus-carpal-summary-buffer-buttons): add a button + for it (called with a prefix). + * gnus-msg.el (gnus-configure-posting-styles): add an optional + group-name argument. + * gnus-msg.el (gnus-setup-message): use it. + +2001-12-12 00:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-show-article): Fix doc. + +2001-12-10 17:00:00 ShengHuo ZHU + + * mml.el (mime-to-mml): Remove Content-Disposition too. + +2001-12-09 08:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-buffer-name): Decode group name. + * gnus-group.el (gnus-group-name-decode): Decode unibyte + strings only. + From TSUCHIYA Masatoshi + +2001-12-08 Nevin Kapur + + * nnmail.el (nnmail-fancy-expiry-targets): New variable. + (nnmail-fancy-expiry-target): Use it. + Suggestions from Simon Josefsson . + +2001-12-07 14:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-show-article): Recount lines if not exist. + +2001-12-07 10:00:00 ShengHuo ZHU + + * nnwfm.el (nnwfm-create-mapping): Use gnus-url-unhex-string. + + * gnus-util.el (gnus-url-unhex-string): Move here. + +2001-12-07 09:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-decode-entities-unibyte-string): Use + mm-url-decode-entities-nbsp. + + * nnlistserv.el, nnultimate.el, nnwarchive.el, nnweb.el: + * webmail.el, nnwfm.el: Use mm-url. + + * mm-url.el (mm-url-fetch-form): Move from nnweb. + (mm-url-remove-markup): Move from nnweb. + (mm-url-fetch-simple): Move from webmail. + + * nnslashdot.el (nnslashdot-request-post): Use mm-url-fetch-form. + +2001-12-07 01:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-print-truncate-and-quote): New function. + (gnus-summary-print-article): Use it. + + * gnus-util.el (gnus-replace-in-string): Typo. + +2001-12-06 10:00:00 ShengHuo ZHU + + * nnweb.el (nnweb-replace-in-string): Removed. + + * gnus-util.el (gnus-replace-in-string): New function. + (gnus-mode-string-quote): Use it. + + * nnrss.el (nnrss-format-string): Use gnus-replace-in-string. + * nnwfm.el (nnwfm-create-mapping): Ditto. + +2001-12-06 01:00:00 ShengHuo ZHU + + * dgnushack.el (dgnushack-compile): nnrss.el and + nnslashdot.el don't depend on nnweb, url, w3. + + * nnrss.el: Use mm-url. + +2001-12-06 00:00:00 ShengHuo ZHU + + * mm-url.el (mm-url-insert-file-contents): Support file:. + +2001-12-05 14:00:00 ShengHuo ZHU + + * mm-view.el: Lower case for the description line. Sync from the + Emacs CVS. + +2001-12-05 12:00:00 ShengHuo ZHU + + * gnus-group.el (gnus-group-find-new-groups): Fix doc. + From: Stefan Monnier + +2001-12-05 Katsumi Yamaoka + + * mm-view.wl (mm-inline-text): Decode a charset-encoded rich text. + +2001-12-04 08:00:00 ShengHuo ZHU + + * mm-url.el: Require executable. + Suggested by Katsumi Yamaoka . + +2001-12-03 11:00:00 ShengHuo ZHU + + * pop3.el (pop3-munge-message-separator): Only use valid date. + Trivial patch from Michael Welsh Duggan . + + * Makefile.in: gnus-load.elc may not be generated. + +2001-12-03 09:00:00 ShengHuo ZHU + + * mm-url.el: New file. + * nnslashdot.el: Use it. + * mm-extern.el (mm-extern-url): Use it. + +2001-12-01 15:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-save-article): Nix + gnus-display-mime-function and gnus-article-prepare-hook. + + * gnus-spec.el (gnus-parse-complex-format): Properly handle %C at + the beginning of lines. + (gnus-complex-form-to-spec): Ditto. + +2001-12-01 08:00:00 ShengHuo ZHU + + * message.el (message-make-mft): Fix the m-s-a-file regexp. + From Paul Jarc . + +2001-11-30 21:00:00 ShengHuo ZHU + + * message.el: New variable message-subscribed-address-file; + use it in message-make-mft. From Paul Jarc . + +2001-11-30 12:00:00 ShengHuo ZHU + + * message.el (message-tab-body-function): Set to nil. + (message-tab): Use text-mode-map or global-map. + Suggested by Kai Gro,b_(Bjohann . + +2001-11-30 Simon Josefsson + + * gnus-agent.el (gnus-agent-fetch-headers): Use gnus-range-add + instead of gnus-union, for speed. Suggested by Christoph Conrad + . + (gnus-agent-fetch-group-1): Add verbose message. + +2001-11-29 12:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-write-active): Make sure sym is a cons + of integers. + +2001-11-29 Kai Gro,b_(Bjohann + + * message.el (message-newgroups-header-regexp) + (message-completion-alist, message-tab-body-function): Use + defcustom rather than defvar. + (message-tab): Mention `message-tab-body-function' in doc. + Suggested by Karl Eichwalder. + +2001-11-28 16:00:00 ShengHuo ZHU + + * gnus-uu.el (gnus-uu-save-article): Use #part instead of #mml. + +2001-11-28 12:00:00 ShengHuo ZHU + + * nnheader.el (nnheader-find-nov-line): Don't use macro + gnus-delete-line. + + * gnus-group.el (gnus-group-name-decode): Defun instead of defsubst. + (gnus-group-name-charset): Ditto. + + * gnus-util.el (gnus-buffer-live-p): Ditto. + +2001-11-28 11:00:00 ShengHuo ZHU + + * sieve-manage.el (sieve-manage-stream-alist): Backslash before + open parenthesis in doc. + (sieve-manage-authenticator-alist): Typo in doc. + * imap.el (imap-authenticator-alist): Typo in doc. + (imap-stream-alist): Backslash. + + * gnus-sum.el (gnus-summary-limit-to-author): Missing arguments. + Thanks to david.goldberg6@verizon.net (David S. Goldberg) + +2001-11-27 14:00:00 ShengHuo ZHU + + * gnus-topic.el (gnus-topic-mode): Add LOCAL for add-hook. + + * message.el (message-mode): make-local-hook is harmless in Emacs 21. + + * gnus-msg.el (gnus-configure-posting-styles): use + make-local-hook. Add LOCAL for add-hook. + +2001-11-27 Per Abrahamsen + + * message.el (message-mode): Use `make-local-hook' unless + obsolete. + Patch by Katsumi Yamaoka . + +2001-11-26 Katsumi Yamaoka + + * canlock.el: Remove sha1.el and base64.el stuff. + +2001-11-26 Didier Verna + + * nnmbox.el (nnmbox-create-mbox): create the mbox file directory + if needed. + +2001-11-21 Katsumi Yamaoka + + * message.el (message-tamago-not-in-use-p): New function. + (message-strip-forbidden-properties): Use it. + +2001-11-26 Didier Verna + + * gnus-start.el (gnus-check-first-time-used): only check for + existence of .el[d] files. + +2001-11-25 15:00:00 ShengHuo ZHU + + * mm-util.el (mm-coding-system-priorities): Add backslash in the doc. + + * message.el (message-setup-1): Clean up mc-*. + +2001-11-25 09:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-directory-sep-char-regexp): New variable. + * gnus-score.el (gnus-score-find-bnews): Use it. + + * gnus-sum.el (gnus-summary-limit-to-subject): An exclusion version. + (gnus-summary-limit-to-author): Ditto. + (gnus-summary-limit-to-extra): Ditto. + (gnus-summary-find-matching): Support not-matching argument. + +2001-11-25 Kai Gro,b_(Bjohann + + * message.el (message-wash-subject): Use `insert' rather than + `insert-string', which is deprecated. + +2001-11-24 Simon Josefsson + + * mm-encode.el (mm-encode-content-transfer-encoding): Fix error + message. (Gnus does not "default" to using 8bit for the message, + it default to use 8bit encoding and the user-supplied CTE + value. Calling this behaviour "treating it as 8bit" is perhaps + better.) + + * mm-bodies.el (mm-body-encoding): Intern encoding if needed + (compare mm-charset-to-coding-system). + +2001-11-23 02:00:00 ShengHuo ZHU + + * canlock.el (canlock-sha1-with-openssl): Use unibyte + buffer. Correctly decode hex. + +2001-11-21 01:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-category-insert-line): Convert category + names to strings. + +2001-11-20 21:00:00 ShengHuo ZHU + + * message.el (sha1): eval-and-compile. + +2001-11-20 Simon Josefsson + + * message.el (message-allow-no-recipients): New variable. + (message-send): Use it, customize the prompting when posting to + Gcc/Fcc alone. From prj@po.cwru.edu (Paul Jarc). + +2001-11-20 09:00:00 ShengHuo ZHU + + * mm-util.el (mm-coding-system-priorities): New variable. + (mm-sort-coding-systems-predicate): New function. + (mm-find-mime-charset-region): Resort coding systems if needed. + Suggested by Katsumi Yamaoka . + +2001-11-20 Didier Verna + + * gnus-group.el (gnus-group-make-help-group): new optional + argument to control the error behavior. + * gnus-start.el (gnus-check-first-time-used): use it to avoid + erroring. + +2001-11-19 Simon Josefsson + + * message.el (message-mode-map): Use C-c C-f C-i for Importance: + instead of C-c C-u. Suggested by Per Abrahamsen + . + +2001-11-18 08:00:00 ShengHuo ZHU + + * nnfolder.el (nnfolder-read-folder): Use group instead of + nnfolder-current-group. + Suggested by Lorentey Karoly . + +2001-11-17 Simon Josefsson + + * message.el (message-send): Ask user if Fcc/Gcc should be + performed when no other sender was specified. + Suggested by prj@po.cwru.edu (Paul Jarc). + +2001-11-17 Simon Josefsson + + * message.el (message-mode, message-mode-map): Use C-c C-u for + Importance: instead of C-c C-p (used by SC). + +2001-11-16 Simon Josefsson + + * message.el (message-insert-importance-high) + (message-insert-importance-low): Save point. + + * mail-source.el (mail-source-fetch-imap): Fix BODY.PEEK return + value. + +2001-11-16 Per Abrahamsen + + * message.el (message-strip-special-text-properties): New option. + (message-strip-forbidden-properties): Obey it. + +2001-11-14 Sam Steingold + + * gnus-score.el: Fixed some doc strings to properly quote symbols. + +2001-11-15 Simon Josefsson + + Support "Importance:" header in Message. + + * message.el (message-mode-map): Bind C-c C-p to + `message-insert-or-toggle-importance' + (message-mode-menu): Add message-insert-importance-{high,low}. + (message-insert-importance-high, message-insert-importance-low) + (message-insert-or-toggle-importance): New functions. + (message-tool-bar-map): Add {un,}important. + (message-mode): Doc fix. + +2001-11-15 Simon Josefsson + + * message.el (message-tool-bar-map): Fix attach toolbar tooltip. + + * mml.el (mml-menu): Fix toolbar tooltip. + +2001-11-15 14:00:00 ShengHuo ZHU + + * nnfolder.el (nnfolder-save-marks): gnus-prin1 takes one argument. + * nnml.el (nnml-save-marks): Ditto. + + * gnus-sum.el (gnus-newsgroup-variables): Fix doc. + +2001-11-15 Simon Josefsson + + * nnml.el (nnml-save-marks): + * nnfolder.el (nnfolder-save-marks): Use `gnus-prin1'. + Suggested by Istvan Marko . + +2001-11-15 Per Abrahamsen + + * gnus-art.el (gnus-article-wash-status-strings): Use + `copy-sequence', not `copy-seq'. + +2001-11-15 Per Abrahamsen + + * gnus-art.el (gnus-article-wash-status-strings): New constant. + (gnus-gnus-article-wash-status-entry): New function. + (gnus-article-wash-status): Use it. + +2001-11-13 10:00:00 ShengHuo ZHU + + * mml1991.el: Add coding header. + +2001-11-12 Simon Josefsson + + * mml1991.el (mml1991-use, mml1991-function-alist): New variables. + (mml1991-gpg-sign, mml1991-gpg-encrypt): Renamed, from + `mml1991-sign' and `mml1991-encrypt'. + (mml1991-encrypt, mml1991-sign): New glue functions. + (mml1991-mailcrypt-sign, mml1991-mailcrypt-encrypt): New functions. + + * mml.el (mml-mode-map): `C-c RET o' map for PGP. + (mml-menu): Add PGP to menu. + + * mml-sec.el (top-level): Require mml1991. Don't require smime. + (mml-sign-alist, mml-encrypt-alist): Add "pgp". + (mml-pgp-sign-buffer, mml-pgp-encrypt-buffer) + (mml-secure-sign-pgp, mml-secure-encrypt-pgp): New glue functions. + + * mml2015.el: Mention RFC 3156. + + * mml1991.el: New file. From Sascha L,A|(Bdecke . + +2001-11-12 13:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-auto-subscribed-groups): Use ^nnml. + + * gnus-sum.el (gnus-summary-move-article): Use number-to-string. + From + +2001-11-11 Simon Josefsson + + * message.el (top-level): Autoload sha1. + (message-canlock-generate): Use sha1 instead of md5 (sha1 used by + canlock, no need to require two different hash algs). Suggested + by Ferenc Wagner . + +2001-11-09 Simon Josefsson + + * gnus.el (gnus-local-domain): Fix doc. From Pavel Jan,Am(Bk + . + +2001-11-09 Kai Gro,b_(Bjohann + + * message.el (message-point-in-header-p): New function. + (message-do-auto-fill): Use it. + (message-beginning-of-line): New function. Goes to beginning of + header value (i.e., end of header name), or to beginning of line + if already at beginning of value. Behaves like + `beginning-of-line' when in message body. + (message-mode-map): Bind it. + +2001-11-08 Simon Josefsson + + * gnus-msg.el (gnus-posting-styles): Add doc. + +2001-11-07 Simon Josefsson + + * gnus-sieve.el (gnus-sieve-generate): Don't invoke sieve-mode. + + * sieve-mode.el (sieve-control-commands-face) + (sieve-control-commands-face, sieve-action-commands-face) + (sieve-test-commands-face, sieve-tagged-arguments-face): New + faces. + (sieve-font-lock-keywords): Use them. + (sieve-mode): Only set font-lock-defaults in emacs. + + * gnus-art.el (gnus-default-article-saver): Add + gnus-summary-save-body-in-file. + (gnus-summary-write-to-file): Fix doc. + +2001-11-07 Simon Josefsson + + * gnus-art.el (gnus-treat-highlight-signature): Add cross + reference to the correct chapter in the manual. + + * mml.el (mml-mode): Add cross reference to Emacs MIME manual. + Suggested by "Golubev I. N." . + +2001-11-07 06:00:00 ShengHuo ZHU + + * mml.el (mml-preview): Bind mail-header-separator. + +2001-11-07 Katsumi Yamaoka + + * message.el: Always require canlock. + (message-ignored-supersedes-headers): Include Cancel-Lock and + Cancel-Key. + (message-insert-canlock): Don't require canlock. + (message-cancel-news): Don't check whether canlock is available. + (message-supersede): Support cancel-locks. + + * gnus-art.el: Don't autoload canlock. + +2001-11-06 18:00:00 ShengHuo ZHU + + * mail-source.el (mail-source-fetch-imap): ASYNC param. + From: + +2001-11-06 10:00:00 ShengHuo ZHU + + * many files: Fix copyright lines. + +2001-11-05 07:00:00 ShengHuo ZHU + + * mml.el (mml-generate-mime-1): Use mm-with-unibyte-current-buffer. + Suggested by Dave Love . + +2001-11-04 10:00:00 ShengHuo ZHU + + * message.el (message-kill-buffer): Remove auto-save file after + confirm. + + * message.el (message-send-mail): Call message-generate-headers + once. Suggested by Matt Armstrong . + + * gnus-topic.el (gnus-topic-rename): Initial-input. + Suggested by Katsuhiro Hermit Endo . + +2001-11-03 Per Abrahamsen + + * message.el (message-forbidden-properties): New constant. + (message-strip-forbidden-properties): New function. + (message-mode): Activate it. + +2001-11-02 17:00:00 ShengHuo ZHU + + * mm-util.el (mm-iso-8859-15-compatible): Fix doc. + (mm-hack-charsets): Fix doc. + +2001-11-02 Simon Josefsson + + * gnus-int.el (gnus-check-server): Message "...done" when done. + + * imap.el (imap-close): Don't message (imap-send-command-wait + returns if the connection is dropped). + (imap-wait-for-tag): Nix out message only when necessary. + + * gnus-sieve.el (gnus-sieve-script): Use "stop" instead of "elsif" + for non-crossposting. + (gnus-sieve-crosspost): Default to t to be consistent with other + parts of Gnus. + +2001-11-01 18:00:00 ShengHuo ZHU + + * mm-util.el (mm-iso-8859-15-compatible): Add inconvertible chars. + (mm-iso-8859-x-to-15-table): Ditto. + (mm-iso-8859-x-to-15-region): Ditto. + (mm-find-mime-charset-region): Ditto. + +2001-11-01 Simon Josefsson + + * nnimap.el (nnimap-close-asynchronous): New variable. + (nnimap-close-group): Use it. + (nnimap-expunge): Don't use it. + + * imap.el (imap-callbacks): New variable. + (imap-remassoc): Copied from `gnus-remassoc'. + (imap-add-callback): New function. + (imap-mailbox-expunge, imap-mailbox-close): Support asynchronous + behaviour. + (imap-parse-response): Call the callback. + + * message.el (message-insert-canlock): New variable. + (message-canlock-generate, message-canlock-password) + (message-insert-canlock): New functions. + (message-send-news): Call `message-insert-canlock'. + (top-level): Require canlock when compiling. + (message-insert-canlock): Require canlock before we need it. + +2001-11-01 13:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-copy-article-buffer): Copy sequence. + +2001-11-01 12:00:00 ShengHuo ZHU + + * dgnushack.el (dgnushack-make-load): A workaround for + custom-add-loads bug in some versions of XEmacs. + +2001-11-01 10:00:00 ShengHuo ZHU + + * mm-util.el (mm-charset-synonym-alist): Revert (some). + +2001-11-01 09:00:00 ShengHuo ZHU + + * mm-util.el (mm-iso-8859-x-to-15-region): New function. + (mm-hack-charsets): New variable. + (mm-iso-8859-15-compatible): New variable. + (mm-iso-8859-x-to-15-table): New variable. + (mm-find-mime-charset-region): Add parameter hack-charsets. + + * mm-bodies.el (mm-encode-body): Use it. + * mml.el (mml-parse-1): Ditto. + +2001-11-01 Simon Josefsson + + * gnus-group.el (gnus-group-make-menu-bar): Add Sieve. + +2001-11-01 08:00:00 ShengHuo ZHU + + * mm-util.el (mm-charset-to-coding-system): Return nil, if charset + is nil. + +2001-11-01 07:00:00 ShengHuo ZHU + + * smiley-ems.el (smiley-update-cache): Auto detect file type. + + * message.el (message-forward-rmail-make-body): Use + save-window-excursion. + (message-encode-message-body): Search with noerror. + (message-setup-1): Convert compose-mail send-actions to + message-send-actions. + +2001-11-01 Simon Josefsson + + * sieve.el: Don't require easy-mmode. Suggested by Katsumi Yamaoka + . + +2001-10-31 20:00:00 ShengHuo ZHU + + * sieve-manage.el (sieve-string-bytes): No complain. + +2001-11-01 Simon Josefsson + + * gnus-group.el (gnus-group-mode-map): Bind "D u" to + `gnus-sieve-update' and "D g" to `gnus-sieve-generate'. (Functions + has autoload cookies, so no `require' should be necessary.) + + * sieve.el, sieve-mode.el, sieve-manage.el, gnus-sieve.el: New + files. + +2001-10-31 Simon Josefsson + + * gnus-cus.el (gnus-group-parameters): Support integer `display' + parameter. + + * gnus-sum.el (gnus-select-newsgroup): If group parameter + `display' is a number (and C-u wasn't used to enter group), only + fetch that number of articles. + +2001-10-31 Matt Armstrong + + * gnus.el (gnus-find-subscribed-addresses): Doc fix: + not-subscribed -> subscribed. + +2001-10-31 08:00:00 ShengHuo ZHU + From: Josh Huber + + * message.el (message-subscribed-address-functions): New variable. + (message-subscribed-addresses): New variable. + (message-subscribed-regexps): New variable. + (message-goto-mail-followup-to): New function. + (message-send-mail): Add Mail-Followup-To. + (message-make-mft): New function. + + * gnus.el (gnus-find-subscribed-addresses): New function. + +2001-10-31 07:00:00 ShengHuo ZHU + + * mail-source.el (mail-source-fetch): If debug, don't regain signals. + (mail-source-fetch-pop): Ditto. + (mail-source-check-pop): Ditto. + + * gnus-start.el (gnus-read-init-file): Ditto. + (gnus-activate-group): Ditto. + (gnus-read-newsrc-el-file): Ditto. + +2001-10-30 23:00:00 ShengHuo ZHU + + * message.el (message-get-reply-headers): Make sure there is ", ". + + * mm-util.el (mm-mime-mule-charset-alist): Move down and call + mm-coding-system-p. Don't correct it only in XEmacs. + (mm-charset-to-coding-system): Use mm-coding-system-p and + mm-get-coding-system-list. + (mm-emacs-mule, mm-mule4-p): New variables. + (mm-enable-multibyte, mm-disable-multibyte, + mm-enable-multibyte-mule4, mm-disable-multibyte-mule4, + mm-with-unibyte-current-buffer, + mm-with-unibyte-current-buffer-mule4): Use them. + (mm-find-mime-charset-region): Treat iso-2022-jp. + + From Dave Love : + + * mm-util.el (mm-mime-mule-charset-alist): Make it correct by + construction. + (mm-charset-synonym-alist): Remove windows-125[02]. Make other + entries conditional on not having a coding system defined for + them. + (mm-mule-charset-to-mime-charset): Use + find-coding-systems-for-charsets if defined. + (mm-charset-to-coding-system): Don't use + mm-get-coding-system-list. Look in mm-charset-synonym-alist + later. Add last resort search of coding systems. + (mm-enable-multibyte-mule4, mm-disable-multibyte-mule4) + (mm-with-unibyte-current-buffer-mule4): Just treat Mule 5 like + Mule 4. + (mm-find-mime-charset-region): Re-write. + (mm-with-unibyte-current-buffer): Restore buffer as well as + multibyteness. + +2001-10-30 21:00:00 ShengHuo ZHU + + * canlock.el, sha1-el.el, hex-util.el: Move from contrib + directory. Thanks to Katsumi Yamaoka and Shuhei + KOBAYASHI . + +2001-10-30 20:00:00 ShengHuo ZHU + + * gnus-art.el (article-display-x-face): Nix buffer-read-only + again. + + * mml2015.el (mml2015-gpg-verify): Convert to . + +2001-10-30 13:00:00 ShengHuo ZHU + + * gnus-spec.el (gnus-parse-simple-format): Use + buffer-substring-no-properties. + +2001-10-30 Katsumi Yamaoka + + * gnus-art.el (article-verify-cancel-lock): New function. + + * nnheader.el (nntp-process-response): New variable. + (nnheader-init-server-buffer): Make `nntp-process-response' + buffer-local in `nntp-server-buffer'. + + * nntp.el (nntp-prepare-post-hook): New hook. + (nntp-wait-for): Save a server's ID in `nntp-process-response'. + (nntp-async-trigger): Ditto. + (nntp-request-post): Insert a server's ID if there's no Message-ID + header; run `nntp-prepare-post-hook'. + +2001-10-30 04:00:00 ShengHuo ZHU + + * gnus-art.el (article-decode-group-name): Use nnmail-fetch-field + instead. + + * message.el (message-forward-subject-author-subject): Don't use + message-news-p, which widens the buffer. + (message-forward-make-body): New function. + (message-forward): Use it. + (message-insinuate-rmail): New function. + (message-forward-rmail-make-body): New function. + +2001-10-30 02:00:00 ShengHuo ZHU + + * mm-extern.el (mm-extern): Provide it. + + * mm-partial.el (mm-partial): Provide it. + +2001-10-28 16:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-setup-message): Call post-command-hook. + +2001-10-29 Simon Josefsson + + * mml.el (mml-preview): Bind message-this-is-news if it is + news. From Jesper Harder . + +2001-10-28 Simon Josefsson + + * gnus-sum.el (gnus-group-make-articles-read): Inline group. + +2001-10-29 Per Abrahamsen + + * smiley-ems.el (smiley-regexp-alist): Add support for sad and + ironic smilies. + +2001-10-27 Simon Josefsson + + * message.el (message-indent-citation): Don't add trailing + whitespace when citing text. + + * gnus.el (gnus-group-faq-directory): Fix. From Jesper Harder + . + +2001-10-26 14:00:00 ShengHuo ZHU + + * nnweb.el (nnweb-possibly-change-server): Create nnweb-hashtb if + not available. + (nnweb-request-scan): Nix nnweb-hashtb if ephemeral. + (nnweb-type-definition): Add google as alias of dejanews. + (nnweb-google-parse-1): Forward 1 line. + +2001-10-26 Kai Gro,b_(Bjohann + + * gnus-msg.el (gnus-summary-mail-forward): Doc fix: add pointer to + variable `message-forward-ignored-headers'. + +2001-10-24 Per Abrahamsen + + * gnus.el (gnus-expand-group-parameter): New function. + (gnus-expand-group-parameters): Call it. + (gnus-group-fast-parameter): New function. + (gnus-group-find-parameter): Call it. + +2001-10-23 Per Abrahamsen + + * gnus.el (gnus-news-group-p): Rewrote. Now accepts a header + vector (it didn't before because of a bug). + * gnus-msg.el (gnus-post-news): Use header vector directly, if + available. Before it converted it to an article number. + + This makes followup to news articles with negative numbers in + nnvirtual groups use news instead of mail. + +2001-10-23 Per Abrahamsen + + * gnus.el (post-method): Use `native' instead of `nil'. + + * gnus-msg.el (gnus-post-method): Ditto. + +2001-10-23 Per Abrahamsen + + * gnus.el (gnus-define-group-parameter): Grammar fix. + +2001-10-22 Simon Josefsson + + * gnus-msg.el (gnus-extended-version): Include + system-configuration. + Suggested by Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro,b_(Bjohann). + +2001-10-22 Per Abrahamsen + + * gnus.el (post-method): Customization fix: `native' is not a + valid value. + * gnus-msg.el (gnus-post-method): Doc and customization fix: + `native' is not a valid value. + +2001-10-21 Simon Josefsson + + * nnimap.el (nnimap): Defgroup + (nnimap-strict-function, nnimap-strict-function-match): New + widget, from Per Abrahamsen . + (nnimap-split-crosspost, nnimap-split-inbox) + (nnimap-split-rule, nnimap-split-predicate) + (nnimap-split-predicate): Defcustom. + (nnimap-split-inbox, nnimap-expunge-search-string) + (nnimap-importantize-dormant): Remove "*" from doc. + +2001-10-20 Kai Gro,b_(Bjohann + + * gnus-sum.el (gnus-summary-limit-to-score): Prompt for score if + not supplied via prefix arg. From Lisp, make arg mandatory. + Suggested by Frank Schmitt. + +2001-10-20 Per Abrahamsen + + * message.el (message-do-auto-fill): Avoid calling + 'rfc822-goto-eoh'. + +2001-10-20 Kai Gro,b_(Bjohann + From Paul Jarc . + + * message.el (message-get-reply-headers): Restructure the logic + and add comments. From Paul Jarc . + +2001-10-20 Simon Josefsson + + * message.el (message-cancel-news): Support cancel-locks. + Suggested by Per Abrahamsson. + + * nnml.el (nnml-marks-changed-p): Use `equal' when comparing + conses. From David Z Maze . + + * nnfolder.el (nnfolder-marks-changed-p): Ditto. + +2001-10-19 Per Abrahamsen + + * mm-decode.el (mm-default-directory): Fix customize type. + + * message.el (message-setup-fill-variables): Kludge to use + normal-auto-fill-function even if auto fill is already activated. + +2001-10-19 Per Abrahamsen + + * message.el (message-do-auto-fill): New version that does not + rely on text properties, by Simon Josefsson . + (message-setup-1): Removed the `message-field' property. + + * gnus-draft.el (gnus-draft-edit-message): Removed the + `message-field' property. + +2001-10-19 Per Abrahamsen + + * gnus-draft.el (gnus-draft-edit-message): Change `field' to + `message-field'. The `field' property has a special significance in + Emacs 21. + + * message.el (message-send, message-setup-1): Ditto. + +2001-10-18 Simon Josefsson + + * gnus-sum.el (gnus-group-make-articles-read): Call g-r-set-mark + when undoing. + +2001-10-18 Simon Josefsson + From Frank Schmitt + + * gnus-sum.el (gnus-summary-limit-to-display-predicate): Fix typo. + (gnus-summary-make-menu-bar): Ditto. + +2001-10-17 Simon Josefsson + + * nnimap.el (nnimap-expiry-target): Make sure it is back to the + server. Suggested by ShengHuo ZHU . + +2001-10-17 17:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-line-format-alist): user-date entry. + * gnus-util.el (gnus-user-date): New function. + From Frank Schmitt . + +2001-10-17 Per Abrahamsen + + * message.el (message-check-news-header-syntax): Special case + nnvirtual groups. + + * gnus-sum.el (gnus-summary-respool-default-method): Changed + customize type to `symbol'. + +2001-10-17 12:00:00 ShengHuo ZHU + + * gnus-spec.el (gnus-parse-simple-format): Support extended spec + %&foo;. + (gnus-parse-simple-format): Support user extended spec too. + %u&foo; invokes gnus-user-format-function-foo. + +2001-10-17 11:00:00 ShengHuo ZHU + + * nnml.el (nnml-request-expire-articles): Make sure it is back to + the server. + * nnmbox.el (nnmbox-request-expire-articles): Ditto. + * nnfolder.el (nnfolder-request-expire-articles): Ditto. + * nnbabyl.el (nnbabyl-request-expire-articles): Ditto. + * nndiary.el (nndiary-request-expire-articles): Ditto. + (nndiary-schedule): Defsubst it before use it. + (nndiary-error): eval-and-compile. + +2001-10-17 Per Abrahamsen + + * gnus-msg.el (gnus-post-method): Changed two instances of + `active' to `current' and one `null' to `not'. + +2001-10-16 Kai Gro,b_(Bjohann + From Katsumi Yamaoka . + + * message.el (message-setup-fill-variables): Use + `normal-auto-fill-function' instead of `auto-fill-function'. + +2001-10-16 Simon Josefsson + + * mml2015.el (mml2015-fix-micalg): Fix for Mutt-bug. + (mml2015-gpg-decrypt-1): Decanonicalize decrypted MIME + body. (Mailcrypt seem to do this, but gpg.el doesn't.) + +2001-10-16 Kai Gro,b_(Bjohann + Patch by Oliver Scholz . + + * gnus-draft.el (gnus-draft-edit-message): Add text property + `field' with value `header' to message headers. + * message.el (message-setup-1): Really add text property to all of + the header, not just part of it. + +2001-09-04 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-sort-by-server): Use it. + + * gnus.el (gnus-method-to-full-server-name): New, bogus function. + + * gnus-topic.el (gnus-topic-sort-groups-by-server): New command + and keystroke. + +2001-10-14 Simon Josefsson + + * dig.el: Doc fix. + + * smime.el: Doc fix. + + * gnus-msg.el (gnus-inews-do-gcc): Port header encoded-word + charset magic from message.el. + +2001-10-12 Simon Josefsson + Suggested by david.goldberg6@verizon.net (David S. Goldberg) + + * gnus-cite.el (gnus-article-toggle-cited-text): Don't remove + 'cite from g-a-wash-types. + (gnus-cite-toggle): Ditto. Add 'cite. Set modeline. + (gnus-article-hide-citation): Fix. + + * gnus-cite.el (gnus-article-hide-citation): Add `c' mode line + character. + (gnus-article-toggle-cited-text): Toggle `c' mode line character. + + * gnus-art.el (gnus-treat-hide-citation-maybe): Remove duplicate + definition. + (gnus-signature-toggle): Toggle `s' mode line character. + + * gnus-art.el (article-emphasize): Set `g-a-wash-types' after + doing stuff that clears it. + +2001-10-12 Simon Josefsson + + * gnus-cache.el (gnus-summary-limit-include-cached): Rewrite. + From Eric Marsden . + +2001-10-12 10:00:00 ShengHuo ZHU + + * message.el (message-do-auto-fill): Use gnus-point-at-bol. + (autoload): Add some autoloads. + +2001-10-12 Kai Gro,b_(Bjohann + Suggested by Oliver Scholz . + + * message.el (message-do-auto-fill): New function. Like + `do-auto-fill' but don't fill when in the message header. + (message-setup-1): Put a text property on the message header. + (message-setup-fill-variables): Use `message-do-auto-fill'. + +2001-10-10 12:00:00 ShengHuo ZHU + + * message.el (message-send-mail-partially): Insert an empty line + first, because of the change of message-make-lines. + +2001-10-10 Florian Weimer + + * mm-util.el (mm-charset-synonym-alist): If Emacs doesn't support + iso-8859-15, make it an alias for iso-8859-1. + +2001-10-10 Katsumi Yamaoka + + * message.el (message-send-news): Don't modify the value of + `message-syntax-checks' if it is not a list (possibly it is + `dont-check-for-anything-just-trust-me'). + +2001-10-10 Katsumi Yamaoka + + * gnus-group.el (gnus-group-name-charset-group-alist): Use + `find-coding-system' for XEmacs to check whether the coding-system + `utf-8' is available. + +2001-10-09 13:00:00 ShengHuo ZHU + + * dgnushack.el (dgnushack-compile): Detect mh-e and xml. + +2001-10-09 Per Abrahamsen + + * message.el (message-send-news): Oops, missed case with no + "Followup-To" header... + +2001-10-09 Per Abrahamsen + + * message.el (message-send-news): Allow + `gnus-group-name-charset-group-alist' to affect encoding of the + "Newsgroups" and "Followup-To" headers. + +2001-10-07 15:00:00 ShengHuo ZHU + + * Makefile.in (install-el): Depend on gnus-load.el. + +2001-10-07 13:00:00 ShengHuo ZHU + + * Makefile.in (install-el): Use -f. + From: Amos Gouaux + +2001-10-07 Per Abrahamsen + + * message.el (message-send-news): Don't encode Followups-To when + `gnus-group-name-charset-group-alist is' ".*". [Yuck] + + * gnus-util.el (gnus-decode-newsgroups): No space in newsgroup + header. + + * gnus-art.el (article-decode-group-name): Also decode + "Followup-To". + + * rfc2047.el (rfc2047-encode-message-header): Encode without + asking for null methods. + + * gnus-group.el (gnus-group-name-charset-group-alist): Make utf-8 + default charset for newsgroup names in accordance with USEFOR. + + * gnus-group.el (gnus-group-name-charset-method-alist, + gnus-group-name-charset-group-alist): Removed "*" from doc + strings, "*" should not be used for complex variables. + +2001-10-06 Simon Josefsson + + Support UTF-8 group names better. + + * message.el (message-check-news-header-syntax): Encode group + names before comparison. + + * gnus-msg.el (gnus-copy-article-buffer): Run all + `gnus-article-decode-hook's except `article-decode-charset' + instead of hardcoding call to one of them. + + * gnus-art.el (gnus-article-decode-hook): Add + `article-decode-group-name'. + (article-decode-group-name): New function, use `g-d-n'. + + * gnus-group.el (gnus-group-insert-group-line): Decode + gnus-tmp-group using `g-d-n'. + + * gnus-util.el (gnus-decode-newsgroups): New function. + +2001-10-06 Per Abrahamsen + + * gnus-srvr.el (gnus-browse-foreign-server): Fixed bug non-nil + `gnus-group-name-charset-group-alist'. + +2001-10-06 08:00:00 ShengHuo ZHU + + * Makefile.in: Install el in install. Add uninstall. + +2001-10-05 Simon Josefsson + + * nnheader.el (gnus-verbose-backends, gnus-nov-is-evil): Custom. + + * gnus-sum.el (gnus-summary-move-article): Also activate new groups. + + * nnfolder.el (nnfolder-normalize-buffer): Don't insert \n\n in + empty folders. + + * gnus-sum.el (gnus-select-newsgroup): Don't enable `display' + limiting if read-all (C-u RET) was used. + +2001-10-04 Simon Josefsson + + * mail-source.el (mail-source-movemail-program): New variable. + (mail-source-movemail): Use it. Suggested by Taylor Hutt + . + +2001-10-03 Simon Josefsson + + * gnus-sum.el (gnus-summary-from-or-to-or-newsgroups): New param. + (gnus-summary-line-format-alist): Fix param. + +2001-10-02 Simon Josefsson + + * nnimap.el (nnimap-request-move-article): Use imap.el directly, + don't go through `nnimap-request-expire-articles' to delete the + article. Thanks to prj@po.cwru.edu (Paul Jarc). + +2001-10-02 10:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-write-active): The min in the + agent/active may be larger than that in the server/active. + +2001-10-01 Simon Josefsson + + * mail-source.el (mail-source-fetch-imap): Use BODY.PEEK if server + is IMAP4rev1. + + * nnml.el (gnus-article-unpropagatable-p): Autoload gnus-sum. + + * nnfolder.el: Ditto. + +2001-09-30 Dan Christensen + + * gnus-sum.el (gnus-summary-extract-address-component): New function. + (gnus-summary-from-or-to-or-newsgroups): Optimize. + +2001-09-29 Kai Gro,b_(Bjohann + + * message.el (message-mode-map): Keybinding for `gnus-delay-article'. + (message-mode-menu): Menu item for same. + + * gnus-group.el (gnus-group-make-menu-bar): Menu item for sending + delayed articles. + + * gnus-delay.el (gnus-delay-send-drafts): Do nothing if + nndraft:delayed does not exist. + (gnus-delay-initialize): Don't set up keymap, that's done from + message.el now. + (gnus-delay, gnus-delay-group, gnus-delay-header) + (gnus-delay-default-delay, gnus-delay-default-hour): Customize. + +2001-09-29 Simon Josefsson + + * mm-util.el (mm-mime-mule-charset-alist): Encode mule-utf-8 as + utf-8, not eight-bit-control. + + * imap.el (imap-shell-host, imap-default-user, imap-use-utf7) + (imap-log, imap-debug): Custom. + (imap-log-buffer, imap-debug-buffer): New constants. + (imap-kerberos4-open, imap-gssapi-open, imap-ssl-open) + (imap-network-open, imap-shell-open, imap-starttls-open) + (imap-send-command-1, imap-send-command, imap-arrival-filter) + (imap-debug): Use imap-*-buffer. + + * nndoc.el (nndoc-article-type): Add mailman. + (nndoc-type-alist): Ditto. + (nndoc-mailman-type-p): New function. + +2001-09-28 07:00:00 ShengHuo ZHU + + * gnus-xmas.el (gnus-article-x-face-command): Merge it into + gnus-art.el. + +2001-09-27 Simon Josefsson + + * gnus-topic.el (gnus-topic-mode-map): Add catchup. + (gnus-topic-catchup-articles): New function. Suggested by Robin + S. Socha . + +2001-09-27 11:00:00 ShengHuo ZHU + From Gerd M,Av(Bllmann . + + * gnus-ems.el (gnus-article-display-xface): Insert xface after + previous ones. + +2001-09-27 07:00:00 ShengHuo ZHU + From Daiki Ueno + + * gnus-sum.el (gnus-summary-show-article): The arglist of + detect-coding-region is incompatible. + +2001-09-26 18:00:00 ShengHuo ZHU + From Katsuhiro Hermit Endo + + * gnus-group.el (gnus-group-delete-group): Typo. + +2001-09-26 Simon Josefsson + + * nnmail.el (nnmail-expiry-target-group): Add doc warning. + + * nnimap.el (nnimap-expiry-target): Use temp buffer. + +2001-09-26 07:00:00 ShengHuo ZHU + + * gnus-cus.el (gnus-group-parameters): Display as sexp. + +2001-09-22 Simon Josefsson + + * nnml.el (nnml-open-marks): Remove unpropagatable marks. + + * nnfolder.el (nnfolder-open-marks): Ditto. + + * gnus-sum.el (gnus-article-unpropagatable-p): New function. + (gnus-update-marks): Use it. + (gnus-update-marks): Use `gnus-article-mark-to-type' instead of + hardcoded list. + + * gnus.el (gnus-article-special-mark-lists): Add killed. + (gnus-article-unpropagated-mark-lists): New constant. + +2001-09-22 Simon Josefsson + + * gnus-sum.el (gnus-summary-mode-hook): Add gnus-pick-mode as + custom option. + +2001-09-23 Simon Josefsson + + * gnus-draft.el (gnus-draft-setup): Add mark in backend as well. + +2001-09-23 02:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-button-mailto): Hack save-selected-window-window. + +2001-09-22 Per Abrahamsen + + * gnus-group.el (gnus-group-sort-function): Fix customize type to + accept lists of functions. + +2001-09-20 Simon Josefsson + + * gnus-group.el (gnus-group-catchup): Update expire marks in + backend. Also, if ALL also set expire marks on tick/dormant. + +2001-09-20 Kai Gro,b_(Bjohann + + * message.el (message-tab-body-function): New variable. + * message.el (message-tab): Use it. + +2001-09-19 Sam Steingold + + * gnus-win.el (gnus-buffer-configuration): Respect + `gnus-bug-create-help-buffer'. + +2001-09-18 Simon Josefsson + + * gnus-spec.el (gnus-correct-pad-form): Re-revert. + (gnus-parse-simple-format): Re-revert. + +2001-09-16 Katsuhiro Hermit Endo + Trivial patch. + + * gnus-spec.el (gnus-parse-complex-format): Don't fold search + case. (Thanks to Daiki Ueno .) + +2001-09-18 Simon Josefsson + + * gnus-spec.el (gnus-correct-pad-form): Remove until papers are + signed. + (gnus-parse-simple-format): Don't use it. + +2001-09-17 Miles Bader + + * gnus-srvr.el (gnus-server-insert-server-line): Don't let an + error querying a backend abort the whole process. + +2001-09-17 08:00:00 ShengHuo ZHU + + * gnus-srvr.el (gnus-server-mode): Fix bogus fontification. + From Gerd M,Av(Bllmann . + +2001-09-17 Didier Verna + + * nndiary.el: version 0.2-b14. + * gnus-diary.el (gnus-diary-check-message): fix `read-string' + compatibility problem with XEmacs 21.1. + +2001-09-15 Simon Josefsson + + * gnus-group.el (gnus-group-line-format): Document %c. + + * nnml.el (nnml-parse-head): Handle CRLF files. + (nnml-generate-nov-file): Ditto. + (nnml-retrieve-headers): Ditto. + +2001-09-15 Michael Welsh Duggan + + * gnus-spec.el (gnus-parse-format): Don't treat %c as %C. + +2001-09-13 Martin Kretzschmar + + * gnus-spec.el (gnus-correct-substring): Still stopped one + character before we wanted (never included last character). + (gnus-tilde-max-form, gnus-tilde-cut-form) Made readable again, + add missing "," (once per function) + +2001-09-14 Simon Josefsson + + * gnus-start.el (gnus-group-mode-hook): Moved from gnus-group + (otherwise e.g. gnus-agentize in .gnus overrides the customized + default before gnus-group is loaded and the variable set.) + + * nnimap.el (nnimap-request-set-mark): Do not store bookmark, + killed or unsent marks. + + * gnus-draft.el (gnus-draft-setup): Don't set mark when there + isn't an article to set it on (e.g. when you `a' in a group). + +2001-09-12 Pavel Jan,Am(Bk + + * mm-util.el (mm-charset-synonym-alist): add windows-1250 so we + can read e-mails from Microsoft Outlook users not using ISO + 8859-2 character set. + +2001-09-12 18:00:00 ShengHuo ZHU + + * gnus-diary.el: Minor modifications to avoid warnings. + (gnus-summary-misc-menu): defvar. + (gnus-diary-check-message): Use gnus-point-at-eol. + (gnus-diary-kill-entire-line): eval-and-compile. + +2001-09-12 Didier Verna + + * nndiary.el: new version (0.2-b13). + * nndiary.el (nndiary-mail-sources): doc update. + * nndiary.el (nndiary-split-methods): ditto. + * nndiary.el (nndiary-request-accept-article-hooks): New. + * nndiary.el (nndiary-request-accept-article): use it, check + message validity. + * nndiary.el (nndiary-get-new-mail): changed default to nil. + * nndiary.el (nndiary-schedule): fix bug (misplaced + condition-case): it didn't return nil on error. + * gnus-diary.el: new version. + * gnus-diary.el (gnus-diary-summary-line-format): removed %I. + * gnus-diary.el (gnus-diary-header-value-history): New. + * gnus-diary.el (gnus-diary-narrow-to-headers): New. + * gnus-diary.el (gnus-diary-add-header): New. + * gnus-diary.el (gnus-diary-check-message): New. + * gnus-diary.el (message-mode-map): bind the above to `C-c D c'. + * gnus-diary.el (gnus-article-edit-mode-map): ditto. + +2001-09-10 TSUCHIYA Masatoshi + + * gnus-sum.el (gnus-select-newsgroup): Make + `gnus-current-select-method' buffer-local. + + * gnus-art.el (gnus-request-article-this-buffer): Refer + `gnus-current-select-method' in the current summary buffer. + +2001-09-10 Simon Josefsson + From Daniel Pittman + + * gnus-spec.el (gnus-correct-pad-form): Fix. + +2001-09-09 Simon Josefsson + + * mm-decode.el (mm-inline-media-tests): Add + application/x-emacs-lisp. + (mm-attachment-override-types): Add + application/{x-,}pkcs7-signature. + + * gnus-srvr.el (gnus-server-mode-hook, gnus-server-exit-hook) + (gnus-server-line-format, gnus-server-mode-line-format) + (gnus-server-browse-in-group-buffer): Customize. + +2001-09-08 16:00:00 ShengHuo ZHU + + * nnml.el (nnml-marks-changed-p): Typo. + (nnml-save-marks, nnml-open-marks): Use gnus-sethash. + (nnml-marks-changed-p): Use gnus-gethash. + (nnml-marks-modtime): Use gnus-make-hashtable. + + * nnfolder.el (nnfolder-marks-changed-p): Typo. + (nnfolder-request-expire-articles, nnfolder-save-marks) + (nnfolder-open-marks): Typo. + (nnfolder-save-marks, nnfolder-open-marks): Use gnus-sethash. + (nnfolder-marks-changed-p): Use gnus-gethash. + (nnfolder-marks-modtime): Use gnus-make-hashtable. + +2001-09-08 Simon Josefsson + + * nnfolder.el (nnfolder-marks-modtime): New variable. + (nnfolder-marks-changed-p): New function. + (nnfolder-save-marks, nnfolder-open-marks): Save modtime. + (nnfolder-request-update-info): Don't update if marks didn't change. + + * nnml.el (nnml-marks-modtime): New variable. + (nnml-marks-changed-p): New function. + (nnml-save-marks, nnml-open-marks): Save modtime. + (nnml-request-update-info): Don't update if marks didn't change. + + * gnus-agent.el (gnus-agent-any-covered-gcc) + (gnus-agent-add-server, gnus-agent-remove-server): Use + gnus-agent-method-p. + + * gnus-art.el (gnus-buttonized-mime-types): New variable. + (gnus-unbuttonized-mime-type-p): Use it. + + * gnus-agent.el (gnus-agent-fetch-group): If online, actually + fetch group. + +2001-09-08 Simon Josefsson + From Daniel Pittman + + * gnus-spec.el (gnus-correct-pad-form): New function. + (gnus-parse-simple-format): Use it. + +2001-09-07 Simon Josefsson + + * gnus-group.el (gnus-group-sort-groups): Unmark all groups. + (gnus-group-sort-selected-groups): Ditto. Suggested by Harry + Putnam . + (gnus-group-sort-selected-groups): Touch dribble file. + +2001-09-07 Raja R Harinath + + * nnml.el (nnml-filenames-are-evil): New variable. + (nnml-article-to-file-alist): Rename to ... + (nnml-current-group-article-to-file-alist): ... this. + Respect `nnml-filenames-are-evil'. + (nnml-active-number): Update. + (nnml-update-file-alist): Update. + (nnml-request-article): Use nnheader-article-to-file-alist. + (nnml-request-rename-group): Likewise. + +2001-09-06 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-insert-line): Fix. + +2001-09-06 Bj,Av(Brn Torkelsson + + * gnus-sum.el: Bind g-s-t-s to "W g". + * gnus-sum.el (gnus-summary-make-menu-bar): Add g-s-t-s. + * gnus-sum.el (gnus-summary-toggle-smiley): New function. Toggles + display of graphical smilies. + +2001-09-07 02:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-setup-news): A typo. + From Bill White . + +2001-09-06 Simon Josefsson + + * gnus-sum.el (gnus-summary-insert-line): Insert forwarded, recent + and unseen marks. + +2001-09-05 Kai Gro,b_(Bjohann + + * nnmail.el (nnmail-split-fancy): Document `junk'. + +2001-09-04 Simon Josefsson + + * imap.el (imap-search): Don't error if server is broken. + +2001-09-02 Benjamin Rutt + + * nnmbox.el (nnmbox-find-article): Fix infinite loop when + searching for an article that isn't in the mbox. + +2001-09-02 23:12:48 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-retrieve-headers-1): Get references + right, and get all the comments. + +2001-09-02 Simon Josefsson + Suggested by Dan Christensen + + * nnfolder.el (nnfolder-request-update-info): Fix message. + + * nnml.el (nnml-request-update-info): Ditto. + +2001-09-01 Simon Josefsson + + * nnml.el (nnml-request-expire-articles): Also bind + `nnml-current-group' and `nnml-article-file-alist' when using + expiry-target. (Otherwise nnml will be in a inconsistent internal + state causing all kind of problems.) + (nnml-request-expire-articles): If `nnml-article-to-file' or + `file-attributes' failes, return article as un-expirable instead + of treating it as expired. + +2001-08-31 Sam Steingold + + * imap.el (imap-mailbox-examine, imap-mailbox-examine-1): Fix a + typo: `exmine' --> `examine'. + +2001-08-30 13:00:00 ShengHuo ZHU + + * nndoc.el (nndoc-forward-type-p): It is not a digest. + +2001-08-30 11:00:00 ShengHuo ZHU + + * nnml.el (nnml-check-directory-twice): Remove. + (nnml-retrieve-headers): Ditto. + (nnml-article-to-file): Use nnheader-directory-files-is-safe. + +2001-08-30 Andrew Innes + + * nnheader.el (nnheader-directory-files-is-safe): No need to read + directory twice on Windows, or on GNU Emacs-21. + +2001-08-30 Andrew Innes + + * nnml.el (nnml-request-article): Use nnml-article-to-file-alist. + (nnml-request-rename-group): Ditto. + (nnml-active-number): Ditto. + (nnml-request-create-group): Use nnml-directory-articles. + (nnml-request-expire-articles): Use nnml-directory-articles, which + gets list from nov database if available. + (nnml-get-nov-buffer): New function. + (nnml-open-nov): Use it. + (nnml-update-file-alist): Use nnml-article-to-file-alist, which + gets alist from nov database if available. + (nnml-directory-articles): New function. + (nnml-article-to-file-alist): New function. + +2001-08-30 Andrew Innes + + * mm-decode.el (mm-display-external): Use `name' as filename, if + `filename' attribute is not present. + +2001-08-30 Andrew Innes + + * mail-source.el (mail-source-flash): New defcustom. + (mail-source-new-mail-p): Ring visible bell if appropriate. + (mail-source-start-idle-timer): Use unwind-protect to ensure idle + timer is cleared even if mail check signals an error. + +2001-08-29 10:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-move-article): Only update marks of + type 'list. + +2001-08-29 00:00:00 ShengHuo ZHU + + * flow-fill.el (fill-flowed): eol might be point-max. + +2001-08-27 Simon Josefsson + + * nnml.el (nnml-request-update-info): Fix message. + (nnml-open-marks): Ditto. + + * nnfolder.el (nnfolder-request-update-info): + (nnfolder-open-marks): Fix message. + +2001-08-25 Simon Josefsson + + * nnfolder.el (nnfolder-save-marks): Don't create directory named + after group in ~/. + +2001-08-25 Simon Josefsson + From Andreas Jaeger + + * nnfolder.el (nnfolder-open-marks): Fix typo. + * nnml.el (nnml-open-marks): Likewise. + +2001-08-25 Simon Josefsson + + Make nnfolder groups self-contained as far as marks are concerned. + + * nnfolder.el (nnfolder-marks-directory, nnfolder-marks-is-evil) + (nnfolder-marks, nnfolder-marks-file-suffix): New variables. + (nnfolder-open-server): Make marks directory. + (nnfolder-request-delete-group): Delete marks file. + (nnfolder-request-delete-group): Check of nov/marks file exist + before deleting. + (nnfolder-request-rename-group): Rename marks file. + (nnfolder-request-rename-group): Only rename nov/mark if they exists. + (nnfolder-request-set-mark, nnfolder-request-update-info) + (nnfolder-group-marks-pathname, nnfolder-save-marks) + (nnfolder-open-marks): New functions. + (top-level): Require gnus. + +2001-08-25 09:00:00 ShengHuo ZHU + + * nnweb.el (nnweb-type-definition): Use google raw file. + (nnweb-google-parse-1): Ditto. + (nnweb-google-identity): Ditto. + (nnweb-reference-wash-article): Move nnweb-decode-entities here. + (nnweb-altavista-wash-article): Ditto. + (nnweb-request-article): Remove nnweb-decode-entities. + + * nnml.el: Require 'gnus. + +2001-08-25 Simon Josefsson + + * nnml.el (nnml-marks-is-evil): Add doc. + +2001-08-25 Simon Josefsson + + * nnml.el (nnml-save-marks): Wrap saving marks in a + condition-case, to allow user to start Gnus if saving marks failed + for some reason. + +2001-08-24 16:05:38 Lars Magne Ingebrigtsen + + * gnus-spec.el (gnus-compile): Don't compile gnus-version. + + * gnus-group.el (gnus-update-group-mark-positions): Bind + gnus-group-update-hook to nil. + +2001-08-24 13:00:00 ShengHuo ZHU + + * mml.el (mml-generate-mime-1): Force as multibyte string. + +2001-08-24 12:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-insert-line) + (gnus-summary-prepare-threads): gnus-tmp-lines should be a string. + From Martin Kretzschmar + + * gnus-spec.el (gnus-correct-substring): Take optional END. + + * nnrss.el (nnrss-request-article): Remove \n. + (nnrss-retrieve-headers): Lines number is -1. + +2001-08-24 Simon Josefsson + + * gnus-group.el (gnus-info-clear-data): Call + nnfoo-request-set-mark to propagate marks. Fix bug: + `gnus-group-update-line' doesn't update read range unless we call + `gnus-get-unread-articles-in-group' first. + + * nnimap.el (nnimap-request-set-mark): Don't propagate seen flags + to server. + +2001-08-23 21:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-create-info-command): Return an interactive + function. + +2001-08-23 19:00:00 ShengHuo ZHU + From Katsumi Yamaoka + + * gnus-spec.el (gnus-parse-complex-format): Use equal. + +2001-08-23 18:43:05 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-select-newsgroup): Use it. + + * gnus-util.el (gnus-not-ignore): New function. + + * lpath.el (featurep): Don't fbind char-int. + + * gnus-util.el (gnus-create-info-command): New function. + + * gnus-group.el (gnus-group-edit-group): Make C-c C-i go to the + right node. + + * gnus-sum.el (gnus-select-newsgroup): Clean up. + (gnus-summary-limit-children): Use 'identity instead of `all'. + (gnus-summary-limit-to-display-predicate): New command and + keystroke. + +2001-08-23 10:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-group-alist): Use fm-releases.rdf. + + * gnus-spec.el (gnus-format-specs): Miss a right parenthesis. + +2001-08-23 18:43:05 Lars Magne Ingebrigtsen + + * gnus-spec.el: Add the Gnus version. + (gnus-update-format-specifications): If the Gnus version changes, + nix out the format spec cache. + + * gnus.el (gnus-continuum-version): Made into a command and + optionalize the VERSION. + + * gnus-spec.el (gnus-parse-complex-format): Remove %C specs from + the start of the lines. + +2001-08-22 00:06:52 Lars Magne Ingebrigtsen + + * gnus.el (gnus-visual-p): Define function before use of + function. + +2001-08-21 23:28:02 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-adjust-marked-articles): Use new variable. + (gnus-article-mark-to-type): New function. + (gnus-update-missing-marks): Only update marks of type 'list. + + * gnus.el (gnus-article-special-mark-lists): New variable. + +2001-08-21 12:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-limit-children): Check 'all. + (gnus-select-newsgroup): Still use 'all. + (gnus-summary-initial-limit): Comparing with 'all. + +2001-08-20 16:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-activate-group): If dont-check, don't update + active. + +2001-08-20 15:00:00 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-retrieve-headers-1): Replace + nnslashdot-*-retrieve-headers. + (nnslashdot-request-article): Fix for slashcode 2.2. + (nnslashdot-make-tuple): New function. + (nnslashdot-read-groups): Use it. + +2001-08-20 01:34:03 Lars Magne Ingebrigtsen + + * gnus.el (gnus-expand-group-parameters): Don't alter the variable + list. + + * gnus-sum.el (gnus-summary-move-article): Don't select article. + +2001-08-20 Simon Josefsson + + * gnus-msg.el (gnus-inews-do-gcc): If archive server can't be + opened, error instead of continuing (and exploding later). + +2001-08-20 01:34:03 Lars Magne Ingebrigtsen + + * gnus.el (gnus-expand-group-parameters): Return the parameter + list. + + * gnus-sum.el (gnus-summary-show-article): Doc fix. + (gnus-summary-show-article): Guess at charset if required. + + * gnus-spec.el (gnus-correct-substring): Stopped one character + before we wanted. + +2001-08-19 Pavel Jan,Am(Bk + + * earcon.el (earcon-auto-play): Remove unused option. + +2001-08-19 16:14:41 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-headers): Move the "Scoring..." + message down in levels, since it happens very fast. + + * smiley-ems.el (smiley-update-cache): Respect the symbol version + of smiley-regexp-alist. + + * mm-view.el (mm-inline-text): Ignore vcard errors. + + * gnus-art.el (gnus-ignored-headers): Added more junk headers. + + * gnus-score.el (gnus-all-score-files): Use append instead of + nconc. + + * gnus.el (gnus-splash-face): Doc fix. + + * mm-decode.el (mm-mailcap-command): Use + mm-path-name-rewrite-functions. + (mm-path-name-rewrite-functions): New variable. + + * gnus-spec.el (gnus-parse-complex-format): React to ?=. + (gnus-complex-form-to-spec): Insert tab. + (gnus-spec-tab): New function. + + * gnus-sum.el (gnus-select-newsgroup): Set the marks before + entering the group. + + * gnus-spec.el (gnus-complex-form-to-spec): Insert Lisp to match + the positional spec. + (gnus-parse-complex-format): React to %C. + + * gnus-ems.el (gnus-char-width): Moved here. + + * gnus-sum.el (gnus-select-newsgroup): Set + gnus-newsgroup-articles. + (gnus-unseen-mark): New variable. + (gnus-newsgroup-unseen): Ditto. + (gnus-newsgroup-seen): Ditto. + (gnus-adjust-marked-articles): Use them. + (gnus-update-marks): Use them. + (gnus-summary-update-secondary-mark): Display. + (gnus-summary-prepare-threads): Display. + + * gnus-msg.el (gnus-inews-group-method): Use and return the + method, not the server. + +2001-08-19 Simon Josefsson + + * gnus-srvr.el (gnus-server-agent-face): New. + (gnus-server-agent-face): New. + (gnus-server-mode): Turn on font-lock-mode. + + * gnus.el (gnus-server-visual): Add defgroup. + +2001-08-19 Simon Josefsson + From Joe Casadonte + + * gnus-srvr.el (gnus-server-opened-face, gnus-server-closed-face, + gnus-server-denied-face): New. + (gnus-server-opened-face, gnus-server-closed-face, + gnus-server-denied-face): New. + (gnus-server-font-lock-keywords): Add. + +2001-08-19 Simon Josefsson + + * nnml.el (nnml-request-set-mark): Return nil. + (nnml-save-marks): Use nnml-possibly-create-directory. + (nnml-open-marks): Only work in temp buffer when inserting/reading + .marks file. + +2001-08-18 19:00:00 ShengHuo ZHU + + * gnus.el (gnus-expand-group-parameters): Fix. + + * gnus-spec.el (gnus-char-width): New function. + (gnus-correct-substring, gnus-correct-length): Use it. + + * message.el (message-required-mail-headers): Fix doc. + +2001-08-18 18:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-group-make-articles-read): gnus-request-set-mark. + + * mm-decode.el (mm-save-part-to-file): Insert the handle. + +2001-08-18 13:00:00 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-threaded-retrieve-headers): + slashdot 2.2 (not fully fixed yet). + (nnslashdot-request-article): Ditto. + +2001-08-18 Simon Josefsson + + * gnus-util.el (gnus-remassoc, gnus-update-alist-soft): Moved from + nnimap. + + * nnimap.el (nnimap-remassoc, nnimap-update-alist-soft): Moved to + gnus-util. + (nnimap-request-update-info-internal): Use new functions. + + * nnml.el (nnml-request-set-mark, nnml-request-update-info): Use + new functions. + +2001-08-18 Simon Josefsson + + Make nnml groups self-contained as far as marks are concerned. + + * nnml.el (nnml-request-delete-group): Delete marks file. + (nnml-request-rename-group): Move marks file. + (nnml-marks-file-name, nnml-marks-is-evil, nnml-marks): New server + variables. + (nnml-request-set-mark, nnml-request-update-info): New server + functions. + (nnml-save-marks, nnml-open-marks): New functions. + +2001-08-18 Simon Josefsson + + * gnus-sum.el (gnus-summary-move-article): Use `add' instead of + `set' when setting marks. + +2001-08-17 22:00:00 ShengHuo ZHU + + * gnus.el (gnus-info-find-node): Take an argument. + + * gnus-art.el (gnus-button-handle-info): New function. + (gnus-url-unhex-string): Replace "+" with " ". + +2001-08-17 21:00:00 ShengHuo ZHU + + * message.el (message-check-news-header-syntax): Check bad From. + +2001-08-18 00:14:45 Lars Magne Ingebrigtsen + + * gnus-spec.el (gnus-correct-length): New function. + (gnus-correct-substring): New function. + (gnus-tilde-max-form): Use it. + +2001-08-17 Nevin Kapur + + * nnmh.el: Docstring changes as below. + + * nnml.el: Docstring changes as below. + + * nnbabyl.el: Docstring changes as below. + + * nnmbox.el: Docstring changes as below. + + * nnfolder.el: Added docstrings identifying each virtual server + parameter. + +2001-08-18 Simon Josefsson + + * mml.el (mml-menu): Collapse Attach, Insert and Security submenu. + +2001-08-17 Bj,Av(Brn Torkelsson + + * message.el: rename "Abort Message" to "Postpone Message". + Remove "Attach file as MIME" from Message menu, it's already in + the MIME menu. + +2001-08-17 14:00:00 ShengHuo ZHU + + * smime.el (smime-point-at-eol): eval-and-compile. + (smime-make-temp-file): New function. + (smime-sign-region, smime-encrypt-region, smime-decrypt-region): + Use it. + +2001-08-17 10:41:14 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-fetch-group): Go online if offline. + (gnus-agent-summary-fetch-group): New command and keystroke. + + * gnus-art.el (gnus-insert-mime-button): Tiny clean-up. + (gnus-mime-display-security): Make it respect + gnus-unbuttonized-mime-type-p. + + * gnus-sum.el (gnus-articles-to-read): Comments. + (gnus-article-marked-p): New function. + (gnus-summary-display-make-predicate): New function. + (gnus-select-newsgroup): Use them. + + * mm-decode.el (mm-save-part-to-file): Made it not error. + +2001-08-17 Simon Josefsson + + * imap.el (imap-wait-for-tag): If process-status isn't open or + run, return nil instead of sit-for looping. + +2001-08-17 10:41:14 Lars Magne Ingebrigtsen + + * lpath.el (featurep): fbind xml-parse-region. + + * gnus.el (gnus-message-archive-method): Default to "archive". + (gnus-message-archive-method): Doc fix. + (gnus-parameters-get-parameter): Cleaned up. + (gnus-expand-group-parameter): New function. + + * gnus-start.el (gnus-setup-news): Push the archive server only + the server list. + + * mml.el (mml-menu): Changed name to "Attachments". + + * mm-decode.el (mm-destroy-postponed-undisplay-list): Only message + when there is something to detroy. + +2001-05-21 17:11:46 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-server-browse-in-group-buffer): Default to + nil. + +2001-08-15 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-article): Allow "01:23" time spec, + which specifies a time today or tomorrow. + +2001-08-15 Simon Josefsson + From Pavel@Janik.cz (Pavel Jan,Am(Bk) + + * gnus-agent.el (gnus-agent-make-mode-line-string) + (gnus-agent-toggle-plugged): Use new API. + +2001-08-14 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-send-drafts): Fix check whether + deadline has expired. + +2001-08-12 Simon Josefsson + 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 + + * mm-bodies.el (mm-decode-content-transfer-encoding): Returns + whether successful decoding took place. Add doc. + +2001-08-12 Simon Josefsson + Suggested by Per Abrahamsen + + * 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 + Committed by Kai Gro,b_(Bjohann. + + * gnus-score.el (gnus-score-string): Fix `match' regexp + for `extra' header case. + +2001-08-10 23:00:00 ShengHuo ZHU + + * nnmbox.el (nnmbox-read-mbox): No warning. + +2001-08-10 21:00:00 ShengHuo ZHU + + * nndoc.el (nndoc-article-type): Fix doc. + (nndoc-generate-article-function): New variable. + (nndoc-dissection-function): New variable. + (nndoc-type-alist): Add oe-dbx. + (nndoc-oe-dbx-type-p): New function. + (nndoc-oe-dbx-dissection): New function. + (nndoc-oe-dbx-generate-article): New function. + +2001-08-11 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-send-drafts): Cleaner way to check + whether deadline has been reached. Patch from Dan Nicolaescu + . + +2001-08-10 02:00:00 ShengHuo ZHU + + * gnus-ml.el (turn-on-gnus-mailing-list-mode): Use + gnus-group-find-parameter. Suggested by Janne Rinta-Manty + . + + * mail-source.el (mail-source-movemail): The error buffer is + modified, but nothing in it. + +2001-08-10 01:00:00 ShengHuo ZHU + + * message.el (message-bogus-system-names): New variable. + (message-make-fqdn): Use it. + +2001-08-09 15:00:00 ShengHuo ZHU + + * nndraft.el (nndraft-request-group): Use + nndraft-auto-save-file-name. + +2001-08-09 Simon Josefsson + + * mm-view.el (mm-view-pkcs7-decrypt): Operate in current buffer. + Don't ask whether to decrypt. Just leave result in buffer (don't + call mm). + + * mm-decode.el (mm-dissect-buffer): Possibly verify/decrypt single + parts as well. + (mm-inline-media-tests): Ignore application/{x-,}pkcs7-mime. + (mm-possibly-verify-or-decrypt): Support application/{x-,}pkcs7-mime. + +2001-08-09 Simon Josefsson + + * mm-decode.el (mm-insert-part): Return decoding success status. + (mm-save-part-to-file): Error if decoding failed. + +2001-08-09 10:00:00 ShengHuo ZHU + + * message.el (message-tab): Use indent-relative. + (message-mode): Don't bind indent-line-function to indent-relative. + +2001-08-09 Simon Josefsson + + * message.el (message-get-reply-headers): Fix string. Suggested by + Christoph Conrad . + +2001-08-08 15:00:00 ShengHuo ZHU + + * message.el (message-tab): Use the current value of + indent-line-function. + (message-mode): Bind indent-line-function to indent-relative. + +2001-08-08 Simon Josefsson + + * imap.el (imap-gssapi-auth-p, imap-kerberos4-auth-p): Also check + whether `imtest' is installed. + +2001-08-04 ShengHuo ZHU + Trivial patch from Nuutti Kotivuori + + * gnus-sum.el (gnus-summary-show-article): Call + gnus-summary-update-secondary-secondary-mark. + * gnus-sum.el (gnus-summary-edit-article-done): Ditto. + * gnus-sum.el (gnus-summary-reparent-thread): Ditto. + +2001-08-07 16:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-make-menu-bar): Misc -> Gnus. + + * gnus-group.el (gnus-group-make-menu-bar): Ditto. + + * mm-uu.el (mm-uu-dissect): Autoload. From Gerd M,Av(Bllmann + . + + * gnus-art.el (gnus-output-to-file): Bind file-name-coding-system. + + * gnus-util.el (gnus-output-to-rmail): Ditto. + (gnus-output-to-mail): Ditto. + + * nnmail.el (nnmail-pathname-coding-system): Set default to nil. + +2001-08-06 Florian Weimer + + * message.el (message-indent-citation): Use + `message-yank-cited-prefix' for empty lines. + +2001-08-05 Florian Weimer + + * message.el (message-indent-citation): Quote only lines starting + with ">" using `message-yank-cited-prefix'. + +2001-08-05 Nuutti Kotivuori + Trivial patch. + + * gnus-cache.el (gnus-cache-possibly-enter-article): Use + gnus-cache-fully-p. + +2001-08-04 Simon Josefsson + + * gnus-cache.el (gnus-cache-possibly-update-active): Create active + file if it doesn't exist (by calling gnus-cache-read-active). + +2001-08-04 Simon Josefsson + + * gnus-cache.el (gnus-cache-possibly-enter-article): Revert. + (gnus-cache-passively-or-fully-p): Removed. + (gnus-cache-fully-p): Fix it. + + * mm-view.el (mm-pkcs7-signed-magic): Support more ASN.1 lengths. + +2001-08-04 Simon Josefsson + + * gnus-cache.el (gnus-cache-fully-p) + (gnus-cache-passively-or-fully-p): New functions. + (gnus-cache-possibly-enter-article): Cosmetic change, use + `g-c-p-o-f-p'. + (gnus-cache-possibly-enter-article): Use `g-c-p-u-a'; last change + was bogus (`g-c-p-a-a' does not change active info, just change + the functions parameters). + (gnus-cache-possibly-remove-articles-1): Make sure articles are + not removed in groups that match `gnus-uncacheable-groups'. + + Reported and modifications based on discussions with Nuutti + Kotivuori . + +2001-08-04 Simon Josefsson + Trivial patch from Nuutti Kotivuori + + * gnus-cache.el (gnus-cache-possibly-update-active): New function; + calls `gnus-cache-update-active' if bounds has been extended. + +2001-08-04 10:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mime-security-verify-or-decrypt): Insert + before remove. + (gnus-mime-security-show-details): Ditto. + +2001-08-04 Kai Gro,b_(Bjohann + + * nnmail.el (nnmail-split-fancy-with-parent): Correct `mapconcat' + syntax. Protect string-match against nil string and regexp. + +2001-08-03 19:00:00 ShengHuo ZHU + + * mm-util.el (mm-find-charset-region): Remove control-1. + +2001-08-03 17:00:00 ShengHuo ZHU + + * mm-decode.el (mm-readable-p): Emacs 20 takes one argument. + +2001-08-04 Simon Josefsson + + * smime.el (smime-sign-region, smime-encrypt-region): Fix details + buffer. Delete MIME-Version header. + +2001-08-03 Simon Josefsson + + * gnus-cache.el (gnus-cache-possibly-enter-article): The article + that is entered does not necessarily have the highest article + number in the group, so use `gnus-cache-possibly-alter-active' + instead of `gnus-cache-update-active'. + +2001-08-03 10:00:00 ShengHuo ZHU + + * mml2015.el (mml2015-gpg-extract-signature-details): Don't barf. + +2001-08-03 Simon Josefsson + + * mml.el (mml-menu): Rename from MML to Mime. Collapse Security + menu. + +2001-08-02 Katsumi Yamaoka + + * gnus.el (post-method): New group parameter. It also provides + the user option `gnus-post-method-alist' and the internal function + `gnus-parameter-post-method'. + + * gnus-msg.el (gnus-post-method): Bind the value of + `gnus-post-method' to the group parameter if it is defined. + +2001-08-02 Simon Josefsson + + * smime.el (smime-extra-arguments): Removed. + (smime-call-openssl-region): Don't use it. + +2001-08-02 Simon Josefsson + + * smime.el (smime-sign-region): Handle stderr. + (smime-encrypt-region): Ditto. + + * mm-view.el (mm-pkcs7-signed-magic): Make it a regexp. Don't + match the ASN.1 length bytes. + (mm-pkcs7-enveloped-magic): Ditto. + (mm-view-pkcs7-get-type): Don't regexp quote. + +2001-08-01 14:00:00 ShengHuo ZHU + From Andreas Fuchs + + * mml2015.el (mml2015-trust-boundaries-alist): Typo. + +2001-08-01 10:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-header-button-alist): References regexp. + +2001-08-01 Gerd Moellmann + + * mm-view.el (autoload): Don't autoload `diff-mode' if it's + already fboundp. Add INTERACTIVE arg to autoload form. + +2001-08-01 09:00:00 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-init): Add as gnus buffer. + + * nnmail.el (nnmail-cache-open): Ditto. + +2001-07-31 21:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-button-fetch-group): Fix the regexp. + +2001-07-31 Katsumi Yamaoka + + * gnus-msg.el (gnus-post-method): Refer to `gnus-parameters'. + +2001-07-31 17:00:00 ShengHuo ZHU + Originally from Pavel Jan,Am(Bk + + * gnus-agent.el (gnus-agent-make-mode-line-string): New function. + (gnus-agent-toggle-plugged): Use it. + +2001-07-31 ShengHuo ZHU + + * gnus-start.el (gnus-startup-file-coding-system): Revert to binary. + (gnus-ding-file-coding-system): New variable. + (gnus-read-newsrc-el-file, gnus-save-newsrc-file) + (gnus-slave-save-newsrc): Use it. + +2001-07-31 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-initialize): Use standard define-key + syntax. + +2001-07-30 15:00:00 ShengHuo ZHU + Originally from Andreas Fuchs + + * mml2015.el (mml2015-trust-boundaries-alist): New variable. + (mml2015-gpg-pretty-print-fpr): New function. + (mml2015-gpg-extract-signature-details): More details, rename from + `m-g-e-from'. + (mml2015-gpg-verify): Use them. + (mml2015-gpg-clear-verify): Use them. + +2001-07-31 Simon Josefsson + + * mml-smime.el (mml-smime-sign, mml-smime-encrypt): Goto end of + buffer when done. + +2001-07-30 Simon Josefsson + + * smime.el (smime-call-openssl-region): Revert previous change, + just pass on buf to `call-process-region'. + (smime-verify-region): Doc fix. Don't message stuff. Use + `smime-new-details-buffer'. Inserts error messages into buffer. + (smime-noverify-region): Ditto. + (smime-decrypt-region): Ditto. Handles stderr separately. + (smime-verify-buffer, smime-noverify-buffer) + (smime-decrypt-buffer): Doc fix. + (smime-new-details-buffer): New function. + (smime-pkcs7-region, smime-pkcs7-certificates-region) + (smime-pkcs7-email-region): Use `smime-new-details-buffer'. + (smime-sign-region, smime-encrypt-region): Don't use + `insert-buffer'. + + * mml-smime.el (mml-smime-verify): Fix security button strings. + +2001-07-30 12:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mime-save-part-and-strip): Save + gnus-article-mime-handles. + +2001-07-29 Simon Josefsson + + * mail-source.el (top-level): Require message for message-directory. + (mail-source-directory): Change default to message-directory. + + * smime.el (smime-keys, smime-CA-directory, smime-CA-file) + (smime-certificate-directory, smime-openssl-program) + (smime-encrypt-cipher, smime-dns-server): Fix doc (leading "*"). + (smime-extra-arguments): New variable. + (smime-dns-server): Fix customize group. + (smime-call-openssl-region): Use `smime-extra-arguments'. + +2001-07-29 Simon Josefsson + From Vladimir Volovich + + * smime.el (smime-call-openssl-region): Ignore stderr. + +2001-07-29 Simon Josefsson + From Christoph Conrad + + * gnus-agent.el (gnus-agent-save-group-info): Don't destroy active + file. + +2001-07-29 Simon Josefsson + + * mm-view.el (mm-view-pkcs7-decrypt): Adhere to `mm-decrypt-option'. + + Support S/MIME decryption. + + * mm-decode.el (mm-inline-media-tests): + (mm-inlined-types): + (mm-automatic-display): + (mm-attachment-override-types): Add application/{x-,}pkcs7-mime. + + * mm-view.el (mm-pkcs7-signed-magic): + (mm-pkcs7-enveloped-magic): New variables. + (mm-view-pkcs7-get-type): New function; identify PKCS#7 type. + (mm-view-pkcs7): New function; mm viewer for PKCS#7 blobs. + (mm-view-pkcs7-decrypt): New function; mm viewer for encrypted + PKCS#7 blobs. + + * smime.el (smime-decrypt-region): Expand keyfile. + +2001-07-29 Simon Josefsson + + * nntp.el (nntp-open-ssl-stream): Don't mess with internal + `ssl.el' variables. + + * gnus-agent.el (gnus-agent-save-group-info): Delete everything + but line instead of narrowing to it, because `nnmail-parse-active' + calls widen. Thanks to Christoph Conrad + . + +2001-07-29 Kai Gro,b_(Bjohann + + * gnus.el (gnus-summary-line-format): Mention `gnus-sum-thread-*' + for %B spec. + + * gnus-sum.el (gnus-summary-prepare-threads): If + gnus-sum-thread-tree-root is nil, use subject instead. + (gnus-sum-thread-tree-root, gnus-sum-thread-tree-single-indent) + (gnus-sum-thread-tree-vertical, gnus-sum-thread-tree-indent) + (gnus-sum-thread-tree-leaf-with-other) + (gnus-sum-thread-tree-single-leaf): Documentation. + (gnus-sum-thread-tree-single-indent): Allow nil. + +2001-07-28 09:00:00 ShengHuo ZHU + + * message.el (message-fill-paragraph): Do nothing if the user + wants filladapt-mode. + +2001-07-27 23:00:00 ShengHuo ZHU + + * mm-decode.el (mm-image-type-from-buffer): New function. + (mm-get-image): Use it. + +2001-07-27 18:00:00 ShengHuo ZHU + + * gnus.el (gnus-large-newsgroup): Add doc, "If it is nil, ..." + + * gnus-art.el (gnus-mime-view-all-parts): buffer-read-only covers + mm-display-parts too. + +2001-07-27 12:00:00 ShengHuo ZHU + + * nnfolder.el (nnfolder-request-accept-article): Bind + nntp-server-buffer. + + * nnmail.el (nnmail-parse-active): Read from buffer instead of + nntp-server-buffer. + +2001-07-27 11:00:00 ShengHuo ZHU + + * message.el (message-check-news-header-syntax): Use + message-post-method. + (message-send-news): Bind message-post-method. + +2001-07-27 07:00:00 ShengHuo ZHU + + * mml.el (mml-tweak-type-alist): New variable. + (mml-tweak-function-alist): New variable. + (mml-tweak-part): New function. + (mml-generate-mime-1): Use it. + +2001-07-26 22:00:00 ShengHuo ZHU + + * nnfolder.el (nnfolder-request-accept-article): Replace + nnfolder-request-list. + +2001-07-27 Simon Josefsson + + * nnimap.el (nnimap-open-server): Set nnimap-server-buffer if + nnoo-change-server failed to do it. + +2001-07-26 16:00:00 ShengHuo ZHU + + * gnus.el (gnus-parameters): Make it customizable. + +2001-07-26 15:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mm-display-part): Narrow to point if eobp. + + * message.el (message-set-auto-save-file-name): More + poor-system-types. + + * mailcap.el (mailcap-parse-mimetypes): poor-system-types. + + * gnus-ems.el (nnheader-file-name-translation-alist): M$Windows-NT + supports +. + +2001-07-26 14:00:00 ShengHuo ZHU + + * mm-decode.el (mm-readable-p): New function. + (mm-inline-media-tests): Fix the default testers. + +2001-07-26 Simon Josefsson + + * nnimap.el (nnimap-version): Bump version number. + +2001-07-26 10:00:00 ShengHuo ZHU + From Steven E. Harris + + * nnheader.el (nnheader-translate-file-chars): cygwin32 is running + in M$Windows too. + +2001-07-26 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-send-drafts): Don't `error'. + +2001-07-25 21:00:00 ShengHuo ZHU + + * gnus-bcklg.el (gnus-backlog-shutdown): Make interactive. + + * mm-decode.el (mm-get-image): Guess then use the type. + + * gnus-art.el (gnus-mime-view-part-as-type): Don't copy cache. + +2001-07-25 12:54:00 Danny Siu + + * gnus-sum.el (gnus-summary-prepare-threads): Shouldn't do tree + display (%B) for threads if threading is off. + +2001-07-25 14:00:00 ShengHuo ZHU + From Henrik Enberg + + * gnus-msg.el: Customization patch. + +2001-07-25 22:22:22 Raymond Scholz + + * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups): New + variable. + (nnmail-split-fancy-with-parent): Ignore certain groups. + +2001-07-25 11:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-byte-compile): New function. + (gnus-use-byte-compile): New variable. + (gnus-make-sort-function): Use it. + + * nnmail.el (nnmail-get-new-mail): Use it. + + * gnus-agent.el (gnus-category-make-function): Simple function or + compiled function. + (gnus-agent-fetch-group-1): Don't use (caaddr predicate). + + * gnus-gl.el (bbb-build-rate-command): Remove quote before lambda. + * gnus-topic.el (gnus-topic-sort-topics-1): Ditto. + (gnus-topic-sort-topics-1): Use gnus-byte-compile. + + * message.el (message-check-news-header-syntax): Remove quote. + +2001-07-24 19:00:00 ShengHuo ZHU + + * message.el (message-use-mail-followup-to): `t' is not a + documented value. + +2001-07-24 13:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-display-arrow): Test fboundp. + +2001-07-24 12:00:00 ShengHuo ZHU + + * mm-encode.el (mm-encode-buffer): Don't use 7bit encoding if + there are long lines. + +2001-07-24 Katsumi Yamaoka + + * dgnushack.el (copy-list): New compiler macro. + +2001-07-24 09:00:00 ShengHuo ZHU + + * message.el (message-bounce): If no Return-Path, the whole + content is considered as the original message. + + * nnml.el (nnml-check-directory-twice): New variable. + (nnml-article-to-file): Use it. + (nnml-retrieve-headers): Hack it. + +2001-07-24 02:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-buffer-configuration): New configure. + + * gnus-art.el (gnus-mm-display-part): Don't select-window if it is + not alive. + + * mm-decode.el (mm-remove-part): Don't murder the current window (nil). + (mm-display-external): Use display-term configure. + +2001-07-24 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-default-hour): New variable. + (gnus-delay-article): Allow specific date in YYYY-MM-DD format. + +2001-07-23 22:00:00 ShengHuo ZHU + From Karl Kleinpaste + + * gnus-sum.el (gnus-summary-line-format-alist): Add %B. + (gnus-summary-prepare-threads): Ditto. + + * gnus.el (gnus-summary-line-format): Add %B. + +2001-07-23 19:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-articles-to-read): Use gnus-group-decoded-name. + + * mm-util.el (mm-string-as-multibyte): New function. + + * nnmh.el (nnmh-request-list-1): Encode, not decode! + +2001-07-23 18:00:00 ShengHuo ZHU + + * mm-util.el (mm-universal-coding-system): New variable. + + * gnus-start.el (gnus-startup-file-coding-system): Use it. + + * score-mode.el (score-mode-coding-system): Use it. + +2001-07-23 Katsumi Yamaoka + + * gnus-start.el (gnus-setup-news): Call + `gnus-check-bogus-newsgroups' just after the native server is + opened. + +2001-07-23 Kai Gro,b_(Bjohann + + * nnmail.el (nnmail-do-request-post): Util function to be used by + `nnchoke-request-post' for all nnmail-derived backends. + + * nnml.el (nnml-request-post): Use it. + + * gnus.el (gnus-valid-select-methods): nnml is a post-mail + backend, for it groks nnml-request-post. + + * gnus-group.el (gnus-group-highlight, gnus-group-highlight-line): + Treat `mail-post' backends like `mail' backends, not like `news' + backends. + +2001-07-22 09:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-setup-message): make-local-hook. + +2001-07-22 Kai Gro,b_(Bjohann + + * gnus-delay.el (gnus-delay-article): Fix `read-string' for + XEmacs. Allow more units. Submitted by Karl Kleinpaste + , slightly changed by Kai. + + * message.el (message-check-news-header-syntax): When checking + whether the groups exist, check the right server based on + `gnus-post-method'. + +2001-07-21 Kai Gro,b_(Bjohann + + * gnus-delay.el: New file. + +2001-07-21 13:00:00 ShengHuo ZHU + + * mm-util.el (mm-read-coding-system): Take two arguments. + + * gnus-sum.el (gnus-summary-show-article): Use + mm-read-coding-system. + + * gnus-art.el (article-de-quoted-unreadable): + (article-de-base64-unreadable, article-wash-html): + (gnus-mime-inline-part, gnus-mime-view-part-as-charset): Ditto. + +2001-07-21 Kai Gro,b_(Bjohann + + * nnml.el (nnml-request-post): New function. Can be used for + annotations in nnml groups. + +2001-07-19 Katsumi Yamaoka + + * nntp.el (nntp-request-newgroups): Use UTC date for NEWGROUPS + command. + + * gnus-start.el (gnus-find-new-newsgroups): Use + `message-make-date' instead of `current-time-string'. + (gnus-ask-server-for-new-groups): Ditto. + (gnus-check-first-time-used): Ditto. + +2001-07-20 11:00:00 ShengHuo ZHU + + * gnus-score.el (gnus-home-score-file): nnheader-translate-file-chars. + +2001-07-18 Per Abrahamsen + + * message.el (message-shorten-references): Change `maxcount' and + `cut' to obey USEFOR draft 5. + +2001-07-12 Colin Walters + + * gnus-sum.el (gnus-summary-display-arrow): New variable. + (gnus-summary-set-article-display-arrow): New function. + (gnus-summary-goto-subject): Use it. + +2001-07-18 12:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-import-article): Insert date if + doesn't exist. + +2001-07-18 11:00:00 ShengHuo ZHU + + * mml.el (mml-content-type-parameters): New variable. + (mml-content-disposition-parameters): New variable. + (mml-insert-mime-headers): Use them. + (mml-parse-1): Accept charset. + +2001-07-17 22:00:00 ShengHuo ZHU + + * gnus-group.el (gnus-group-select-group): Doc fix. + + * gnus-eform.el (gnus-edit-form-done): Return nil if end-of-file. + +2001-07-17 Katsumi Yamaoka + + * dgnushack.el (dgnushack-make-auto-load): Advise `make-autoload' + to handle `define-derived-mode'. + +2001-07-16 12:00:00 ShengHuo ZHU + From: Stefan Monnier + + * message.el (message-mode): Use define-derived-mode. + (message-tab): message-completion-alist. + + * imap.el (imap-interactive-login): Use make-local-variable. + (imap-open): Ditto. + (imap-authenticate): Ditto. + + * gnus-msg.el (gnus-setup-message): Change-major-mode-hook. + + * gnus-art.el (gnus-article-edit-mode): Use define-derived-mode. + +2001-07-16 Kai Gro,b_(Bjohann + + * message.el (message-citation-line-function): Refer to + gnus-cite-attribution-suffix. + +2001-07-15 Pavel Jan,Am(Bk + + * gnus-art.el,...: Error convention changes. + +2001-07-13 20:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-rebuild-thread): Count hidden lines too. + +2001-07-13 20:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-read-group-data): Nuke emacs-lisp-mode-hook. + (nnrss-read-server-data): Ditto. + +2001-07-13 12:00:00 ShengHuo ZHU + + * gnus-setup.el (gnus-use-installed-gnus): Typo. + * Cleanup files. + From Pavel@Janik.cz (Pavel Jan,Am(Bk). + +2001-07-13 08:00:00 ShengHuo ZHU + + * gnus.el (gnus-summary-line-format): Add %o. + + * gnus-sum.el (gnus-summary-pipe-output): Don't configure as pipe + unless shell outputs something. + +2001-07-13 07:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-boring-article-headers): Better doc. + (article-hide-headers): Better regexp. + Suggested by Matt Swift . + + * nnheader.el (nnheader-max-head-length): Better doc. + (nnheader-header-value): Skip spaces. + (nnheader-parse-head): Remove space. + Suggested by Matt Swift . + + * gnus-sum.el (gnus-summary-show-raw-article): New function. + (gnus-get-newsgroup-headers): Remove space. + +2001-07-12 23:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-msg-treat-broken-reply-to): Add force. + (gnus-summary-reply): Use it. + (gnus-summary-reply-broken-reply-to): New function. + (gnus-msg-force-broken-reply-to): New function. + + * mm-view.el (mm-inline-text): Showing as text/plain when error. + +2001-07-12 21:00:00 ShengHuo ZHU + + * gnus-draft.el (gnus-draft-setup): Restore gnus-newsgroup-name. + +2001-07-12 15:00:00 ShengHuo ZHU + + * mm-decode.el (mm-external-terminal-program): New variable. + (mm-display-external): Use it. Use term to display when no + window-system. + +2001-07-12 Bj,Av(Brn Torkelsson + + * gnus-srvr.el (gnus-browse-make-menu-bar): Changed one of the + Browse->Next entries to Browse->Prev + +2001-07-11 22:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-inews-do-gcc): Don't test gnus-alive-p. + +2001-07-11 18:00:00 ShengHuo ZHU + + * mm-encode.el (mm-content-transfer-encoding-defaults): Use base64 + for the default encoding. + + * nnrss.el (nnrss-url-field): New field. + (nnrss-request-article): Add newsgroups. + + * nnfolder.el (nnfolder-read-folder): Force to use a multibyte buffer. + +2001-07-11 04:00:00 ShengHuo ZHU + + * nndraft.el (nndraft-request-restore-buffer): Don't remove Date. + + * gnus-draft.el (gnus-draft-edit-message): Remove Date here. + (gnus-draft-setup): Remove backlog. + +2001-07-10 Pavel Jan,Am(Bk + + * gnus-logic.el, gnus-srvr.el, gnus-vm.el, nnheaderxm.el, nnoo.el: + Cleanup. + +2001-07-09 23:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-bug): Erase buffer. + + * nnfolder.el (nnfolder-possibly-change-group): Don't create group. + +2001-07-09 19:00:00 ShengHuo ZHU + + * mm-decode.el (mm-attachment-override-p): Fix typo. + +2001-03-19 05:28:00 Katsumi Yamaoka + + * gnus-kill.el (gnus-execute): Work with the extra headers. + * gnus-sum.el (gnus-summary-execute-command): Ditto. + +2001-07-09 17:00:00 ShengHuo ZHU + + * mm-view.el (mm-inline-text): w3-coding-system-for-mime-charset + may not defined. From: Raja R Harinath . + + * message.el (message-send-mail-real-function): New variable. + (message-send-mail-partially, message-send-mail): + + * nngateway.el (nngateway-request-post): Use it. + + * gnus-agent.el (gnus-agentize): Use it. + + * nnsoup.el (nnsoup-old-functions, nnsoup-set-variables) + (nnsoup-revert-variables): Use it. + +2001-07-09 Colin Walters + + * mm-decode.el (mm-inline-media-tests): Default to displaying as + text/plain if the type doesn't match any other media types. + (mm-inlined-types): Doc fix. + (mm-display-inline): Revert previous change (now handled by a + default type in `mm-inline-media-tests'. + (mm-inlinable-p): Revive. + (mm-display-part): Call `mm-inlinable-p'. + (mm-attachment-override-p): Ditto. + (mm-inlined-p): Doc fix. + + * gnus-art.el (gnus-mime-display-single): Call `mm-inlinable-p' as + well as `mm-inlined-p'. + +2001-07-09 13:00:00 ShengHuo ZHU + + * nntp.el (nntp-send-command, nntp-send-command-nodelete): + (nntp-send-command-and-decode): Use gnus-point-at-bol. + +2001-07-09 13:00:00 ShengHuo ZHU + From Paul Jarc + + * message.el (message-use-mail-followup-to): New variable. + (message-get-reply-headers): Use it. + +2001-07-04 Gerd Moellmann + + * nnheader.el (nnheader-init-server-buffer): Make sure the + *nntpd* buffer is made multibyte instead of a random buffer. + +2001-07-09 12:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-get-newsgroup-headers-xover): Get headers only + when it returns headers. + +2001-07-07 Simon Josefsson + + * rfc2047.el (rfc2047-encode-message-header): Skip header when + trying to fold. Thanks to Colin Walters + + +2001-07-06 Simon Josefsson + + * imap.el (imap-parse-address-list, imap-parse-flag-list) + (imap-parse-body-extension, imap-parse-body-ext, imap-parse-body): + Add information in `assert's. + + * nnimap.el (nnimap-possibly-change-group): Ignore uidvalidity + changes. (From nnimaps' point of view, `nnimap-verify-uidvalidity' + and `nnimap-group-overview-filename', should handle all + change-of-uidvalidity related issues. But there may be other + problems.) + +2001-07-05 Colin Walters + + * rfc2047.el (rfc2047-encode-message-header): Don't include the + header name when folding. + +2001-07-05 Colin Walters + + * mm-decode.el (mm-inlined-types): Document relationship with + `mm-inline-media-tests'. + (mm-display-inline): Default to displaying as plain text if no + inlining handler is available. + (mm-inlinable-p): Remove. + (mm-inlined-p): Don't call `mm-inlinable-p'. + (mm-automatic-display-p): Ditto. + (mm-attachment-override-p): Ditto. + +2001-07-04 Simon Josefsson + + * nnimap.el (nnimap-importantize-dormant): New variable. + (nnimap-request-update-info-internal): Use it. + (nnimap-request-set-mark): Ditto. + +2001-07-04 Didier Verna + + * nntp.el (nntp-send-command): don't pass a buffer argument to + `point'. Only XEmacs accepts this. + * nntp.el (nntp-send-command-nodelete): ditto. + * nntp.el (nntp-send-command-and-decode): ditto. + +2001-07-04 Didier Verna + + * nntp.el (nntp-open-connection-function): doc update. + * nntp.el (nntp-pre-command): New. + * nntp.el (nntp-via-rlogin-command): New. + * nntp.el (nntp-via-telnet-command): New. + * nntp.el (nntp-via-telnet-switches): New. + * nntp.el (nntp-via-user-name): New. + * nntp.el (nntp-via-user-password): New. + * nntp.el (nntp-via-address): New. + * nntp.el (nntp-via-envuser): New. + * nntp.el (nntp-via-shell-prompt): New. + * nntp.el (nntp-open-telnet-stream): New. + * nntp.el (nntp-open-via-rlogin-and-telnet): New. + * nntp.el (nntp-open-via-telnet-and-telnet): New. + * nntp.el (nntp-wait-for): check for possibly echo'ed commands. + * nntp.el (nntp-send-command): ditto. + * nntp.el (nntp-send-command-nodelete): ditto. + * nntp.el (nntp-send-command-and-decode): ditto. + +2001-06-30 YAGI Tatsuya + Trivial patch. + + * gnus-start.el (gnus-check-first-time-used): Use `if' instead of + `when'. + +2001-07-03 Simon Josefsson + From Nuutti Kotivuori + + * flow-fill.el (fill-flowed): Use (1+ (point-at-eol)) instead. + +2001-07-03 Simon Josefsson + + * flow-fill.el (fill-flowed): If `fill-region' inserts empty line, + remove it (workaround XEmacs `fill-region' bug). + +2001-07-01 Simon Josefsson + + * nnimap.el (nnimap-date-days-ago): Defeat locale. + +2001-06-28 11:00:00 ShengHuo ZHU + + * mml2015.el (mml2015-format-error): New function. + (mml2015-mailcrypt-decrypt, mml2015-mailcrypt-clear-decrypt) + (mml2015-mailcrypt-verify, mml2015-gpg-clear-verify) + (mml2015-mailcrypt-clear-verify, mml2015-gpg-verify): Use it. + +2001-06-26 22:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-retrieve-headers): The description may not exist. + Suggested by Christoph Conrad . + + * gnus-sum.el (gnus-summary-set-local-parameters): Don't override + group variables. + +2001-06-25 10:00:00 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-write-groups): Use gnus-prin1. + + * nnrss.el (nnrss-save-server-data): Bind print-level and print-length. + (nnrss-save-group-data): Ditto. + + * gnus-agent.el (gnus-agent-save-alist): Ditto. + +2001-06-25 Katsumi Yamaoka + + * message.el (message-do-send-housekeeping): Narrow to headers. + +2001-06-24 Simon Josefsson + + * rfc2047.el (rfc2047-fold-region): The check to skip WSP + insertion when breaking lines looked for " \t" instead of "[ \t]". + (rfc2047-encode-message-header): Fold lines even if + no QP encoding is done. + +2001-06-23 Simon Josefsson + From Samuel Tardieu + + * smime.el (smime-keys): Support additional certificates. + (smime-make-certfiles): New function. + (smime-sign-region): Use previous variables. + (smime-get-certfiles): New function. + (smime-sign-buffer): Use it. + (smime-verify-region): Support both CAfile and CApath. + +2001-06-23 Simon Josefsson + + * smime.el (smime-decrypt-region): Perhaps work. + +2001-06-22 10:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-copy-article-buffer): Typo. + +2001-04-06 Ralph Schleicher + + * mm-decode.el (mm-save-part): Rewrite file name. + (mm-file-name-rewrite-functions): New variable. + (mm-file-name-delete-whitespace): New function. + (mm-file-name-trim-whitespace): New function. + (mm-file-name-collapse-whitespace): New function. + (mm-file-name-replace-whitespace): New variable and function. + +2001-06-22 Simon Josefsson + + * message.el (message-make-date): Workaround locale for weekdays. + +2001-06-21 17:00:00 ShengHuo ZHU + + * message.el (message-goto-body): Return nil if not found. (revert!) + +2001-06-21 10:00:00 ShengHuo ZHU + From Fremlin + + * message.el (message-goto-body): Some messages have no header. + + * gnus-msg.el (gnus-copy-article-buffer): Use it. + +2001-06-21 Ralph Schleicher + + * nnultimate.el (nnultimate-retrieve-headers): Date fix. + +2001-06-21 10:00:00 ShengHuo ZHU + + * message.el (message-make-date): Add week day. + Suggested by Jason R. Mastaler . + +2001-06-19 Simon Josefsson + + * message.el (message-yank-prefix): Doc fix. + (message-yank-cited-prefix): Ditto. + (message-delete-not-region): Keep citation prefix on first line, + if possible and appropriate. + +2001-06-19 Simon Josefsson + + * imap.el (imap-process-connection-type): New variable. + (imap-kerberos4-open, imap-gssapi-open): Use it. This makes + recent `imtest's work completely (no line length issues), while + making making old `imtest's unusable. Thanks to NAGY Andras + for his work. + +2000-12-30 NAGY Andras + + * imap.el (imap-ssl-program): Add -quiet to shut up + OpenSSL/SSLeay's internal debug talk. + +2001-06-19 Matt Armstrong + + * imap.el (imap-parse-flag-list): Workaround bug in Courier IMAP + server. + +2001-06-19 10:00:00 ShengHuo ZHU + + * nnmail.el (nnmail-article-buffer): New variable. + (nnmail-split-incoming): Use it. + +2001-06-15 Eli Zaretskii + + * qp.el (quoted-printable-decode-region): If called interactively, + use coding-system-for-read. + +2001-06-16 09:00:00 ShengHuo ZHU + + * message.el (message-check-news-header-syntax): Check Reply-To. + +2001-06-16 08:00:00 ShengHuo ZHU + + * mml.el (mml-parse-1): Use message options. + + * message.el (message-do-fcc): Don't do anything if there is no + FCC. + +2001-06-16 Simon Josefsson + + * nnimap.el (nnimap-split-articles): Support 'junk to-groups. + (nnimap-expunge-search-string): New variable. + (nnimap-request-expire-articles): Use it. + +2001-06-15 19:00:00 ShengHuo ZHU + + * message.el (message-send-mail-with-qmail): wrong exit status is + 100 not 1. Reported by Paul Jarc . + +2001-06-15 09:00:00 ShengHuo ZHU + + * gnus-art.el (article-strip-multiple-blank-lines): Use + delete-region instead of replace-match. + +2001-06-14 16:00:00 ShengHuo ZHU + + * nnweb.el (nnweb-google-parse-1): Fix Google content regexp. + (nnweb-google-wash-article): Ditto. + +2001-06-14 Ferenc Wagner + + * nnweb.el (nnweb-google-parse-1): Fix Google url regexp. + +2001-06-13 Katsumi Yamaoka + + * gnus.el (gnus-define-group-parameter): Don't quote the defcustom + specs. + +2001-06-13 15:00:00 ShengHuo ZHU + + * gnus.el (gnus-email-address): Move it here. + + * gnus-art.el (article-de-quoted-unreadable): Read charset if + requested. + (article-de-base64-unreadable): Ditto. + (article-wash-html): Ditto. + +2001-06-12 14:00:00 ShengHuo ZHU + + * message.el (message-options-set-recipient): Don't add ", " + unless necessary. Suggested by Josh Huber . + +2001-06-12 12:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-group-alist): Use |fr| instead of [fr]. + +2001-06-12 11:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-plain-save-name): Use file-relative-name. + From Marc Lefranc . + + * nnrss.el (nnrss-node-text): Node might be nil. + +2001-06-11 10:00:00 ShengHuo ZHU + + * gnus-uu.el (gnus-uu-save-article): Use mml tag instead of + part. From Katsumi Yamaoka . + + * nnrss.el (nnrss-group-alist): More items. + +2001-06-09 23:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-node-text): Use cddr instead xml-node-children. + +2001-06-03 ShengHuo ZHU + Trivial patch from Dale Hagglund + + * gnus-mlspl.el (gnus-group-split-fancy): Fix generation of split + restrict clauses. + +2001-06-07 16:00:00 ShengHuo ZHU + + From Benjamin Rutt + + * message.el (message-wide-reply-confirm-recipients): New variable. + +2001-06-06 ShengHuo ZHU + Trivial patch from Mark Thomas + + * nnmail.el (nnmail-fix-eudora-headers): Change the In-Reply-To + fix so it works with XEmacs. + +2001-06-07 16:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-retrieve-headers): Support description as extra + headers. + +2001-06-07 15:00:00 ShengHuo ZHU + + * nnrss.el: Fix a few bugs. + +2001-06-05 Simon Josefsson + + * mm-decode.el (mm-handle-set-external-undisplayer): Don't + generate compiler warnings. From Alex Schroeder . + +2001-06-04 Hrvoje Niksic + + * mm-decode.el (mm-pipe-part): Bind coding-system-for-write to + binary so that we don't transmit ISO 2022 garbage to the process. + This is needed under XEmacs. + +2001-06-03 Simon Josefsson + + * imap.el (imap-ssl-open): Require ssl. (Otherwise ssl.el is + autoloaded incorrectly below because ssl-program-* is bound.) + Thanks to Amos Gouaux for report. + +2001-06-02 Simon Josefsson + + * imap.el (imap-kerberos4-open): + (imap-gssapi-open): + (imap-ssl-open): + (imap-network-open): + (imap-shell-open): + (imap-starttls-open): Set buffer to workaround spurious + `accept-process-output' buffer changes. Thanks to Mats Lidell + for report and partial patch and Jake + Colman for report. + +2001-05-31 13:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-catchup): New argument. + (gnus-summary-catchup-from-here): New function. + +2001-05-30 Kai Gro,b_(Bjohann + + * mm-view.el (mm-inline-image-xemacs): Insert newline, then move + back, then insert glyph. (Before, the glyph was inserted first, + then the newline.) This works around a behavior in XEmacs where + it is not possible to insert a character after a glyph which is at + the end of a buffer. Patch by Lloyd Zusman . + +2001-05-28 Kai Gro,b_(Bjohann + + From Jaap-Henk Hoepman (jhh@xs4all.nl). + + * mm-decode.el (mm-keep-viewer-alive-types): New variable. + (mm-keep-viewer-alive-p, mm-handle-set-external-undisplayer, + mm-destroy-postponed-undisplay-list): New functions. + (mm-display-external): Use them. + +2001-05-27 Kai Gro,b_(Bjohann + + * gnus-salt.el (gnus-tree-highlight-node): Bind `default-high' and + `default-low' when evaluating `gnus-summary-highlight'. + From Raja R Harinath . + +2001-05-27 Simon Josefsson + + * message.el (message-yank-cited-prefix): New variable. + (message-indent-citation): Use it. + + * mml2015.el (mml2015-mailcrypt-verify): Store gpg stderr output + as details. + (mml2015-mailcrypt-clear-verify): Ditto. + +2001-05-24 Kai Gro,b_(Bjohann + From Nevin Kapur . + + * gnus-sum.el (gnus-summary-default-high-score, + gnus-summary-default-low-score): New variables. + (gnus-summary-highlight): Use them. + +2001-05-16 Didier Verna + + * message.el (message-mail): pass the 'send-actions argument to + `message-setup'. + +2001-05-16 Simon Josefsson + From Raymond Scholz + + * gnus-art.el (gnus-mime-view-part-as-charset): + (gnus-mime-internalize-part): Doc fixes. + +2001-05-11 Simon Josefsson + + * gnus-start.el (gnus-ignored-newsgroups): Also ignore NNTP type + status lines without any text ("^215$"). + +2001-05-06 21:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-check-group): Reverse. + +2001-05-07 Simon Josefsson + + * message.el (message-get-reply-headers): + (message-followup): Fix typo, suggested by David Green + + +2001-05-05 15:00:00 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-request-expire-articles): Fix. + + * nnrss.el (nnrss-open-server): Read server data when it is called. + (nnrss-request-expire-articles): Fix. + +2001-05-05 09:00:00 ShengHuo ZHU + + * message.el (message-do-send-housekeeping): mail-abbrevs may + rename buffer behind Gnus. + +2001-05-04 14:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-check-group): Use nnheader-translate-file-chars. + (nnrss-group-alist): Add more resources. + (nnrss-check-group): Ignore errors. + +2001-05-04 00:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-request-expire-articles): Correct the return value. + + * nnslashdot.el (nnslashdot-request-list): Add time. + (nnslashdot-request-expire-articles): New function. + + * gnus-start.el (gnus-check-bogus-newsgroups): Remove bogus + secondary methods too. + +2001-05-03 23:00:00 ShengHuo ZHU + + * message.el (message-use-followup-to): Set default value to t. + +2001-05-03 Florian Weimer + + * message.el (message-dont-reply-to-names): Fix documentation. + (message-get-reply-headers): Use Mail-Followup-To only for wide + replies. + +2001-05-03 12:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-request-expire-articles): Calculate # of days + correctly. + (nnrss-check-group): Use time. + +2001-05-01 19:21:19 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.03 is released. + +2001-05-01 19:06:21 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-topic-article-to-article): Use the + group. + +2001-04-24 19:50:14 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-server-insert-server-line): Add a space. + +2001-04-15 14:55:03 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Return all + available headers. + + * gnus-sum.el (gnus-read-all-available-headers): New variable. + (gnus-get-newsgroup-headers-xover): Use it. + +2001-04-14 15:47:26 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Clean up. + +2001-04-30 17:00:00 ShengHuo ZHU + + * nntp.el (nntp-retrieve-groups): Use throw instead of error. + +2001-04-29 09:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-insert-w3): Use cache before I figure out how to + disable it. + + * gnus.el (gnus-info-nodes): Remove a few The's. + +2001-04-29 08:00:00 ShengHuo ZHU + + * mail-source.el (mail-source-movemail): Call-process may return a + signal description string. + + * gnus-start.el (gnus-read-newsrc-el-file): + gnus-newsrc-file-version may be nil. + + * nnmail.el (nnmail-get-new-mail): Use the exact file only. + Suggested by Michael Sperber [Mr. Preprocessor] + . + +2001-04-25 Per Abrahamsen + + * mm-uu.el (mm-uu-configure-list): Fixed customize type. + +2001-04-24 Hrvoje Niksic + + * mm-view.el (mm-display-inline-fontify): Allow XEmacs to fully + fontify HANDLE. + +2001-04-18 Simon Josefsson + + * smime.el (smime-ask-passphrase): Rework to return value. + (smime-sign-region): Rework to bind value and use it. + (smime-decrypt-region): Ditto. + +2001-04-18 Simon Josefsson + Trivial patch from Mathias Herberts + + * smime.el (smime-ask-passphrase): New function. + (smime-sign-region): Use it. + (smime-encrypt-cipher): New variable. + (smime-decrypt-region): Ditto. + +2001-04-12 Jason Merrill + Committed by Simon Josefsson + + * imap.el (imap-shell-open): Erase the buffer *after* copying it into + the log. + +2001-04-14 01:14:42 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.02 is released. + +2001-04-14 00:48:42 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.01 is released. + +2001-04-13 22:01:46 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-highlight): Highlight read + undownloaded articles as read articles. + + * gnus-agent.el (gnus-agent-get-undownloaded-list): Clean up. + (gnus-agent-get-undownloaded-list): Mark all undownloaded + articles, even read ones, as such. + + * gnus-sum.el (gnus-summary-find-matching): Clean up. + (gnus-find-matching-articles): New function. + (gnus-summary-limit-include-matching-articles): New command. + (gnus-summary-limit-include-thread): Include articles that have + matching subjects. + (gnus-offer-save-summaries): Clean up. + +2001-04-13 Kai Gro,b_(Bjohann + + * nnmail.el (nnmail-split-fancy-with-parent): Add docstring. + +2001-04-12 19:00:00 ShengHuo ZHU + From Jason Merrill + + * gnus-sum.el (gnus-summary-insert-new-articles): Reverse the articles. + +2001-04-10 08:01:15 Katsumi Yamaoka + Committed by ShengHuo ZHU + + * gnus-msg.el (gnus-post-news): Fill the Newsgroups header by the + newsgroup names when the original article is a news message. + +2001-04-12 19:00:00 ShengHuo ZHU + + * message.el (message-cite-prefix-regexp): Use POSIX regexp if + supported. Suggest by Jim Meyering . + +2001-04-02 Nevin Kapur + Committed by Kai Gro,b_(Bjohann . + + * nnmail.el (nnmail-split-it): Added check for .* at the end of + regexp in nnmail-split-fancy. + +2001-04-10 Simon Josefsson + + * message.el (message-options-set-recipient): Look at Cc and Bcc too. + +2001-04-10 Colin Marquardt + + * message.el (message-send-mail): Improve the interaction with the + user. + +2001-04-10 Simon Josefsson + + * imap.el (imap-message-copy): Work around buggy servers that + doesn't send TRYCREATE tags. + +2001-04-09 01:15:54 Katsumi Yamaoka + + * gnus-start.el (gnus-read-newsrc-el-file): Work with Semi-gnusae. + +2001-04-05 21:43:25 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-update-summary-mark-positions): Use a valid + date. + +2001-04-04 16:13:17 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-quit): Check that the dribble buffer + lives. + +2001-04-02 00:40:12 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-parse-news-url): New function. + (gnus-button-handle-news): New function. + (gnus-button-alist): Point to new functions. + + * gnus-group.el (gnus-group-quit): Only mark buffer in non-empty. + + * gnus-start.el (gnus-read-newsrc-el-file): Nix out + gnus-format-specs. + + * message.el (message-check-news-header-syntax): Question even + when Gnus doesn't know the group names. + (message-send-news): Clean up. + + * gnus-start.el (gnus-dribble-read-file): Say whether Gnus was + exited on purpose without saving. + + * gnus-group.el (gnus-group-quit): Mark the dribble file as `Q'. + +2001-04-01 00:37:14 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-orphans): Clean up. + + * gnus-win.el (gnus-remove-some-windows): Leave one Gnus window. + + * gnus-sum.el (gnus-summary-exit): Kill the summary buffer a bit + later. + + * gnus-start.el (gnus-close-all-servers): Find the right items to + close. + + * qp.el (quoted-printable-decode-region): Just message + malformation; don't quit. + +2001-03-31 21:00:00 ShengHuo ZHU + From Gerd Moellmann . + + * gnus.el (gnus-interactive): A typo. + +2001-03-26 Juanma Barranquero + Committed by ShengHuo ZHU + + * gnus-util.el (gnus-delete-alist): Declare it as an alias of + `assq-delete-all', if that function exists; otherwise use the old + definition. Documentation changed to match the one in + `assq-delete-all'. + +2001-04-01 00:37:14 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-close-all-servers): New function. + + * gnus-srvr.el (gnus-server-close-all-servers): Clean up. + (gnus-server-remove-denials): Clean up. + + * gnus-sum.el (gnus-summary-sort-by-original): New command and + keystroke. + +2001-03-31 02:56:55 Lars Magne Ingebrigtsen + + * message.el (message-send-news): Message where we are sending. + (message-send-mail): Ditto. + + * gnus.el (gnus-server-string): New function. + + * gnus-sum.el (gnus-summary-up-thread): Doc fix. + + * mm-decode.el (mm-default-directory): Customized. + (mm-tmp-directory): Ditto. + + * gnus-sum.el (gnus-summary-catchup-and-exit): Doc fix. + (gnus-get-newsgroup-headers): Return -1 for articles without Lines + or Chars. + (gnus-summary-line-format-alist): ?l is now a string. + (gnus-summary-prepare-threads): Output ? for unknown lines. + (gnus-summary-insert-line): Ditto. + (gnus-summary-print-article): Unbalanced parentheses. + + * gnus-msg.el (gnus-inews-do-gcc): Check group to allow it to find + out whether new stuff has arrived. + +2001-03-31 02:14:38 Alan Shutko + + * gnus-sum.el: Let printing work on ttys on Emacs. + +2001-03-31 01:11:14 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-post-news): Add an empty Newsgroups header + when forcing news. + + * gnus-sum.el (gnus-summary-mark-article-as-replied): Make into a + command. + +2001-03-31 01:04:54 Francis Litterio + + * message.el (message-set-auto-save-file-name): Don't use + asterisks under nt. + +2001-03-31 00:03:42 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-inews-insert-draft-meta-information): Allow + lists of articles. + + * gnus-uu.el (gnus-uu-digest-mail-forward): Mark as forwarded. + + * gnus-msg.el (gnus-put-message): Clean up. + (gnus-summary-reply): Mark all replied-to articles as replied to. + (gnus-inews-add-send-actions): Also mark as forwarded. + (gnus-summary-mail-forward): Mark as forwarded. + + * gnus-sum.el (gnus-summary-mark-article-as-replied): Take a list + of articles. + (gnus-summary-mark-article-as-forwarded): Ditto. + + * gnus-msg.el (gnus-summary-resend-message): Mark article as + forwarded. + (gnus-summary-mail-forward): Clean up. + + * gnus.el (gnus-article-mark-lists): Added forward. + + * gnus-sum.el (gnus-forwarded-mark): New variable. + (gnus-summary-prepare-threads): Use it. + (gnus-summary-update-secondary-mark): Ditto. + (gnus-newsgroup-forwarded): New variable. + +2001-03-30 23:13:37 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-summary-reply): Allow very wide replies. + (gnus-summary-very-wide-reply): New command and keystroke. + (gnus-summary-very-wide-reply-with-original): Ditto. + + * gnus-score.el (gnus-adaptive-word-length-limit): New variable. + (gnus-score-adaptive): Use it. + + * gnus-start.el (gnus-get-unread-articles): Clean up. + +2001-03-21 20:00:43 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Work for other + boards. + +2001-03-21 Didier Verna + + * gnus-start.el (gnus-subscribe-newsgroup-hooks): New. + * gnus-start.el (gnus-subscribe-newsgroup): use it. + +2001-03-15 09:47:23 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Understand + long-form month names. + +2001-03-18 23:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-show-all-headers): + gnus-article-show-all-headers is broken. Use + gnus-summary-toggle-header instead. + + * mml2015.el (mml2015-gpg-extract-from): No error. + +2001-03-18 23:00:00 ShengHuo ZHU + From Bj,Ax(Brn Mork . + + * mml2015.el (mml2015-gpg-extract-from): New function. + (mml2015-gpg-verify): Use it. + (mml2015-gpg-clear-verify): Use it. + +2001-03-17 10:00:00 ShengHuo ZHU + + * message.el (message-setup-fill-variables): Use + fill-paragraph-function. + (message-fill-paragraph): Take an argument. + (message-newline-and-reformat): Take another argument. + +2001-03-16 20:00:00 ShengHuo ZHU + + * message.el (rmail-output): It is in rmailout.el not rmail.el. + +2001-03-16 16:00:00 ShengHuo ZHU + + * message.el (message-forward): local-variable-p takes an extra + argument in XEmacs. + +2001-03-16 Simon Josefsson + + * nnimap.el (nnimap-dont-use-nov-p): Renamed from + `nnimap-use-nov-p' (it really tested the negative). + (nnimap-retrieve-headers): Use it. + +2001-03-11 Kai Gro,b_(Bjohann + + * message.el (message-generate-headers-first): Update doc. + +2001-03-10 Matthias Wiehl + Trivial patch. + + * gnus.el (gnus-summary-line-format): Typo. + +2001-03-11 Simon Josefsson + + * mailcap.el (mailcap-mime-data): Add application/sieve. + (mailcap-mime-extensions): Add .siv, .xls. + +2001-03-14 20:00:00 ShengHuo ZHU + From Christoph Conrad + + * gnus-score.el (gnus-summary-lower-thread): Typo. + +2001-03-14 19:00:00 ShengHuo ZHU + + * message.el (message-forward-decoded-p): New variable. + (message-forward-subject-author-subject): Use it. + (message-make-forward-subject): Use it. + (message-forward): Use it. + + * gnus-uu.el (gnus-uu-digest-mail-forward): Use it. + + * mm-util.el, message.el, rfc2047.el, gnus-sum.el, gnus-score.el: + Sync with Emacs 21 (tag EMACS_PRETEST_21_0_100). + +;;Has been fixed -- zsh. +;;2001-03-05 Dave Love +;; +;; * mm-util.el (mm-mime-mule-charset-alist): Fix utf-8 case. +;; Move it after definition of mm-coding-system-p. +;; +2001-03-01 Dave Love + + * mm-util.el (mm-inhibit-file-name-handlers): Add + image-file-handler. + +2001-02-11 Dave Love + + * message.el (message-signature-file): Fix doc, :type. + +2001-02-08 Dave Love + + * rfc2047.el (rfc2047-fold-region): Don't forward-char at EOB. + (message-posting-charset): Defvar when compiling again. + (rfc2047-encodable-p): Require message. + + * gnus-sum.el (gnus-alter-articles-to-read-function): + * gnus-score.el (gnus-score-after-write-file-function): Fix :type. + +2001-03-08 20:00:00 ShengHuo ZHU + + * nnrss.el: New file. + +2001-03-08 02:41:36 Katsumi Yamaoka + Committed by ShengHuo ZHU + + * rfc2047.el (rfc2047-unfold-region): Fix arg of + `skip-chars-forward'. + +2001-03-07 13:00:00 ShengHuo ZHU + + * nndraft.el (nndraft-request-group): Restore auto save files if + the original files do not exist. + +2001-03-07 11:00:00 ShengHuo ZHU + + * gnus-score.el (gnus-score-find-bnews): Print messages on illegal + SCORE paths. + + * mm-decode.el (mm-dissect-buffer): Call + mail-extract-address-components only if necessary. + +2001-03-06 13:00:00 ShengHuo ZHU + + * gnus-score.el (gnus-score-find-bnews): Maybe there is no + directory part. + (gnus-score-search-global-directories): Use file-directory-p. + + * gnus-score.el (gnus-score-score-files-1): Use + gnus-kill-files-directory. + From Adrian Aichner . + +2001-03-05 08:00:00 ShengHuo ZHU + + * gnus.el (charset): Move here from gnus-sum.el. + +2001-03-04 11:00:00 ShengHuo ZHU + + * mml.el (mml-preview): Disable local map. + + * gnus-sum.el (gnus-summary-make-menu-bar): Make + gnus-article-post-menu here. + + * gnus-art.el (gnus-article-make-menu-bar): Make summary-menu bar + if it has not been made. + +2001-03-02 02:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-describe-key): Map key to event. + (gnus-article-describe-key-briefly): Ditto + +2001-03-01 23:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-limit-include-expunged): Fix. + +2001-03-01 22:00:00 ShengHuo ZHU + From Katsumi Yamaoka . + + * dgnushack.el (coerce, merge, subseq): defmacro. + +2001-03-01 22:00:00 ShengHuo ZHU + + * lpath.el (nndraft-request-group): Move it here from nndraft.el. + A fake defalias in nndraft.el results a not-activated bug in + uncompiled versions. + +2001-02-26 11:27:27 Paul Jarc + Committed by ShengHuo ZHU + + * gnus-util.el (gnus-split-references): Handle malformed References:. + +2001-02-26 08:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-mime-part-status): 1 part. + +2001-02-25 10:00:00 ShengHuo ZHU + From NAGY Andras . + + * gnus.el (gnus-parameters): Typo. + +2001-02-24 00:00:00 ShengHuo ZHU + + * gnus.el (gnus-read-method): Remove redundancy. + +2001-02-23 23:00:00 ShengHuo ZHU + + * nnslashdot.el (nnslashdot-backslash-url): New variable. + (nnslashdot-request-list): Use it. + +2001-02-23 22:00:00 ShengHuo ZHU + + * nnml.el (nnml-generate-active-info): Fix the case when there is + no file. + + * gnus-sum.el (gnus-summary-import-article): Display it. Enable edit. + (gnus-summary-create-article): New function. + + * gnus-group.el (gnus-group-mark-article-read): New function. + + * gnus-msg.el (gnus-inews-do-gcc): Use it. + + * gnus-art.el (gnus-article-edit-article): Set modified-p nil. + +2001-02-23 17:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-edit-done): Don't use + gnus-article-edit-exit. + (gnus-article-edit-exit): Confirm and insert original-article-buffer. + + * gnus.el (gnus-parameters): New variable. + Suggested by NAGY Andras . + (gnus-parameters-get-parameter): New function. + (gnus-group-find-parameter): Use it. + +2001-02-23 Simon Josefsson + + * gnus-msg.el (gnus-post-method): Fix documentation to reflect + change of default value to `current'. + +2001-02-23 08:00:00 ShengHuo ZHU + + * nneething.el (nneething-get-head): Insert unreadable file too. + +2001-02-22 23:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-insert-articles): Remove fetched headers. + + * webmail.el (webmail-type-definition): Deja is bought by google. + +2001-02-22 22:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-fetch-headers): New function. + (gnus-select-newsgroup): Use it. + (gnus-summary-insert-articles): New function. + (gnus-summary-insert-old-articles): New function. + (gnus-summary-insert-new-articles): New function. + + * gnus-group.el (gnus-group-prepare-flat-list-dead): Use decoded-name. + (gnus-group-list-active): Ditto. + * gnus-sum.el (gnus-set-mode-line): Ditto. + (gnus-summary-read-group-1): Ditto. + +2001-02-21 15:00:00 ShengHuo ZHU + + * gnus-topic.el (gnus-topic-get-new-news-this-topic): Redraw the + current topic. + +2001-02-21 01:00:00 ShengHuo ZHU + + * smiley.el (gnus-smiley-display): Don't do widening. + + * smiley-ems.el (gnus-smiley-display): Don't do widening. Smiley + within body. + + * gnus-msg.el (gnus-inews-do-gcc): Activate group anyway. + + * gnus-art.el (gnus-mime-display-multipart-alternative-as-mixed): + New variable. + (gnus-mime-display-multipart-related-as-mixed): New variable. + (gnus-mime-display-part): Use them. + +2001-02-20 16:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-setup-news): Allow gnus-group-line-format to be + something special. + +2001-02-20 00:00:00 ShengHuo ZHU + + * nnweb.el (nnweb-request-group): Set nnweb-group anyway. + (nnweb-request-article): Call reference if exists. + (nnweb-type-definition): Dejanews is bought by google.com. + Beta! + +2001-02-19 19:00:00 ShengHuo ZHU + + * gnus-draft.el (gnus-draft-reminder): "Confirm to exit?" + +2001-02-19 Kai Gro,b_(Bjohann + + * gnus-sum.el (gnus-thread-sort-functions): Doc fix. Refer to + gnus-article-sort-functions. + (gnus-article-sort-functions): Doc fix. Refer to + gnus-thread-sort-functions. + +2001-02-18 20:00:00 ShengHuo ZHU + From Paul Jarc . + + * message.el (message-get-reply-headers): More fixes. + +2001-02-17 Paul Jarc + Committed by ShengHuo ZHU + + * message.el (message-get-reply-headers): Fix bug with + Mail-Followup-To/to-address interaction. + +2001-02-17 13:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-configure-posting-styles): Match header in + gnus-article-copy. + +2001-02-16 22:00:00 ShengHuo ZHU + + * message.el (message-do-send-housekeeping): Rename to a better + name. + +2001-02-16 18:00:00 ShengHuo ZHU + + * message.el (message-cancel-news): Check article first, then ask + yes or no. + +2001-02-16 14:00:00 ShengHuo ZHU + + * mm-uu.el (mm-uu-type-alist): Add emacs-sources. + +2001-02-16 11:00:00 ShengHuo ZHU + + * gnus-range.el (gnus-range-normalize): New function. + +2001-02-15 NAGY Andras + + * imap.el (imap-gssapi-open): Set imap-c-l-s-first. + +2001-02-14 21:00:00 ShengHuo ZHU + + * gnus-srvr.el (gnus-server-regenerate-server): Use gnus-get-function. + + * nnagent.el (nnagent-request-regenerate): New function. + + * nnfolder.el (nnfolder-request-regenerate): New deffoo. + + * nnml.el (nnml-generate-nov-databases): Accept argument + server. Don't open server if it is opened. + (nnml-request-regenerate): Use it. Change to deffoo. + +2001-02-14 Katsumi Yamaoka + Committed by ShengHuo ZHU + + * gnus.el (gnus-define-group-parameter): Fix. + +2001-02-14 15:00:00 ShengHuo ZHU + + * gnus.el (gnus-define-group-parameter): Improved. + + * gnus-sum.el (charset): Define parameter. + (ignored-charsets): Ditto. + (gnus-summary-setup-default-charset): Use them. + + * gnus-start.el (gnus-read-descriptions-file): Use them. + + * gnus-cus.el (gnus-group-parameters): Remove them. + +2001-02-14 00:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-print-article): Redo highlight. + +2001-02-13 21:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-read-group-1): Remove + gnus-summary-set-local-parameters. + (gnus-summary-setup-buffer): Put it here. + +2001-02-13 20:00:00 ShengHuo ZHU + + * gnus.el (to-address): Define parameter. + (to-list): Ditto. + * gnus-art.el (article-hide-boring-headers): Use them. + * gnus-msg.el (gnus-post-news): Ditto. + * gnus-cus.el (gnus-group-parameters): Remove them. + +2001-02-13 19:00:00 ShengHuo ZHU + + * gnus-draft.el (gnus-draft-reminder): New function. + + * gnus-art.el (gnus-sender-save-name): New function. + +2001-02-13 18:00:00 ShengHuo ZHU + + * mm-util.el (mm-mime-charset): Error message. + +2001-02-13 11:00:00 ShengHuo ZHU + + * message.el (message-check-news-body-syntax): Don't check mml lines. + +2001-02-12 11:00:00 ShengHuo ZHU + + * gnus-topic.el (gnus-subscribe-topics): Return nil if not + subscribe. + + * gnus-start.el (gnus-call-subscribe-functions): New function. + (gnus-find-new-newsgroups): Use it. + (gnus-ask-server-for-new-groups): Use it. + (gnus-check-first-time-used): Use it. + (gnus-subscribe-newsgroup-method): Grok a list of functions. + (gnus-subscribe-options-newsgroup-method): Ditto. + (gnus-subscribe-hierarchically): Return gnus-subscribe-newsgroup's + return . + +2001-02-12 Kai Gro,b_(Bjohann + + * gnus-cus.el (gnus-score-customize): Doc fix. + +2001-02-11 Jesper Harder + + * dgnushack.el (my-getenv): Typo. + +2001-02-11 11:00:00 ShengHuo ZHU + + * dgnushack.el (dgnushack-make-load): Don't autoload smiley functions. + +2001-02-11 09:00:00 ShengHuo ZHU + + * gnus-group.el (gnus-group-suspend): Offer save summaries. + + * gnus-art.el (gnus-treat-leading-whitespace): New variable. + (gnus-treatment-function-alist): Use it. + (article-remove-leading-whitespace): New function. + (gnus-article-make-menu-bar): Use it. + + * gnus-sum.el (gnus-summary-wash-empty-map): Add + remove-leading-whitespace. + (gnus-summary-wash-map): Bind strip-headers-in-body to `W a', + because of conflict. + +2001-02-09 23:00:00 ShengHuo ZHU + + * Makefile.in: Hack generating gnus-load.el. + * dgnushack.el: Ditto. + * gnus-load.el: Remove it. + +2001-02-09 20:00:00 ShengHuo ZHU + + * dgnushack.el : Add URLDIR. + + * Makefile.in (EMACS_COMP): Ditto. + +2001-02-09 19:00:00 ShengHuo ZHU + + * gnus-cus.el (gnus-score-customize): Error on no score file. + +2001-02-09 08:00:00 ShengHuo ZHU + + * mm-decode.el (mm-merge-handles): New function. + + * mm-view.el (mm-inline-message): Use it. + (mm-view-message): Ditto. + + * mm-partial.el (mm-inline-partial): Ditto. + + * mm-extern.el (mm-inline-external-body): Ditto. + + * gnus-art.el (gnus-mime-view-part): Ditto. + (gnus-mime-view-part-as-type): Ditto. + (gnus-mime-save-part-and-strip): Prevent users to strip in some + cases. + +2001-02-08 20:00:00 ShengHuo ZHU + + * message.el (message-cancel-news): Allow to shoot foot. + (message-supersede): Ditto. + +2001-02-08 Tommi Vainikainen + Trivial patch. + + * gnus-sum.el (gnus-simplify-subject-re): Use + message-subject-re-regexp. + +2001-02-08 18:00:00 ShengHuo ZHU + + * nnmail.el (nnmail-expiry-target-group): Bind + nnmail-cache-accepted-message-ids to nil. + + * gnus-xmas.el (gnus-xmas-article-display-xface): Use binary + coding system. + +2001-02-07 23:00:00 ShengHuo ZHU + + * qp.el (quoted-printable-encode-region): Make sure characters are + between 00 and FF. Don't check charset. + + * mm-encode.el (mm-encode-content-transfer-encoding): Use unibyte + in Emacs 20. + * rfc2047.el (rfc2047-q-encode-region): Ditto. + +2001-02-07 11:00:00 ShengHuo ZHU + + * message.el (message-make-forward-subject): Argument decoded. + (message-forward): Use it when digest. + + * gnus-uu.el (gnus-uu-grab-articles): Shoot down original article + buffer. + +2001-02-07 Kai Gro,b_(Bjohann + + * message.el (message-generate-headers-first): Doc fix. + +2001-02-07 10:00:00 ShengHuo ZHU + + * gnus-art.el (article-make-date-line): Error proof. + +2001-02-06 21:00:00 ShengHuo ZHU + + * gnus-group.el (gnus-group-listing-limit): New variable. + (gnus-group-prepare-flat-list-dead): Use old trick to speed up. + + * gnus-topic.el (gnus-group-prepare-topics): Use gnus-killed-hashtb. + +2001-02-06 18:00:00 ShengHuo ZHU + + * message.el (message-newline-and-reformat): Special case for + breaking at BOL. + +2001-02-06 Per Abrahamsen + + * gnus-uu.el (gnus-uu-save-article): Make the topics summary a + message/rfc822. + +2001-02-06 09:00:00 ShengHuo ZHU + + * message.el (message-encode-message-body): Don't insert + Content-Type if it is inside a mail. + +2001-02-06 02:00:00 ShengHuo ZHU + + * gnus-xmas.el (gnus-xmas-article-menu-add): Add + gnus-article-commands-menu. + + * gnus-sum.el (gnus-summary-make-menu-bar): Don't share menu bar + in Emacs. + + * gnus-start.el (gnus-read-descriptions-file): Use + gnus-group-name-charset and gnus-group-charset-alist. + +2001-02-04 23:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-mark-as-processable): Understand + active region. + + * gnus-start.el (gnus-group-change-level): Remove from both + gnus-zombie-list and gnus-killed-list. + +2001-02-04 11:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-subscribe-options-newsgroup-method): Add + gnus-subscribe-topics. + + * gnus-cus.el (gnus-extra-topic-parameters): Fix doc. + +2001-02-04 11:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-make-menu-bar): Make + gnus-article-post-menu. + + * gnus-xmas.el (gnus-xmas-article-menu-add): Add post menu. + + * gnus-sum.el (gnus-summary-make-menu-bar): Use t if XEmacs. + + * gnus-group.el (gnus-group-make-menu-bar): Ditto. + + * message.el (message-mode-menu): Ditto. + + * gnus-art.el (defvar): eval-when-compile. + +2001-02-02 17:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-agentize): Fix doc. + +2001-02-02 Karl Kleinpaste + + * mml.el (mml-preview): Bind `q'. + +2001-02-02 12:00:00 ShengHuo ZHU + + * mm-util.el (mm-mime-mule-charset-alist): non-Mule case. + +2001-01-31 Dave Love + + * mm-util.el (mm-mime-mule-charset-alist) + (mm-find-mime-charset-region): Consider mule-utf-8. + +2001-01-31 Dave Love + + * gnus-art.el (gnus-article-x-face-command) + (gnus-treat-display-xface, gnus-treat-display-smileys): Add + :version. + +2001-01-26 Dave Love + + * mm-util.el (mm-multibyte-string-p): New. + +;; * qp.el: Remove un-logged bogus changes from 2000-12-20. +;; (quoted-printable-encode-region): Doc fix. Don't call +;; string-as-multibyte on class. Clarify line-folding. + (quoted-printable-encode-string): Make temp buffer inherit + string's multibyteness. + +2001-01-23 Gerd Moellmann + + * nnheader.el (toplevel): Don't require `gnus-util' at + compile-time; this creates a circular dependency, and prevents + a bootstrap. + +2001-01-22 Andreas Schwab + + * nnheader.el (gnus-delete-line): Autoload it as a macro. + +2001-01-31 18:00:00 ShengHuo ZHU + + * nnmail.el (nnmail-remove-list-identifiers): Use consp. + + * gnus-art.el (article-hide-list-identifiers): Ditto. + + * gnus-sum.el (gnus-summary-remove-list-identifiers): Ditto. + +2001-01-31 15:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-remove-list-identifiers): Similar. + + * gnus-art.el (article-hide-list-identifiers): Similar. + +2001-01-31 Karl Kleinpaste + + * nnmail.el (nnmail-remove-list-identifiers): Improved. + +2001-01-31 09:00:00 ShengHuo ZHU + + * gnus-score.el (gnus-summary-score-entry): match may be an integer. + +2001-01-30 10:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-string-equal): New function. + + * gnus-art.el (article-hide-boring-headers): Use it. + +2001-01-27 Karl Kleinpaste + + * gnus-art.el (gnus-article-banner-alist): eGroups new banner. + +2001-01-27 00:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-msg-mail): Support switch-action. + +2001-01-26 08:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-summary-save-in-pipe): Prompt for saving + command if there is not last-saver. + +2001-01-24 19:00:00 ShengHuo ZHU + + * nntp.el (nntp-open-connection): 201 is possible. + +2001-01-24 18:00:00 ShengHuo ZHU + + * rfc2047.el (rfc2047-encode): MIME charset is not coding system. + (rfc2047-charset-encoding-alist): Add big5. + +2001-01-24 17:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-add-server): Redraw the line. + (gnus-agent-remove-server): Ditto. + (autoload): gnus-server-update-server. + + * gnus-srvr.el (gnus-server-line-format): Add %a. + (gnus-server-line-format-alist): Add gnus-tmp-agent. + (gnus-server-insert-server-line): Use it. + +2001-01-24 09:00:00 ShengHuo ZHU + + * mm-util.el (mm-mime-mule-charset-alist): Preferred MIME names + GB2312 and Big5. + +2001-01-24 Simon Josefsson + + * mail-source.el (mail-sources): Add :program specifier to IMAP + mail source. + (mail-source-fetch-imap): Map :program to `imap-shell-program'. + +2001-01-24 08:00:00 ShengHuo ZHU + + * gnus-score.el (gnus-score-lower-thread): Fix a doc typo. + +2001-01-24 12:22:47 Lars Magne Ingebrigtsen + + * nntp.el (nntp-wait-for): Return the success code. + (nntp-open-connection): Use it. + +2001-01-11 11:49:02 Lars Magne Ingebrigtsen + + * gnus-int.el (gnus-check-server): Allow breaking the opening. + +2001-01-23 11:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-print-article): Remove process mark. + +2001-01-22 17:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-print-article): Take one prefix + argument. Allow to print several articles in one file. + +2001-01-21 12:00:00 ShengHuo ZHU + + * webmail.el (webmail-type-definition): netaddress changes. + +2001-01-21 00:00:00 ShengHuo ZHU + + * gnus.el: Fix copyright. Remove trailing spaces. + + * message.el (message-forward): Use mule4. + +2001-01-20 09:00:00 ShengHuo ZHU + + * mm-util.el (mm-string-as-unibyte): New function. + + * message.el (message-forward): Use it. + +2001-01-19 23:00:00 ShengHuo ZHU + + * message.el (message-cite-original-without-signature): Don't peel + off the blank line. + (message-get-reply-headers): Add Cc if it is not in follow-to. + +2001-01-20 Simon Josefsson + + * mm-decode.el (mm-handle-multipart-from): Add. + (mm-dissect-buffer): Save From: header value. + (mm-security-from): Remove. + (mm-possibly-verify-or-decrypt): Don't set mm-security-from. + + * mml-smime.el (mml-smime-verify): Use `mm-handle-multipart-from' + instead of `mml-security-from'. Protect null from value. + +2001-01-20 Simon Josefsson + + * mailcap.el (mailcap-mime-data): Run `gnumeric' on + application/vnd.ms-excel attachments. + +2001-01-19 Simon Josefsson + + * gnus-art.el (gnus-button-alist): Add `?=' to mailto URL regexp. + +2001-01-19 13:00:00 ShengHuo ZHU + + * message.el (message-ignored-mail-headers): Ditto. + +2001-01-19 Simon Josefsson + + * message.el (message-ignored-news-headers): Only search beginning + of line. + +2001-01-19 ShengHuo Zhu + Trivial patch from Alberto Lusiani + + * message.el (message-send-mail): Content-Type may not be there. + +2001-01-18 23:00:00 ShengHuo ZHU + + * gnus-ems.el (gnus-article-display-xface): Add BUFFER. + * gnus-xmas.el (gnus-xmas-article-display-xface): Ditto. + + * gnus-art.el (article-display-x-face): Insert X-Face if there is + not. + +2001-01-18 19:00:00 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-read-group-1): Don't test dead + non-native groups. + +2001-01-18 18:00:00 ShengHuo ZHU + + * message.el (message-yank-original): Understand + universal-argument. + +2001-01-18 16:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-boring-article-headers): Add to-address. + (article-hide-boring-headers): Ditto. + + * mm-view.el (mm-inline-message): Insert a newline unless bolp. + +2001-01-18 08:00:00 ShengHuo ZHU + + * rfc2047.el (rfc2047-fold-region): Don't insert LWSP if there is + one. + +2001-01-16 Simon Josefsson + + * message.el (message-make-in-reply-to): Add comment to message-id + (old syntax, see 2000-08-02 change). + +2001-01-16 13:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-url-mailto): Use gnus-msg-mail. + (gnus-button-mailto): Setup message. Moved to gnus-msg.el. + (gnus-button-reply): Ditto. + +2001-01-16 Katsumi Yamaoka + + * gnus-art.el (article-display-x-face): Fix. + +2001-01-15 16:00:00 ShengHuo ZHU + + * gnus-art.el (article-display-x-face): Use + gnus-original-article-buffer. + +2001-01-15 Jack Twilley + + * message.el (message-add-header): Move to point-max. + +2001-01-15 Simon Josefsson + + * smime.el (smime-CA-directory, smime-CA-file): Change default to + nil, improve documentation. + (smime-certificate-directory): Comment out false hints (until it + is implemented). + + * mml-smime.el (mml-smime-sign): Place user in customize buffer if + there aren't any keys. + (mml-smime-verify): If smime-CA-{file,directory} set, also try to + verify certificate. Default is changed to only check integrity. + Improved security status texts. If a certificate doesn't contain + a email address, don't fail. + + * smime.el (smime-noverify-region): + (smime-noverify-buffer): New functions. Verifies integrity only. + +2001-01-12 22:00:00 ShengHuo ZHU + + * gnus-group.el (gnus-group-sort-by-score): Reverse order. + +2001-01-12 17:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-configure-windows): switch-to-buffer in XEmacs. + (gnus-remove-some-windows): Ditto. + +2001-01-12 14:00:00 ShengHuo ZHU + + * gnus-art.el (article-make-date-line): 11th. + +2001-01-11 23:00:00 ShengHuo ZHU + + * mml2015.el (mml2015-gpg-encrypt): Remove CR. + (mml2015-gpg-sign): Ditto. + +2001-01-10 14:00:00 ShengHuo ZHU + + * gnus.el: Sync with EMACS_PRETEST_21_0_95. + * gnus.el (gnus-default-posting-charset): Bogus. Removed. + +2001-01-08 Dave Love + + * mm-encode.el (mm-qp-or-base64): Don't base64 for the sake of a + single character. + + * mm-util.el (mm-mime-mule-charset-alist): Add Latin-{8,9}. + + * message.el: Doc and message fixes. + (message-send-rename-function) + (message-make-forward-subject-function) + (message-send-mail-function, message-reply-to-function) + (message-wide-reply-to-function, message-followup-to-function) + (message-distribution-function, message-auto-save-directory): Fix + :type. + + * gnus/mml.el (mml-parse-1): Frob mml-confirmation-set when + proceeding after warnings. Amend multipart warning message. + +2001-01-04 Dave Love + + * gnus-util.el (nnmail-pathname-coding-system): Defvar when + compiling. + (gnus-make-directory): Require nnmail. + + * mm-decode.el (mm-inline-media-tests): Add + image/x-portable-bitmap. + (mm-get-image): Grok pbm. + +2001-01-10 Paul Stevenson + + * nnvirtual.el (nnvirtual-request-expire-articles): delq nil. + +2001-01-09 Didier Verna + + * dgnushack.el (dgnushack-compile): give a dummy value to + `gnus-xmas-glyph-directory' for the time of compilation. + * gnus-agent.el: moved some XEmacs specific hook add-ons from + `gnus-xmas-[re]define' to avoid loosing user custom settings. + * gnus-art.el: ditto. + * gnus-group.el: ditto. + * gnus-salt.el: ditto. + * gnus-sum.el: ditto. + * gnus-topic.el: ditto. + * gnus-xmas.el (gnus-xmas-define): see above. + * gnus-xmas.el (gnus-xmas-redefine): see above. + * gnus-xmas.el (gnus-xmas-glyph-directory): generate a + non-continuable error when the directory can't be found. + +2001-01-09 01:00:00 ShengHuo ZHU + + * mm-decode.el (mm-interactively-view-part): Don't copy-sequence + handle. + * gnus-art.el (gnus-mime-view-part): Copy it. + (gnus-mime-view-part-as-type): Add into gnus-article-mime-handles. + +2001-01-09 Michael Downes + + * gnus-sum.el (gnus-summary-read-group-1): More useful message. + +2001-01-08 23:00:00 ShengHuo ZHU + + * nnmail.el (nnmail-get-new-mail): Find group only if file is not + orig-file. Use ',source. + +2001-01-08 22:00:00 ShengHuo ZHU + + * gnus-xmas.el (gnus-xmas-modeline-glyph): + (gnus-xmas-group-startup-message): + Detect gnus-xmas-glyph-directory when it is nil. + +2001-01-08 09:00:00 ShengHuo ZHU + + * pop3.el (pop3-get-message-count): Andrew Innes + 's patch of 1999-12-01 was not fully committed. + +2001-01-05 06:49:37 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-fetch-session): Say what we quit. + + * time-date.el (time-to-number-of-days): New function. + +2001-01-04 11:06:14 Gregory Chernov + Trivial patch. + + * nnslashdot.el (nnslashdot-request-list): Always get the right + sid. + +2001-01-05 00:00:00 ShengHuo ZHU + + * message.el (message-minibuffer-local-map): New keymap. + (message-read-from-minibuffer): Use it. + * gnus-msg.el (gnus-summary-resend-message): Use it + +2001-01-04 22:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-display-time-event-handler): New function. + (gnus-after-getting-new-news-hook): Use it. + +2001-01-03 07:26:58 Lars Magne Ingebrigtsen + + * message.el (message-ignored-mail-headers): Add draft header. + +2001-01-02 06:28:28 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-expire-articles): Don't save + excursion. + + * nnslashdot.el (nnslashdot-request-list): Get the right year. + +2001-01-01 00:52:44 Ed L. Cashin + A revoked patch. + + * gnus-sum.el (gnus-summary-expire-articles): Save excursion. + +2000-12-31 11:00:00 ShengHuo ZHU + + * qp.el (quoted-printable-decode-region): Don't backward-char. + +2000-12-31 03:57:31 Lars Magne Ingebrigtsen + + * gnus-draft.el: Mark articles as replied. + + * gnus-sum.el (gnus-summary-add-mark): New function. + + * gnus-group.el (gnus-add-mark): New function. + + * gnus-sum.el (gnus-summary-buffer-name): New function. + (gnus-summary-setup-buffer): Use it. + + * gnus-draft.el: Set things up with the right post method and + stuff. + + * message.el (message-ignored-news-headers): Remove X-Draft-From. + + * gnus-msg.el (gnus-inews-insert-draft-meta-information): New function. + + * gnus.el (gnus-draft-meta-information-header): New variable. + +2000-12-30 00:17:38 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-treatment-function-alist): Move the date + functions before the header sorting functions. + + * mm-uu.el (mm-uu-pgp-signed-extract-1): Unquote "- " quotes. + + * dgnushack.el (dgnushack-compile): Message whether there is w3. + Don't (push "/usr/share/emacs/site-lisp" load-path). + + * gnus-cite.el (gnus-article-fill-cited-article): Don't add space + to empty fill prefixes. + +2000-12-30 10:00:00 ShengHuo ZHU + + * nntp.el (nntp-open-connection): Kill pbuffer if process is nil. + Suggested by Christoph Conrad . + +2000-12-30 09:00:00 ShengHuo ZHU + + * nnheader.el (autoload): Autoload gnus-sorted-intersection. + + * nnml.el (autoload): Move to nnheader.el. + + * nnfolder.el (nnfolder-existing-articles): Reversed, i.e. sorted. + (nnfolder-request-expire-articles): Use gnus-sorted-intersection. + (nnfolder-retrieve-headers): Use intersection. Suggested by Jonas + Kvarnstr,Av(Bm . + +2000-12-30 00:17:38 Lars Magne Ingebrigtsen + + * gnus-art.el (article-make-date-line): Get the hours right. + (gnus-ignored-headers): More hiding. + + * nnmail.el (nnmail-expiry-wait): Not an integer. + + * message.el (message-goto-body): Only expand abbrev when called + interactively. + (message-make-lines): Use it. + +2000-12-29 20:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-inews-yank-articles): Reparse headers. + +2000-12-30 00:17:38 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-limit-include-expunged): Really + include the expunged articles. + + * gnus-group.el (gnus-group-sort-by-server): New function. + + * gnus.el (gnus-method-to-server-name): New function. + (gnus-group-prefixed-name): Use it. + + * gnus-group.el (gnus-group-sort-function): Doc fix. + (gnus-group-sort-groups-by-server): New command. + +2000-12-29 13:25:10 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-treat-date-english): New variable. + (article-date-english): New command. + (gnus-english-month-names): New variable. + (article-make-date-line): Do 'english. + + * gnus-cite.el (gnus-article-fill-cited-article): Add a space + after the fill prefix. + + * gnus-sum.el (gnus-summary-make-menu-bar): Removed "Enter + score...". + + * gnus-art.el (gnus-ignored-headers): Hide more headers. + + * message.el (message-mode-map): Bind comment-region. + + * gnus-art.el (gnus-mime-display-part): Let w3 display + multipart/related. + + * mm-bodies.el (mm-long-lines-p): New function. + (mm-body-encoding): Use it. + (mm-body-encoding): Encode articles with lines longer than 1000 + characters. + +2000-12-29 01:00:00 ShengHuo ZHU + + * mm-util.el (mm-enable-multibyte): Use + default-enable-multibyte-characters. + (mm-enable-multibyte-mule4): Ditto. + (mm-disable-multibyte): Test XEmacs. + (mm-disable-multibyte-mule4): Ditto. + (mm-with-unibyte-current-buffer): Simplified. + (mm-with-unibyte-current-buffer-mule4): Ditto. + +2000-12-28 19:44:56 Lars Magne Ingebrigtsen + + * nnheaderxm.el (nnheader-string-as-multibyte): New alias. + + * nnheader.el (nnheader-string-as-multibyte): New alias. + + * mm-view.el (mm-inline-text): Warn when bugging out in w3. + + * gnus-uu.el (gnus-message-process-mark): New function. + (gnus-uu-mark-by-regexp): Use it. + (gnus-new-processable): New function. + +2000-12-28 19:21:57 Inge Frick + Trivial patch. + + * gnus-sum.el (gnus-no-mark): New variable. + +2000-11-01 01:12:29 Lars Magne Ingebrigtsen + + * nnwfm.el (nnwfm-create-mapping): Remove quote marks and + backslashes. + +2000-12-26 Katsumi Yamaoka + + * gnus-art.el (gnus-article-banner-alist): Remove duplicate + definition. + +2000-12-25 00:00:00 ShengHuo ZHU + + * dgnushack.el (dgnushack-compile): elc is in the current directory. + + * qp.el (quoted-printable-encode-region): Don't check multibyte in + XEmacs. + +2000-12-25 Lloyd Zusman + Trivial patch. + + * mml.el (mml-read-tag): Save tag location. + +2000-12-25 Simon Josefsson + + * starttls.el: Sync with Emacs 21. + +2000-12-24 11:00:00 ShengHuo ZHU + + * message.el (message-mail): Support yank-action. + + * message.el (message-setup): Revoke the last change. + +2000-12-24 01:00:00 ShengHuo ZHU + + * message.el (message-setup): Use cons. Suggested by Johan Vromans + . + +2000-12-24 Simon Josefsson + + * mm-bodies.el (mm-decode-content-transfer-encoding): Preserve + mailing list junk at end of part. + +2000-12-23 Simon Josefsson + + * nnimap.el (nnimap-expiry-target): New function. + (nnimap-request-expire-articles): Use it. + +2000-12-22 21:00:00 ShengHuo ZHU + + * gnus.el (gnus-group-parameters-more): New variable. + * gnus-cus.el (gnus-group-customize): Use it. + + * gnus.el (gnus-define-group-parameter): New macro. + (auto-expire): Use it + (total-expire): Use it. + * gnus-art.el (banner): Use it. + + * mml.el (mml-parse): save-excursion. Suggested by Lloyd Zusman + . + +2000-12-22 12:00:00 ShengHuo ZHU + + * gnus-topic.el (gnus-topic-create-topic): Use list. + + * gnus-vm.el (gnus-summary-save-article-vm): Require gnus-art + before binding gnus-default-article-saver. + + * gnus-sum.el (gnus-summary-save-article): + (gnus-summary-pipe-output): + (gnus-summary-save-article-mail): + (gnus-summary-save-article-rmail): + (gnus-summary-save-article-file): + (gnus-summary-write-article-file): + (gnus-summary-save-article-body-file): Ditto. + + * gnus-mh.el (gnus-summary-save-article-folder): Ditto. + +2000-12-22 10:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mime-security-button-map): + (gnus-mime-button-map): Add parent. + +2000-12-22 09:00:00 ShengHuo ZHU + + * messagexmas.el (message-xmas-redefine): New function. + + * message.el: Use it. + + * gnus-art.el (gnus-article-check-hidden-text): Return t. + + * gnus-util.el (gnus-remove-text-properties-when): Return t. + +2000-12-22 03:00:00 ShengHuo ZHU + + * mm-decode.el (mm-dissect-multipart): Avoid errors owing to + malformatted messages. + +2000-12-22 02:00:00 ShengHuo ZHU + + * mm-util.el (mm-image-load-path): New function. + + * gnus-group.el (gnus-group-make-tool-bar): Use it. + + * gnus-sum.el (gnus-summary-make-tool-bar): Use it. + + * message.el (message-tool-bar-map): Use it. + + * Makefile.in (install-el): New rule. + +2000-12-21 Katsumi Yamaoka + + * gnus-art.el (article-treat-dumbquotes): Quote \. + +2000-12-21 22:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-treat-emphasize): Don't treat emphasis if + Emacs 20 runs on a terminal. + +2000-12-21 14:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-bug): Revert to save-excursion. + + * mml.el (gnus-add-minor-mode): Autoload. + + * message.el (message-forward): Save-restriction. + +2000-12-21 Kai Gro,b_(Bjohann + + * gnus-art.el (article-treat-dumbquotes): More doc, provided by + Paul Stevenson + +2000-12-21 10:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-mode-map): Use C-c C-n prefix. + + * mml.el (gnus-ems): Don't require. + + * gnus.el (gnus-decode-rfc1522): Removed. + (gnus-set-text-properties): Define. + +2000-12-21 09:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mime-*): handle may be nil. + + * gnus-sum.el (gnus-summary-mode): Turn on gnus-mailing-list-mode. + + * gnus.el (gnus-group-remove-excess-properties): Not defined + in gnus-xmas. + +2000-12-20 21:00:00 ShengHuo ZHU + + * message.el (message-mail-user-agent): Add :version. + +2000-12-21 Miles Bader + + * message.el (message-mode): Set `comment-start' to the yank prefix. + +2000-12-20 17:00:00 ShengHuo ZHU + + * message.el (message-mail-user-agent): New variable. + (message-setup): Renamed to message-setup-1. Support + mail-user-agent. + (message-mail-user-agent): New function. + (message-mail): Use it. + (message-reply): Use it. + (message-resend): Use it. + (message-mail-other-window): Use it. + (message-mail-other-frame): Use it. + + * gnus-msg.el (gnus-bug): Support mail-user-agent. + +2000-12-20 15:00:00 ShengHuo ZHU + + * message.el (message-tool-bar-map): Simplify. + (message-narrow-to-head-1): New function. + (message-narrow-to-head): Use it. + (message-reply): Ditto. + (message-cancel-news): Ditto. + (message-supersede): Ditto. + (message-make-forward-subject): Ditto. + (message-bounce): Ditto. + +2000-12-20 11:00:00 ShengHuo ZHU + + * uudecode.el (uudecode-decode-region-external): make-temp-file + may not be defined. + + * binhex.el (defalias): eval-and-compile. + + * message.el (message-tool-bar-map): New function. + (message-mode): Use it. + +2000-12-20 09:00:00 ShengHuo ZHU + + * nntp.el (nntp-find-connection): Remove the entry. + (nntp-retrieve-groups): (gnus-buffer-live-p buf). + +2000-12-20 05:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-summary-mail-forward): Use original buffer. + + * message.el (message-forward): Copy buffer in unibyte mode. + +2000-12-20 04:00:00 ShengHuo ZHU + + * message.el (message-make-forward-subject): Don't widen. Decode. + (message-forward): Don't decode subject. + +2000-12-20 Christoph Conrad + + * qp.el (quoted-printable-encode-region): Upcase QP. + +2000-12-20 03:00:00 ShengHuo ZHU + + * mm-decode.el (mm-possibly-verify-or-decrypt): Use + mail-extract-a-c instead. Don't depend on Gnus. + + * mml.el (gnus-ems): Require it. + + * gnus-msg.el (gnus-summary-mail-forward): + + * message.el (message-forward): Move mime-to-mml here. + +2000-12-20 02:00:00 ShengHuo ZHU + + * gnus-group.el, gnus-sum.el, message.el: Add :help unless Emacs. + * gnus-art.el (gnus-insert-mime-button): Simplify. + (gnus-mime-display-alternative): Ditto. + (gnus-insert-mime-security-button): Ditto. + +2000-12-20 01:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-add-text-properties-when): In XEmacs, + text-property-not-all doesn't return nil when start=mark(end). + (gnus-remove-text-properties-when): Ditto. + +2000-12-20 00:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-group-change-level): Remove group from + gnus-active-hashtb if real killed. + +2000-12-19 22:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-insert-mime-button): Emacs20 needs local-map. + (gnus-mime-display-alternative): Ditto. + (gnus-insert-mime-security-button): Ditto. + +2000-12-19 21:00:00 ShengHuo ZHU + + * gnus-start.el (gnus-group-change-level): Don't add it into + killed-list if it was killed. + +2000-12-19 19:00:00 ShengHuo ZHU + + * nnmbox.el (nnmbox-file-coding-system): Use binary. + (nnmbox-active-file-coding-system): Ditto. + + * gnus-cus.el (gnus-group-parameters): Add posting-style. + +2000-12-19 18:00:00 ShengHuo ZHU + + * gnus.el (gnus-version): + (gnus-version-number): Set to Oort Gnus 0.01. + + * gnus-art.el (gnus-mime-security-button-map): + (gnus-insert-mime-security-button): Fix for Emacs21. + +2000-12-19 17:00:00 ShengHuo ZHU + + * gnus-group.el, gnus-sum.el, message.el: Comment out :help in + easymenu, because XEmacs doesn't understand :help. + + * mm-uu.el: Require binhex. + +2000-12-19 16:00:00 ShengHuo ZHU + + * gnus.el: Merged. Emacs21 CVS tag is zsh-merge-ognus-1. + +2000-12-19 ShengHuo ZHU + + * mm-util.el (mm-charset-synonym-alist): Fix a typo. + +2000-12-18 Gerd Moellmann + + * *.xpm, *.pbm: Convert icons icons to size 24x24. + +2000-12-18 Dave Love + + * gnus-msg.el (news-setup, news-reply-mode): Don't autoload + (unused). + +2000-12-13 Miles Bader + + * smiley-ems.el (smiley-region): Bind `inhibit-point-motion-hooks' + to t, so that we don't get stuck while trying to smilefy + intangible text. + +2000-12-12 Gerd Moellmann + + * smiley-ems.el (smiley-regexp-alist): Make regexps match + at the end of the buffer. + (smiley-region): In the loop, move to the end of the submatch + matching the smiley instead of using the end of the match + of the whole regexp. + +2000-12-12 Eli Zaretskii + + * message.el (message-mode): Doc fix. + +2000-12-12 Gerd Moellmann + + * smiley-ems.el (smiley-region): Doc fix. + +2000-12-11 Miles Bader + + * gnus-sum.el (gnus-summary-recenter): When trying to keep the + bottom line visible, check to see if it's partially obscured, and + if so, either scroll one more line to make it fully visible, or + revert to showing the second line from the top. + +2000-12-07 Dave Love + + * mailcap.el (mailcap-download-directory) + * gnus-audio.el (gnus-audio-directory) + * smiley-ems.el (smiley-data-directory): Fix :type. + +2000-11-30 Dave Love + + * message.el (message-auto-save-directory): Use + file-name-as-directory. + (message-set-auto-save-file-name): Create + message-auto-save-directory if necessary. + (message-replace-chars-in-string): Removed -- unused. + (message-mail-alias-type): Customize. + (message-headers): Remove duplicate defgroup. + +2000-11-29 Dave Love + + * qp.el (quoted-printable-decode-region): Use error, not message + to report malformed text (like base64). Amend message. + +2000-11-29 Miles Bader + + * message.el (message-header-lines): Fontify tag. + +2000-11-27 Dave Love + + * nnlistserv.el: Ignore errors when requiring nnweb and avoid a + compiler warning. + +;2000-11-26 Dave Love +; +; * mm-uu.el (mm-uu-configure-list): Fix typo in :type. +; +2000-11-23 Dave Love + + * uu-post.pbm, uu-decode.pbm: new files from XPMs. + + * mm-uu.el (uudecode): Require. + (uudecode-decode-region, uudecode-decode-region-external): Don't + autoload. + (mm-uu-copy-to-buffer): Doc fix. + (mm-uu-decode-function, mm-uu-binhex-decode-function): Doc, custom + type fix. + + * mailcap.el: Doc fixes. + (mailcap-mime-data): Various adjustments. + (mailcap): New group. + (mailcap-download-directory): Customize. + (mailcap-generate-unique-filename, mailcap-binary-suffixes) + (mailcap-temporary-directory): Deleted (unused). + (mailcap-unescape-mime-test): Simplify slightly. + (mailcap-viewer-passes-test): Use functionp. + (mailcap-command-p): Aliased to executable-find. + + * rfc2047.el (rfc2047-encode-message-header): Don't encode if + default-enable-multibyte-characters is nil. + +2000-11-22 Gerd Moellmann + + * gnus-group.el (gnus-group-make-tool-bar): Fix a paren typo. + +2000-11-21 Dave Love + + * gnus-art.el (gnus-mime-button-map): Don't inherit from + gnus-article-mode-map. +; (gnus-mime-button-menu): Use mouse-set-point. + (gnus-insert-mime-button, gnus-mime-display-alternative) + (gnus-mime-display-alternative): Don't use local-map property. + +2000-11-17 Dave Love + + * uudecode.el (uudecode-insert-char): Fix bogus feature test. + (uudecode-decode-region-external): Doc fix. Use with-temp-buffer + and make-temp-file. + (uudecode-decode-region): Doc fix. + +2000-11-14 Dave Love + + * cu-exit.pbm, exit-summ.pbm, followup.pbm, fuwo.pbm: + * mail-reply.pbm, next-ur.pbm, post.pbm, prev-ur.pbm: + * reply-wo.pbm, reply.pbm, rot13.pbm, save-aif.pbm, save-art.pbm: + New files, derived from the XPMs. + +2000-11-10 Dave Love + + * gnus-agent.el (gnus-agent-confirmation-function): Add :version. + (gnus-agent-lib-file, gnus-agent-load-alist) + (gnus-agent-save-alist, gnus-agent-article-name): Use + expand-file-name. + + * gnus-group.el (gnus-group-name-charset-method-alist): Add + :version. + (nnkiboze-score-file): Defvar when compiling. + + * gnus-start.el (gnus-read-newsrc-file): Add :version. + + * gnus-art.el (gnus-article-banner-alist) + (gnus-emphasize-whitespace-regexp, gnus-ignored-mime-types) + (gnus-article-date-lapsed-new-header) + (gnus-article-mime-match-handle-function, gnus-mime-action-alist) + (gnus-treat-strip-list-identifiers, gnus-treat-date-iso8601) + (gnus-treat-strip-headers-in-body) + (gnus-treat-capitalize-sentences, gnus-treat-play-sounds) + (gnus-treat-translate): Add :version. + (gnus-article-mime-part-function): Fix defcustom. + + * nnmail.el (nnmail-expiry-target) + (nnmail-scan-directory-mail-source-once, nnmail-extra-headers) + (nnmail-split-header-length-limit): Add :version. + + * gnus-sum.el (gnus-auto-expirable-marks) + (gnus-inhibit-user-auto-expire, gnus-list-identifiers) + (gnus-extra-headers, gnus-ignored-from-addresses) + (gnus-newsgroup-ignored-charsets) + (gnus-group-highlight-words-alist) + (gnus-summary-show-article-charset-alist): Add :version. + + * catchup.pbm, describe-group.pbm, exit-gnus.pbm, get-news.pbm: + gnntg.pbm, kill-group.pbm, subscribe.pbm, unsubscribe.pbm: New + files, converted from the XPMs. + + * gnus-cache.el (gnus-cache-active-file): Don't use + file-name-as-directory on directory. + (gnus-cache-file-name): Use expand-file-name, not concat. Don't + use file-name-as-directory on directory. + + * time-date.el (timezone-make-date-arpa-standard): Autoload. + (date-to-time): Use it. + +; * message.el (message-mode) : +; : Use [:alnum:] in regexp range. +; (message-newline-and-reformat): Likewise. + (message-forward-as-mime, message-forward-ignored-headers) + (message-buffer-naming-style, message-default-charset) + (message-dont-reply-to-names, message-send-mail-partially-limit): + Add :version. + + * mm-util.el: Doc fixes. + (mm-mime-charset): Don't use the raw result of + mm-preferred-coding-system. + (mm-with-unibyte-buffer, mm-with-unibyte-current-buffer) + (mm-with-unibyte): Simplify. + + * gnus-int.el (gnus-start-news-server): Use expand-file-name, not + concat. + + * pop3.el (pop3-version): Deleted. + (pop3-make-date): New function, avoiding message-make-date. + (pop3-munge-message-separator): Use it. + +2000-11-09 Dave Love + + * gnus-group.el (gnus-group-make-directory-group) + (gnus-group-fetch-faq): Use expand-file-name. + (gnus-group-fetch-faq): Simplify completing-read form. + + * mm-bodies.el (mm-encode-body): Use mm-multibyte-p, don't just + test for Mule. + + * message.el (tool-bar-map): Defvar when compiling. + + * gnus-setup.el (running-xemacs, gnus-use-installed-tm) + (gnus-tm-lisp-directory): Deleted. + (gnus-use-installed-mailcrypt, gnus-emacs-lisp-directory): Use + (featurep 'xemacs). + (gnus-gnus-lisp-directory, gnus-mailcrypt-lisp-directory) + (gnus-mailcrypt-lisp-directory, gnus-bbdb-lisp-directory): Remove + version numbers from file names. + +2000-11-08 Dave Love + + * mm-view.el: Use featurep for XEmacs test. + (mm-inline-message): Test for `remove-specifier'; don't use + condition-case. + + * mm-bodies.el (mm-encode-body): Use mm-multibyte-p. + + * gnus-score.el (gnus-score-load-file): Use expand-file-name. + (gnus-score-find-bnews): Don't concat "". + + * cu-exit.xpm, prev-ur.xpm, next-ur.xpm, post.xpm, fuwo.xpm: + * followup.xpm, uu-post.xpm, uu-decode.xpm, mail-reply.xpm: + * reply.xpm, reply-wo.xpm, rot13.xpm, save-aif.xpm, save-art.xpm: + * exit-summ.xpm: New files, renamed from icons by Luis Fernandes. + + * gnus-sum.el: Put some defvars in eval-when-compile. + (gnus-summary-mode-hook): Add :options. + (gnus-summary-make-menu-bar): Add some :help, used by tool bar. + (gnus-summary-tool-bar-map): New variable. + (gnus-summary-make-tool-bar): New function. + (gnus-summary-mode): Put kill-all-local-variables first. + + * gnus-group.el (gnus-group-toolbar-map): New variable. + (gnus-group-make-tool-bar): Rewritten. + (gnus-group-mode): Put kill-all-local-variables first. + + * rfc2047.el: Require gnus-util. + + * nnml.el (gnus-sorted-intersection): Autoload. + + * nnheader.el: Wrap subst-char-in-string def in eval-and-compile. + Put some defvars in eval-when-compile. + (gnus-intersection, gnus-sorted-complement): Autoload. + + * imap.el (imap-point-at-eol): New, replacing gnus-point-at-eol. + + * mm-encode.el (mm-body-7-or-8): Autoload. + + * mm-decode.el (mm-insert-inline): Autoload. + + * mml.el: + * message.el: Put some defvars in eval-when-compile. + + * gnus-msg.el: Put some defvars in eval-when-compile. + (gnus-msg-mail): Move after gnus-setup-message. + + * smiley-ems.el (smiley-data-directory, smiley-regexp-alist): Doc fix. + +2000-11-07 Dave Love + + * gnus-util.el (nnheader): Don't require message (recursive + autoload). + + * uudecode.el: Avoid compiler warnings. + + * rfc2047.el: (rfc2047-fold-region): Use gnus-point-at-bol. + (rfc2047-charset-encoding-alist): Add iso-8859-1[45]. + +2000-11-06 Dave Love + + * gnus-salt.el (gnus-binary-mode): Fix call to gnus-add-minor-mode. + + * uudecode.el: Use (featurep 'xemacs). Require cl when compiling. + (uudecode-char-int): New alias, replacing char-int. + (uudecode-decode-region): Don't call buffer-disable-undo. + +; * mm-uu.el (mm-uu-configure): Unquote lambda. +; (mm-uu-configure-list): Doc fix. +; +; * earcon.el (running-xemacs): Don't define. +; +;2000-11-03 Stefan Monnier +; +; * message.el (message-font-lock-keywords): Match a final newline +; to help font-lock's multiline support. +; +2000-11-03 Dave Love + + * gnus-nocem.el (gnus-nocem-check-article-limit): Default to 500. + + * mm-partial.el (mm-inline-partial): Space-prefix temp buffer + name. + + * gnus-cus.el (gnus-group-parameters) : Fix custom type. + : Fix custom type, doc. + + * mm-decode.el (mm-display-external): Space-prefix temp buffer + name. Don't disable undo explicitly. + +;2000-11-02 Dave Love +; +; * message.el (message-font-lock-keywords): Use [:alpha:] for +; cite-prefix. + +2000-11-01 Dave Love + + * rfc2047.el (base64): Require unconditionally. + (message-posting-charset): Defvar when compiling. + (rfc2047-encode-message-header, rfc2047-encodable-p): Require + message. + + * gnus-sum.el (nnoo): Require. + (mm-uu-dissect): Autoload. + + * mml.el (mml-parse-1): Clarify message. + (mml-minibuffer-read-type): Use mailcap-mime-types. + +2000-11-01 Stefan Monnier + + * mml.el: Fix a typo in the requiring of CL. + +2000-11-01 Dave Love + + * utf7.el: Require cl when compiling. + + * binhex.el: Use (featurep 'xemacs). + (binhex-char-int): New alias, replacing char-int. Change callers. + (binhex-decode-region): Simplify work buffer code. + (binhex-decode-region-external): Use expand-file-name, not concat. + +2000-10-30 Dave Love + + * gnus-art.el: Fix 2000-10-27 change properly. + +2000-10-28 Miles Bader + + * gnus-art.el (gnus-read-save-file-name): Remove extraneous paren. + +2000-10-27 Dave Love + + * gnus-group.el (gnus-group-make-menu-bar): Add some :help + strings. + (gnus-group-make-tool-bar): New function. + (gnus-group-mode): Use it. + + * message.el (message-mode-menu): Add some :help strings. + (message-mode) [message-tool-bar-map]: Define tool-bar-map. + (featurep): Use (featurep 'xemacs). Install tool bar for Emacs. + + * catchup.xpm, exit-gnus.xpm, gnntg.xpm, subscribe.xpm: + * describe-group.xpm, get-news.xpm, kill-group.xpm: + * unsubscribe.xpm: New files. Renamed icons from Luis Fernandes. + + * mm-decode.el (mm-valid-and-fit-image-p): Don't test + display-graphic-p here. + +2000-10-27 Miles Bader + + * gnus-ems.el (gnus-ems-redefine): Use (featurep 'xemacs) instead + of the `gnus-xemacs' variable, as the latter has been removed. + * gnus-start.el (gnus-1, gnus-read-descriptions-file): Likewise. + * gnus-art.el (gnus-treat-display-xface) + (gnus-treat-display-smileys, gnus-treat-display-picons) + (gnus-article-read-summary-keys): Likewise. + +2000-10-26 Dave Love + + (defvar): Use rmail-spool-directory unconditionally. + +2000-10-18 Dave Love + + * mm-bodies.el (mm-uu-decode-function) + (mm-uu-binhex-decode-function): Defvar when compiling. + + * gnus-nocem.el (gnus-nocem-issuers): Update. + (gnus-nocem-check-from): New option. + (gnus-nocem-scan-groups): Use it. + (gnus-nocem-check-article): Bind gnus-newsgroup-name. + (gnus-nocem-check-article-limit): Add :version. + +2000-10-16 Stefan Monnier + + * ietf-drums.el (mm-util): Require CL when compiling. + +2000-10-15 Dave Love + + * qp.el: Require mm-util. + +2000-10-13 Dave Love + + * qp.el (quoted-printable-decode-region): Avoid invalid + coding-systems. + +2000-10-12 Gerd Moellmann + + * mm-bodies.el: Don't require `mm-uu' at compile-time; it leads + to a recursive load. + +2000-10-12 Dave Love + + * mm-util.el (mm-charset-synonym-alist): Add windows-1252. + + * gnus.el (gnus-group-startup-message): Check for PBM image. + +2000-10-09 Dave Love + + * mail-source.el (mail-source-fetch-imap): Bind + default-enable-multibyte-characters rather than using + mm-disable-multibyte. + +2000-10-05 Dave Love + + * qp.el (mm-decode-coding-region, mm-encode-coding-region): + Autoload. + (quoted-printable-decode-region): Rename arg which confused + charset with coding-system. Don't use nonascii-insert-offset. + Coding-system encode the region initially. Don't recognize `==' + as valid QP. Coding-system decode the region finally. + (quoted-printable-decode-string): Rename arg which confused + charset with coding-system. + + * mm-bodies.el: Require mm-uu, Don't require qp, uudecode. + (mm-encode-body): Apply mm-charset-to-coding-system to arg of + mm-encode-coding-region. + (mm-decode-body, mm-decode-string): Rename variables which + confused charset with coding-system. + (binhex-decode-region): Don't autoload. + (mm-body-encoding): Require message. + (mm-decode-content-transfer-encoding): Require mm-uu in relevant + cond branches. + + * 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. + +2000-10-04 Dave Love + + * gnus-ems.el: Don't turn off compiler warnings in local vars. + Require ring when compiling. + (gnus-article-compface-xbm): New variable. + +2000-10-04 Dave Love + + * smiley-ems.el (smiley-regexp-alist, smiley-update-cache): Use + pbm images. + + * frown.pbm, smile.pbm, wry.pbm: New files. + + * frown.xbm, smile.xbm, wry.xbm: Deleted. + +2000-10-03 Dave Love + + * mail-source.el (mail-sources): Revert to nil. + + * nnmail.el (nnmail-spool-file): Revert to `((file))'. + + * qp.el: Don't require mm-util. + (quoted-printable-decode-region): Rewritten. + (quoted-printable-decode-string, quoted-printable-encode-region): + Doc fix. + (quoted-printable-encode-region): Barf on multibyte characters. + Maybe make the class multibyte. Upcase chars, not formatted + strings. Allow mm-use-ultra-safe-encoding to be unbound. + (quoted-printable-encode-string): Don't use + mm-with-unibyte-buffer. + +2000-09-29 Gerd Moellmann + + * smiley-ems.el (smiley-update-cache): Use `:ascent center'. + +2000-09-21 Dave Love + + * smiley-ems.el (smiley-region): Test if display-graphic-p bound + (for Emacs 20). Tidy somewhat. + +2000-09-21 Dave Love + + * gnus-ems.el (gnus-article-display-xface): Use unibyte for the + image processing. Rationalize logic somewhat. + +2000-09-20 Dave Love + + * gnus-start.el (gnus-1) : Don't test for X + specifically. + + * gnus.el (gnus-version-number): Avoid some redundant + autoloads. + +2000-09-20 Gerd Moellmann + + * gnus-ems.el (gnus-article-display-xface): Don't convert PBM + to XBM; we always have PBM support. + +2000-09-14 Dave Love + + * gnus.el (gnus-charset): + * mm-decode.el (mime-display): + * imap.el (imap) : Add :version. + +2000-09-13 Gerd Moellmann + + * parse-time.el: Fix author's mail address. + + * earcon.el, flow-fill.el, gnus-cite.el, gnus-gl.el, gnus-ml.el: + * gnus-mlspl.el, gnus-nocem.el, gnus-range.el, gnus-salt.el: + * gnus-setup.el, gnus-soup.el, gnus-undo.el, gnus-vm.el: + * messcompat.el, nnbabyl.el, nndir.el, nneething.el: + * nngateway.el, nnheaderxm.el, nnkiboze.el, nnlistserv.el: + * nnmbox.el, nnmh.el, nnoo.el, nnsoup.el, nnspool.el, rfc2045.el: + * rfc2231.el, uudecode.el: Fix copyright notice. + + * nnweb.el (toplevel): To make the file bootstrap in Emacs, + require `w3' at load-time only if not running in batch mode. + +2000-12-19 16:00:00 ShengHuo ZHU + + * gnus.el: Before merge with Emacs21. + +2000-12-19 Raymond Scholz + + * gnus-art.el (gnus-article-dumbquotes-map): Add EUR symbol. + +2000-12-19 Per Abrahamsen + + * mml.el (mml-mode-map): Change mml prefix from `M-m' to `C-c C-m' + to avoid conflict with the standard `back-to-indentation' + binding. + +2000-12-17 10:00:00 ShengHuo ZHU + + * mm-extern.el (mm-inline-external-body): g-a-m-h may be a handle. + + * mm-util.el (mm-enable-multibyte-mule4): Test charsetp. + (mm-disable-multibyte-mule4): Ditto. + (mm-with-unibyte-current-buffer-mule4): Ditto. + +2000-12-15 10:00:00 ShengHuo ZHU + + * pop3.el (pop3-movemail): Use binary. + (pop3-movemail-file-coding-system): Removed. + +2000-12-14 13:00:00 ShengHuo ZHU + + * mm-util.el (mm-charset-synonym-alist): Add cn-gb. + +2000-12-13 21:00:00 ShengHuo ZHU + + * nnspool.el (nnspool-lib-dir): Check whether /usr/lib/news/active + exists. + +2000-12-13 13:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-post-method): Use backend name when the + address is "". + +2000-12-08 10:00:00 ShengHuo ZHU + + * gnus-art.el (article-verify-x-pgp-sig): Don't test + mm-verify-option. + (gnus-treat-x-pgp-sig): Default value. + (gnus-ignored-headers): Redundant. + +2000-12-04 22:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-configure-frame): Save selected window. + +2000-02-15 Andrew Innes + + * nnmbox.el: Require gnus-range. + (nnmbox-group-building-active-articles): New variable. + (nnmbox-group-active-articles): New variable; this is a cache of + all active articles by group and number. + (nnmbox-in-header-p): New function. + (nnmbox-find-article): New function. + (nnmbox-record-active-article): New function. + (nnmbox-record-deleted-article): New function. + (nnmbox-is-article-active-p): New function. + (nnmbox-retrieve-headers): Use nnmbox-find-article. + (nnmbox-request-article): Ditto. Also supply extra arg to + nnmbox-article-group-number. + (nnmbox-request-expire-articles): Ditto. + (nnmbox-request-move-article): Ditto. + (nnmbox-request-replace-article): Ditto. + (nnmbox-request-rename-group): Rename group entry in active + article cache. + (nnmbox-delete-mail): Update active article cache, unless article + is being replaced. + (nnmbox-possibly-change-newsgroup): Call nnmbox-read-mbox, rather + than partially duplicating it. + (nnmbox-article-group-number): Add extra `this-line' arg, to + handle articles belonging to multiple groups. + (nnmbox-save-mail): Update active article cache. + (nnmbox-read-mbox): Build active article cache when loading mbox. + Also do some repair work, if we find articles that are missing the + appropriate X-Gnus-Newsgroup lines in the header. We can usually + reconstruct these from Xref info. + +2000-12-04 18:00:00 ShengHuo ZHU + + * mail-source.el (mail-source-report-new-mail): Use + nnheader-run-at-time. + +2000-02-15 Andrew Innes + + * mail-source.el (mail-source-fetch-pop): Clear pop password when + an error is thrown, and then rethrow the error. + (mail-source-check-pop): Ditto. + (mail-source-start-idle-timer): Prevent multiple pop checks + running if the check takes a long time. + +2000-12-04 14:00:00 ShengHuo ZHU + + * gnus-msg.el (gnus-msg-mail): COMPOSEFUNC should return t if + succeed. + +2000-12-04 13:00:00 ShengHuo ZHU + + * gnus-win.el (gnus-configure-windows): Make sure + nntp-server-buffer is live. + (gnus-remove-some-windows): switch-to-buffer -> set-buffer. + +2000-11-21 Stefan Monnier + + * gnus-win.el (gnus-configure-windows): switch-to-buffer -> set-buffer. + +2000-12-04 Andreas Jaeger + + * gnus-msg.el (gnus-summary-mail-forward): Fix typos in description. + +2000-12-03 12:00:00 ShengHuo ZHU + + * mml2015.el (mml2015-fix-micalg): Alg might be nil. + +2000-12-01 ShengHuo ZHU + Trivial patch from Christopher Splinter + + * gnus-sum.el (gnus-summary-limit-to-age): Fix typo. + +2000-12-01 Simon Josefsson + + * mml-smime.el (mml-smime-verify): Fix address parsing. + +2000-12-01 Simon Josefsson + + * mml-smime.el (mml-smime-verify): Don't modify MM buffer. Handle + more than one certificate inside PKCS#7 blob. Better security + information (clamed / actual sender, openssl output, certificates + inside message). + + * smime.el (smime-verify-region): Output to /dev/null. + (smime-buffer-as-string-region): Don't parse empty lines. + +2000-11-30 23:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-mime-security-button-line-format-alist): Add + ?d and ?D. + (gnus-mime-security-show-details-inline): New variable. + (gnus-mime-security-show-details): Use them. + (gnus-insert-mime-security-button): Ditto. + + * mml2015.el (mml2015-gpg-verify): Set details when succeed. + Suggest by Michael Duggan (md5i@cs.cmu.edu). + (mml2015-gpg-clear-verify): Ditto. + (mml2015-gpg-decrypt-1): Ditto. + (mml2015-use): Prefer 'gpg. + +2000-11-30 19:00:00 ShengHuo ZHU + + * gnus-util.el (gnus-add-text-properties-when): New function. + (gnus-remove-text-properties-when): Ditto. + + * gnus-cite.el (gnus-article-hide-citation): Use them. + (gnus-article-toggle-cited-text): Use them. + + * gnus-art.el (gnus-signature-toggle): Use them. + (gnus-article-show-hidden-text): Ditto. + (gnus-article-hide-text): Ditto. + +2000-11-30 14:00:00 ShengHuo ZHU + + * mm-util.el (mm-find-charset-region): Remove eight-bit-*. + +2000-11-30 Simon Josefsson + + * smime.el (smime-point-at-eol): New alias. + (smime-buffer-as-string-region): Use it. + +2000-11-29 21:00:00 ShengHuo ZHU + + * nndraft.el (nndraft-request-restore-buffer): Remove Date field. + +2000-11-29 20:00:00 ShengHuo ZHU + + * nnfolder.el (nnfolder-request-expire-articles): expiry-target. + + * nnbabyl.el (nnbabyl-request-expire-articles): Ditto. + + * nnmbox.el (nnmbox-request-expire-articles): Ditto. + +2000-11-22 Jan Nieuwenhuizen + + * nnmh.el (nnmh-request-expire-articles): Implemented + expiry-target for nnmh backend. + +2000-11-30 Simon Josefsson + + * mm-decode.el (mm-security-from): New variable. + (mm-possibly-verify-or-decrypt): Use it rather than `from'. + + * mml-smime.el (mml-smime-verify): Use `mm-security-from' rather + than `from'. + +2000-11-30 Simon Josefsson + + * mml-smime.el (mml-smime-verify): Verify that certificate mail + address match sender address. + + * mm-decode.el (mm-possibly-verify-or-decrypt): Bind sender address. + + * smime.el (smime-verify-region): Don't copy buffer. + (smime-decrypt-buffer): Use expand-file-name on keyfile. + (smime-pkcs7-region): New function. + (smime-pkcs7-certificates-region): Ditto. + (smime-pkcs7-email-region): Ditto. + (smime-buffer-as-string-region): Ditto. + + * gnus-art.el (gnus-mime-security-show-details): Goto beginning of + buffer. + +2000-11-23 Jens Krinke + + * smime.el (smime-decrypt-region): Fix keyfile argument. + +2000-11-29 00:00:00 ShengHuo ZHU + + * nnmail.el (nnmail-cache-accepted-message-ids): Add doc. + +2000-11-28 17:00:00 ShengHuo ZHU + + * message.el (message-shoot-gnksa-feet): New variable. + (message-gnksa-enable-p): New function. + (message-send): Use it. + (message-check-news-body-syntax): Ditto. + +2000-11-28 Katsumi Yamaoka + + * message.el (message-make-message-id): Remove the redundancy. + +2000-11-22 17:00:00 ShengHuo ZHU + + * message.el (message-setup): Discourage using mc-install-*-mode. + + * gnus-setup.el (gnus-use-mailcrypt): Don't hook mail-crypt. + +2000-11-22 16:00:00 ShengHuo ZHU + + * gnus-cite.el (gnus-cite-parse): Guess citation length. + +2000-11-22 14:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-insinuate): New function. + +2000-11-22 13:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-archive): Find the real url. + +2000-11-22 11:00:00 ShengHuo ZHU + + * gnus-xmas.el (gnus-xmas-article-display-xface): Use + insert-buffer-substring. + + * message.el (message-send-mail): Use buffer-substring-no-properties. + (message-send-news): Ditto. + +2000-11-22 David Edmondson + + * imap.el (imap-wait-for-tag): Message read info. + +2000-11-21 20:00:00 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-encrypt): Ensure the part is encrypted. + (mml2015-mailcrypt-encrypt): Use unibyte-buffer. + (mml2015-gpg-encrypt): Ditto. + +2000-11-21 09:00:00 ShengHuo ZHU + + * mm-decode.el (mm-verify-option): Default value. + + * mml-sec.el (mml-secure-part): Error message. + +2000-11-20 18:00:00 ShengHuo ZHU + + * gnus-ml.el (gnus-mailing-list-archive): Use browse-url. + +2000-11-20 17:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-make-menu-bar): Use easy-menu-add. + +2000-11-20 16:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-describe-key): Use prompt. + (gnus-article-describe-key-briefly): Ditto. + +2000-11-20 15:00:00 ShengHuo ZHU + + * gnus-agent.el (gnus-agent-expire): Ignore corrupted history. + +2000-11-20 10:00:00 ShengHuo ZHU + + * gnus-art.el (gnus-article-describe-key): New function. + (gnus-article-describe-key-briefly): New function. + +2000-11-19 23:00:00 ShengHuo ZHU + + * mm-decode.el (mm-decrypt-option): Doc typo. + + * gnus-art.el (gnus-article-read-summary-keys): lookup-key may + return a number. + +2000-11-19 21:00:00 ShengHuo ZHU + + * message.el (message-newline-and-reformat): Typo. + +2000-11-19 12:00:00 ShengHuo ZHU + + * gnus-art.el (article-verify-x-pgp-sig): Check whether + original-article-buffer exists. + + * rfc2047.el (rfc2047-q-encoding-alist): Match Resent-. + (rfc2047-header-encoding-alist): Addresses are different from text. + (rfc2047-encode-message-header): Ditto. + (rfc2047-dissect-region): Extra parameter. + (rfc2047-encode-region): Ditto. + (rfc2047-encode-string): Ditto. + +2000-11-19 00:00:00 ShengHuo ZHU + + * mm-uu.el (mm-uu-pgp-encrypted-extract-1): New function. + (mm-uu-pgp-encrypted-extract): Use it. + (mm-uu-pgp-signed-extract-1): New function. + (mm-uu-pgp-signed-extract): Use it. + + * gnus-art.el (gnus-mime-display-security): New function. + (gnus-mime-display-part): Use it. + (gnus-mime-security-verify-or-decrypt): New function. + (gnus-mime-security-press-button): New function. + (gnus-insert-mime-security-button): Use it. + + * mm-decode.el (mm-possibly-verify-or-decrypt): Use mm-h-m-c-p. + (mm-find-raw-part-by-type): Ditto. + (mm-verify-function-alist): Add x-gnus-pgp-signature handle. + (mm-decrypt-function-alist): Add x-gnus-pgp-encrypted handle. + (mm-destroy-parts): Kill nested multibyte buffer. + + * mml2015.el (mml2015-mailcrypt-verify): Use mm-h-m-c-p. + (mml2015-gpg-verify): Ditto. + +2000-11-18 Simon Josefsson + + * mml2015.el (mml2015-mailcrypt-clear-verify): New function. + (mml2015-function-alist): Use it. + + * mml-sec.el (mml-sign-alist): Update names. + (mml-encrypt-alist): Ditto. + (mml-secure-part-smime-sign): Moved to mml-smime.el + as `mml-smime-sign-query'. + (mml-secure-part-smime-encrypt-by-file): Moved to mml-smime.el as + `mml-smime-get-file-cert'. + (mml-secure-part-smime-encrypt-by-dns): Moved to mml-smime.el as + `mml-smime-get-dns-cert'. + (mml-secure-part-smime-encrypt): Moved to mml-smime.el as + `mml-smime-encrypt-query'. + (mml-smime-sign-buffer): Use mml-smime-sign. + (mml-smime-encrypt-buffer): Use mml-smime-encrypt. + + * mml-smime.el (mml-smime-sign): New function. + (mml-smime-encrypt): + (mml-smime-sign-query): + (mml-smime-get-file-cert): + (mml-smime-get-dns-cert): + (mml-smime-encrypt-query): Moved from mml-sec.el. + +2000-11-16 Simon Josefsson + + * mml2015.el (mml2015-gpg-clear-verify): New function. + (mml2015-function-alist): Add it. + +2000-11-17 14:21 ShengHuo ZHU + + * message.el (message-setup-fill-variables): Use + message-cite-prefix-regexp. + (message-newline-and-reformat): Check the end of citation, leading + WSP, break in the cite prefix. + (message-fill-paragraph): New function. + +2000-11-17 13:44 ShengHuo ZHU + + * lpath.el: Shut up. + +2000-11-17 Per Abrahamsen + + * gnus-msg.el (gnus-group-posting-charset-alist): No longer allow + raw 8-bit in headers in dk.* newsgroups. + +2000-11-17 08:02 ShengHuo ZHU + + * message.el (message-newline-and-reformat): Match extra WSPs. + +2000-11-16 23:31 ShengHuo ZHU + + * mml.el (mml-generate-mime-1): Ignore ascii. + +2000-11-16 Justin Sheehy + + * gnus-sum.el (gnus-summary-make-menu-bar): Fix menu items. + +2000-11-16 17:00 ShengHuo ZHU + + * message.el (message-cite-prefix-regexp): Prefix should not end + at space. + +2000-11-15 18:09 ShengHuo ZHU + + * message.el (message-mode-syntax-table): Add - as a word + constituent as in articles. + (message-setup-fill-variables): Add -_. as supercite-style prefix. + * gnus-art.el (gnus-article-mode-syntax-table): Remove ?-. + * gnus-cite.el (gnus-cite-parse): Match from the beginning of line. + +2000-11-15 13:21 ShengHuo ZHU + + * gnus-msg.el (gnus-inews-do-gcc): Expire the article. + +2000-11-12 David Edmondson + + * message.el (message-font-lock-keywords): use + message-cite-prefix-regexp. + +2000-11-15 Kai Gro,b_(Bjohann + + * gnus-group.el (gnus-group-jump-to-group-prompt): New variable by + Stein Arild Str,Ax(Bmme. + (gnus-group-jump-to-group): Use it. + (gnus-group-jump-to-group-prompt): Customize. + +2000-11-14 10:32:42 ShengHuo ZHU + + * mailcap.el (mailcap-possible-viewers): Match the entire string. + +2000-11-14 10:20:56 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-verify): replace-match is + incompatible. + (mml2015-mailcrypt-sign): Ditto. + +2000-11-14 10:12:05 ShengHuo ZHU + + * gnus-msg.el (gnus-inews-do-gcc): Update summary data when the + group is open. + +2000-11-14 00:48:52 ShengHuo ZHU + + * gnus-bcklg.el (gnus-backlog-enter-article): Don't enter + nnvirtual articles. + (gnus-backlog-request-article): Don't request nnvirtual articles. + +2000-11-13 22:08:09 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-sign): Remove "-" escape. + * mml.el (mml-generate-mime-1): Save cont. skip multipart attributes. + +2000-11-13 20:43:37 ShengHuo ZHU + + * mm-decode.el (mm-get-part): Don't call mm-insert-part. + * mml.el (mml-generate-mime-1): Use charset attribute. + * mm-bodies.el (mm-encode-body): Add parameter charset. + * mm-util.el (mm-mime-charset): Show error when find 8-bit characters. + +2000-11-13 16:09:09 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-decrypt): Handle quit. + (mml2015-mailcrypt-clear-decrypt): Ditto. + (mml2015-mailcrypt-verify): Ditto. + (mml2015-mailcrypt-clear-verify): Ditto. + (mml2015-gpg-verify): Ditto. + +2000-11-13 15:29:58 ShengHuo ZHU + + * smime.el (smime-openssl-program): Test the existence of openssl. + * mml-smime.el: Require mm-decode. + (mml-smime-verify-test): New function. + * mm-decode.el (mm-verify-function-alist): Use it. + +2000-11-13 09:50:29 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-repair-multipart): Fix Mime-Version + anyway. + +2000-11-13 Simon Josefsson + + * mm-uu.el (mm-uu-pgp-signed-extract): Explain why clear + verification doesn't work. + +2000-11-12 23:36:45 ShengHuo ZHU + + * gnus-msg.el (gnus-inews-mark-gcc-as-read): New variable. + (gnus-inews-do-gcc): Use it. + +2000-11-12 21:35:04 ShengHuo ZHU + + * rfc2231.el (rfc2231-encode-string): Insert semi-colon and + leading space. + * mm-extern.el (mm-inline-external-body): Report error when no + access-type. + +2000-11-12 19:48:30 ShengHuo ZHU + + * gnus-sum.el (gnus-select-newsgroup): Change the error message. + +2000-11-12 11:53:18 ShengHuo ZHU + + * gnus-art.el (gnus-mime-button-menu): Use select-window. + +2000-11-12 09:47:54 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-part): Display multipart/related + as multipart/mixed. + +2000-11-12 David Edmondson + + * message.el (message-cite-prefix-regexp): moved from gnus-cite.el + and replace `.' with `\w' to allow for different syntax tables + (from Vladimir Volovich). + * message.el (message-newline-and-reformat): use + `message-cite-prefix-regexp'. + * gnus-cite.el (gnus-supercite-regexp): use + `message-cite-prefix-regexp'. + * gnus-cite.el (gnus-cite-parse): use + `message-cite-prefix-regexp'. + +2000-11-12 08:52:46 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-verify): Replace armors with + PGP SIGNATURE. Escape leading "-"'s. + (mml2015-mailcrypt-sign): Replace armors with PGP MESSAGE. + +2000-11-11 15:55:35 ShengHuo ZHU + + * mm-uu.el (mm-uu-type-alist): Stricter shar regexp. + +2000-11-11 Simon Josefsson + + * mml2015.el (mml2015-gpg-verify): Set "OK" security status. + + * smime.el (smime-details-buffer): New variable. + (smime-sign-region): + (smime-encrypt-region): + (smime-verify-region): + (smime-decrypt-region): Copy OpenSSL output to the buffer. + + * mml-smime.el (mml-smime-verify): Support security info. + +2000-11-10 17:11:22 ShengHuo ZHU + + * mm-decode.el (mm-verify-option): Set default to nil. + (mm-decrypt-option): Ditto. + * gnus-art.el (article-verify-x-pgp-sig): New function. + +2000-11-10 09:01:25 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-alternative): Show button if no + preferred part. + +2000-11-07 Kai Gro,b_(Bjohann + + * gnus-sum.el (gnus-move-split-methods): Say that + `gnus-split-methods' uses file names, whereas this uses group + names. (Report from Nevin Kapur) + +2000-11-10 01:23:20 ShengHuo ZHU + + * mm-partial.el (mm-inline-partial): Insert MIME-Version. + +2000-11-09 17:02:50 ShengHuo ZHU + + * nnheader.el (nnheader-directory-files-is-safe): New variable. + (nnheader-directory-articles): Use it. + (nnheader-article-to-file-alist): Ditto. + +2000-11-09 16:20:37 ShengHuo ZHU + + * rfc2047.el (rfc2047-pad-base64): New function. + (rfc2047-decode): Use it. + +2000-11-09 08:53:04 ShengHuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Bind the original + select method. + +2000-11-08 19:58:58 ShengHuo ZHU + + * mml2015.el (mml2015-gpg-decrypt-1): + (mml2015-gpg-verify): buffer-string has no argument in Emacs. + +2000-11-08 16:37:02 ShengHuo ZHU + + * gnus-cache.el (gnus-cache-generate-nov-databases): Reopen cache. + +2000-11-08 08:38:30 ShengHuo ZHU + + * pop3.el (pop3-munge-message-separator): A message may have an + empty body. + +2000-11-07 18:02:26 ShengHuo ZHU + + * mm-uu.el (mm-uu-type-alist): Don't test pgp stuff. + (mm-uu-pgp-encrypted-extract): Clean mml2015 buffer. + (mm-uu-pgp-signed-extract): Use coding-system. + +2000-11-07 14:33:19 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-part): Show MIME security button. + (gnus-insert-mime-security-button): New function. + * mm-decode.el (mm-possibly-verify-or-decrypt): Add security info. + * mml2015.el: Add security info when verify or decrypt. + * mm-uu.el (mm-uu-pgp-signed-extract): Use multipart. + (mm-uu-pgp-encrypted-extract): Ditto. + +2000-11-07 08:49:36 ShengHuo ZHU + + * mm-decode.el (mm-display-parts): New function. + * gnus-art.el (gnus-mime-view-all-parts): Use it. Remove parts first. + +2000-02-02 Alexandre Oliva + + * gnus-mlspl.el: Documentation tweaks. + +2000-11-06 22:06:44 ShengHuo ZHU + + * mm-decode.el (mm-possibly-verify-or-decrypt): Fix. + * gnus-art.el (gnus-article-encrypt-body): Rename and support prefix + argument. + +2000-11-06 19:10:14 ShengHuo ZHU + + * rfc2231.el (rfc2231-encode-string): Use us-ascii if charset is nil. + +2000-11-06 18:17:53 ShengHuo ZHU + + * gnus-art.el (gnus-article-encrypt): New function. + (gnus-article-encrypt-protocol-alist): New variable. + (gnus-article-encrypt-protocol): New variable. + * mml2015.el (mml2015-self-encrypt): New function. + (mml2015-mailcrypt-encrypt): Set mc-pgp-always-sign. + +2000-11-06 16:02:52 ShengHuo ZHU + + * mm-uu.el (mm-uu-gpg-key-skip-to-last): New function. + (mm-uu-pgp-key-extract): Use application/pgp-keys, don't snarf, + let mailcap do it. + * mml2015.el: Remove snarf code. + * mm-decode.el: Remove snarf code. + +2000-11-06 14:03:10 ShengHuo ZHU + + * mml.el (mml-insert-mml-markup): Ignore internal stuff. + (mml-insert-mime): Understand gnus-decoded. + (mime-to-mml): New parameter handles. + * gnus-art.el (gnus-mime-save-part-and-strip): Use it. + * gnus-sum.el (gnus-summary-edit-article): Add argument `3'. + +2000-11-06 13:51:37 ShengHuo ZHU + + * mm-decode.el (mime-security): New group. + (mm-verify-function-alist): Add test function. + (mm-decrypt-function-alist): Ditto. + (mm-snarf-option): Set default value as nil. + (mm-find-part-by-type): Recursive parameter. + (mm-possibly-verify-or-decrypt): Support draft-ietf-openpgp-multsig. + * mml2015.el: Support draft-ietf-openpgp-multsig. + +2000-11-06 13:01:27 ShengHuo ZHU + + * gnus-art.el (gnus-mime-view-part-as-charset): New function. + (gnus-article-view-part-as-charset): New function. + +2000-11-05 22:34:07 ShengHuo ZHU + + * mm-decode.el (mm-verify-option): Default value. + (mm-possibly-verify-or-decrypt): Dealing with broken messages. + +2000-11-05 15:06:05 ShengHuo ZHU + + * nnvirtual.el (nnvirtual-request-expire-articles): Uncompress range. + +2000-11-05 Simon Josefsson + + * mml-smime.el (mml-smime-verify): Work in original multipart + buffert. + + * mm-decode.el (mm-handle-multipart-original-buffer): New macro. + (mm-handle-multipart-ctl-parameter): Ditto. + (mm-alist-to-plist): New function. + (mm-dissect-buffer): Store CTL parameters and copy original buffer + for multiparts. + (mm-destroy-parts): Destroy multipart buffert. + (mm-remove-part): Ditto. + + * mml-smime.el (mml-smime-sign): Not used. + (mml-smime-encrypt): Ditto. + + * mm-decode.el (mml-smime-verify): Autoload mml-smime. + + Verify S/MIME signature support. + + * mm-decode.el (mm-inline-media-tests): Add + application/{x-,}pkcs7-signature. + (mm-inlined-types): Ditto. + (mm-automatic-display): Ditto. + (mm-verify-function-alist): Ditto. Add name of method. + (mm-decrypt-function-alist): Add name of method. + (mm-find-part-by-type): Add documentation. + (mm-possibly-verify-or-decrypt): Use new format of + mm-{verify,decrypt}-function-alist. Use method names. + + * mml-smime.el (mml-smime-verify): New function. + +2000-11-04 20:38:50 ShengHuo ZHU + + * mm-view.el (mm-inline-text): Move point to the end of inserted text. + +2000-11-04 19:07:08 ShengHuo ZHU + + * mml2015.el (mml2015-function-alist): Clear verify and decrypt. + * mm-uu.el: Reorganized. Add gnatsweb, pgp-signed, pgp-encrypted. + * mm-decode.el (mm-snarf-option): New variable. + +2000-11-04 13:08:02 ShengHuo ZHU + + * mm-util.el (mm-subst-char-in-string): New function. + (mm-replace-chars-in-string): Use it. + * message.el (message-replace-chars-in-string): Use it. + * nnheader.el (nnheader-replace-chars-in-string): Use it. + * gnus-mh.el (mh-lib-progs): Shut up. + +2000-11-04 ShengHuo Zhu + + * base64.el, md5.el: Moved to contrib directory. + +2000-11-04 11:13:56 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-search-article-forward): Don't move + the last article when search. + +2000-11-04 10:34:29 ShengHuo ZHU + + * nnheader.el (nnheader-pathname-coding-system): Default iso-8859-1. + * nnmail.el (nnmail-pathname-coding-system): Ditto. + +2000-09-29 David Edmondson + + * message.el (message-newline-and-reformat): Typo. + +2000-11-04 10:11:05 ShengHuo ZHU + + * rfc2231.el (rfc2231-decode-encoded-string): Test mm-multibyte-p. + +2000-11-04 09:53:42 ShengHuo ZHU + + * nntp.el (nntp-decode-text): Delete bogus status lines. + +2000-11-03 Stefan Monnier + + * message.el (message-font-lock-keywords): Match a final newline + to help font-lock's multiline support. + +2000-11-04 09:11:44 ShengHuo ZHU + + * nnoo.el (nnoo-set): New function. + +2000-11-04 ShengHuo Zhu + + * gpg.el, gpg-ring.el: Moved to contrib directory. + +2000-11-04 Simon Josefsson + + * nnimap.el (nnimap-split-inbox): Typo. + +2000-11-03 10:46:44 ShengHuo ZHU + + * gnus-msg.el (gnus-msg-mail): Move it backwards. + +2000-11-03 Simon Josefsson + + * rfc2231.el (rfc2231-parse-qp-string): New function. + (require): rfc2047. + + * mail-parse.el (mail-header-parse-content-type): + (mail-header-parse-content-disposition): Support invalid QP + encoded strings, by using `rfc2231-parse-qp-string'. + +2000-11-03 08:58:08 ShengHuo ZHU + + * rfc2231.el (rfc2231-parse-string): Decode when there is no number. + (rfc2231-decode-encoded-string): Typo "> X 1". + (rfc2231-encode-string): Insert the name of charset. + * mail-parse.el (mail-header-encode-parameter): Use RFC2231. + +2000-11-02 23:35:50 ShengHuo ZHU + + * mm-decode.el (mm-save-part): Return the filename. + * gnus-sum.el (gnus-summary-edit-article): Remove a hack. + * gnus-art.el (gnus-mime-save-part-and-strip): New function. + (gnus-mime-action-alist): Use it. + (gnus-mime-button-commands): Use it. + * mm-extern.el (mm-extern-local-file): Error when the file is gone. + (mm-inline-external-body): unwind-protect. + +2000-11-02 21:08:49 ShengHuo ZHU + + * gnus-art.el (gnus-insert-mime-button): Show url. + +2000-11-02 19:51:19 ShengHuo ZHU + + * mml.el (mml-generate-mime-1): Support external url. + * nnwarchive.el (nnwarchive-mail-archive-article): Use external url. + +2000-11-02 16:53:32 ShengHuo ZHU + + * mm-partial.el (mm-inline-partial): Buffer name with a leading space. + * mm-decode.el (mm-display-external): Ditto. + * mm-extern.el: New file. + * mm-decode.el (mm-inline-media-tests): Hook it up. + (mm-inlined-types): Inline message/external-body. + +2000-11-02 Simon Josefsson + + * gnus-art.el (gnus-visible-headers): Add Mail-Followup-To. + + * message.el (message-get-reply-headers): Better handling when + Mail-Followup-To is very large. + +2000-11-02 13:27:56 ShengHuo ZHU + + * gnus-uu.el (gnus-uu-post-news): Comment out the redundancy. + * gnus-art.el (gnus-article-edit-done): + * gnus-sum.el (gnus-summary-edit-article-done): Move line + counting code here. + * gnus-msg.el (gnus-setup-message): Remove a hack. + +2000-11-02 09:33:01 ShengHuo ZHU + + * gnus-sum.el (gnus-newsgroup-variables): New variable. + (gnus-summary-mode): Make them local variables. + (gnus-set-global-variables): Globalize them. + (gnus-summary-exit): Kill them. + +2000-11-02 Hrvoje Niksic + + * rfc2047.el (rfc2047-encoded-word-regexp): Allow empty encoded + word. + +2000-11-01 10:07:13 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-part): Add to signed or encrypted. + gnus-article-wash-types. + * gnus-art.el (gnus-article-wash-status): Use them. + +2000-11-01 08:54:11 ShengHuo ZHU + + * mml.el (mml-read-tag): Remove spaces and LF. + +2000-11-01 08:01:03 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-encrypt): Use from and sign parameters. + * mml.el (mml-generate-mime-1): Add sender and recipients attributes. + +2000-11-01 07:39:24 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-force-verify-and-decrypt): New function. + +2000-10-31 22:06:13 ShengHuo ZHU + + * gnus-sum.el (gnus-article-charset): New variable. + (gnus-summary-display-article): Set it. + * gnus-msg.el (gnus-copy-article-buffer): Use it. + * gnus-art.el (gnus-article-mode): Make it local variable. + +2000-11-01 01:12:29 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-create-mapping): Use nreverse. + +2000-10-31 23:45:31 Lars Magne Ingebrigtsen + + * nnwfm.el: New file. + + * nnweb.el (nnweb-replace-in-string): New function. + +2000-10-31 17:32:02 ShengHuo ZHU + + * mml2015.el: Wrap gpg.el. + * gpg.el (gpg-verify): The last argument of apply is a list. + (gpg-encrypt): Add passphrase as a parameter. + +2000-10-31 17:28:45 ShengHuo ZHU + + * gpg.el: New file. + * gpg-ring.el: New file. + +2000-10-31 11:44:29 ShengHuo ZHU + + * gnus-sum.el (gnus-summary-show-article): Fix the summary line. + +2000-10-31 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-insert-line): Work with quoted + double-quote characters. + (gnus-summary-prepare-threads): Ditto. + +2000-10-31 08:36:03 ShengHuo ZHU + + * gnus-art.el (gnus-mime-display-single): Forward line -1. + * mml.el (mml-read-tag): Don't skip the leading space. + * lpath.el (font-lock-set-defaults): Shut up. + +2000-10-31 00:04:35 ShengHuo ZHU + + * mml2015.el: Fix doc. Remove bogus mml2015-setup. + +2000-10-30 23:37:07 ShengHuo ZHU + + * qp.el (quoted-printable-encode-region): Replace leading - when + ultra safe. + * mml.el (mml-generate-mime-postprocess-function): Removed. + (mml-postprocess-alist): Removed. + (mml-generate-mime-1): Use ultra-safe when sign. + * mml2015.el (mml2015-fix-micalg): Uppercase. + (mml2015-verify): Insert LF. + (mml2015-mailcrypt-sign): Downcase; search backward. + +2000-10-16 11:36:52 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-forum-table-p): Be a bit more + restrictive. + (nnultimate-table-regexp): New variable. + (nnultimate-forum-table-p): Use it. + +2000-10-30 Ed L Cashin + Trivial patch. + + * gnus-sum.el (gnus-summary-expire-articles): Save point. + +2000-10-30 08:52:50 ShengHuo ZHU + + * mml-sec.el (mml-pgpmime-sign-buffer): Use mml2015-sign. + (mml-pgpmime-encrypt-buffer): Use mml2015-encrypt. + +2000-10-30 08:38:12 ShengHuo ZHU + + * mml2015.el: Shut up. + +2000-10-30 08:17:46 ShengHuo ZHU + + * gnus.el (gnus-server-browse-hashtb): Removed. + * gnus-group.el (gnus-group-prepare-flat-list-dead): Use gnus-active. + (gnus-group-insert-group-line-info): Use simplified method. + * gnus-srvr.el (gnus-browse-foreign-server): Use gnus-set-active. + +2000-10-30 01:52:40 ShengHuo ZHU + + * gnus-util.el (gnus-union): Renamed from gnus-agent-union, and + moved here. + * gnus-agent.el (gnus-agent-fetch-headers): Use it. + * gnus-group.el (gnus-group-prepare-flat): Use it. + * gnus-topic.el (gnus-group-prepare-topics): Use it. + +2000-10-30 01:23:49 ShengHuo ZHU + + * mml.el (mml-mode): Show menu in XEmacs. + +2000-10-30 00:49:33 ShengHuo ZHU + + * gnus-srvr.el (gnus-server-browse-in-group-buffer): New variable. + (gnus-server-read-server-in-server-buffer): New function. + (gnus-browse-foreign-server): Browse in group buffer. + * gnus-group.el (gnus-group-prepare-flat): List group not in list. + (gnus-group-prepare-flat-list-dead): Use gnus-group-insert-group-line. + * gnus-topic.el (gnus-group-prepare-topics): Ditto. + * gnus.el (gnus-server-browse-hashtb): New variable. + +2000-10-29 22:31:40 ShengHuo ZHU + + * nnfolder.el (nnfolder-open-nov): Use group. + +2000-10-29 17:23:15 ShengHuo ZHU + + * nnfolder.el: Add NOV. Set version to 2.0. + (nnfolder-nov-is-evil): If non-nil, nnfolder acts like 1.0. + +2000-10-29 10:35:08 ShengHuo ZHU + + * mml2015.el (mml2015-mailcrypt-sign): Use mc-sign-generic. + +2000-10-29 09:42:05 ShengHuo ZHU + + * gnus-srvr.el (gnus-browse-foreign-server): Show level mark. + (gnus-browse-unsubscribe-group): Unsubscribed is not killed. + +2000-10-29 08:28:58 ShengHuo ZHU + + * nnfolder.el (nnfolder-read-folder): Don't goto point-min. + +2000-10-28 19:11:01 ShengHuo ZHU + + * mm-decode.el (mm-verify-function-alist): New variable. + (mm-verify-option): New variable. + (mm-decrypt-function-alist): Ditto. + (mm-decrypt-option): Ditto. + (mm-find-raw-part-by-type): New function. + (mm-possibly-verify-or-decrypt): New function. + (mm-dissect-multipart): Use it. + * mml2015.el (mml2015-fix-micalg): New function. + (mml2015-decrypt): Use new interface. + (mml2015-verify): Use new interface. + (mml2015-setup): Make it bogus. + +2000-10-28 16:54:45 ShengHuo ZHU + + * mml.el (mml-generate-mime-postprocess-function): Set to + mml-postprocess. + (autoload): Autoload mml2015 and mml-smime. + (mml-postprocess-alist): Use mml2015-sign and mml2015-encrypt. + * mml2015.el (mml2015-encrypt): New function. + (mml2015-sign): New function. + (mml2015-encrypt-function): New variable. + (mml2015-sign-function): New variable. + (mml2015-mailcrypt-encrypt): Use message-recipients. + (mml2015-setup): Don't set mml-generate-mime-postprocess-function. + * mml-smime.el (mml-smime-setup): Ditto. + +2000-10-28 Simon Josefsson + + * imap.el (imap-parse-resp-text-code): Workaround bug in Stalker + Communigate Pro 3.3.1 server. + + * mml-sec.el (mml-smime-encrypt-buffer): Support certfiles stored + in buffers. + (mml-secure-dns-server): Removed. + (mml-secure-part-smime-encrypt-by-dns): Use DIG interface. Don't + write certificates to files. + + * smime.el (smime-dns-server): New variable. + (smime-mail-to-domain): + (smime-cert-by-dns): New functions. + + * dig.el: New file. + +2000-10-28 10:09:41 ShengHuo ZHU + + * message.el (message-options): New variable. + (message-options-set-recipient): New function. + (message-send): Use them. + * gnus-int.el (gnus-request-replace-article): Use them. + (gnus-request-accept-article): Ditto. + * mml.el (mml-preview): Use them. + * gnus-sum.el (gnus-summary-edit-article): Use them. + + * message.el (message-options-get): New function. + (message-options-get): New function. + * rfc2047.el (rfc2047-encode-message-header): Use them. + * mm-bodies.el (mm-encode-body): Use them. + +2000-10-28 Simon Josefsson + + * nnimap.el (nnimap-retrieve-which-headers): + (nnimap-request-article-part): Quote message-id. + + * smime.el (smime-CA-directory): Rename from `smime-CAs'. + (smime-CA-file): New variable. + (smime-call-openssl-region): Don't error. + (smime-sign-region): Return result value. + (smime-encrypt-region): Ditto. + (smime-verify-region): New function. + (smime-decrypt-region): Ditto. + (smime-verify-buffer): Ditto. + (smime-decrypt-buffer): Ditto. + + * mml.el: Require mml-sec. + (mml-generate-mime-1): Support "sign" and "encrypt" MML tags. + (mml-mode-map): Add "sign" and "encrypt" maps. + (mml-menu): Add security menu. + (mml-preview): Use generate-new-buffer. + + * mml-sec.el: New file. + +2000-10-28 03:43:03 ShengHuo ZHU + + * mm-decode.el (mm-find-part-by-type): Move it here. + * mml.el (mml-postprocess): Move it here. + (mml-postprocess-alist): Move it here. Merge them. + +2000-10-28 03:38:39 ShengHuo ZHU + + * rfc2047.el (rfc2047-encode-message-header): Make sure no + unencoded stuff in the header. + +2000-10-28 02:40:46 ShengHuo ZHU + + * gnus-group.el (gnus-group-listed-groups): New variable. + (gnus-group-list-option): New variable. + (gnus-group-list-limit-map): New keymap. + (gnus-group-list-flush-map): New keymap. + (gnus-group-list-plus-map): New keymap. + (gnus-group-prepare-logic): New function. + (gnus-group-prepare-flat): Merge with + gnus-group-prepare-flat-predicate. Use gnus-group-listed-groups. + (gnus-group-prepare-flat-list-dead): Ditto. + (gnus-group-list-matching): Use gnus-group-prepare-function. + (gnus-group-list-dormant): Ditto. + (gnus-group-list-cached): Ditto. + (gnus-group-listed-groups): New function. + (gnus-group-list-limit): New function. + (gnus-group-list-flush): New function. + (gnus-group-list-plus): New function. + * gnus-topic.el (gnus-group-prepare-topics): Accept predicate. + (gnus-topic-prepare-topic): Ditto. + +2000-10-27 Paul Jarc + + * message.el (message-insert-to, message-get-reply-headers): + (message-reply, message-followup): Mail-{Followup,Reply}-To. + +2000-10-27 19:45:58 ShengHuo ZHU + + * mml2015.el: New file. + * smime.el: New file. + * mml-smime.el: New file. + +2000-10-27 19:42:12 ShengHuo ZHU + + * ChangeLog: Moved to ChangeLog.1. + 2000-10-27 Jason Rumney * gnus-art.el (gnus-signature-face): Use italic on any frame that diff --git a/lisp/binhex.el b/lisp/binhex.el index 7622881..982e8e9 100644 --- a/lisp/binhex.el +++ b/lisp/binhex.el @@ -1,5 +1,6 @@ ;;; binhex.el --- elisp native binhex decode -;; Copyright (c) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (c) 1998, 1999, 2000, 2001, 2002, 2004 +;; Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: binhex news @@ -243,14 +244,13 @@ If HEADER-ONLY is non-nil only decode header and return filename." (setq file-name-length (char-after (point-min)) data-fork-start (+ (point-min) file-name-length 22)))) - (if (and (null header) - (with-current-buffer work-buffer - (>= (buffer-size) data-fork-start))) - (progn - (binhex-verify-crc work-buffer - (point-min) data-fork-start) - (setq header (binhex-header work-buffer)) - (if header-only (setq tmp nil counter 0)))) + (when (and (null header) + (with-current-buffer work-buffer + (>= (buffer-size) data-fork-start))) + (binhex-verify-crc work-buffer + (point-min) data-fork-start) + (setq header (binhex-header work-buffer)) + (when header-only (setq tmp nil counter 0))) (setq tmp (and tmp (not (eq inputpos end))))) (cond ((= counter 3) diff --git a/lisp/canlock-om.el b/lisp/canlock-om.el deleted file mode 100644 index 831b7f5..0000000 --- a/lisp/canlock-om.el +++ /dev/null @@ -1,215 +0,0 @@ -;;; canlock-om.el --- Mule 2 specific functions for canlock -;; Copyright (C) 2001 Katsumi Yamaoka - -;; Author: Katsumi Yamaoka -;; Keywords: mule, cancel-lock - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This program is used to make canlock.el work with Mule 2.3 based on -;; Emacs 19.34. See README.ja in the canlock distribution for details. - -;;; Code: - -(eval-and-compile - (cond ((and (boundp 'emacs-major-version) - (> emacs-major-version 19)) - (error "\ -Error: You should never use canlock-om.el(c) for this environment")) - ((and (boundp 'MULE) - (boundp 'emacs-major-version) - (= emacs-major-version 19) - (>= emacs-minor-version 29))) - (t - (error "Error: Canlock does not support this version of Emacs")))) - -(eval-when-compile - (require 'cl)) - -(require 'custom) -(eval-and-compile - (unless (fboundp 'custom-declare-variable) - (error "Error: Canlock requires new custom"))) - -(eval-when-compile - (unless (fboundp 'byte-compile-file-form-custom-declare-variable) - (defun byte-compile-file-form-custom-declare-variable (form) - ;; Bind defcustom'ed variables. - (if (memq 'free-vars byte-compile-warnings) - (setq byte-compile-bound-variables - (cons (nth 1 (nth 1 form)) byte-compile-bound-variables))) - (if (memq ':version (nthcdr 4 form)) - ;; Make the variable uncustomizable. - `(defvar ,(nth 1 (nth 1 form)) ,(nth 1 (nth 2 form)) - ,(substring (nth 3 form) - (if (string-match "^[\t *]+" (nth 3 form)) - (match-end 0) - 0))) - ;; Ignore unsupported keyword(s). - (if (memq ':set-after (nthcdr 4 form)) - (let ((newform (list (car form) (nth 1 form) - (nth 2 form) (nth 3 form))) - (args (nthcdr 4 form))) - (while args - (or (eq (car args) ':set-after) - (setq newform (nconc newform (list (car args) - (car (cdr args)))))) - (setq args (cdr (cdr args)))) - newform) - form))) - (put 'custom-declare-variable 'byte-hunk-handler - 'byte-compile-file-form-custom-declare-variable)) - - (define-compiler-macro with-temp-buffer (&whole form &rest forms) - (let ((def (if (fboundp 'with-temp-buffer) - (symbol-function 'with-temp-buffer)))) - (if (and def - (consp def) - (or (eq (car def) 'macro) - (and (eq (car def) 'autoload) - (memq (nth 4 def) '(macro t))))) - form - ;; The function definition is imported from APEL. - `(let ((obuffer (current-buffer)) - (buffer (generate-new-buffer " *temp*"))) - (unwind-protect - (progn - (set-buffer buffer) - ,@forms) - (if (buffer-name buffer) - (kill-buffer buffer)) - (if (buffer-live-p obuffer) - (set-buffer obuffer)))))))) - -(autoload 'base64-encode "base64") - -(defcustom canlock-base64-encode-function 'base64-encode-string - "Function to call to base64 encode a string." - :type '(radio (function-item base64-encode-string) - (function-item base64-encode) - (function-item canlock-base64-encode-string-with-mmencode) - (function :tag "Other")) - :group 'canlock) - -(defcustom canlock-mmencode-program "mmencode" - "Name of mmencode program." - :type 'string - :group 'canlock) - -(defcustom canlock-mmencode-args-for-encoding nil - "Arguments passed to mmencode program for encoding." - :type 'sexp - :group 'canlock) - -(defun canlock-base64-encode-string-with-mmencode (string) - "Base64 encode a string using mmencode." - (with-temp-buffer - (setq mc-flag nil) - (insert string) - (let ((default-process-coding-system (cons *iso-2022-jp*dos *noconv*)) - program-coding-system-alist selective-display) - (apply 'call-process-region (point-min) (point-max) - canlock-mmencode-program t t nil - canlock-mmencode-args-for-encoding)) - (goto-char (point-max)) - (skip-chars-backward "\n") - (buffer-substring (point-min) (point)))) - -;; The following macros will only be used to byte-compile canlock.el. -(eval-when-compile - (define-compiler-macro base64-encode-string - (&whole form string &optional no-line-break) - (if (and (string-equal (buffer-name) " *Compiler Input*") - (string-equal ";;; canlock.el" - (buffer-substring (point-min) - (min (+ (point-min) 14) - (point-max))))) - (if no-line-break - `(let ((string ,string)) - (if ,no-line-break - (with-temp-buffer - (insert (funcall canlock-base64-encode-function string)) - (goto-char (point-min)) - (while (search-forward "\n" nil t) - (delete-char -1)) - (buffer-string)) - (funcall canlock-base64-encode-function string))) - `(funcall canlock-base64-encode-function ,string)) - form)) - - (define-compiler-macro split-string (&whole form string &optional pattern) - (if (and (string-equal (buffer-name) " *Compiler Input*") - (string-equal ";;; canlock.el" - (buffer-substring (point-min) - (min (+ (point-min) 14) - (point-max))))) - ;; The function definition is imported from APEL. - (if pattern - `(let ((string ,string) - (pattern ,pattern) - (start 0) - parts) - (while (string-match pattern string start) - (setq parts (cons (substring string - start (match-beginning 0)) - parts) - start (match-end 0))) - (nreverse (cons (substring string start) parts))) - `(let ((string ,string) - (start 0) - parts) - (while (string-match "[ \f\t\n\r\v]+" string start) - (setq parts (cons (substring string - start (match-beginning 0)) - parts) - start (match-end 0))) - (nreverse (cons (substring string start) parts)))) - form))) - -;; The following variables might not be bound if the old version of -;; canlock.el(c) exists. -(eval-when-compile - (defvar canlock-openssl-args) - (defvar canlock-openssl-program)) - -(defun canlock-om-sha1-with-openssl (message) - "Make a SHA-1 digest of MESSAGE using OpenSSL." - (with-temp-buffer - (setq mc-flag nil) - (insert message) - (let ((default-process-coding-system (cons *iso-2022-jp*dos *noconv*)) - program-coding-system-alist selective-display) - (apply 'call-process-region (point-min) (point-max) - canlock-openssl-program t t nil canlock-openssl-args)) - (goto-char (point-min)) - (insert "\"") - (while (re-search-forward "\\([0-9A-Fa-f][0-9A-Fa-f]\\)" nil t) - (replace-match "\\\\x\\1")) - (insert "\"") - (goto-char (point-min)) - (read (current-buffer)))) - -;; Override the original function. -(eval-after-load "canlock" - '(defalias 'canlock-sha1-with-openssl 'canlock-om-sha1-with-openssl)) - -(provide 'canlock-om) - -(require 'canlock) - -;;; canlock-om.el ends here diff --git a/lisp/canlock.el b/lisp/canlock.el index 55b2e59..9e437e7 100644 --- a/lisp/canlock.el +++ b/lisp/canlock.el @@ -1,6 +1,7 @@ ;;; canlock.el --- functions for Cancel-Lock feature -;; Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 +;; Free Software Foundation, Inc. ;; Author: Katsumi Yamaoka ;; Keywords: news, cancel-lock, hmac, sha1, rfc2104 @@ -43,44 +44,22 @@ (eval-when-compile (require 'cl)) -(autoload 'sha1-binary "sha1-el") -(autoload 'base64-encode-string "base64") -(autoload 'mail-fetch-field "mail-utils") +(eval-and-compile + (require 'sha1-el) + (condition-case nil + (sha1 "" nil nil 'binary) + (wrong-number-of-arguments + (let ((mel (locate-library "mel"))) + (when mel + (load (expand-file-name "sha1-el" (file-name-directory mel)) + nil t)))))) + (defvar mail-header-separator) (defgroup canlock nil "The Cancel-Lock feature." :group 'applications) -(defcustom canlock-sha1-function 'sha1-binary - "Function to call to make a SHA-1 message digest." - :type '(radio (function-item sha1-binary) - (function-item canlock-sha1-with-openssl) - (function :tag "Other")) - :group 'canlock) - -(defcustom canlock-sha1-function-for-verify canlock-sha1-function - "Function to call to make a SHA-1 message digest for verifying." - :type '(radio (function-item sha1-binary) - (function-item canlock-sha1-with-openssl) - (function :tag "Other")) - :group 'canlock) - -(defcustom canlock-openssl-program "openssl" - "Name of OpenSSL program." - :type 'string - :group 'canlock) - -(defcustom canlock-openssl-args '("sha1") - "Arguments passed to the OpenSSL program." - :type 'sexp - :group 'canlock) - -(defcustom canlock-ignore-errors nil - "If non-nil, ignore any error signals." - :type 'boolean - :group 'canlock) - (defcustom canlock-password nil "Password to use when signing a Cancel-Lock or a Cancel-Key header." :type '(radio (const :format "Not specified " nil) @@ -99,25 +78,6 @@ buffer does not look like a news message." :type 'boolean :group 'canlock) -(defun canlock-sha1-with-openssl (message) - "Make a SHA-1 digest of MESSAGE using OpenSSL." - (let (default-enable-multibyte-characters) - (with-temp-buffer - (let ((coding-system-for-read 'binary) - (coding-system-for-write 'binary) - selective-display - (case-fold-search t)) - (insert message) - (apply 'call-process-region (point-min) (point-max) - canlock-openssl-program t t nil canlock-openssl-args) - (goto-char (point-min)) - (insert "\"") - (while (re-search-forward "\\([0-9a-f][0-9a-f]\\)" nil t) - (replace-match "\\\\x\\1")) - (insert "\"") - (goto-char (point-min)) - (read (current-buffer)))))) - (eval-when-compile (defmacro canlock-string-as-unibyte (string) "Return a unibyte string with the same individual bytes as STRING." @@ -127,7 +87,11 @@ buffer does not look like a news message." (defun canlock-sha1 (message) "Make a SHA-1 digest of MESSAGE as a unibyte string of length 20 bytes." - (canlock-string-as-unibyte (funcall canlock-sha1-function message))) + (condition-case nil + (let (sha1-maximum-internal-length) + (sha1 message nil nil 'binary)) + (wrong-number-of-arguments + (canlock-string-as-unibyte (sha1-binary message))))) (defun canlock-make-cancel-key (message-id password) "Make a Cancel-Key header." @@ -206,9 +170,8 @@ message." (unless id-for-key (setq id-for-key (canlock-fetch-id-for-key))) (if (and (setq control (mail-fetch-field "Control")) - (string-match - "^cancel[\t ]+\\(<[^\t\n @<>]+@[^\t\n @<>]+>\\)" - control)) + (string-match "^cancel[\t ]+<[^\t\n @<>]+@[^\t\n @<>]+>" + control)) (setq id-for-lock nil) (unless id-for-lock (setq id-for-lock (mail-fetch-field "Message-ID")))) @@ -242,14 +205,10 @@ message." (defun canlock-verify (&optional buffer) "Verify Cancel-Lock or Cancel-Key in BUFFER. If BUFFER is nil, the current buffer is assumed. Signal an error if -it fails. You can modify the behavior of this function to return non- -nil instead of to signal an error by setting the option -`canlock-ignore-errors' to non-nil." +it fails." (interactive) - (let ((canlock-sha1-function (or canlock-sha1-function-for-verify - canlock-sha1-function)) - keys locks errmsg id-for-key id-for-lock password - key-for-key key-for-lock match) + (let (keys locks errmsg id-for-key id-for-lock password + key-for-key key-for-lock match) (save-excursion (when buffer (set-buffer buffer)) @@ -265,21 +224,12 @@ nil instead of to signal an error by setting the option id-for-lock (mail-fetch-field "Message-ID")) (or id-for-key id-for-lock (setq errmsg "There are no Message-ID(s)"))))) - (if errmsg - (if canlock-ignore-errors - errmsg - (error "%s" errmsg)) - + (error "%s" errmsg) (setq password (or canlock-password-for-verify (read-passwd "Password for Canlock: "))) (if (or (not (stringp password)) (zerop (length password))) - (progn - (setq errmsg "Password for Canlock is bad") - (if canlock-ignore-errors - errmsg - (error "%s" errmsg))) - + (error "Password for Canlock is bad") (when keys (when id-for-key (setq key-for-key (canlock-make-cancel-key id-for-key password)) @@ -287,7 +237,6 @@ nil instead of to signal an error by setting the option (setq match (string-equal key-for-key (pop keys))))) (setq keys (if match "good" "bad"))) (setq match nil) - (when locks (when id-for-lock (setq key-for-lock @@ -297,7 +246,6 @@ nil instead of to signal an error by setting the option (when (and locks (not match)) (setq match (string-equal key-for-lock (pop locks))))) (setq locks (if match "good" "bad"))) - (prog1 (when (member "bad" (list keys locks)) "bad") diff --git a/lisp/compface.el b/lisp/compface.el index 185f949..3a6f101 100644 --- a/lisp/compface.el +++ b/lisp/compface.el @@ -1,7 +1,8 @@ ;;; compface.el --- functions for converting X-Face headers -;; Copyright (C) 2002 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen +;; TAKAI Kousuke ;; Keywords: news ;; This file is part of GNU Emacs. @@ -25,33 +26,721 @@ ;;; Code: -;;;### +(defgroup compface nil + "X-Face image conversion." + :group 'extensions) + +(defcustom uncompface-use-external (and (not noninteractive) + (executable-find "uncompface") + (executable-find "icontopbm") + 'undecided) + "*Specify which of the internal or the external decoder should be used. +nil means to use the internal ELisp-based uncompface program. t means +to use the external decoder. In the later case, you need to have the +external `uncompface' and `icontopbm' programs installed. The default +value is nil if those external programs aren't available, otherwise +`undecided' which means to determine it by checking whether the host +machine is slow. See also `uncompface-use-external-threshold'. You +can skip that check by setting this value as nil or t explicitly." + :type '(choice (const :tag "Use the internal decoder" nil) + (const :tag "Use the external decoder" t) + (const :tag "Autodetection" undecided)) + :group 'compface) + +(defcustom uncompface-use-external-threshold 0.1 + "*Number of seconds to check whether the host machine is slow. +If the host takes time larger than this value for decoding an X-Face +using the internal ELisp-based uncompface program, it will be changed +to using the external `uncompface' and `icontopbm' programs if they +are available. Note that the measurement may never be exact." + :type 'number + :group 'compface) + +(eval-when-compile + (defmacro uncompface-float-time (&optional specified-time) + (if (fboundp 'float-time) + `(float-time ,specified-time) + `(let ((time (or ,specified-time (current-time)))) + (+ (* (car time) 65536.0) + (cadr time) + (cond ((consp (setq time (cddr time))) + (/ (car time) 1000000.0)) + (time + (/ time 1000000.0)) + (t + 0))))))) + (defun uncompface (face) "Convert FACE to pbm. -Requires the external programs `uncompface', and `icontopbm'. On a -GNU/Linux system these might be in packages with names like `compface' -or `faces-xface' and `netpbm' or `libgr-progs', for instance." - (with-temp-buffer - (insert face) - (and (eq 0 (apply 'call-process-region (point-min) (point-max) - "uncompface" - 'delete '(t nil) nil)) - (progn - (goto-char (point-min)) - (insert "/* Width=48, Height=48 */\n") - ;; I just can't get "icontopbm" to work correctly on its - ;; own in XEmacs. And Emacs doesn't understand un-raw pbm - ;; files. - (if (not (featurep 'xemacs)) - (eq 0 (call-process-region (point-min) (point-max) - "icontopbm" - 'delete '(t nil))) - (shell-command-on-region (point-min) (point-max) - "icontopbm | pnmnoraw" - (current-buffer) t) - t)) - (buffer-string)))) +If `uncompface-use-external' is t, it requires the external programs +`uncompface', and `icontopbm'. On a GNU/Linux system these might be +in packages with names like `compface' or `faces-xface' and `netpbm' +or `libgr-progs', for instance." + (cond ((eq uncompface-use-external nil) + (uncompface-internal face)) + ((eq uncompface-use-external t) + (with-temp-buffer + (insert face) + (and (eq 0 (apply 'call-process-region (point-min) (point-max) + "uncompface" + 'delete '(t nil) nil)) + (progn + (goto-char (point-min)) + (insert "/* Width=48, Height=48 */\n") + ;; I just can't get "icontopbm" to work correctly on its + ;; own in XEmacs. And Emacs doesn't understand un-raw pbm + ;; files. + (if (not (featurep 'xemacs)) + (eq 0 (call-process-region (point-min) (point-max) + "icontopbm" + 'delete '(t nil))) + (shell-command-on-region (point-min) (point-max) + "icontopbm | pnmnoraw" + (current-buffer) t) + t)) + (buffer-string)))) + (t + (let* ((gc-cons-threshold (eval '(lsh -1 -1))) + (start (current-time))) + (prog1 + (uncompface-internal face) + (setq uncompface-use-external + (and (> (- (uncompface-float-time (current-time)) + (uncompface-float-time start)) + uncompface-use-external-threshold) + (executable-find "uncompface") + (executable-find "icontopbm") + t))))))) + +;; The following section is a bug-for-bug compatible version of +;; `uncompface' program entirely implemented in Emacs-Lisp. + +(eval-when-compile + ;; The size of 48x48 is actually hard-coded into the code itself, + ;; so you cannot simply change those values. So we hard-code + ;; them into the compiled code. + (defconst uncompface-width 48 + "Width of X-Face bitmap image.") + (defconst uncompface-height 48 + "Height of X-Face bitmap image.") + + ;; Again, this is also hard-coded into the compiled code. + (defconst uncompface-guesses + (mapcar (lambda (x) + (mapcar (lambda (x) + (let ((vector (make-vector (length x) nil)) + (i 0)) + (while x + (or (zerop (car x)) + (aset vector i t)) + (setq x (cdr x) + i (1+ i))) + vector)) + x)) + '((;; g_00 + (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 1 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 + 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 + 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 + 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 + 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 + 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 + 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 + 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 + 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 + 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 1 + 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 + 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 + 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 + 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 + 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 + 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 + 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 + 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 + 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 + 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 1 + 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 + 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 1 + 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 + 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 + 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 + 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 + 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 + 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 + 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 + 1 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 + 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 + 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 + 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 + 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 + 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 + 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 + 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 + 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 + 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 1 + 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 + 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 + 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 + 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 + 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 + 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 + 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 1 0 1 1 1 1 + 1 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 + 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 + 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 + 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 + 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 + 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 + 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 + 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 + 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 + 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 1 1 0 1 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 + 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 + 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 + 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 + 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 + 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 + 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 + 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 + 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 + 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 + 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 0 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 + 1 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 + 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + ;; g_10 + (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 + 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 + 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 + 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 + 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 + 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 + 0 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 + 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 + 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 + 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 + 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 1 + 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 + 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 + 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 + 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 1 + 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 + 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 + 1 1 1 1 1 0 1 0 1 1 1 0 1 0 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 + 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 + 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + ;; g_20 + (0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 + 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 0 + 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1) + ;; g_40 + (0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 + 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 + 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 + 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 + 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 + 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 + 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 + 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 + 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 + 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 + 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 + 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 + 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 + 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 + 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 + 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 + 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 + 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 + 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 + 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 + 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 + 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 1 + 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 + 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 + 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 + 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 + 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 + 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1)) + (;; g_01 + (0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 1 + 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 + 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 + 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 + 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 + 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 + 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + ;; g_11 + (0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 + 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1) + ;; g_21 + (0 0 0 1 0 1 1 1) + ;; g_41 + (0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 + 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 + 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 + 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (;; g_02 + (0 1 0 1) + ;; g_12 + (0 1) + ;; g_22 + (0) + ;; g_42 + (0 0 0 1)))) + "Static prediction table for X-Face image compression algorithm.") + + ;; Macros for inlining critical values. + (defmacro uncompface-width () (list 'quote uncompface-width)) + (defmacro uncompface-height () (list 'quote uncompface-height)) + (defmacro uncompface-guesses () (list 'quote uncompface-guesses)) + + (defmacro uncompface-loop (&rest body) + "Eval BODY and repeat if last expression of BODY yields non-nil." + (list 'while (cons 'progn body)))) + +;; (defun uncompface-print-bignum (bignum &optional prefix) +;; (princ (format (concat prefix "<%s>\n") +;; (mapconcat (lambda (x) (format "%02x" x)) +;; (reverse bignum) " ")))) + +;; Shut up the byte-compiler. +;; These variables are once bound in `uncompface' and all subfunctions +;; accesses them directly rather than creating their own bindings. +(eval-when-compile + (defvar bignum) + (defvar face)) + +;; Big-number facilities. +;; These functions were used to be implemented with `lsh' and `logand', +;; but rewritten to use `/' and `%'. The last two are mapped into +;; byte-code directly, but the formers are normal functions even in +;; compiled code which involve expensive `funcall' operations. +(eval-when-compile + (defsubst uncompface-big-mul-add (multiplier adder) + "Multiply BIGNUM by MULTIPLIER and add ADDER and put result in `bignum'." + (setq bignum (if (= multiplier 0) + (cons 0 bignum) + (prog1 bignum + (while (progn + (setcar bignum (% (setq adder (+ (* (car bignum) + multiplier) + adder)) + 256)) + (setq adder (/ adder 256)) + (cdr bignum)) + (setq bignum (cdr bignum))) + (or (= adder 0) + (setcdr bignum (list adder)))))))) + +;; This trick is for XEmacs 21.4 which doesn't allow inlining a function +;; using `defsubst' into another function also defined with `defsubst'. +(eval-when-compile + (when (featurep 'xemacs) + (defvar uncompface-big-mul-add (symbol-function 'uncompface-big-mul-add)) + (defmacro uncompface-big-mul-add (multiplier adder) + `(,uncompface-big-mul-add ,multiplier ,adder)))) + +;; Separate `eval-when-compile' for the byte compiler +;; to properly define `uncompface-big-mul-add' before `uncompface-big-pop'. +(eval-when-compile + (defsubst uncompface-big-pop (prob) + (let ((n (car bignum)) (i 0)) + (if (cdr bignum) + (setq bignum (cdr bignum)) + (setcar bignum 0)) + (while (or (< n (cdr (car prob))) + (>= n (+ (cdr (car prob)) (car (car prob))))) + (setq prob (cdr prob) + i (1+ i))) + (uncompface-big-mul-add (car (car prob)) (- n (cdr (car prob)))) + i))) + +;; This function cannot be inlined due to recursive calls. +(defun uncompface-pop-grays (offset size) + (if (<= size 3) + (let ((bits (uncompface-big-pop + ;; This is freqs[16] in compface_private.h. + '(( 0 . 0) (38 . 0) (38 . 38) (13 . 152) + (38 . 76) (13 . 165) (13 . 178) ( 6 . 230) + (38 . 114) (13 . 191) (13 . 204) ( 6 . 236) + (13 . 217) ( 6 . 242) ( 5 . 248) ( 3 . 253))))) +;; (if (/= (logand bits 1) 0) +;; (aset face offset t)) +;; (if (/= (logand bits 2) 0) +;; (aset face (1+ offset) t)) +;; (if (/= (logand bits 4) 0) +;; (aset face (+ offset (uncompface-width)) t)) +;; (if (/= (logand bits 8) 0) +;; (aset face (+ offset (uncompface-width) 1) t)) + (when (>= bits 8) + (aset face (+ offset (uncompface-width) 1) t) + (setq bits (- bits 8))) + (when (>= bits 4) + (aset face (+ offset (uncompface-width)) t) + (setq bits (- bits 4))) + (or (eq (if (< bits 2) + bits + (aset face (1+ offset) t) + (- bits 2)) + 0) + (aset face offset t)) + ) + (setq size (/ size 2)) + (uncompface-pop-grays offset size) + (uncompface-pop-grays (+ offset size) size) + (uncompface-pop-grays (+ offset (* (uncompface-width) size)) size) + (uncompface-pop-grays (+ offset (* (uncompface-width) size) size) size))) + +;; Again, this function call itself recursively. +(defun uncompface-uncompress (offset size level) + ;; This used to be (funcall (aref [(lambda ...) ...] (u-big-pop ...))) + ;; but this was slow due to function call. + (let ((i (uncompface-big-pop (car level)))) + (cond ((eq i 0) ; black + (uncompface-pop-grays offset size)) + ((eq i 1) ; gray + (setq size (/ size 2) + level (cdr level)) + (uncompface-uncompress offset size level) + (uncompface-uncompress (+ offset size) size level) + (uncompface-uncompress (+ offset (* size (uncompface-width))) + size level) + (uncompface-uncompress (+ offset (* size (uncompface-width)) size) + size level)) + ;; ((eq i 2) nil) + ;; (t (error "Cannot happen")) + ))) + +(eval-when-compile + (defmacro uncompface-shift-in (k dy dx) + `(+ k k (if (aref face (+ i (* ,dy (uncompface-width)) ,dx)) 1 0)))) + +(defun uncompface-internal (string &optional raw) + "Decode X-Face data STRING and return an image in the pbm format. +If the optional RAW is non-nil, return a raw bitmap as a vector." + (let (;; `bignum' and `face' are semi-global variables. + ;; Do not use '(0) below, because BIGNUM is modified in-place. + (bignum (list 0)) + (face (make-vector (* (uncompface-width) (uncompface-height)) nil)) + ;;(uncompface-big-shift -16) + ;;(uncompface-big-mask 65535) + (y 0) x) + (mapc (lambda (c) + (and (>= c ?!) (<= c ?~) + (uncompface-big-mul-add (1+ (- ?~ ?!)) (- c ?!)))) + string) + ;;(uncompface-print-bignum bignum) + ;;(setq y 0) + (uncompface-loop + (setq x 0) + (uncompface-loop + (uncompface-uncompress (+ (* (uncompface-width) y) x) 16 + ;; This is levels[4][3] in compface_private.h. + '(;; Top of tree almost always grey + (( 1 . 255) (251 . 0) ( 4 . 251)) + (( 1 . 255) (200 . 0) ( 55 . 200)) + (( 33 . 223) (159 . 0) ( 64 . 159)) + ;; Grey disallowed at bottom + ((131 . 0) ( 0 . 0) (125 . 131)))) + (< (setq x (+ x 16)) (uncompface-width))) + (< (setq y (+ y 16)) (uncompface-height))) + (setq y 0) + (let ((i 0) guesses k) + (uncompface-loop + (setq guesses (cond ((= y 1) (nth 2 (uncompface-guesses))) + ((= y 2) (nth 1 (uncompface-guesses))) + (t (nth 0 (uncompface-guesses)))) + x 0) + (uncompface-loop + (setq k 0) + (when (>= x 1) + (when (>= x 2) + (when (>= x 3) + (when (>= y 1) + (when (>= y 2) + (when (>= y 3) + (setq k (uncompface-shift-in k -2 -2))) + (setq k (uncompface-shift-in k -1 -2))) + (setq k (uncompface-shift-in k 0 -2)))) + (when (>= y 1) + (when (>= y 2) + (when (>= y 3) + (setq k (uncompface-shift-in k -2 -1))) + (setq k (uncompface-shift-in k -1 -1))) + (setq k (uncompface-shift-in k 0 -1)))) + (when (>= y 2) + (when (>= y 3) + (setq k (uncompface-shift-in k -2 0))) + (setq k (uncompface-shift-in k -1 0))) + (when (>= y 2) + (when (>= y 3) + (setq k (uncompface-shift-in k -2 1))) + (setq k (uncompface-shift-in k -1 1))) + (when (<= x (- (uncompface-width) 2)) + (when (>= y 2) + (when (>= y 3) + (setq k (uncompface-shift-in k -2 2))) + (setq k (uncompface-shift-in k -1 2))))) + (if (aref (car (cond ((= x 1) + (cdr (cdr guesses))) + ((= x 2) + (cdr guesses)) + ((= x (1- (uncompface-width))) + (cdr (cdr (cdr guesses)))) + (t + guesses))) k) + (aset face i (not (aref face i)))) + (setq i (1+ i)) + (< (setq x (1+ x)) (uncompface-width))) + (< (setq y (1+ y)) (uncompface-height)))) + (if raw + face + (concat (eval-when-compile + (format "P1\n%d %d\n" uncompface-width uncompface-height)) + (mapconcat (lambda (bit) (if bit "1" "0")) face " ") + "\n")))) (provide 'compface) +;; Local variables: +;; eval: (put 'uncompface-loop 'lisp-indent-hook 0) +;; End: + ;;; compface.el ends here diff --git a/lisp/deuglify.el b/lisp/deuglify.el index ef10ac4..c8de403 100644 --- a/lisp/deuglify.el +++ b/lisp/deuglify.el @@ -307,71 +307,66 @@ You can control what lines will be unwrapped by frobbing indicating the minimum and maximum length of an unwrapped citation line. If NODISPLAY is non-nil, don't redisplay the article buffer." (interactive "P") - (save-excursion - (let ((case-fold-search nil) - (inhibit-read-only t) - (cite-marks gnus-outlook-deuglify-cite-marks) - (no-wrap gnus-outlook-deuglify-no-wrap-chars) - (stop-chars gnus-outlook-deuglify-unwrap-stop-chars)) - (gnus-with-article-buffer - (article-goto-body) - (while (re-search-forward - (concat - "^\\([ \t" cite-marks "]*\\)" - "\\([" cite-marks "].*[^\n " stop-chars "]\\)[ \t]?\n" - "\\1\\([^\n " cite-marks no-wrap "]+.*\\)$") + (let ((case-fold-search nil) + (inhibit-read-only t) + (cite-marks gnus-outlook-deuglify-cite-marks) + (no-wrap gnus-outlook-deuglify-no-wrap-chars) + (stop-chars gnus-outlook-deuglify-unwrap-stop-chars)) + (gnus-with-article-buffer + (article-goto-body) + (while (re-search-forward + (concat + "^\\([ \t" cite-marks "]*\\)" + "\\([" cite-marks "].*[^\n " stop-chars "]\\)[ \t]?\n" + "\\1\\([^\n " cite-marks no-wrap "]+.*\\)$") nil t) - (let ((len12 (- (match-end 2) (match-beginning 1))) + (let ((len12 (- (match-end 2) (match-beginning 1))) (len3 (- (match-end 3) (match-beginning 3)))) - (if (and (> len12 gnus-outlook-deuglify-unwrap-min) + (when (and (> len12 gnus-outlook-deuglify-unwrap-min) (< (+ len12 len3) gnus-outlook-deuglify-unwrap-max)) - (progn - (replace-match "\\1\\2 \\3") - (goto-char (match-beginning 0))))))))) + (replace-match "\\1\\2 \\3") + (goto-char (match-beginning 0))))))) (unless nodisplay (gnus-outlook-display-article-buffer))) (defun gnus-outlook-rearrange-article (attr-start) "Put the text from ATTR-START to the end of buffer at the top of the article buffer." - (save-excursion - (let ((inhibit-read-only t) - (cite-marks gnus-outlook-deuglify-cite-marks)) - (gnus-with-article-buffer - (article-goto-body) - ;; article does not start with attribution - (unless (= (point) attr-start) - (gnus-kill-all-overlays) - (let ((cur (point)) - ;; before signature or end of buffer - (to (if (gnus-article-search-signature) - (point) - (point-max)))) - ;; handle the case where the full quote is below the - ;; signature - (if (< to attr-start) - (setq to (point-max))) - (transpose-regions cur attr-start attr-start to))))))) + (let ((inhibit-read-only t) + (cite-marks gnus-outlook-deuglify-cite-marks)) + (gnus-with-article-buffer + (article-goto-body) + ;; article does not start with attribution + (unless (= (point) attr-start) + (gnus-kill-all-overlays) + (let ((cur (point)) + ;; before signature or end of buffer + (to (if (gnus-article-search-signature) + (point) + (point-max)))) + ;; handle the case where the full quote is below the + ;; signature + (if (< to attr-start) + (setq to (point-max))) + (transpose-regions cur attr-start attr-start to)))))) ;; John Doe wrote in message ;; news:a87usw8$dklsssa$2@some.news.server... (defun gnus-outlook-repair-attribution-outlook () "Repair a broken attribution line (Outlook)." - (save-excursion - (let ((case-fold-search nil) - (inhibit-read-only t) - (cite-marks gnus-outlook-deuglify-cite-marks)) - (gnus-with-article-buffer - (article-goto-body) - (if (re-search-forward + (let ((case-fold-search nil) + (inhibit-read-only t) + (cite-marks gnus-outlook-deuglify-cite-marks)) + (gnus-with-article-buffer + (article-goto-body) + (when (re-search-forward (concat "^\\([^" cite-marks "].+\\)" "\\(" gnus-outlook-deuglify-attrib-verb-regexp "\\)" "\\(.*\n?[^\n" cite-marks "].*\\)?" "\\(" gnus-outlook-deuglify-attrib-end-regexp "\\)$") nil t) - (progn - (gnus-kill-all-overlays) - (replace-match "\\1\\2\\4") - (match-beginning 0))))))) + (gnus-kill-all-overlays) + (replace-match "\\1\\2\\4") + (match-beginning 0))))) ;; ----- Original Message ----- @@ -382,42 +377,38 @@ NODISPLAY is non-nil, don't redisplay the article buffer." (defun gnus-outlook-repair-attribution-block () "Repair a big broken attribution block." - (save-excursion - (let ((case-fold-search nil) - (inhibit-read-only t) - (cite-marks gnus-outlook-deuglify-cite-marks)) - (gnus-with-article-buffer - (article-goto-body) - (if (re-search-forward - (concat "^[" cite-marks " \t]*--* ?[^-]+ [^-]+ ?--*\\s *\n" + (let ((case-fold-search nil) + (inhibit-read-only t) + (cite-marks gnus-outlook-deuglify-cite-marks)) + (gnus-with-article-buffer + (article-goto-body) + (when (re-search-forward + (concat "^[" cite-marks " \t]*--* ?[^-]+ [^-]+ ?--*\\s *\n" "[^\n:]+:[ \t]*\\([^\n]+\\)\n" "\\([^\n:]+:[ \t]*[^\n]+\n\\)+") nil t) - (progn - (gnus-kill-all-overlays) - (replace-match "\\1 wrote:\n") - (match-beginning 0))))))) + (gnus-kill-all-overlays) + (replace-match "\\1 wrote:\n") + (match-beginning 0))))) ;; On Wed, 16 Jan 2002 23:23:30 +0100, John Doe wrote: (defun gnus-outlook-repair-attribution-other () "Repair a broken attribution line (other user agents than Outlook)." - (save-excursion - (let ((case-fold-search nil) - (inhibit-read-only t) - (cite-marks gnus-outlook-deuglify-cite-marks)) - (gnus-with-article-buffer - (article-goto-body) - (if (re-search-forward + (let ((case-fold-search nil) + (inhibit-read-only t) + (cite-marks gnus-outlook-deuglify-cite-marks)) + (gnus-with-article-buffer + (article-goto-body) + (when (re-search-forward (concat "^\\("gnus-outlook-deuglify-attrib-cut-regexp"\\)?" "\\([^" cite-marks "].+\\)\n\\([^\n" cite-marks "].*\\)?" "\\(" gnus-outlook-deuglify-attrib-verb-regexp "\\).*" "\\(" gnus-outlook-deuglify-attrib-end-regexp "\\)$") nil t) - (progn - (gnus-kill-all-overlays) - (replace-match "\\4 \\5\\6\\7") - (match-beginning 0))))))) + (gnus-kill-all-overlays) + (replace-match "\\4 \\5\\6\\7") + (match-beginning 0))))) ;;;###autoload (defun gnus-article-outlook-repair-attribution (&optional nodisplay) diff --git a/lisp/dgnushack.el b/lisp/dgnushack.el index 97670f4..7673f74 100644 --- a/lisp/dgnushack.el +++ b/lisp/dgnushack.el @@ -37,8 +37,6 @@ (if (memq 'shift-jis (coding-priority-list)) (set-coding-priority-list (append (delq 'shift-jis (coding-priority-list)) '(shift-jis))))) - ((boundp 'MULE) - (put '*coding-category-sjis* 'priority (length *predefined-category*))) ((featurep 'mule) (if (memq 'coding-category-sjis coding-category-list) (set-coding-priority @@ -58,6 +56,7 @@ (load "cl-macs" nil t)) (defvar srcdir (or (getenv "srcdir") ".")) +(defvar loaddir (and load-file-name (file-name-directory load-file-name))) (defvar dgnushack-w3-directory (let ((w3dir (getenv "W3DIR"))) (unless (zerop (length w3dir)) @@ -136,49 +135,13 @@ than subr.el." (put 'car 'side-effect-free tmp))) ad-do-it)))) -(when (boundp 'MULE) - (let (current-load-list) - ;; Make the function to be silent at compile-time. - (defun locate-library (library &optional nosuffix) - "Show the full path name of Emacs library LIBRARY. -This command searches the directories in `load-path' like `M-x load-library' -to find the file that `M-x load-library RET LIBRARY RET' would load. -Optional second arg NOSUFFIX non-nil means don't add suffixes `.elc' or `.el' -to the specified name LIBRARY (a la calling `load' instead of `load-library')." - (interactive "sLocate library: ") - (catch 'answer - (mapcar - '(lambda (dir) - (mapcar - '(lambda (suf) - (let ((try (expand-file-name (concat library suf) dir))) - (and (file-readable-p try) - (null (file-directory-p try)) - (progn - (or noninteractive - (message "Library is file %s" try)) - (throw 'answer try))))) - (if nosuffix '("") '(".elc" ".el" "")))) - load-path) - (or noninteractive - (message "No library %s in search path" library)) - nil)) - (byte-compile 'locate-library))) - -(setq max-specpdl-size 3000) - -(when (equal - (cadr - (byte-optimize-form - '(and - (< 0 1) - (message "The subform `(< 0 1)' should be optimized to t")) - 'for-effect)) - '(< 0 1)) +(when (and (not (featurep 'xemacs)) + (byte-optimize-form '(and (> 0 1) foo) t)) (defadvice byte-optimize-form-code-walker (around fix-bug-in-and/or-forms (form for-effect) activate) - "Fix a bug in the optimizing and/or forms. -It has already been fixed in XEmacs since 1999-12-06." + "Optimize the rest of the and/or forms. +It has been fixed in XEmacs before releasing 21.4 and also has been +fixed in Emacs after 21.3." (if (and for-effect (memq (car-safe form) '(and or))) (let ((fn (car form)) (backwards (reverse (cdr form)))) @@ -195,27 +158,36 @@ It has already been fixed in XEmacs since 1999-12-06." (setq ad-return-value (cons fn (nreverse backwards)))) ad-do-it))) -(condition-case nil - (char-after) - (wrong-number-of-arguments - ;; Optimize byte code for `char-after'. - (put 'char-after 'byte-optimizer 'byte-optimize-char-after) - (defun byte-optimize-char-after (form) - (if (null (cdr form)) - '(char-after (point)) - form)))) - -(condition-case nil - (char-before) - (wrong-number-of-arguments - ;; Optimize byte code for `char-before'. - (put 'char-before 'byte-optimizer 'byte-optimize-char-before) - (defun byte-optimize-char-before (form) - (if (null (cdr form)) - '(char-before (point)) - form)))) - -(load (expand-file-name "dgnuspath.el" srcdir) nil nil t) +;; Add `early-package-load-path' to `load-path' for XEmacs. Those paths +;; won't appear in `load-path' when XEmacs starts with the `-no-autoloads' +;; option because of a bug. :< +(when (and (featurep 'xemacs) + (string-match "--package-path=\\([^ ]+\\)" + system-configuration-options)) + (let ((paths + (apply 'nconc + (mapcar + (lambda (path) + (when (file-directory-p + (setq path (expand-file-name "lisp" path))) + (directory-files path t))) + (split-string (match-string 1 system-configuration-options) + "::")))) + path adds) + (while paths + (setq path (car paths) + paths (cdr paths)) + (when (and path + (not (or (string-match "/\\.\\.?\\'" path) + (member (file-name-as-directory path) load-path) + (member path load-path))) + (file-directory-p path)) + (push (file-name-as-directory path) adds))) + (setq load-path (nconc (nreverse adds) load-path)))) + +(if (file-exists-p (expand-file-name "dgnuspath.el" srcdir)) + (load (expand-file-name "dgnuspath.el" srcdir) nil nil t) + (message " ** There's no dgnuspath.el file")) (condition-case err (load "~/.lpath.el" t nil t) @@ -274,18 +246,30 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. load-path))) (add-path "semi") -(push srcdir load-path) -(load (expand-file-name "lpath.el" srcdir) nil t t) - -(load (expand-file-name "gnus-clfns.el" srcdir) nil t t) +(when (and (featurep 'xemacs) + (let ((table (copy-syntax-table emacs-lisp-mode-syntax-table))) + (modify-syntax-entry ?= " " table) + (with-temp-buffer + (with-syntax-table table + (insert "foo=bar") + (goto-char (point-min)) + (forward-sexp 1) + (eolp))))) + ;; The original `with-syntax-table' uses `copy-syntax-table' which + ;; doesn't seem to copy modified syntax entries in XEmacs 21.5. + (defmacro with-syntax-table (syntab &rest body) + "Evaluate BODY with the SYNTAB as the current syntax table." + `(let ((stab (syntax-table))) + (unwind-protect + (progn + ;;(set-syntax-table (copy-syntax-table ,syntab)) + (set-syntax-table ,syntab) + ,@body) + (set-syntax-table stab))))) -(when (boundp 'MULE) - ;; Bind the function `base64-encode-string' before loading canlock. - ;; Since canlock will bind it as an autoloaded function, it causes - ;; damage to define the function by MEL. - (load (expand-file-name "base64.el" srcdir) nil t t) - ;; Load special macros for compiling canlock.el. - (load (expand-file-name "canlock-om.el" srcdir) nil t t)) +(push srcdir load-path) +(push loaddir load-path) +(load (expand-file-name "lpath.el" loaddir) nil t) (require 'custom) @@ -300,198 +284,7 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. byte-compile-function-environment))) form) -(condition-case nil - :symbol-for-testing-whether-colon-keyword-is-available-or-not - (void-variable - (defun dgnushack-bind-colon-keywords () - "Bind all the colon keywords for old Emacsen." - (let ((cache (expand-file-name "dgnuskwds.el" srcdir)) - (makefile (expand-file-name "Makefile" srcdir)) - (buffer (get-buffer-create " *colon keywords*")) - keywords ignores files file dirs dir form elem make-backup-files) - (save-excursion - (set-buffer buffer) - (let (buffer-file-format - format-alist - insert-file-contents-post-hook - insert-file-contents-pre-hook - jam-zcat-filename-list - jka-compr-compression-info-list) - (if (and (file-exists-p cache) - (file-exists-p makefile) - (file-newer-than-file-p cache makefile)) - (progn - (insert-file-contents cache nil nil nil t) - (setq keywords (read buffer))) - (setq - ignores - '(:symbol-for-testing-whether-colon-keyword-is-available-or-not - ;; The following keywords will be bound by CUSTOM. - :get :group :initialize :link :load :options :prefix - :require :set :tag :type) - files (list (locate-library "semi-def") - (locate-library "mailcap") - (locate-library "mime-def") - (locate-library "path-util") - (locate-library "poem")) - dirs (list (file-name-as-directory (expand-file-name srcdir)))) - (while files - (when (setq file (pop files)) - (setq dir (file-name-directory file)) - (unless (member dir dirs) - (push dir dirs)))) - (message "Searching for all the colon keywords in:") - (while dirs - (setq dir (pop dirs)) - (message " %s..." dir) - (setq files (directory-files dir t - "\\.el\\(\\.gz\\|\\.bz2\\)?$")) - (while files - (setq file (pop files)) - (if (string-match "\\(\\.gz$\\)\\|\\.bz2$" file) - (let ((temp (expand-file-name "dgnustemp.el" srcdir))) - (when - (let* ((binary (if (boundp 'MULE) - '*noconv* - 'binary)) - (coding-system-for-read binary) - (coding-system-for-write binary) - (input-coding-system binary) - (output-coding-system binary) - (default-process-coding-system - (cons binary binary)) - call-process-hook) - (insert-file-contents file nil nil nil t) - (when - (condition-case code - (progn - (if (match-beginning 1) - (call-process-region - (point-min) (point-max) - "gzip" t buffer nil "-cd") - (call-process-region - (point-min) (point-max) - "bzip2" t buffer nil "-d")) - t) - (error - (erase-buffer) - (message "In file %s: %s" file code) - nil)) - (write-region (point-min) (point-max) temp - nil 'silent) - t)) - (unwind-protect - (insert-file-contents temp nil nil nil t) - (delete-file temp)))) - (insert-file-contents file nil nil nil t)) - (while (setq form (condition-case nil - (read buffer) - (error nil))) - (when (listp form) - (while form - (setq elem (car-safe form) - form (cdr-safe form)) - (unless (memq (car-safe elem) - '(defcustom defface defgroup - define-widget quote)) - (while (consp elem) - (push (car elem) form) - (setq elem (cdr elem))) - (when (and elem - (symbolp elem) - (not (eq ': elem)) - (eq ?: (aref (symbol-name elem) 0)) - (not (memq elem ignores)) - (not (memq elem keywords))) - (push elem keywords)))))))) - (setq keywords (sort keywords - (lambda (a b) - (string-lessp (symbol-name a) - (symbol-name b))))) - (erase-buffer) - (insert (format "%s" keywords)) - (write-region (point-min) (point) cache nil 'silent) - (message - "The following colon keywords will be bound at run-time:\n %s" - keywords)))) - (kill-buffer buffer) - (defconst dgnushack-colon-keywords keywords) - (while keywords - (set (car keywords) (car keywords)) - (setq keywords (cdr keywords))))) - (byte-compile 'dgnushack-bind-colon-keywords) - (dgnushack-bind-colon-keywords))) - -(when (boundp 'MULE) - (setq :version ':version - :set-after ':set-after) - (require 'custom) - (defadvice custom-handle-keyword - (around dont-signal-an-error-even-if-unsupported-keyword-is-given - activate) - "Don't signal an error even if unsupported keyword is given." - (if (not (memq (ad-get-arg 1) '(:version :set-after))) - ad-do-it))) - -(when (boundp 'MULE) - (put 'custom-declare-face 'byte-optimizer - 'byte-optimize-ignore-unsupported-custom-keywords) - (put 'custom-declare-group 'byte-optimizer - 'byte-optimize-ignore-unsupported-custom-keywords) - (defun byte-optimize-ignore-unsupported-custom-keywords (form) - (if (or (memq ':version (nthcdr 4 form)) - (memq ':set-after (nthcdr 4 form))) - (let ((newform (list (car form) (nth 1 form) - (nth 2 form) (nth 3 form))) - (args (nthcdr 4 form))) - (while args - (or (memq (car args) '(:version :set-after)) - (setq newform (nconc newform (list (car args) - (car (cdr args)))))) - (setq args (cdr (cdr args)))) - newform) - form)) - - (put 'custom-declare-variable 'byte-hunk-handler - 'byte-compile-file-form-custom-declare-variable) - (defun byte-compile-file-form-custom-declare-variable (form) - ;; Bind defcustom'ed variables. - (if (memq 'free-vars byte-compile-warnings) - (setq byte-compile-bound-variables - (cons (nth 1 (nth 1 form)) byte-compile-bound-variables))) - (if (memq ':version (nthcdr 4 form)) - ;; Make the variable uncustomizable. - `(defvar ,(nth 1 (nth 1 form)) ,(nth 1 (nth 2 form)) - ,(substring (nth 3 form) (if (string-match "^[\t *]+" (nth 3 form)) - (match-end 0) - 0))) - ;; Ignore unsupported keyword(s). - (if (memq ':set-after (nthcdr 4 form)) - (let ((newform (list (car form) (nth 1 form) - (nth 2 form) (nth 3 form))) - (args (nthcdr 4 form))) - (while args - (or (eq (car args) ':set-after) - (setq newform (nconc newform (list (car args) - (car (cdr args)))))) - (setq args (cdr (cdr args)))) - newform) - form))) - - (defadvice byte-compile-inline-expand (around ignore-built-in-functions - (form) activate) - "Ignore built-in functions." - (let* ((name (car form)) - (fn (and (fboundp name) - (symbol-function name)))) - (if (subrp fn) - ;; Give up on inlining. - (setq ad-return-value form) - ad-do-it)))) - ;; Unknown variables and functions. -(unless (boundp 'buffer-file-coding-system) - (defvar buffer-file-coding-system (symbol-value 'file-coding-system))) (unless (featurep 'xemacs) (defalias 'Custom-make-dependencies 'ignore) (defalias 'update-autoloads-from-directory 'ignore)) @@ -505,11 +298,6 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. (eval-and-compile (when (featurep 'xemacs) - ;; XEmacs 21.1 needs some extra hand holding - (when (eq emacs-minor-version 1) - (autoload 'custom-declare-face "cus-face" nil t) - (autoload 'cl-compile-time-init "cl-macs" nil t) - (autoload 'defadvice "advice" nil nil 'macro)) (unless (fboundp 'defadvice) (autoload 'defadvice "advice" nil nil 'macro)) (autoload 'Info-directory "info" nil t) @@ -519,12 +307,15 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. (autoload 'apropos-command "apropos" nil t) (autoload 'bbdb-complete-name "bbdb-com" nil t) (autoload 'browse-url "browse-url" nil t) + (autoload 'c-mode "cc-mode" nil t) (autoload 'customize-apropos "cus-edit" nil t) (autoload 'customize-save-variable "cus-edit" nil t) (autoload 'customize-variable "cus-edit" nil t) (autoload 'delete-annotation "annotations") (autoload 'dolist "cl-macs" nil nil 'macro) (autoload 'enriched-decode "enriched") + (autoload 'executable-find "executable") + (autoload 'font-lock-fontify-buffer "font-lock" nil t) (autoload 'info "info" nil t) (autoload 'make-annotation "annotations") (autoload 'make-display-table "disp-table") @@ -538,6 +329,7 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. (if (emacs-version>= 21 5) (autoload 'setenv "process" nil t) (autoload 'setenv "env" nil t)) + (autoload 'sgml-mode "psgml" nil t) (autoload 'smtpmail-send-it "smtpmail") (autoload 'sort-numeric-fields "sort" nil t) (autoload 'sort-subr "sort") @@ -573,7 +365,8 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. (autoload 'std11-unfold-region "nnheader")) (defconst dgnushack-unexporting-files - (append '("dgnushack.el" "dgnuspath.el" "dgnuskwds.el" "lpath.el") + (append '("dgnushack.el" "dgnuspath.el" "dgnuskwds.el" "lpath.el" + "legacy-gnus-agent.el") (unless (or (condition-case code (require 'w3-parse) (error @@ -629,17 +422,13 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again. "")) '("gnus-bbdb.el"))) (unless (featurep 'xemacs) - '("gnus-xmas.el" "messagexmas.el" "nnheaderxm.el")) - (when (and (not (featurep 'xemacs)) - (<= emacs-major-version 20)) - '("smiley.el")) + '("gnus-xmas.el" "messagexmas.el" "nnheaderxm.el" + "run-at-time.el")) (when (and (fboundp 'base64-decode-string) (subrp (symbol-function 'base64-decode-string))) '("base64.el")) (when (and (fboundp 'md5) (subrp (symbol-function 'md5))) '("md5.el")) - (unless (boundp 'MULE) - '("canlock-om.el")) (when (featurep 'xemacs) '("gnus-load.el"))) "Files which will not be installed.") @@ -671,20 +460,9 @@ dgnushack-compile." (defun dgnushack-compile (&optional warn) ;;(setq byte-compile-dynamic t) - (when (and (not (featurep 'xemacs)) - (< emacs-major-version 21)) - (setq max-specpdl-size 1200)) (unless warn (setq byte-compile-warnings '(free-vars unresolved callargs redefine))) - (unless (locate-library "cus-edit") - (error "You do not seem to have Custom installed. -Fetch it from . -You also then need to add the following to the lisp/dgnushack.el file: - - (push \"~/lisp/custom\" load-path) - -Modify to suit your needs.")) ;; Show `load-path'. (message "load-path=(\"%s\")" @@ -729,22 +507,14 @@ Modify to suit your needs.")) (expand-file-name "cus-load.el" srcdir))) (defun dgnushack-make-cus-load () - (when (condition-case nil - (load "cus-dep") - (error - (when (boundp 'MULE) - (if (file-exists-p "../contrib/cus-dep.el") - ;; Use cus-dep.el of the version of Emacs 20.7. - (load-file "../contrib/cus-dep.el") - (error "\ -You need contrib/cus-dep.el to build T-gnus with Mule 2.3@19.34; exiting."))))) - (let ((cusload-base-file dgnushack-cus-load-file)) - (if (fboundp 'custom-make-dependencies) - (custom-make-dependencies) - (Custom-make-dependencies)) - (when (featurep 'xemacs) - (message "Compiling %s..." dgnushack-cus-load-file) - (byte-compile-file dgnushack-cus-load-file))))) + (load "cus-dep") + (let ((cusload-base-file dgnushack-cus-load-file)) + (if (fboundp 'custom-make-dependencies) + (custom-make-dependencies) + (Custom-make-dependencies)) + (when (featurep 'xemacs) + (message "Compiling %s..." dgnushack-cus-load-file) + (byte-compile-file dgnushack-cus-load-file)))) (defun dgnushack-make-auto-load () (require 'autoload) @@ -921,19 +691,4 @@ You need contrib/cus-dep.el to build T-gnus with Mule 2.3@19.34; exiting."))))) (while (setq file (pop files)) (insert "info/" file "\n")))))) - -(define-compiler-macro describe-key-briefly (&whole form key &optional insert) - (if (condition-case nil - (progn - (describe-key-briefly '((())) nil) - t) - (wrong-number-of-arguments nil);; Old Emacsen. - (error t)) - form - (if insert - `(if ,insert - (insert (funcall 'describe-key-briefly ,key)) - (funcall 'describe-key-briefly ,key)) - `(funcall 'describe-key-briefly ,key)))) - ;;; dgnushack.el ends here diff --git a/lisp/dns.el b/lisp/dns.el index f21bb99..19ab3ba 100644 --- a/lisp/dns.el +++ b/lisp/dns.el @@ -50,11 +50,12 @@ If nil, /etc/resolv.conf will be consulted.") (MR 9) (NULL 10) (WKS 11) - (PRT 12) + (PTR 12) (HINFO 13) (MINFO 14) (MX 15) (TXT 16) + (AAAA 28) ; RFC3596 (AXFR 252) (MAILB 253) (MAILA 254) @@ -251,6 +252,12 @@ If TCP-P, the first two bytes of the package with be the length field." (push (list slot qs) spec))) (nreverse spec)))) +(defun dns-read-int32 () + ;; Full 32 bit Integers can't be handled by Emacs. If we use + ;; floats, it works. + (format "%.0f" (+ (* (dns-read-bytes 1) 16777216.0) + (dns-read-bytes 3)))) + (defun dns-read-type (string type) (let ((buffer (current-buffer)) (point (point))) @@ -264,9 +271,22 @@ If TCP-P, the first two bytes of the package with be the length field." (dotimes (i 4) (push (dns-read-bytes 1) bytes)) (mapconcat 'number-to-string (nreverse bytes) "."))) - ((eq type 'NS) - (dns-read-string-name string buffer)) - ((eq type 'CNAME) + ((eq type 'AAAA) + (let (hextets) + (dotimes (i 8) + (push (dns-read-bytes 2) hextets)) + (mapconcat (lambda (n) (format "%x" n)) (nreverse hextets) ":"))) + ((eq type 'SOA) + (list (list 'mname (dns-read-name buffer)) + (list 'rname (dns-read-name buffer)) + (list 'serial (dns-read-int32)) + (list 'refresh (dns-read-int32)) + (list 'retry (dns-read-int32)) + (list 'expire (dns-read-int32)) + (list 'minimum (dns-read-int32)))) + ((eq type 'MX) + (cons (dns-read-bytes 2) (dns-read-name buffer))) + ((or (eq type 'CNAME) (eq type 'NS) (eq type 'PTR)) (dns-read-string-name string buffer)) (t string))) (goto-char point)))) @@ -281,16 +301,12 @@ If TCP-P, the first two bytes of the package with be the length field." (setq dns-servers (nreverse dns-servers))))) ;;; Interface functions. -(eval-when-compile - (when (featurep 'xemacs) - (require 'gnus-xmas))) - (defmacro dns-make-network-process (server) (if (featurep 'xemacs) `(let ((coding-system-for-read 'binary) (coding-system-for-write 'binary)) - (gnus-xmas-open-network-stream "dns" (current-buffer) - ,server "domain" 'udp)) + (open-network-stream "dns" (current-buffer) + ,server "domain" 'udp)) `(let ((server ,server) (coding-system-for-read 'binary) (coding-system-for-write 'binary) diff --git a/lisp/flow-fill.el b/lisp/flow-fill.el index f72bf5b..c800699 100644 --- a/lisp/flow-fill.el +++ b/lisp/flow-fill.el @@ -1,4 +1,4 @@ -;;; flow-fill.el --- interprete RFC2646 "flowed" text +;;; flow-fill.el --- interpret RFC2646 "flowed" text ;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. @@ -70,17 +70,6 @@ RFC 2646 suggests 66 characters for readability." (sexp) (integer))) -(eval-and-compile - (defalias 'fill-flowed-point-at-bol - (if (fboundp 'point-at-bol) - 'point-at-bol - 'line-beginning-position)) - - (defalias 'fill-flowed-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position))) - ;;;###autoload (defun fill-flowed-encode (&optional buffer) (with-current-buffer (or buffer (current-buffer)) @@ -142,8 +131,8 @@ RFC 2646 suggests 66 characters for readability." (let ((fill-prefix (when quote (concat quote " "))) (fill-column (eval fill-flowed-display-column)) filladapt-mode) - (fill-region (fill-flowed-point-at-bol) - (min (1+ (fill-flowed-point-at-eol)) + (fill-region (point-at-bol) + (min (1+ (point-at-eol)) (point-max)) 'left 'nosqueeze)) (error diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 4b2eea2..eea914b 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -1,5 +1,5 @@ ;;; gnus-agent.el --- unplugged support for Semi-gnus -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'gnus) (require 'gnus-cache) @@ -156,9 +155,9 @@ If this is `ask' the hook will query the user." :group 'gnus-agent) (defcustom gnus-agent-consider-all-articles nil - "When non-`nil', the agent will let the agent predicate decide + "When non-nil, the agent will let the agent predicate decide whether articles need to be downloaded or not, for all articles. When -`nil', the default, the agent will only let the predicate decide +nil, the default, the agent will only let the predicate decide whether unread articles are downloaded or not. If you enable this, groups with large active ranges may open slower and you may also want to look into the agent expiry settings to block the expiration of @@ -200,6 +199,21 @@ See Info node `(gnus)Server Buffer'." :type '(repeat symbol) :group 'gnus-agent) +(defcustom gnus-agent-queue-mail t + "Whether and when outgoing mail should be queued by the agent. +When `always', always queue outgoing mail. When nil, never +queue. Otherwise, queue if and only if unplugged." + :group 'gnus-agent + :type '(radio (const :format "Always" always) + (const :format "Never" nil) + (const :format "When plugged" t))) + +(defcustom gnus-agent-prompt-send-queue nil + "If non-nil, `gnus-group-send-queue' will prompt if called when +unplugged." + :group 'gnus-agent + :type 'boolean) + ;;; Internal variables (defvar gnus-agent-history-buffers nil) @@ -226,7 +240,9 @@ NOTES: (defvar gnus-agent-send-mail-function nil) (defvar gnus-agent-file-coding-system 'raw-text) (defvar gnus-agent-file-loading-cache nil) -(defvar gnus-agent-file-header-cache nil) +(defvar gnus-agent-total-fetched-hashtb nil) +(defvar gnus-agent-inhibit-update-total-fetched-for nil) +(defvar gnus-agent-need-update-total-fetched-for nil) ;; Dynamic variables (defvar gnus-headers) @@ -266,6 +282,17 @@ NOTES: ;;; Utility functions ;;; +(defmacro gnus-agent-with-refreshed-group (group &rest body) + "Performs the body then updates the group's line in the group +buffer. Automatically blocks multiple updates due to recursion." +`(prog1 (let ((gnus-agent-inhibit-update-total-fetched-for t)) ,@body) + (when (and gnus-agent-need-update-total-fetched-for + (not gnus-agent-inhibit-update-total-fetched-for)) + (save-excursion + (set-buffer gnus-group-buffer) + (setq gnus-agent-need-update-total-fetched-for nil) + (gnus-group-update-group ,group t))))) + (defun gnus-agent-read-file (file) "Load FILE and do a `read' there." (with-temp-buffer @@ -355,11 +382,9 @@ manipulated as follows: (gnus-agent-cat-defaccessor gnus-agent-cat-score-file agent-score-file) (gnus-agent-cat-defaccessor - gnus-agent-cat-disable-undownloaded-faces agent-disable-undownloaded-faces) -(gnus-agent-cat-defaccessor gnus-agent-cat-enable-undownloaded-faces agent-enable-undownloaded-faces) -(eval-when-compile +(eval-and-compile (defsetf gnus-agent-cat-groups (category) (groups) (list 'gnus-agent-set-cat-groups category groups))) @@ -622,7 +647,7 @@ minor mode in all Gnus buffers." (unless gnus-agent-send-mail-function (setq gnus-agent-send-mail-function (or message-send-mail-real-function - message-send-mail-function) + (function (lambda () (funcall message-send-mail-function)))) message-send-mail-real-function 'gnus-agent-send-mail)) ;; If the servers file doesn't exist, auto-agentize some servers and @@ -655,7 +680,8 @@ Optional arg GROUP-NAME allows to specify another group." 'gnus-dummy '((gnus-draft-mode))))) (defun gnus-agent-send-mail () - (if gnus-plugged + (if (or (not gnus-agent-queue-mail) + (and gnus-plugged (not (eq gnus-agent-queue-mail 'always)))) (funcall gnus-agent-send-mail-function) (goto-char (point-min)) (re-search-forward @@ -816,6 +842,56 @@ be a select method." (cadr method))))) (gnus-agent-synchronize-flags-server method))) +;;;###autoload +(defun gnus-agent-rename-group (old-group new-group) + "Rename fully-qualified OLD-GROUP as NEW-GROUP. Always updates the agent, even when +disabled, as the old agent files would corrupt gnus when the agent was +next enabled. Depends upon the caller to determine whether group renaming is supported." + (let* ((old-command-method (gnus-find-method-for-group old-group)) + (old-path (directory-file-name + (let (gnus-command-method old-command-method) + (gnus-agent-group-pathname old-group)))) + (new-command-method (gnus-find-method-for-group new-group)) + (new-path (directory-file-name + (let (gnus-command-method new-command-method) + (gnus-agent-group-pathname new-group))))) + (gnus-rename-file old-path new-path t) + + (let* ((old-real-group (gnus-group-real-name old-group)) + (new-real-group (gnus-group-real-name new-group)) + (old-active (gnus-agent-get-group-info old-command-method old-real-group))) + (gnus-agent-save-group-info old-command-method old-real-group nil) + (gnus-agent-save-group-info new-command-method new-real-group old-active) + + (let ((old-local (gnus-agent-get-local old-group + old-real-group old-command-method))) + (gnus-agent-set-local old-group + nil nil + old-real-group old-command-method) + (gnus-agent-set-local new-group + (car old-local) (cdr old-local) + new-real-group new-command-method))))) + +;;;###autoload +(defun gnus-agent-delete-group (group) + "Delete fully-qualified GROUP. Always updates the agent, even when +disabled, as the old agent files would corrupt gnus when the agent was +next enabled. Depends upon the caller to determine whether group deletion is supported." + (let* ((command-method (gnus-find-method-for-group group)) + (path (directory-file-name + (let (gnus-command-method command-method) + (gnus-agent-group-pathname group))))) + (gnus-delete-file path) + + (let* ((real-group (gnus-group-real-name group))) + (gnus-agent-save-group-info command-method real-group nil) + + (let ((local (gnus-agent-get-local group + real-group command-method))) + (gnus-agent-set-local group + nil nil + real-group command-method))))) + ;;; ;;; Server mode commands ;;; @@ -899,9 +975,7 @@ be a select method." "Write the alist of covered servers." (gnus-make-directory (nnheader-concat gnus-agent-directory "lib")) (let ((coding-system-for-write nnheader-file-coding-system) - (output-coding-system nnheader-file-coding-system) - (file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (file-name-coding-system nnmail-pathname-coding-system)) (with-temp-file (nnheader-concat gnus-agent-directory "lib/servers") (prin1 gnus-agent-covered-methods (current-buffer))))) @@ -962,11 +1036,9 @@ article's mark is toggled." (setq gnus-newsgroup-downloadable (delq article gnus-newsgroup-downloadable)) (gnus-article-mark article)) - (progn - (setq gnus-newsgroup-downloadable - (gnus-add-to-sorted-list gnus-newsgroup-downloadable article)) - gnus-downloadable-mark) - ) + (setq gnus-newsgroup-downloadable + (gnus-add-to-sorted-list gnus-newsgroup-downloadable article)) + gnus-downloadable-mark) 'unread)))) (defun gnus-agent-get-undownloaded-list () @@ -1089,10 +1161,6 @@ Optional arg ALL, if non-nil, means to fetch all articles." (setq gnus-newsgroup-downloadable (delq article gnus-newsgroup-downloadable)) - ;; The downloadable mark is implemented as a - ;; type of read mark. Therefore, marking the - ;; article as unread is sufficient to clear - ;; its downloadable flag. (gnus-summary-mark-article article gnus-unread-mark)) (was-marked-downloadable (gnus-summary-set-agent-mark article t))) @@ -1117,95 +1185,79 @@ This can be added to `gnus-select-article-hook' or ;;; Internal functions ;;; -;;; NOTES: -;;; The agent's active range is defined as follows: -;;; If the agent has no record of the group, use the actual active -;;; range. -;;; If the agent has a record, set the agent's active range to -;;; include the max limit of the actual active range. -;;; When expiring, update the min limit to match the smallest of the -;;; min article not expired or the min actual active range. - (defun gnus-agent-save-active (method) - (gnus-agent-save-active-1 method 'gnus-active-to-gnus-format)) - -(defun gnus-agent-save-active-1 (method function) (when (gnus-agent-method-p method) (let* ((gnus-command-method method) (new (gnus-make-hashtable (count-lines (point-min) (point-max)))) (file (gnus-agent-lib-file "active"))) - (funcall function nil new) + (gnus-active-to-gnus-format nil new) (gnus-agent-write-active file new) (erase-buffer) (nnheader-insert-file-contents file)))) -(defun gnus-agent-write-active (file new &optional literal-replacement) - (let ((old new)) - (when (and (not literal-replacement) - (file-exists-p file)) - (setq old (gnus-make-hashtable (count-lines (point-min) (point-max)))) - (with-temp-buffer - (nnheader-insert-file-contents file) - (gnus-active-to-gnus-format nil old)) - ;; Iterate over the current active groups, the current active - ;; range may expand, but NOT CONTRACT, the agent's active range. - (mapatoms - (lambda (nsym) - (let ((new-active (and nsym (boundp nsym) (symbol-value nsym)))) - (when new-active - (let* ((osym (intern (symbol-name nsym) old)) - (old-active (and (boundp osym) (symbol-value osym)))) - (if old-active - (let ((new-min (car new-active)) - (old-min (car old-active)) - (new-max (cdr new-active)) - (old-max (cdr old-active))) - (if (and (integerp new-min) - (< new-min old-min)) - (setcar old-active new-min)) - (if (and (integerp new-max) - (> new-max old-max)) - (setcdr old-active new-max))) - (set osym new-active)))))) - new)) +(defun gnus-agent-write-active (file new) (gnus-make-directory (file-name-directory file)) (let ((nnmail-active-file-coding-system gnus-agent-file-coding-system)) ;; The hashtable contains real names of groups. However, do NOT ;; add the foreign server prefix as gnus-active-to-gnus-format ;; will add it while reading the file. - (gnus-write-active-file file old nil)))) + (gnus-write-active-file file new nil))) -(defun gnus-agent-possibly-alter-active (group active) +(defun gnus-agent-possibly-alter-active (group active &optional info) "Possibly expand a group's active range to include articles downloaded into the agent." - -;; I can't use the agent's active file here as there is no practical -;; mechanism to update the active ranges in that file as the oldest -;; articles are removed from the agent. (let* ((gnus-command-method (or gnus-command-method - (gnus-find-method-for-group group))) - (alist (gnus-agent-load-alist group))) - - (let ((new-min (or (caar gnus-agent-article-alist) - (car active))) - (new-max (or (caar (last gnus-agent-article-alist)) - (cdr active)))) - - (when (< new-min (car active)) - (setcar active new-min)) - (when (> new-max (cdr active)) - (setcdr active new-max))))) - -(defun gnus-agent-save-groups (method) - (gnus-agent-save-active-1 method 'gnus-groups-to-gnus-format)) + (gnus-find-method-for-group group)))) + (when (gnus-agent-method-p gnus-command-method) + (let* ((local (gnus-agent-get-local group)) + (active-min (or (car active) 0)) + (active-max (or (cdr active) 0)) + (agent-min (or (car local) active-min)) + (agent-max (or (cdr local) active-max))) + + (when (< agent-min active-min) + (setcar active agent-min)) + + (when (> agent-max active-max) + (setcdr active agent-max)) + + (when (and info (< agent-max (- active-min 100))) + ;; I'm expanding the active range by such a large amount + ;; that there is a gap of more than 100 articles between the + ;; last article known to the agent and the first article + ;; currently available on the server. This gap contains + ;; articles that have been lost, mark them as read so that + ;; gnus doesn't waste resources trying to fetch them. + + ;; NOTE: I don't do this for smaller gaps (< 100) as I don't + ;; want to modify the local file everytime someone restarts + ;; gnus. The small gap will cause a tiny performance hit + ;; when gnus tries, and fails, to retrieve the articles. + ;; Still that should be smaller than opening a buffer, + ;; printing this list to the buffer, and then writing it to a + ;; file. + + (let ((read (gnus-info-read info))) + (gnus-info-set-read + info + (gnus-range-add + read + (list (cons (1+ agent-max) + (1- active-min)))))) + + ;; Lie about the agent's local range for this group to + ;; disable the set read each time this server is opened. + ;; NOTE: Opening this group will restore the valid local + ;; range but it will also expand the local range to + ;; incompass the new active range. + (gnus-agent-set-local group agent-min (1- active-min))))))) (defun gnus-agent-save-group-info (method group active) + "Update a single group's active range in the agent's copy of the server's active file." (when (gnus-agent-method-p method) - (let* ((gnus-command-method method) + (let* ((gnus-command-method (or method gnus-command-method)) (coding-system-for-write nnheader-file-coding-system) - (output-coding-system nnheader-file-coding-system) (file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system) (file (gnus-agent-lib-file "active")) oactive-min oactive-max) (gnus-make-directory (file-name-directory file)) @@ -1219,15 +1271,39 @@ downloaded into the agent." (when (re-search-forward (concat "^" (regexp-quote group) " ") nil t) (save-excursion - (setq oactive-max (read (current-buffer)) ;; max + (setq oactive-max (read (current-buffer)) ;; max oactive-min (read (current-buffer)))) ;; min (gnus-delete-line))) - (insert (format "%S %d %d y\n" (intern group) - (max (or oactive-max (cdr active)) (cdr active)) - (min (or oactive-min (car active)) (car active)))) - (goto-char (point-max)) - (while (search-backward "\\." nil t) - (delete-char 1)))))) + (when active + (insert (format "%S %d %d y\n" (intern group) + (max (or oactive-max (cdr active)) (cdr active)) + (min (or oactive-min (car active)) (car active)))) + (goto-char (point-max)) + (while (search-backward "\\." nil t) + (delete-char 1))))))) + +(defun gnus-agent-get-group-info (method group) + "Get a single group's active range in the agent's copy of the server's active file." + (when (gnus-agent-method-p method) + (let* ((gnus-command-method (or method gnus-command-method)) + (coding-system-for-write nnheader-file-coding-system) + (file-name-coding-system nnmail-pathname-coding-system) + (file (gnus-agent-lib-file "active")) + oactive-min oactive-max) + (gnus-make-directory (file-name-directory file)) + (with-temp-buffer + ;; Emacs got problem to match non-ASCII group in multibyte buffer. + (mm-disable-multibyte) + (when (file-exists-p file) + (nnheader-insert-file-contents file) + + (goto-char (point-min)) + (when (re-search-forward + (concat "^" (regexp-quote group) " ") nil t) + (save-excursion + (setq oactive-max (read (current-buffer)) ;; max + oactive-min (read (current-buffer))) ;; min + (cons oactive-min oactive-max)))))))) (defun gnus-agent-group-path (group) "Translate GROUP into a file name." @@ -1428,6 +1504,8 @@ downloaded into the agent." (setq pos (cdr pos))))) (gnus-agent-save-alist group (cdr fetched-articles) date) + (gnus-agent-update-files-total-fetched-for group (cdr fetched-articles)) + (gnus-message 7 "")) (cdr fetched-articles)))))) @@ -1499,7 +1577,7 @@ and that there are no duplicates." (gnus-message 1 "Overview buffer contains garbage '%s'." (buffer-substring - p (gnus-point-at-eol)))) + p (point-at-eol)))) ((= cur prev-num) (or backed-up (setq backed-up (gnus-agent-backup-overview-buffer))) @@ -1653,6 +1731,7 @@ article numbers will be returned." (write-region-as-coding-system gnus-agent-file-coding-system (point-min) (point-max) file nil 'silent) + (gnus-agent-update-view-total-fetched-for group t) (gnus-agent-save-alist group articles nil) articles) (ignore-errors @@ -1759,54 +1838,58 @@ FILE and places the combined headers into `nntp-server-buffer'." (defun gnus-agent-read-agentview (file) "Load FILE and do a `read' there." (with-temp-buffer - (ignore-errors - (nnheader-insert-file-contents file) - (goto-char (point-min)) - (let ((alist (read (current-buffer))) - (version (condition-case nil (read (current-buffer)) - (end-of-file 0))) - changed-version) - - (cond - ((= version 0) - (let ((inhibit-quit t) - entry) - (gnus-agent-open-history) - (set-buffer (gnus-agent-history-buffer)) - (goto-char (point-min)) - (while (not (eobp)) - (if (and (looking-at - "[^\t\n]+\t\\([0-9]+\\)\t\\([^ \n]+\\) \\([0-9]+\\)") - (string= (match-string 2) - gnus-agent-read-agentview) - (setq entry (assoc (string-to-number (match-string 3)) alist))) - (setcdr entry (string-to-number (match-string 1)))) - (forward-line 1)) - (gnus-agent-close-history) - (setq changed-version t))) - ((= version 1) - (setq changed-version (not (= 1 gnus-agent-article-alist-save-format)))) - ((= version 2) - (let (uncomp) - (mapcar - (lambda (comp-list) - (let ((state (car comp-list)) - (sequence (gnus-uncompress-sequence - (cdr comp-list)))) - (mapcar (lambda (article-id) - (setq uncomp (cons (cons article-id state) uncomp))) - sequence))) - alist) - (setq alist (sort uncomp 'car-less-than-car))))) - (when changed-version - (let ((gnus-agent-article-alist alist)) - (gnus-agent-save-alist gnus-agent-read-agentview))) - alist)))) - -(defun gnus-agent-save-alist (group &optional articles state dir) + (condition-case nil + (progn + (nnheader-insert-file-contents file) + (goto-char (point-min)) + (let ((alist (read (current-buffer))) + (version (condition-case nil (read (current-buffer)) + (end-of-file 0))) + changed-version) + + (cond + ((< version 2) + (error "gnus-agent-read-agentview no longer supports version %d. Stop gnus, manually evaluate gnus-agent-convert-to-compressed-agentview, then restart gnus." version)) + ((= version 0) + (let ((inhibit-quit t) + entry) + (gnus-agent-open-history) + (set-buffer (gnus-agent-history-buffer)) + (goto-char (point-min)) + (while (not (eobp)) + (if (and (looking-at + "[^\t\n]+\t\\([0-9]+\\)\t\\([^ \n]+\\) \\([0-9]+\\)") + (string= (match-string 2) + gnus-agent-read-agentview) + (setq entry (assoc (string-to-number (match-string 3)) alist))) + (setcdr entry (string-to-number (match-string 1)))) + (forward-line 1)) + (gnus-agent-close-history) + (setq changed-version t))) + ((= version 1) + (setq changed-version (not (= 1 gnus-agent-article-alist-save-format)))) + ((= version 2) + (let (uncomp) + (mapcar + (lambda (comp-list) + (let ((state (car comp-list)) + (sequence (inline + (gnus-uncompress-range + (cdr comp-list))))) + (mapcar (lambda (article-id) + (setq uncomp (cons (cons article-id state) uncomp))) + sequence))) + alist) + (setq alist (sort uncomp 'car-less-than-car))))) + (when changed-version + (let ((gnus-agent-article-alist alist)) + (gnus-agent-save-alist gnus-agent-read-agentview))) + alist)) + (file-error nil)))) + +(defun gnus-agent-save-alist (group &optional articles state) "Save the article-state alist for GROUP." (let* ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system) (prev (cons nil gnus-agent-article-alist)) (all prev) print-level print-length item article) @@ -1823,12 +1906,13 @@ FILE and places the combined headers into `nntp-server-buffer'." (setcdr (cadr prev) state))) (setq prev (cdr prev))) (setq gnus-agent-article-alist (cdr all)) - (if dir - (gnus-make-directory dir) - (gnus-make-directory (gnus-agent-article-name "" group))) - (with-temp-file (if dir - (expand-file-name ".agentview" dir) - (gnus-agent-article-name ".agentview" group)) + + (gnus-agent-set-local group + (caar gnus-agent-article-alist) + (caar (last gnus-agent-article-alist))) + + (gnus-make-directory (gnus-agent-article-name "" group)) + (with-temp-file (gnus-agent-article-name ".agentview" group) (cond ((eq gnus-agent-article-alist-save-format 1) (princ gnus-agent-article-alist (current-buffer))) ((eq gnus-agent-article-alist-save-format 2) @@ -1852,7 +1936,147 @@ FILE and places the combined headers into `nntp-server-buffer'." (princ compressed (current-buffer))))) (insert "\n") (princ gnus-agent-article-alist-save-format (current-buffer)) - (insert "\n")))) + (insert "\n")) + + (gnus-agent-update-view-total-fetched-for group nil))) + +(defvar gnus-agent-article-local nil) +(defvar gnus-agent-file-loading-local nil) + +(defun gnus-agent-load-local (&optional method) + "Load the METHOD'S local file. The local file contains min/max +article counts for each of the method's subscribed groups." + (let ((gnus-command-method (or method gnus-command-method))) + (setq gnus-agent-article-local + (gnus-cache-file-contents + (gnus-agent-lib-file "local") + 'gnus-agent-file-loading-local + 'gnus-agent-read-and-cache-local)))) + +(defun gnus-agent-read-and-cache-local (file) + "Load and read FILE then bind its contents to +gnus-agent-article-local. If that variable had `dirty' (also known as +modified) original contents, they are first saved to their own file." + + (if (and gnus-agent-article-local + (symbol-value (intern "+dirty" gnus-agent-article-local))) + (gnus-agent-save-local)) + (gnus-agent-read-local file)) + +(defun gnus-agent-read-local (file) + "Load FILE and do a `read' there." + (let ((my-obarray (gnus-make-hashtable (count-lines (point-min) + (point-max)))) + (line 1)) + (with-temp-buffer + (condition-case nil + (let ((nnheader-file-coding-system gnus-agent-file-coding-system)) + (nnheader-insert-file-contents file)) + (file-error)) + + (goto-char (point-min)) + ;; Skip any comments at the beginning of the file (the only place where they may appear) + (while (= (following-char) ?\;) + (forward-line 1) + (setq line (1+ line))) + + (while (not (eobp)) + (condition-case err + (let (group + min + max + (cur (current-buffer))) + (setq group (read cur) + min (read cur) + max (read cur)) + + (when (stringp group) + (setq group (intern group my-obarray))) + + ;; NOTE: The '+ 0' ensure that min and max are both numerics. + (set group (cons (+ 0 min) (+ 0 max)))) + (error + (gnus-message 3 "Warning - invalid agent local: %s on line %d: " + file line (error-message-string err)))) + (forward-line 1) + (setq line (1+ line)))) + + (set (intern "+dirty" my-obarray) nil) + (set (intern "+method" my-obarray) gnus-command-method) + my-obarray)) + +(defun gnus-agent-save-local (&optional force) + "Save gnus-agent-article-local under it method's agent.lib directory." + (let ((my-obarray gnus-agent-article-local)) + (when (and my-obarray + (or force (symbol-value (intern "+dirty" my-obarray)))) + (let* ((gnus-command-method (symbol-value (intern "+method" my-obarray))) + ;; NOTE: gnus-command-method is used within gnus-agent-lib-file. + (dest (gnus-agent-lib-file "local"))) + (gnus-make-directory (gnus-agent-lib-file "")) + + (let ((buffer-file-coding-system gnus-agent-file-coding-system)) + (with-temp-file dest + (let ((gnus-command-method (symbol-value (intern "+method" my-obarray))) + (file-name-coding-system nnmail-pathname-coding-system) + print-level print-length item article + (standard-output (current-buffer))) + (mapatoms (lambda (symbol) + (cond ((not (boundp symbol)) + nil) + ((member (symbol-name symbol) '("+dirty" "+method")) + nil) + (t + (prin1 symbol) + (let ((range (symbol-value symbol))) + (princ " ") + (princ (car range)) + (princ " ") + (princ (cdr range)) + (princ "\n"))))) + my-obarray)))))))) + +(defun gnus-agent-get-local (group &optional gmane method) + (let* ((gmane (or gmane (gnus-group-real-name group))) + (gnus-command-method (or method (gnus-find-method-for-group group))) + (local (gnus-agent-load-local)) + (symb (intern gmane local)) + (minmax (and (boundp symb) (symbol-value symb)))) + (unless minmax + ;; Bind these so that gnus-agent-load-alist doesn't change the + ;; current alist (i.e. gnus-agent-article-alist) + (let* ((gnus-agent-article-alist gnus-agent-article-alist) + (gnus-agent-file-loading-cache gnus-agent-file-loading-cache) + (alist (gnus-agent-load-alist group))) + (when alist + (setq minmax + (cons (caar alist) + (caar (last alist)))) + (gnus-agent-set-local group (car minmax) (cdr minmax) + gmane gnus-command-method local)))) + minmax)) + +(defun gnus-agent-set-local (group min max &optional gmane method local) + (let* ((gmane (or gmane (gnus-group-real-name group))) + (gnus-command-method (or method (gnus-find-method-for-group group))) + (local (or local (gnus-agent-load-local))) + (symb (intern gmane local)) + (minmax (and (boundp symb) (symbol-value symb)))) + + (if (cond ((and minmax + (or (not (eq min (car minmax))) + (not (eq max (cdr minmax))))) + (setcar minmax min) + (setcdr minmax max) + t) + (minmax + nil) + ((and min max) + (set symb (cons min max)) + t) + (t + (unintern symb local))) + (set (intern "+dirty" local) t)))) (defun gnus-agent-article-name (article group) (expand-file-name article @@ -1901,13 +2125,14 @@ FILE and places the combined headers into `nntp-server-buffer'." group gnus-command-method) (error (unless (funcall gnus-agent-confirmation-function - (format "Error %s. Continue? " + (format "Error %s while fetching session. Should gnus continue? " (error-message-string err))) (error "Cannot fetch articles into the Gnus agent"))) (quit + (gnus-agent-regenerate-group group) (unless (funcall gnus-agent-confirmation-function (format - "Quit fetching session %s. Continue? " + "%s while fetching session. Should gnus continue? " (error-message-string err))) (signal 'quit "Cannot fetch articles into the Gnus agent"))))))))) @@ -2256,7 +2481,7 @@ The following commands are available: (gnus-category-position-point))) (defun gnus-category-name () - (or (intern (get-text-property (gnus-point-at-bol) 'gnus-category)) + (or (intern (get-text-property (point-at-bol) 'gnus-category)) (error "No category on the current line"))) (defun gnus-category-read () @@ -2592,7 +2817,7 @@ FORCE is equivalent to setting the expiration predicates to true." (if (not group) (gnus-agent-expire articles group force) (let ( ;; Bind gnus-agent-expire-stats to enable tracking of - ;; expiration statistics of this single group + ;; expiration statistics of this single group (gnus-agent-expire-stats (list 0 0 0.0))) (if (or (not (eq articles t)) (yes-or-no-p @@ -2613,8 +2838,7 @@ FORCE is equivalent to setting the expiration predicates to true." (save-excursion (gnus-agent-expire-group-1 group overview (gnus-gethash-safe group orig) - articles force)) - (gnus-agent-write-active active-file orig t))) + articles force)))) (kill-buffer overview)))) (gnus-message 4 (gnus-agent-expire-done-message))))) @@ -2624,334 +2848,341 @@ FORCE is equivalent to setting the expiration predicates to true." ;; provided a non-nil active (let ((dir (gnus-agent-group-pathname group))) - (when (boundp 'gnus-agent-expire-current-dirs) - (set 'gnus-agent-expire-current-dirs - (cons dir - (symbol-value 'gnus-agent-expire-current-dirs)))) - - (if (and (not force) - (eq 'DISABLE (gnus-agent-find-parameter group - 'agent-enable-expiration))) - (gnus-message 5 "Expiry skipping over %s" group) - (gnus-message 5 "Expiring articles in %s" group) - (gnus-agent-load-alist group) - (let* ((stats (if (boundp 'gnus-agent-expire-stats) - ;; Use the list provided by my caller - (symbol-value 'gnus-agent-expire-stats) - ;; otherwise use my own temporary list - (list 0 0 0.0))) - (info (gnus-get-info group)) - (alist gnus-agent-article-alist) - (day (- (time-to-days (current-time)) - (gnus-agent-find-parameter group 'agent-days-until-old))) - (specials (if (and alist - (not force)) - ;; This could be a bit of a problem. I need to - ;; keep the last article to avoid refetching - ;; headers when using nntp in the backend. At - ;; the same time, if someone uses a backend - ;; that supports article moving then I may have - ;; to remove the last article to complete the - ;; move. Right now, I'm going to assume that - ;; FORCE overrides specials. - (list (caar (last alist))))) - (unreads ;; Articles that are excluded from the - ;; expiration process - (cond (gnus-agent-expire-all - ;; All articles are marked read by global decree - nil) - ((eq articles t) - ;; All articles are marked read by function - ;; parameter - nil) - ((not articles) - ;; Unread articles are marked protected from - ;; expiration Don't call - ;; gnus-list-of-unread-articles as it returns - ;; articles that have not been fetched into the - ;; agent. - (ignore-errors - (gnus-agent-unread-articles group))) - (t - ;; All articles EXCEPT those named by the caller - ;; are protected from expiration - (gnus-sorted-difference - (gnus-uncompress-range - (cons (caar alist) - (caar (last alist)))) - (sort articles '<))))) - (marked ;; More articles that are excluded from the - ;; expiration process - (cond (gnus-agent-expire-all - ;; All articles are unmarked by global decree - nil) - ((eq articles t) - ;; All articles are unmarked by function - ;; parameter - nil) - (articles - ;; All articles may as well be unmarked as the - ;; unreads list already names the articles we are - ;; going to keep - nil) - (t - ;; Ticked and/or dormant articles are excluded - ;; from expiration - (nconc - (gnus-uncompress-range - (cdr (assq 'tick (gnus-info-marks info)))) - (gnus-uncompress-range - (cdr (assq 'dormant - (gnus-info-marks info)))))))) - (nov-file (concat dir ".overview")) - (cnt 0) - (completed -1) - dlist - type) - - ;; The normal article alist contains elements that look like - ;; (article# . fetch_date) I need to combine other - ;; information with this list. For example, a flag indicating - ;; that a particular article MUST BE KEPT. To do this, I'm - ;; going to transform the elements to look like (article# - ;; fetch_date keep_flag NOV_entry_marker) Later, I'll reverse - ;; the process to generate the expired article alist. - - ;; Convert the alist elements to (article# fetch_date nil - ;; nil). - (setq dlist (mapcar (lambda (e) - (list (car e) (cdr e) nil nil)) alist)) - - ;; Convert the keep lists to elements that look like (article# - ;; nil keep_flag nil) then append it to the expanded dlist - ;; These statements are sorted by ascending precidence of the - ;; keep_flag. - (setq dlist (nconc dlist - (mapcar (lambda (e) - (list e nil 'unread nil)) - unreads))) - (setq dlist (nconc dlist - (mapcar (lambda (e) - (list e nil 'marked nil)) - marked))) - (setq dlist (nconc dlist - (mapcar (lambda (e) - (list e nil 'special nil)) - specials))) - - (set-buffer overview) - (erase-buffer) - (buffer-disable-undo) - (when (file-exists-p nov-file) - (gnus-message 7 "gnus-agent-expire: Loading overview...") - (nnheader-insert-file-contents nov-file) - (goto-char (point-min)) - - (let (p) - (while (< (setq p (point)) (point-max)) - (condition-case nil - ;; If I successfully read an integer (the plus zero - ;; ensures a numeric type), prepend a marker entry - ;; to the list - (push (list (+ 0 (read (current-buffer))) nil nil - (set-marker (make-marker) p)) - dlist) - (error - (gnus-message 1 "gnus-agent-expire: read error \ + (gnus-agent-with-refreshed-group + group + (when (boundp 'gnus-agent-expire-current-dirs) + (set 'gnus-agent-expire-current-dirs + (cons dir + (symbol-value 'gnus-agent-expire-current-dirs)))) + + (if (and (not force) + (eq 'DISABLE (gnus-agent-find-parameter group + 'agent-enable-expiration))) + (gnus-message 5 "Expiry skipping over %s" group) + (gnus-message 5 "Expiring articles in %s" group) + (gnus-agent-load-alist group) + (let* ((bytes-freed 0) + (size-files-deleted 0.0) + (files-deleted 0) + (nov-entries-deleted 0) + (info (gnus-get-info group)) + (alist gnus-agent-article-alist) + (day (- (time-to-days (current-time)) + (gnus-agent-find-parameter group 'agent-days-until-old))) + (specials (if (and alist + (not force)) + ;; This could be a bit of a problem. I need to + ;; keep the last article to avoid refetching + ;; headers when using nntp in the backend. At + ;; the same time, if someone uses a backend + ;; that supports article moving then I may have + ;; to remove the last article to complete the + ;; move. Right now, I'm going to assume that + ;; FORCE overrides specials. + (list (caar (last alist))))) + (unreads ;; Articles that are excluded from the + ;; expiration process + (cond (gnus-agent-expire-all + ;; All articles are marked read by global decree + nil) + ((eq articles t) + ;; All articles are marked read by function + ;; parameter + nil) + ((not articles) + ;; Unread articles are marked protected from + ;; expiration Don't call + ;; gnus-list-of-unread-articles as it returns + ;; articles that have not been fetched into the + ;; agent. + (ignore-errors + (gnus-agent-unread-articles group))) + (t + ;; All articles EXCEPT those named by the caller + ;; are protected from expiration + (gnus-sorted-difference + (gnus-uncompress-range + (cons (caar alist) + (caar (last alist)))) + (sort articles '<))))) + (marked ;; More articles that are excluded from the + ;; expiration process + (cond (gnus-agent-expire-all + ;; All articles are unmarked by global decree + nil) + ((eq articles t) + ;; All articles are unmarked by function + ;; parameter + nil) + (articles + ;; All articles may as well be unmarked as the + ;; unreads list already names the articles we are + ;; going to keep + nil) + (t + ;; Ticked and/or dormant articles are excluded + ;; from expiration + (nconc + (gnus-uncompress-range + (cdr (assq 'tick (gnus-info-marks info)))) + (gnus-uncompress-range + (cdr (assq 'dormant + (gnus-info-marks info)))))))) + (nov-file (concat dir ".overview")) + (cnt 0) + (completed -1) + dlist + type) + + ;; The normal article alist contains elements that look like + ;; (article# . fetch_date) I need to combine other + ;; information with this list. For example, a flag indicating + ;; that a particular article MUST BE KEPT. To do this, I'm + ;; going to transform the elements to look like (article# + ;; fetch_date keep_flag NOV_entry_marker) Later, I'll reverse + ;; the process to generate the expired article alist. + + ;; Convert the alist elements to (article# fetch_date nil + ;; nil). + (setq dlist (mapcar (lambda (e) + (list (car e) (cdr e) nil nil)) alist)) + + ;; Convert the keep lists to elements that look like (article# + ;; nil keep_flag nil) then append it to the expanded dlist + ;; These statements are sorted by ascending precidence of the + ;; keep_flag. + (setq dlist (nconc dlist + (mapcar (lambda (e) + (list e nil 'unread nil)) + unreads))) + (setq dlist (nconc dlist + (mapcar (lambda (e) + (list e nil 'marked nil)) + marked))) + (setq dlist (nconc dlist + (mapcar (lambda (e) + (list e nil 'special nil)) + specials))) + + (set-buffer overview) + (erase-buffer) + (buffer-disable-undo) + (when (file-exists-p nov-file) + (gnus-message 7 "gnus-agent-expire: Loading overview...") + (nnheader-insert-file-contents nov-file) + (goto-char (point-min)) + + (let (p) + (while (< (setq p (point)) (point-max)) + (condition-case nil + ;; If I successfully read an integer (the plus zero + ;; ensures a numeric type), prepend a marker entry + ;; to the list + (push (list (+ 0 (read (current-buffer))) nil nil + (set-marker (make-marker) p)) + dlist) + (error + (gnus-message 1 "gnus-agent-expire: read error \ occurred when reading expression at %s in %s. Skipping to next \ line." (point) nov-file))) - ;; Whether I succeeded, or failed, it doesn't matter. - ;; Move to the next line then try again. - (forward-line 1))) - - (gnus-message - 7 "gnus-agent-expire: Loading overview... Done")) - (set-buffer-modified-p nil) - - ;; At this point, all of the information is in dlist. The - ;; only problem is that much of it is spread across multiple - ;; entries. Sort then MERGE!! - (gnus-message 7 "gnus-agent-expire: Sorting entries... ") - ;; If two entries have the same article-number then sort by - ;; ascending keep_flag. - (let ((special 0) - (marked 1) - (unread 2)) - (setq dlist - (sort dlist - (lambda (a b) - (cond ((< (nth 0 a) (nth 0 b)) - t) - ((> (nth 0 a) (nth 0 b)) - nil) - (t - (let ((a (or (symbol-value (nth 2 a)) - 3)) - (b (or (symbol-value (nth 2 b)) - 3))) - (<= a b)))))))) - (gnus-message 7 "gnus-agent-expire: Sorting entries... Done") - (gnus-message 7 "gnus-agent-expire: Merging entries... ") - (let ((dlist dlist)) - (while (cdr dlist) ; I'm not at the end-of-list - (if (eq (caar dlist) (caadr dlist)) - (let ((first (cdr (car dlist))) - (secnd (cdr (cadr dlist)))) - (setcar first (or (car first) - (car secnd))) ; fetch_date - (setq first (cdr first) - secnd (cdr secnd)) - (setcar first (or (car first) - (car secnd))) ; Keep_flag - (setq first (cdr first) - secnd (cdr secnd)) - (setcar first (or (car first) - (car secnd))) ; NOV_entry_marker - - (setcdr dlist (cddr dlist))) - (setq dlist (cdr dlist))))) - (gnus-message 7 "gnus-agent-expire: Merging entries... Done") - - (let* ((len (float (length dlist))) - (alist (list nil)) - (tail-alist alist)) - (while dlist - (let ((new-completed (truncate (* 100.0 - (/ (setq cnt (1+ cnt)) - len)))) - message-log-max) - (when (> new-completed completed) - (setq completed new-completed) - (gnus-message 7 "%3d%% completed..." completed))) - (let* ((entry (car dlist)) - (article-number (nth 0 entry)) - (fetch-date (nth 1 entry)) - (keep (nth 2 entry)) - (marker (nth 3 entry))) - - (cond - ;; Kept articles are unread, marked, or special. - (keep - (gnus-agent-message 10 - "gnus-agent-expire: %s:%d: Kept %s article%s." - group article-number keep (if fetch-date " and file" "")) - (when fetch-date - (unless (file-exists-p - (concat dir (number-to-string - article-number))) - (setf (nth 1 entry) nil) - (gnus-agent-message 3 "gnus-agent-expire cleared \ + ;; Whether I succeeded, or failed, it doesn't matter. + ;; Move to the next line then try again. + (forward-line 1))) + + (gnus-message + 7 "gnus-agent-expire: Loading overview... Done")) + (set-buffer-modified-p nil) + + ;; At this point, all of the information is in dlist. The + ;; only problem is that much of it is spread across multiple + ;; entries. Sort then MERGE!! + (gnus-message 7 "gnus-agent-expire: Sorting entries... ") + ;; If two entries have the same article-number then sort by + ;; ascending keep_flag. + (let ((special 0) + (marked 1) + (unread 2)) + (setq dlist + (sort dlist + (lambda (a b) + (cond ((< (nth 0 a) (nth 0 b)) + t) + ((> (nth 0 a) (nth 0 b)) + nil) + (t + (let ((a (or (symbol-value (nth 2 a)) + 3)) + (b (or (symbol-value (nth 2 b)) + 3))) + (<= a b)))))))) + (gnus-message 7 "gnus-agent-expire: Sorting entries... Done") + (gnus-message 7 "gnus-agent-expire: Merging entries... ") + (let ((dlist dlist)) + (while (cdr dlist) ; I'm not at the end-of-list + (if (eq (caar dlist) (caadr dlist)) + (let ((first (cdr (car dlist))) + (secnd (cdr (cadr dlist)))) + (setcar first (or (car first) + (car secnd))) ; fetch_date + (setq first (cdr first) + secnd (cdr secnd)) + (setcar first (or (car first) + (car secnd))) ; Keep_flag + (setq first (cdr first) + secnd (cdr secnd)) + (setcar first (or (car first) + (car secnd))) ; NOV_entry_marker + + (setcdr dlist (cddr dlist))) + (setq dlist (cdr dlist))))) + (gnus-message 7 "gnus-agent-expire: Merging entries... Done") + + (let* ((len (float (length dlist))) + (alist (list nil)) + (tail-alist alist)) + (while dlist + (let ((new-completed (truncate (* 100.0 + (/ (setq cnt (1+ cnt)) + len)))) + message-log-max) + (when (> new-completed completed) + (setq completed new-completed) + (gnus-message 7 "%3d%% completed..." completed))) + (let* ((entry (car dlist)) + (article-number (nth 0 entry)) + (fetch-date (nth 1 entry)) + (keep (nth 2 entry)) + (marker (nth 3 entry))) + + (cond + ;; Kept articles are unread, marked, or special. + (keep + (gnus-agent-message 10 + "gnus-agent-expire: %s:%d: Kept %s article%s." + group article-number keep (if fetch-date " and file" "")) + (when fetch-date + (unless (file-exists-p + (concat dir (number-to-string + article-number))) + (setf (nth 1 entry) nil) + (gnus-agent-message 3 "gnus-agent-expire cleared \ download flag on %s:%d as the cached article file is missing." - group (caar dlist))) - (unless marker - (gnus-message 1 "gnus-agent-expire detected a \ + group (caar dlist))) + (unless marker + (gnus-message 1 "gnus-agent-expire detected a \ missing NOV entry. Run gnus-agent-regenerate-group to restore it."))) - (gnus-agent-append-to-list - tail-alist - (cons article-number fetch-date))) - - ;; The following articles are READ, UNMARKED, and - ;; ORDINARY. See if they can be EXPIRED!!! - ((setq type - (cond - ((not (integerp fetch-date)) - 'read) ;; never fetched article (may expire - ;; right now) - ((not (file-exists-p - (concat dir (number-to-string - article-number)))) - (setf (nth 1 entry) nil) - 'externally-expired) ;; Can't find the cached - ;; article. Handle case - ;; as though this article - ;; was never fetched. - - ;; We now have the arrival day, so we see - ;; whether it's old enough to be expired. - ((< fetch-date day) - 'expired) - (force - 'forced))) - - ;; I found some reason to expire this entry. - - (let ((actions nil)) - (when (memq type '(forced expired)) - (ignore-errors ; Just being paranoid. - (let ((file-name (concat dir (number-to-string - article-number)))) - (incf (nth 2 stats) (nth 7 (file-attributes file-name))) - (incf (nth 1 stats)) - (delete-file file-name)) - (push "expired cached article" actions)) - (setf (nth 1 entry) nil) - ) - - (when marker - (push "NOV entry removed" actions) - (goto-char marker) - - (incf (nth 0 stats)) - - (let ((from (gnus-point-at-bol)) - (to (progn (forward-line 1) (point)))) - (incf (nth 2 stats) (- to from)) - (delete-region from to))) - - ;; If considering all articles is set, I can only - ;; expire article IDs that are no longer in the - ;; active range (That is, articles that preceed the - ;; first article in the new alist). - (if (and gnus-agent-consider-all-articles - (>= article-number (car active))) - ;; I have to keep this ID in the alist - (gnus-agent-append-to-list - tail-alist (cons article-number fetch-date)) - (push (format "Removed %s article number from \ + (gnus-agent-append-to-list + tail-alist + (cons article-number fetch-date))) + + ;; The following articles are READ, UNMARKED, and + ;; ORDINARY. See if they can be EXPIRED!!! + ((setq type + (cond + ((not (integerp fetch-date)) + 'read) ;; never fetched article (may expire + ;; right now) + ((not (file-exists-p + (concat dir (number-to-string + article-number)))) + (setf (nth 1 entry) nil) + 'externally-expired) ;; Can't find the cached + ;; article. Handle case + ;; as though this article + ;; was never fetched. + + ;; We now have the arrival day, so we see + ;; whether it's old enough to be expired. + ((< fetch-date day) + 'expired) + (force + 'forced))) + + ;; I found some reason to expire this entry. + + (let ((actions nil)) + (when (memq type '(forced expired)) + (ignore-errors ; Just being paranoid. + (let* ((file-name (nnheader-concat dir (number-to-string + article-number))) + (size (float (nth 7 (file-attributes file-name))))) + (incf bytes-freed size) + (incf size-files-deleted size) + (incf files-deleted) + (delete-file file-name)) + (push "expired cached article" actions)) + (setf (nth 1 entry) nil) + ) + + (when marker + (push "NOV entry removed" actions) + (goto-char marker) + + (incf nov-entries-deleted) + + (let ((from (point-at-bol)) + (to (progn (forward-line 1) (point)))) + (incf bytes-freed (- to from)) + (delete-region from to))) + + ;; If considering all articles is set, I can only + ;; expire article IDs that are no longer in the + ;; active range (That is, articles that preceed the + ;; first article in the new alist). + (if (and gnus-agent-consider-all-articles + (>= article-number (car active))) + ;; I have to keep this ID in the alist + (gnus-agent-append-to-list + tail-alist (cons article-number fetch-date)) + (push (format "Removed %s article number from \ article alist" type) actions)) - (when actions - (gnus-agent-message 8 "gnus-agent-expire: %s:%d: %s" - group article-number - (mapconcat 'identity actions ", "))))) - (t - (gnus-agent-message - 10 "gnus-agent-expire: %s:%d: Article kept as \ + (when actions + (gnus-agent-message 8 "gnus-agent-expire: %s:%d: %s" + group article-number + (mapconcat 'identity actions ", "))))) + (t + (gnus-agent-message + 10 "gnus-agent-expire: %s:%d: Article kept as \ expiration tests failed." group article-number) - (gnus-agent-append-to-list - tail-alist (cons article-number fetch-date))) - ) + (gnus-agent-append-to-list + tail-alist (cons article-number fetch-date))) + ) + + ;; Clean up markers as I want to recycle this buffer + ;; over several groups. + (when marker + (set-marker marker nil)) - ;; Clean up markers as I want to recycle this buffer - ;; over several groups. - (when marker - (set-marker marker nil)) + (setq dlist (cdr dlist)))) - (setq dlist (cdr dlist)))) + (setq alist (cdr alist)) - (setq alist (cdr alist)) + (let ((inhibit-quit t)) + (unless (equal alist gnus-agent-article-alist) + (setq gnus-agent-article-alist alist) + (gnus-agent-save-alist group)) - (let ((inhibit-quit t)) - (unless (equal alist gnus-agent-article-alist) - (setq gnus-agent-article-alist alist) - (gnus-agent-save-alist group) + (when (buffer-modified-p) + (gnus-make-directory dir) + (write-region-as-coding-system gnus-agent-file-coding-system + (point-min) (point-max) nov-file + nil 'silent) + ;; clear the modified flag as that I'm not confused by + ;; its status on the next pass through this routine. + (set-buffer-modified-p nil) + (gnus-agent-update-view-total-fetched-for group t)) - ;; The active list changed, set the agent's active range - ;; to match the beginning of the list. - (if alist - (setcar active (caar alist)))) + (when (eq articles t) + (gnus-summary-update-info)))) - (when (buffer-modified-p) - (gnus-make-directory dir) - (write-region-as-coding-system gnus-agent-file-coding-system - (point-min) (point-max) nov-file - nil 'silent) - ;; clear the modified flag as that I'm not confused by - ;; its status on the next pass through this routine. - (set-buffer-modified-p nil)) + (when (boundp 'gnus-agent-expire-stats) + (let ((stats (symbol-value 'gnus-agent-expire-stats))) + (incf (nth 2 stats) bytes-freed) + (incf (nth 1 stats) files-deleted) + (incf (nth 0 stats) nov-entries-deleted))) - (when (eq articles t) - (gnus-summary-update-info)))))))) + (gnus-agent-update-files-total-fetched-for group (- size-files-deleted))))))) (defun gnus-agent-expire (&optional articles group force) "Expire all old articles. @@ -2998,8 +3229,7 @@ articles in every agentized group.")) (when active (save-excursion (gnus-agent-expire-group-1 - expiring-group overview active articles force))))) - (gnus-agent-write-active active-file orig t)))) + expiring-group overview active articles force)))))))) (kill-buffer overview)) (gnus-agent-expire-unagentized-dirs) (gnus-message 4 (gnus-agent-expire-done-message)))))) @@ -3275,18 +3505,20 @@ has been fetched." (set-buffer nntp-server-buffer) (copy-to-buffer gnus-agent-overview-buffer (point-min) (point-max)) - ;; Merge the temp buffer with the known headers (found on - ;; disk in FILE) into the nntp-server-buffer + ;; Merge the temp buffer with the known headers (found on + ;; disk in FILE) into the nntp-server-buffer (when (and uncached-articles (file-exists-p file)) (gnus-agent-braid-nov group uncached-articles file)) - ;; Save the new set of known headers to FILE + ;; Save the new set of known headers to FILE (set-buffer nntp-server-buffer) (gnus-agent-check-overview-buffer) (write-region-as-coding-system gnus-agent-file-coding-system (point-min) (point-max) file nil 'silent) + (gnus-agent-update-view-total-fetched-for group t) + ;; Update the group's article alist to include the newly ;; fetched articles. (gnus-agent-load-alist group) @@ -3328,6 +3560,9 @@ has been fetched." (defun gnus-agent-regenerate-group (group &optional reread) "Regenerate GROUP. If REREAD is t, all articles in the .overview are marked as unread. +If REREAD is a list, the specified articles will be marked as unread. +In addition, their NOV entries in .overview will be refreshed using +the articles' current headers. If REREAD is not nil, downloaded articles are marked as unread." (interactive (list (let ((def (or (gnus-group-group-name) @@ -3341,213 +3576,211 @@ If REREAD is not nil, downloaded articles are marked as unread." def select))) (catch 'mark - (while (let ((c (read-char-exclusive - "Mark as unread: (n)one / (a)ll / all (d)ownloaded articles? (n)" - ))) + (while (let (c + (cursor-in-echo-area t) + (echo-keystrokes 0)) + (message "Mark as unread: (n)one / (a)ll / all (d)ownloaded articles? (n) ") + (setq c (read-char-exclusive)) + (cond ((or (eq c ?\r) (eq c ?n) (eq c ?N)) (throw 'mark nil)) ((or (eq c ?a) (eq c ?A)) (throw 'mark t)) ((or (eq c ?d) (eq c ?D)) (throw 'mark 'some))) - (message "Ignoring unexpected input") + (gnus-message 3 "Ignoring unexpected input") (sit-for 1) t))))) - (when group - (gnus-message 5 "Regenerating in %s" group) - (let* ((gnus-command-method (or gnus-command-method - (gnus-find-method-for-group group))) - (file (gnus-agent-article-name ".overview" group)) - (dir (file-name-directory file)) - point - (downloaded (if (file-exists-p dir) - (sort (mapcar (lambda (name) (string-to-int name)) - (directory-files dir nil "^[0-9]+$" t)) - '>) - (progn (gnus-make-directory dir) nil))) - dl nov-arts - alist header - regenerated) - - (mm-with-unibyte-buffer - (if (file-exists-p file) - (let ((nnheader-file-coding-system - gnus-agent-file-coding-system)) - (nnheader-insert-file-contents file))) - (set-buffer-modified-p nil) - - ;; Load the article IDs found in the overview file. As a - ;; side-effect, validate the file contents. - (let ((load t)) - (while load - (setq load nil) - (goto-char (point-min)) - (while (< (point) (point-max)) - (cond ((and (looking-at "[0-9]+\t") - (<= (- (match-end 0) (match-beginning 0)) 9)) - (push (read (current-buffer)) nov-arts) - (forward-line 1) - (let ((l1 (car nov-arts)) - (l2 (cadr nov-arts))) - (cond ((not l2) - nil) - ((< l1 l2) - (gnus-message 3 "gnus-agent-regenerate-group: NOV\ + (gnus-message 5 "Regenerating in %s" group) + (let* ((gnus-command-method (or gnus-command-method + (gnus-find-method-for-group group))) + (file (gnus-agent-article-name ".overview" group)) + (dir (file-name-directory file)) + point + (downloaded (if (file-exists-p dir) + (sort (mapcar (lambda (name) (string-to-int name)) + (directory-files dir nil "^[0-9]+$" t)) + '>) + (progn (gnus-make-directory dir) nil))) + dl nov-arts + alist header + regenerated) + + (mm-with-unibyte-buffer + (if (file-exists-p file) + (let ((nnheader-file-coding-system + gnus-agent-file-coding-system)) + (nnheader-insert-file-contents file))) + (set-buffer-modified-p nil) + + ;; Load the article IDs found in the overview file. As a + ;; side-effect, validate the file contents. + (let ((load t)) + (while load + (setq load nil) + (goto-char (point-min)) + (while (< (point) (point-max)) + (cond ((and (looking-at "[0-9]+\t") + (<= (- (match-end 0) (match-beginning 0)) 9)) + (push (read (current-buffer)) nov-arts) + (forward-line 1) + (let ((l1 (car nov-arts)) + (l2 (cadr nov-arts))) + (cond ((and (listp reread) (memq l1 reread)) + (gnus-delete-line) + (setq nov-arts (cdr nov-arts)) + (gnus-message 4 "gnus-agent-regenerate-group: NOV\ +entry of article %s deleted." l1)) + ((not l2) + nil) + ((< l1 l2) + (gnus-message 3 "gnus-agent-regenerate-group: NOV\ entries are NOT in ascending order.") - ;; Don't sort now as I haven't verified - ;; that every line begins with a number - (setq load t)) - ((= l1 l2) - (forward-line -1) - (gnus-message 4 "gnus-agent-regenerate-group: NOV\ + ;; Don't sort now as I haven't verified + ;; that every line begins with a number + (setq load t)) + ((= l1 l2) + (forward-line -1) + (gnus-message 4 "gnus-agent-regenerate-group: NOV\ entries contained duplicate of article %s. Duplicate deleted." l1) - (gnus-delete-line) - (setq nov-arts (cdr nov-arts)))))) - (t - (gnus-message 1 "gnus-agent-regenerate-group: NOV\ + (gnus-delete-line) + (setq nov-arts (cdr nov-arts)))))) + (t + (gnus-message 1 "gnus-agent-regenerate-group: NOV\ entries contained line that did not begin with an article number. Deleted\ line.") - (gnus-delete-line)))) - (if load - (progn - (gnus-message 5 "gnus-agent-regenerate-group: Sorting NOV\ + (gnus-delete-line)))) + (when load + (gnus-message 5 "gnus-agent-regenerate-group: Sorting NOV\ entries into ascending order.") - (sort-numeric-fields 1 (point-min) (point-max)) - (setq nov-arts nil))))) - (gnus-agent-check-overview-buffer) - - ;; Construct a new article alist whose nodes match every header - ;; in the .overview file. As a side-effect, missing headers are - ;; reconstructed from the downloaded article file. - (while (or downloaded nov-arts) - (cond ((and downloaded - (or (not nov-arts) - (> (car downloaded) (car nov-arts)))) - ;; This entry is missing from the overview file - (gnus-message 3 "Regenerating NOV %s %d..." group - (car downloaded)) - (let ((file (concat dir (number-to-string (car downloaded))))) - (mm-with-unibyte-buffer - (nnheader-insert-file-contents file) - (nnheader-remove-body) - (setq header (nnheader-parse-naked-head))) - (mail-header-set-number header (car downloaded)) - (if nov-arts - (let ((key (concat "^" (int-to-string (car nov-arts)) - "\t"))) - (or (re-search-backward key nil t) - (re-search-forward key)) - (forward-line 1)) - (goto-char (point-min))) - (nnheader-insert-nov header)) - (setq nov-arts (cons (car downloaded) nov-arts))) - ((eq (car downloaded) (car nov-arts)) - ;; This entry in the overview has been downloaded - (push (cons (car downloaded) - (time-to-days - (nth 5 (file-attributes - (concat dir (number-to-string - (car downloaded))))))) alist) - (setq downloaded (cdr downloaded)) - (setq nov-arts (cdr nov-arts))) - (t - ;; This entry in the overview has not been downloaded - (push (cons (car nov-arts) nil) alist) - (setq nov-arts (cdr nov-arts))))) - - ;; When gnus-agent-consider-all-articles is set, - ;; gnus-agent-regenerate-group should NOT remove article IDs from - ;; the alist. Those IDs serve as markers to indicate that an - ;; attempt has been made to fetch that article's header. - - ;; When gnus-agent-consider-all-articles is NOT set, - ;; gnus-agent-regenerate-group can remove the article ID of every - ;; article (with the exception of the last ID in the list - it's - ;; special) that no longer appears in the overview. In this - ;; situtation, the last article ID in the list implies that it, - ;; and every article ID preceeding it, have been fetched from the - ;; server. - - (if gnus-agent-consider-all-articles - ;; Restore all article IDs that were not found in the overview file. - (let* ((n (cons nil alist)) - (merged n) - (o (gnus-agent-load-alist group))) - (while o - (let ((nID (caadr n)) - (oID (caar o))) - (cond ((not nID) - (setq n (setcdr n (list (list oID)))) - (setq o (cdr o))) - ((< oID nID) - (setcdr n (cons (list oID) (cdr n))) - (setq o (cdr o))) - ((= oID nID) - (setq o (cdr o)) - (setq n (cdr n))) - (t - (setq n (cdr n)))))) - (setq alist (cdr merged))) - ;; Restore the last article ID if it is not already in the new alist - (let ((n (last alist)) - (o (last (gnus-agent-load-alist group)))) - (cond ((not o) - nil) - ((not n) - (push (cons (caar o) nil) alist)) - ((< (caar n) (caar o)) - (setcdr n (list (car o))))))) - - (let ((inhibit-quit t)) - (if (setq regenerated (buffer-modified-p)) - (write-region-as-coding-system - gnus-agent-file-coding-system - (point-min) (point-max) file nil 'silent)) - - (setq regenerated (or regenerated - (and reread gnus-agent-article-alist) - (not (equal alist gnus-agent-article-alist)))) - - (setq gnus-agent-article-alist alist) - - (when regenerated - (gnus-agent-save-alist group) + (sort-numeric-fields 1 (point-min) (point-max)) + (setq nov-arts nil)))) + (gnus-agent-check-overview-buffer) + + ;; Construct a new article alist whose nodes match every header + ;; in the .overview file. As a side-effect, missing headers are + ;; reconstructed from the downloaded article file. + (while (or downloaded nov-arts) + (cond ((and downloaded + (or (not nov-arts) + (> (car downloaded) (car nov-arts)))) + ;; This entry is missing from the overview file + (gnus-message 3 "Regenerating NOV %s %d..." group + (car downloaded)) + (let ((file (concat dir (number-to-string (car downloaded))))) + (mm-with-unibyte-buffer + (nnheader-insert-file-contents file) + (nnheader-remove-body) + (setq header (nnheader-parse-naked-head))) + (mail-header-set-number header (car downloaded)) + (if nov-arts + (let ((key (concat "^" (int-to-string (car nov-arts)) + "\t"))) + (or (re-search-backward key nil t) + (re-search-forward key)) + (forward-line 1)) + (goto-char (point-min))) + (nnheader-insert-nov header)) + (setq nov-arts (cons (car downloaded) nov-arts))) + ((eq (car downloaded) (car nov-arts)) + ;; This entry in the overview has been downloaded + (push (cons (car downloaded) + (time-to-days + (nth 5 (file-attributes + (concat dir (number-to-string + (car downloaded))))))) alist) + (setq downloaded (cdr downloaded)) + (setq nov-arts (cdr nov-arts))) + (t + ;; This entry in the overview has not been downloaded + (push (cons (car nov-arts) nil) alist) + (setq nov-arts (cdr nov-arts))))) + + ;; When gnus-agent-consider-all-articles is set, + ;; gnus-agent-regenerate-group should NOT remove article IDs from + ;; the alist. Those IDs serve as markers to indicate that an + ;; attempt has been made to fetch that article's header. + + ;; When gnus-agent-consider-all-articles is NOT set, + ;; gnus-agent-regenerate-group can remove the article ID of every + ;; article (with the exception of the last ID in the list - it's + ;; special) that no longer appears in the overview. In this + ;; situtation, the last article ID in the list implies that it, + ;; and every article ID preceeding it, have been fetched from the + ;; server. + + (if gnus-agent-consider-all-articles + ;; Restore all article IDs that were not found in the overview file. + (let* ((n (cons nil alist)) + (merged n) + (o (gnus-agent-load-alist group))) + (while o + (let ((nID (caadr n)) + (oID (caar o))) + (cond ((not nID) + (setq n (setcdr n (list (list oID)))) + (setq o (cdr o))) + ((< oID nID) + (setcdr n (cons (list oID) (cdr n))) + (setq o (cdr o))) + ((= oID nID) + (setq o (cdr o)) + (setq n (cdr n))) + (t + (setq n (cdr n)))))) + (setq alist (cdr merged))) + ;; Restore the last article ID if it is not already in the new alist + (let ((n (last alist)) + (o (last (gnus-agent-load-alist group)))) + (cond ((not o) + nil) + ((not n) + (push (cons (caar o) nil) alist)) + ((< (caar n) (caar o)) + (setcdr n (list (car o))))))) + + (let ((inhibit-quit t)) + (if (setq regenerated (buffer-modified-p)) + (write-region-as-coding-system + gnus-agent-file-coding-system + (point-min) (point-max) file nil 'silent)) + + (setq regenerated (or regenerated + (and reread gnus-agent-article-alist) + (not (equal alist gnus-agent-article-alist)))) + + (setq gnus-agent-article-alist alist) + + (when regenerated + (gnus-agent-save-alist group) - ;; I have to alter the group's active range NOW as - ;; gnus-make-ascending-articles-unread will use it to - ;; recalculate the number of unread articles in the group - - (let ((group (gnus-group-real-name group)) - (group-active (gnus-active group))) - (when group-active - (let ((new-min (or (caar gnus-agent-article-alist) - (car group-active))) - (new-max (or (caar (last gnus-agent-article-alist)) - (cdr group-active)))) - - (when (< new-min (car group-active)) - (setcar group-active new-min)) - - (when (> new-max (cdr group-active)) - (setcdr group-active new-max)))))))) - - (when (and reread gnus-agent-article-alist) - (gnus-make-ascending-articles-unread - group - (delq nil (mapcar (function (lambda (c) - (cond ((eq reread t) - (car c)) - ((cdr c) - (car c))))) - gnus-agent-article-alist))) - - (when (gnus-buffer-live-p gnus-group-buffer) - (gnus-group-update-group group t) - (sit-for 0))) - - (gnus-message 5 nil) - regenerated))) + ;; I have to alter the group's active range NOW as + ;; gnus-make-ascending-articles-unread will use it to + ;; recalculate the number of unread articles in the group + + (let ((group (gnus-group-real-name group)) + (group-active (or (gnus-active group) + (gnus-activate-group group)))) + (gnus-agent-possibly-alter-active group group-active))))) + + (when (and reread gnus-agent-article-alist) + (gnus-make-ascending-articles-unread + group + (if (listp reread) + reread + (delq nil (mapcar (function (lambda (c) + (cond ((eq reread t) + (car c)) + ((cdr c) + (car c))))) + gnus-agent-article-alist)))) + + (when regenerated + (gnus-agent-update-files-total-fetched-for group nil))) + + (gnus-message 5 nil) + regenerated))) ;;;###autoload (defun gnus-agent-regenerate (&optional clean reread) @@ -3592,48 +3825,76 @@ If CLEAN, obsolete (ignore)." (defun gnus-agent-group-covered-p (group) (gnus-agent-method-p (gnus-group-method group))) -(add-hook 'gnus-group-prepare-hook - (lambda () - 'gnus-agent-do-once - - (when (listp gnus-agent-expire-days) - (beep) - (beep) - (gnus-message 1 "WARNING: gnus-agent-expire-days no longer\ - supports being set to a list.")(sleep-for 3) - (gnus-message 1 "Change your configuration to set it to an\ - integer.")(sleep-for 3) - (gnus-message 1 "I am now setting group parameters on each\ - group to match the configuration that the list offered.") - - (save-excursion - (let ((groups (gnus-group-listed-groups))) - (while groups - (let* ((group (pop groups)) - (days gnus-agent-expire-days) - (day (catch 'found - (while days - (when (eq 0 (string-match - (caar days) - group)) - (throw 'found (cadar days))) - (setq days (cdr days))) - nil))) - (when day - (gnus-group-set-parameter group 'agent-days-until-old - day)))))) - - (let ((h gnus-group-prepare-hook)) - (while h - (let ((func (pop h))) - (when (and (listp func) - (eq (cadr (caddr func)) 'gnus-agent-do-once)) - (remove-hook 'gnus-group-prepare-hook func) - (setq h nil))))) - - (gnus-message 1 "I have finished setting group parameters on\ - each group. You may now customize your groups and/or topics to control the\ - agent.")))) +(defun gnus-agent-update-files-total-fetched-for + (group delta &optional method path) + "Update, or set, the total disk space used by the articles that the +agent has fetched." + (when gnus-agent-total-fetched-hashtb + (gnus-agent-with-refreshed-group + group + ;; if null, gnus-agent-group-pathname will calc method. + (let* ((gnus-command-method method) + (path (or path (gnus-agent-group-pathname group))) + (entry (or (gnus-gethash path gnus-agent-total-fetched-hashtb) + (gnus-sethash path (make-list 3 0) + gnus-agent-total-fetched-hashtb)))) + (when (listp delta) + (unless delta + (setq delta (directory-files path nil "^-?[0-9]+$" t))) + + (let ((sum 0.0) + file) + (while (setq file (pop delta)) + (incf sum (float (or (nth 7 (file-attributes + (nnheader-concat + path + (if (numberp file) + (number-to-string file) + file)))) 0)))) + (setq delta sum))) + + (setq gnus-agent-need-update-total-fetched-for t) + (incf (nth 2 entry) delta))))) + +(defun gnus-agent-update-view-total-fetched-for + (group agent-over &optional method path) + "Update, or set, the total disk space used by the .agentview and +.overview files. These files are calculated separately as they can be +modified." + (when gnus-agent-total-fetched-hashtb + (gnus-agent-with-refreshed-group + group + ;; if null, gnus-agent-group-pathname will calc method. + (let* ((gnus-command-method method) + (path (or path (gnus-agent-group-pathname group))) + (entry (or (gnus-gethash path gnus-agent-total-fetched-hashtb) + (gnus-sethash path (make-list 3 0) + gnus-agent-total-fetched-hashtb))) + (size (or (nth 7 (file-attributes + (nnheader-concat + path (if agent-over + ".overview" + ".agentview")))) + 0))) + (setq gnus-agent-need-update-total-fetched-for t) + (setf (nth (if agent-over 1 0) entry) size))))) + +(defun gnus-agent-total-fetched-for (group &optional method no-inhibit) + "Get the total disk space used by the specified GROUP." + (unless gnus-agent-total-fetched-hashtb + (setq gnus-agent-total-fetched-hashtb (gnus-make-hashtable 1024))) + + ;; if null, gnus-agent-group-pathname will calc method. + (let* ((gnus-command-method method) + (path (gnus-agent-group-pathname group)) + (entry (gnus-gethash path gnus-agent-total-fetched-hashtb))) + (if entry + (apply '+ entry) + (let ((gnus-agent-inhibit-update-total-fetched-for (not no-inhibit))) + (+ + (gnus-agent-update-view-total-fetched-for group nil method path) + (gnus-agent-update-view-total-fetched-for group t method path) + (gnus-agent-update-files-total-fetched-for group nil method path)))))) (provide 'gnus-agent) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 549117a..99288aa 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -1,5 +1,5 @@ ;;; gnus-art.el --- article mode commands for Semi-gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -60,10 +60,11 @@ (autoload 'gnus-msg-mail "gnus-msg" nil t) (autoload 'gnus-button-mailto "gnus-msg") (autoload 'gnus-button-reply "gnus-msg" nil t) +(autoload 'ansi-color-apply-on-region "ansi-color") (defgroup gnus-article nil "Article display." - :link '(custom-manual "(gnus)The Article Buffer") + :link '(custom-manual "(gnus)Article Buffer") :group 'gnus) (defgroup gnus-article-treat nil @@ -303,7 +304,7 @@ asynchronously. The compressed face will be piped to this command." '(function-item x-face-mule-gnus-article-display-x-face)) 'function)))) - ;;:version "21.1" + :version "21.1" :group 'gnus-picon :group 'gnus-article-washing) @@ -810,6 +811,7 @@ When nil (the default value), then some MIME parts do not get buttons, as described by the variables `gnus-buttonized-mime-types' and `gnus-unbuttonized-mime-types'." :version "21.3" + :group 'gnus-article-mime :type 'boolean) (defcustom gnus-body-boundary-delimiter "_" @@ -849,7 +851,7 @@ on parts -- for instance, adding Vcard info to a database." "An alist of MIME types to functions to display them." :version "21.1" :group 'gnus-article-mime - :type 'alist) + :type '(repeat (cons :format "%v" (string :tag "MIME type") function))) (defcustom gnus-article-date-lapsed-new-header nil "Whether the X-Sent and Date headers can coexist. @@ -950,8 +952,7 @@ See Info node `(gnus)Customizing Articles' for details." (defcustom gnus-treat-emphasize (and (or window-system - (featurep 'xemacs) - (>= (string-to-number emacs-version) 21)) + (featurep 'xemacs)) 50000) "Emphasize text. Valid values are nil, t, `head', `last', an integer or a predicate. @@ -1204,6 +1205,14 @@ See Info node `(gnus)Customizing Articles' for details." :type gnus-article-treat-custom) (put 'gnus-treat-overstrike 'highlight t) +(defcustom gnus-treat-ansi-sequences (if (locate-library "ansi-color") t) + "Treat ANSI SGR control sequences. +Valid values are nil, t, `head', `last', an integer or a predicate. +See Info node `(gnus)Customizing Articles' for details." + :group 'gnus-article-treat + :link '(custom-manual "(gnus)Customizing Articles") + :type gnus-article-treat-custom) + (make-obsolete-variable 'gnus-treat-display-xface 'gnus-treat-display-x-face) @@ -1224,7 +1233,7 @@ Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' and Info node `(gnus)X-Face' for details." :group 'gnus-article-treat - ;;:version "21.1" + :version "21.1" :link '(custom-manual "(gnus)Customizing Articles") :link '(custom-manual "(gnus)X-Face") :type gnus-article-treat-head-custom @@ -1251,10 +1260,9 @@ See Info node `(gnus)Customizing Articles' and Info node (not (or (featurep 'xemacs) (gnus-image-type-available-p 'xpm) (gnus-image-type-available-p 'pbm))) - "If non-nil, gnus uses `smiley-mule' for displaying smileys rather than -`smiley'. It defaults to t when Emacs 20 or earlier is running. + "Non-nil means use `smiley-mule' to show smileys rather than `smiley'. `smiley-mule' is boundled in BITMAP-MULE package. You can set it to t -even if you are using Emacs 21+. It has no effect on XEmacs." +even if your Emacs supports images. It has no effect on XEmacs." :group 'gnus-article-various :type 'boolean :get (lambda (symbol) @@ -1311,7 +1319,7 @@ Valid values are nil, t, `head', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles' and Info node `(gnus)Smileys' for details." :group 'gnus-article-treat - ;;:version "21.1" + :version "21.1" :link '(custom-manual "(gnus)Customizing Articles") :link '(custom-manual "(gnus)Smileys") :type gnus-article-treat-custom) @@ -1479,6 +1487,13 @@ This requires GNU Libidn, and by default only enabled if it is found." '("January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December")) +(defvar gnus-button-regexp nil) +(defvar gnus-button-marker-list nil) +;; Regexp matching any of the regexps from `gnus-button-alist'. + +(defvar gnus-button-last nil) +;; The value of `gnus-button-alist' when `gnus-button-regexp' was build. + (defvar article-goto-body-goes-to-point-min-p nil) (defvar gnus-article-wash-types nil) (defvar gnus-article-emphasis-alist nil) @@ -1523,6 +1538,7 @@ This requires GNU Libidn, and by default only enabled if it is found." (gnus-treat-strip-multiple-blank-lines gnus-article-strip-multiple-blank-lines) (gnus-treat-overstrike gnus-article-treat-overstrike) + (gnus-treat-ansi-sequences gnus-article-treat-ansi-sequences) (gnus-treat-unfold-headers gnus-article-treat-unfold-headers) (gnus-treat-fold-headers gnus-article-treat-fold-headers) ;; Displaying X-Face should be done after unfolding headers @@ -1568,6 +1584,8 @@ Initialized from `text-mode-syntax-table.") (defvar gnus-inhibit-hiding nil) +(defvar gnus-article-edit-mode nil) + ;;; Macros for dealing with the article buffer. (defmacro gnus-with-article-headers (&rest forms) @@ -1760,7 +1778,7 @@ always hide." (while (re-search-forward "^[^: \t]+:[ \t]*\n[^ \t]" nil t) (forward-line -1) (gnus-article-hide-text-type - (gnus-point-at-bol) + (point-at-bol) (progn (end-of-line) (if (re-search-forward "^[^ \t]" nil t) @@ -1886,7 +1904,7 @@ always hide." (goto-char (point-min)) (when (re-search-forward (concat "^" header ":") nil t) (gnus-article-hide-text-type - (gnus-point-at-bol) + (point-at-bol) (progn (end-of-line) (if (re-search-forward "^[^ \t]" nil t) @@ -1907,7 +1925,7 @@ always hide." (article-narrow-to-head) (while (not (eobp)) (cond - ((< (setq column (- (gnus-point-at-eol) (point))) + ((< (setq column (- (point-at-eol) (point))) gnus-article-normalized-header-length) (end-of-line) (insert (make-string @@ -1918,7 +1936,7 @@ always hide." (progn (forward-char gnus-article-normalized-header-length) (point)) - (gnus-point-at-eol) + (point-at-eol) 'invisible t)) (t ;; Do nothing. @@ -1999,6 +2017,14 @@ MAP is an alist where the elements are on the form (\"from\" \"to\")." (put-text-property (point) end 'face 'underline))))))))) +(defun article-treat-ansi-sequences () + "Translate ANSI SGR control sequences into overlays or extents." + (interactive) + (save-excursion + (when (article-goto-body) + (let ((buffer-read-only nil)) + (ansi-color-apply-on-region (point) (point-max)))))) + (defun gnus-article-treat-unfold-headers () "Unfold folded message headers. Only the headers that fit into the current window width will be @@ -2035,8 +2061,7 @@ unfolded." "Toggle display of textual emoticons (\"smileys\") as small graphical icons." (interactive) (unless (featurep 'xemacs) - (when (and (>= emacs-major-version 21) - (not gnus-article-should-use-smiley-mule) + (when (and (not gnus-article-should-use-smiley-mule) gnus-article-smiley-mule-loaded-p) (load "smiley" nil t) (setq gnus-article-smiley-mule-loaded-p nil)) @@ -2105,7 +2130,7 @@ unfolded." (end-of-line) (when (>= (current-column) (min fill-column width)) (narrow-to-region (min (1+ (point)) (point-max)) - (gnus-point-at-bol)) + (point-at-bol)) (let ((goback (point-marker))) (fill-paragraph nil) (goto-char (marker-position goback))) @@ -2147,11 +2172,14 @@ unfolded." (while (and (not (bobp)) (looking-at "^[ \t]*$") (not (gnus-annotation-in-region-p - (point) (gnus-point-at-eol)))) + (point) (point-at-eol)))) (forward-line -1)) (forward-line 1) (point)))))) +(eval-when-compile + (defvar gnus-face-properties-alist)) + (defun article-display-face () "Display any Face headers in the header." (interactive) @@ -2175,12 +2203,14 @@ unfolded." (save-restriction (mail-narrow-to-head) (while (gnus-article-goto-header "Face") - (push (mail-header-field-value) faces)))) + (setq faces (nconc faces (list (mail-header-field-value))))))) (while (setq face (pop faces)) (let ((png (gnus-convert-face-to-png face)) image) (when png - (setq image (gnus-create-image png 'png t)) + (setq image + (apply 'gnus-create-image png 'png t + (cdr (assq 'png gnus-face-properties-alist)))) (gnus-article-goto-header "from") (when (bobp) (insert "From: [no `from' set]\n") @@ -2257,14 +2287,12 @@ unfolded." (defun article-decode-mime-words () "Decode all MIME-encoded words in the article." (interactive) - (save-excursion - (set-buffer gnus-article-buffer) + (gnus-with-article-buffer (let ((inhibit-point-motion-hooks t) - buffer-read-only (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets))) + (with-current-buffer gnus-summary-buffer + gnus-newsgroup-ignored-charsets))) (mail-decode-encoded-word-region (point-min) (point-max))))) (defun article-decode-charset (&optional prompt) @@ -2523,16 +2551,17 @@ If READ-CHARSET, ask for a coding system." (mm-setup-w3m) (save-restriction (narrow-to-region (point) (point-max)) - (let ((w3m-safe-url-regexp (if mm-inline-text-html-with-images - nil - "\\`cid:")) + (let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp) w3m-force-redisplay) (w3m-region (point-min) (point-max))) - (when mm-inline-text-html-with-w3m-keymap + (when (and mm-inline-text-html-with-w3m-keymap + (boundp 'w3m-minor-mode-map) + w3m-minor-mode-map) (add-text-properties (point-min) (point-max) - (nconc (mm-w3m-local-map-property) - '(mm-inline-text-html-with-w3m t)))))) + (list 'keymap w3m-minor-mode-map + ;; Put the mark meaning this part was rendered by emacs-w3m. + 'mm-inline-text-html-with-w3m t))))) (defun article-hide-list-identifiers () "Remove list identifies from the Subject header. @@ -2634,11 +2663,9 @@ always hide." "Translate article using an online translation service." (interactive) (require 'babel) - (save-excursion - (set-buffer gnus-article-buffer) + (gnus-with-article-buffer (when (article-goto-body) - (let* ((buffer-read-only nil) - (start (point)) + (let* ((start (point)) (end (point-max)) (orig (buffer-substring start end)) (trans (babel-as-string orig))) @@ -2918,11 +2945,11 @@ should replace the \"Date:\" one, or should be added below it." (re-search-forward "^Date:[ \t]" nil t) ;; If Date is missing, try again for X-Sent. (re-search-forward "^X-Sent:[ \t]" nil t)) - (setq bface (get-text-property (gnus-point-at-bol) 'face) - date (or (get-text-property (gnus-point-at-bol) + (setq bface (get-text-property (point-at-bol) 'face) + date (or (get-text-property (point-at-bol) 'original-date) date) - eface (get-text-property (1- (gnus-point-at-eol)) + eface (get-text-property (1- (point-at-eol)) 'face))) (let ((buffer-read-only nil)) ;; Delete any old X-Sent headers. @@ -2954,7 +2981,7 @@ should replace the \"Date:\" one, or should be added below it." (goto-char (point-min))) (insert (article-make-date-line date type)) (when (eq type 'lapsed) - (put-text-property (gnus-point-at-bol) (point) + (put-text-property (point-at-bol) (point) 'article-date-lapsed t)) (insert "\n") (forward-line -1) @@ -3131,7 +3158,7 @@ is to run." (setq n 1)) (gnus-stop-date-timer) (setq article-lapsed-timer - (nnheader-run-at-time 1 n 'article-update-date-lapsed))) + (run-at-time 1 n 'article-update-date-lapsed))) (defun gnus-stop-date-timer () "Stop the X-Sent timer." @@ -3465,17 +3492,9 @@ The directory to save in defaults to `gnus-article-save-directory'." (shell-command-on-region (point-min) (point-max) command nil))) (setq gnus-last-shell-command command)) -(defmacro gnus-read-string (prompt &optional initial-contents history - default-value) - "Like `read-string' but allow for older XEmacsen that don't have the 5th arg." - (if (and (featurep 'xemacs) - (< emacs-minor-version 2)) - `(read-string ,prompt ,initial-contents ,history) - `(read-string ,prompt ,initial-contents ,history ,default-value))) - (defun gnus-summary-pipe-to-muttprint (&optional command) "Pipe this article to muttprint." - (setq command (gnus-read-string + (setq command (read-string "Print using command: " gnus-summary-muttprint-program nil gnus-summary-muttprint-program)) (gnus-summary-save-in-pipe command)) @@ -3598,8 +3617,8 @@ If variable `gnus-use-long-file-name' is non-nil, it is (message-narrow-to-head) (goto-char (point-max)) (forward-line -1) - (setq bface (get-text-property (gnus-point-at-bol) 'face) - eface (get-text-property (1- (gnus-point-at-eol)) 'face)) + (setq bface (get-text-property (point-at-bol) 'face) + eface (get-text-property (1- (point-at-eol)) 'face)) (message-remove-header "X-Gnus-PGP-Verify") (if (re-search-forward "^X-PGP-Sig:" nil t) (forward-line) @@ -3666,6 +3685,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is article-monafy article-hide-boring-headers article-treat-overstrike + article-treat-ansi-sequences article-fill-long-lines article-capitalize-sentences article-remove-cr @@ -3778,6 +3798,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is ["Hide signature" gnus-article-hide-signature t] ["Hide citation" gnus-article-hide-citation t] ["Treat overstrike" gnus-article-treat-overstrike t] + ["Treat ANSI sequences" gnus-article-treat-ansi-sequences t] ["Remove carriage return" gnus-article-remove-cr t] ["Remove leading whitespace" gnus-article-remove-leading-whitespace t] ["Treat html" gnus-article-wash-html t] @@ -4260,9 +4281,6 @@ General format specifiers can also be used. See Info node (defvar gnus-mime-button-map (let ((map (make-sparse-keymap))) - (unless (>= (string-to-number emacs-version) 21) - ;; XEmacs doesn't care. - (set-keymap-parent map gnus-article-mode-map)) (define-key map gnus-mouse-2 'gnus-article-push-button) (define-key map gnus-down-mouse-3 'gnus-mime-button-menu) (dolist (c gnus-mime-button-commands) @@ -4276,22 +4294,6 @@ General format specifiers can also be used. See Info node (vector (caddr c) (car c) :enable t)) gnus-mime-button-commands))) -(eval-when-compile - (define-compiler-macro popup-menu (&whole form - menu &optional position prefix) - (if (and (fboundp 'popup-menu) - (not (memq 'popup-menu (assoc "lmenu" load-history)))) - form - ;; Gnus is probably running under Emacs 20. - `(let* ((menu (cdr ,menu)) - (response (x-popup-menu - t (list (car menu) - (cons "" (mapcar (lambda (c) - (cons (caddr c) (car c))) - (cdr menu))))))) - (if response - (call-interactively (nth 3 (assq response menu)))))))) - (defun gnus-mime-button-menu (event prefix) "Construct a context-sensitive menu of MIME commands." (interactive "e\nP") @@ -4305,8 +4307,7 @@ General format specifiers can also be used. See Info node (defun gnus-mime-view-all-parts (&optional handles) "View all the MIME parts." (interactive) - (save-current-buffer - (set-buffer gnus-article-buffer) + (with-current-buffer gnus-article-buffer (let ((handles (or handles gnus-article-mime-handles)) (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets @@ -4320,76 +4321,95 @@ General format specifiers can also be used. See Info node (delete-region (point) (point-max)) (mm-display-parts handles)))))) +(eval-when-compile + (defsubst gnus-article-edit-part (handles) + "Edit an article in order to delete a mime part. +This function is exclusively used by `gnus-mime-save-part-and-strip' +and `gnus-mime-delete-part', and not provided at run-time normally." + (gnus-article-edit-article + `(lambda () + (erase-buffer) + (let ((mail-parse-charset (or gnus-article-charset + ',gnus-newsgroup-charset)) + (mail-parse-ignored-charsets + (or gnus-article-ignored-charsets + ',gnus-newsgroup-ignored-charsets)) + (mbl mml-buffer-list)) + (setq mml-buffer-list nil) + (insert-buffer gnus-original-article-buffer) + (mime-to-mml ',handles) + (setq gnus-article-mime-handles nil) + (let ((mbl1 mml-buffer-list)) + (setq mml-buffer-list mbl) + (set (make-local-variable 'mml-buffer-list) mbl1)) + (gnus-make-local-hook 'kill-buffer-hook) + (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))) + `(lambda (no-highlight) + (let ((mail-parse-charset (or gnus-article-charset + ',gnus-newsgroup-charset)) + (message-options message-options) + (message-options-set-recipient) + (mail-parse-ignored-charsets + (or gnus-article-ignored-charsets + ',gnus-newsgroup-ignored-charsets))) + (mml-to-mime) + (mml-destroy-buffers) + (remove-hook 'kill-buffer-hook + 'mml-destroy-buffers t) + (kill-local-variable 'mml-buffer-list)) + (gnus-summary-edit-article-done + ,(or (mail-header-references gnus-current-headers) "") + ,(gnus-group-read-only-p) + ,gnus-summary-buffer no-highlight))) + (gnus-article-edit-done) + (gnus-summary-expand-window) + (gnus-summary-show-article))) + (defun gnus-mime-save-part-and-strip () "Save the MIME part under point then replace it with an external body." (interactive) (gnus-article-check-buffer) - (let* ((data (get-text-property (point) 'gnus-data)) - file param - (handles gnus-article-mime-handles)) - (if (mm-multiple-handles gnus-article-mime-handles) - (error "This function is not implemented")) - (setq file (and data (mm-save-part data))) - (when file - (with-current-buffer (mm-handle-buffer data) - (erase-buffer) - (insert "Content-Type: " (mm-handle-media-type data)) - (mml-insert-parameter-string (cdr (mm-handle-type data)) - '(charset)) - (insert "\n") - (insert "Content-ID: " (message-make-message-id) "\n") - (insert "Content-Transfer-Encoding: binary\n") - (insert "\n")) - (setcdr data - (cdr (mm-make-handle nil - `("message/external-body" - (access-type . "LOCAL-FILE") - (name . ,file))))) - (set-buffer gnus-summary-buffer) - (gnus-article-edit-article - `(lambda () + (when (gnus-group-read-only-p) + (error "The current group does not support deleting of parts")) + (when (mm-complicated-handles gnus-article-mime-handles) + (error "\ +The current article has a complicated MIME structure, giving up...")) + (when (gnus-yes-or-no-p "\ +Deleting parts may malfunction or destroy the article; continue? ") + (let* ((data (get-text-property (point) 'gnus-data)) + file param + (handles gnus-article-mime-handles)) + (setq file (and data (mm-save-part data))) + (when file + (with-current-buffer (mm-handle-buffer data) (erase-buffer) - (let ((mail-parse-charset (or gnus-article-charset - ',gnus-newsgroup-charset)) - (mail-parse-ignored-charsets - (or gnus-article-ignored-charsets - ',gnus-newsgroup-ignored-charsets)) - (mbl mml-buffer-list)) - (setq mml-buffer-list nil) - (insert-buffer gnus-original-article-buffer) - (mime-to-mml ',handles) - (setq gnus-article-mime-handles nil) - (let ((mbl1 mml-buffer-list)) - (setq mml-buffer-list mbl) - (set (make-local-variable 'mml-buffer-list) mbl1)) - (gnus-make-local-hook 'kill-buffer-hook) - (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))) - `(lambda (no-highlight) - (let ((mail-parse-charset (or gnus-article-charset - ',gnus-newsgroup-charset)) - (message-options message-options) - (message-options-set-recipient) - (mail-parse-ignored-charsets - (or gnus-article-ignored-charsets - ',gnus-newsgroup-ignored-charsets))) - (mml-to-mime) - (mml-destroy-buffers) - (remove-hook 'kill-buffer-hook - 'mml-destroy-buffers t) - (kill-local-variable 'mml-buffer-list)) - (gnus-summary-edit-article-done - ,(or (mail-header-references gnus-current-headers) "") - ,(gnus-group-read-only-p) - ,gnus-summary-buffer no-highlight)))))) + (insert "Content-Type: " (mm-handle-media-type data)) + (mml-insert-parameter-string (cdr (mm-handle-type data)) + '(charset)) + (insert "\n") + (insert "Content-ID: " (message-make-message-id) "\n") + (insert "Content-Transfer-Encoding: binary\n") + (insert "\n")) + (setcdr data + (cdr (mm-make-handle nil + `("message/external-body" + (access-type . "LOCAL-FILE") + (name . ,file))))) + (set-buffer gnus-summary-buffer) + (gnus-article-edit-part handles))))) (defun gnus-mime-delete-part () "Delete the MIME part under point. Replace it with some information about the removed part." (interactive) (gnus-article-check-buffer) - (unless (and gnus-novice-user - (not (gnus-yes-or-no-p - "Really delete attachment forever? "))) + (when (gnus-group-read-only-p) + (error "The current group does not support deleting of parts")) + (when (mm-complicated-handles gnus-article-mime-handles) + (error "\ +The current article has a complicated MIME structure, giving up...")) + (when (gnus-yes-or-no-p "\ +Deleting parts may malfunction or destroy the article; continue? ") (let* ((data (get-text-property (point) 'gnus-data)) (handles gnus-article-mime-handles) (none "(none)") @@ -4401,8 +4421,6 @@ Replace it with some information about the removed part." (or (mail-content-type-get (mm-handle-disposition data) 'filename) none)) (type (mm-handle-media-type data))) - (if (mm-multiple-handles gnus-article-mime-handles) - (error "This function is not implemented")) (with-current-buffer (mm-handle-buffer data) (let ((bsize (format "%s" (buffer-size)))) (erase-buffer) @@ -4422,47 +4440,7 @@ Replace it with some information about the removed part." (list "attachment") (format "Deleted attachment (%s bytes)" bsize)))))) (set-buffer gnus-summary-buffer) - ;; FIXME: maybe some of the following code (borrowed from - ;; `gnus-mime-save-part-and-strip') isn't necessary? - (gnus-article-edit-article - `(lambda () - (erase-buffer) - (let ((mail-parse-charset (or gnus-article-charset - ',gnus-newsgroup-charset)) - (mail-parse-ignored-charsets - (or gnus-article-ignored-charsets - ',gnus-newsgroup-ignored-charsets)) - (mbl mml-buffer-list)) - (setq mml-buffer-list nil) - (insert-buffer gnus-original-article-buffer) - (mime-to-mml ',handles) - (setq gnus-article-mime-handles nil) - (let ((mbl1 mml-buffer-list)) - (setq mml-buffer-list mbl) - (set (make-local-variable 'mml-buffer-list) mbl1)) - (gnus-make-local-hook 'kill-buffer-hook) - (add-hook 'kill-buffer-hook 'mml-destroy-buffers t t))) - `(lambda (no-highlight) - (let ((mail-parse-charset (or gnus-article-charset - ',gnus-newsgroup-charset)) - (message-options message-options) - (message-options-set-recipient) - (mail-parse-ignored-charsets - (or gnus-article-ignored-charsets - ',gnus-newsgroup-ignored-charsets))) - (mml-to-mime) - (mml-destroy-buffers) - (remove-hook 'kill-buffer-hook - 'mml-destroy-buffers t) - (kill-local-variable 'mml-buffer-list)) - (gnus-summary-edit-article-done - ,(or (mail-header-references gnus-current-headers) "") - ,(gnus-group-read-only-p) - ,gnus-summary-buffer no-highlight))))) - ;; Not in `gnus-mime-save-part-and-strip': - (gnus-article-edit-done) - (gnus-summary-expand-window) - (gnus-summary-show-article)) + (gnus-article-edit-part handles)))) (defun gnus-mime-save-part () "Save the MIME part under point." @@ -4669,8 +4647,8 @@ specified charset." (mm-inlined-types nil) (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets))) + (with-current-buffer gnus-summary-buffer + gnus-newsgroup-ignored-charsets))) (when handle (if (mm-handle-undisplayer handle) (mm-remove-part handle) @@ -4686,8 +4664,8 @@ If no internal viewer is available, use an external viewer." (mm-inline-large-images t) (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets)) + (with-current-buffer gnus-summary-buffer + gnus-newsgroup-ignored-charsets)) buffer-read-only) (when handle (if (mm-handle-undisplayer handle) @@ -4704,8 +4682,7 @@ If no internal viewer is available, use an external viewer." (funcall (cdr action-pair))))) (defun gnus-article-part-wrapper (n function) - (save-current-buffer - (set-buffer gnus-article-buffer) + (with-current-buffer gnus-article-buffer (when (> n (length gnus-article-mime-handle-alist)) (error "No such part")) (gnus-article-goto-part n) @@ -4771,8 +4748,7 @@ N is the numerical prefix." (defun gnus-article-view-part (&optional n) "View MIME part N, which is the numerical prefix." (interactive "P") - (save-current-buffer - (set-buffer gnus-article-buffer) + (with-current-buffer gnus-article-buffer (or (numberp n) (setq n (gnus-article-mime-match-handle-first gnus-article-mime-match-handle-function))) (when (> n (length gnus-article-mime-handle-alist)) @@ -4800,8 +4776,7 @@ N is the numerical prefix." (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets (if (gnus-buffer-live-p gnus-summary-buffer) - (save-excursion - (set-buffer gnus-summary-buffer) + (with-current-buffer gnus-summary-buffer gnus-newsgroup-ignored-charsets) nil))) (save-excursion @@ -4869,11 +4844,11 @@ N is the numerical prefix." (setq b (point)) (gnus-eval-format gnus-mime-button-line-format gnus-mime-button-line-format-alist - `(,@(gnus-local-map-property gnus-mime-button-map) - gnus-callback gnus-mm-display-part - gnus-part ,gnus-tmp-id - article-type annotation - gnus-data ,handle)) + `(keymap ,gnus-mime-button-map + gnus-callback gnus-mm-display-part + gnus-part ,gnus-tmp-id + article-type annotation + gnus-data ,handle)) (setq e (if (bolp) ;; Exclude a newline. (1- (point)) @@ -5059,11 +5034,9 @@ If displaying \"text/html\" is discouraged \(see (push (cons id handle) gnus-article-mime-handle-alist) (when (or (not display) (not (gnus-unbuttonized-mime-type-p type))) - ;(gnus-article-insert-newline) (gnus-insert-mime-button handle id (list (or display (and not-attachment text)))) (gnus-article-insert-newline) - ;(gnus-article-insert-newline) ;; Remember modify the number of forward lines. (setq move t)) (setq beg (point)) @@ -5151,7 +5124,7 @@ If displaying \"text/html\" is discouraged \(see ',gnus-article-mime-handle-alist)) (gnus-mime-display-alternative ',ihandles ',not-pref ',begend ,id)) - ,@(gnus-local-map-property gnus-mime-button-map) + keymap ,gnus-mime-button-map ,gnus-mouse-face-prop ,gnus-article-mouse-face face ,gnus-article-button-face gnus-part ,id @@ -5175,7 +5148,7 @@ If displaying \"text/html\" is discouraged \(see ',gnus-article-mime-handle-alist)) (gnus-mime-display-alternative ',ihandles ',handle ',begend ,id)) - ,@(gnus-local-map-property gnus-mime-button-map) + keymap ,gnus-mime-button-map ,gnus-mouse-face-prop ,gnus-article-mouse-face face ,gnus-article-button-face gnus-part ,id @@ -5190,8 +5163,8 @@ If displaying \"text/html\" is discouraged \(see (gnus-display-mime preferred) (let ((mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-ignored-charsets))) + (with-current-buffer gnus-summary-buffer + gnus-newsgroup-ignored-charsets))) (mm-display-part preferred) ;; Do highlighting. (save-excursion @@ -5243,8 +5216,7 @@ is the string to use when it is inactive.") (defun gnus-article-wash-status () "Return a string which display status of article washing." - (save-excursion - (set-buffer gnus-article-buffer) + (with-current-buffer gnus-article-buffer (let ((cite (memq 'cite gnus-article-wash-types)) (headers (memq 'headers gnus-article-wash-types)) (boring (memq 'boring-headers gnus-article-wash-types)) @@ -5294,8 +5266,8 @@ is the string to use when it is inactive.") "Hide unwanted headers if `gnus-have-all-headers' is nil. Provided for backwards compatibility." (when (and (or (not (gnus-buffer-live-p gnus-summary-buffer)) - (not (save-excursion (set-buffer gnus-summary-buffer) - gnus-have-all-headers))) + (not (with-current-buffer gnus-summary-buffer + gnus-have-all-headers))) (not gnus-inhibit-hiding)) (gnus-article-hide-headers))) @@ -5310,8 +5282,7 @@ Provided for backwards compatibility." ;; save it to file. (goto-char (point-max)) (insert "\n") - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) (write-region-as-binary (point-min) (point-max) file-name 'append)) t))) @@ -5463,9 +5434,9 @@ not have a face in `gnus-article-boring-faces'." "Read article specified by message-id around point." (interactive) (save-excursion - (re-search-backward "[ \t]\\|^" (gnus-point-at-bol) t) - (re-search-forward "]+" (gnus-point-at-eol) t) + (re-search-backward "[ \t]\\|^" (point-at-bol) t) + (re-search-forward "]+" (point-at-eol) t) (let ((msg-id (concat "<" (match-string 0) ">"))) (set-buffer gnus-summary-buffer) (gnus-summary-refer-article msg-id)) @@ -5558,11 +5529,13 @@ not have a face in `gnus-article-boring-faces'." (let ((obuf (current-buffer)) (owin (current-window-configuration)) (opoint (point)) - (summary gnus-article-current-summary) - func in-buffer selected) - (if not-restore-window - (pop-to-buffer summary 'norecord) - (switch-to-buffer summary 'norecord)) + win func in-buffer selected new-sum-start new-sum-hscroll) + (cond (not-restore-window + (pop-to-buffer gnus-article-current-summary 'norecord)) + ((setq win (get-buffer-window gnus-article-current-summary)) + (select-window win)) + (t + (switch-to-buffer gnus-article-current-summary 'norecord))) (setq in-buffer (current-buffer)) ;; We disable the pick minor mode commands. (if (and (setq func (let (gnus-pick-mode) @@ -5570,7 +5543,10 @@ not have a face in `gnus-article-boring-faces'." (functionp func)) (progn (call-interactively func) - (setq new-sum-point (point)) + (when (eq win (selected-window)) + (setq new-sum-point (point) + new-sum-start (window-start win) + new-sum-hscroll (window-hscroll win)) (when (eq in-buffer (current-buffer)) (setq selected (gnus-summary-select-article)) (set-buffer obuf) @@ -5582,10 +5558,12 @@ not have a face in `gnus-article-boring-faces'." 1) (set-window-point (get-buffer-window (current-buffer)) (point))) - (let ((win (get-buffer-window gnus-article-current-summary))) - (when win - (set-window-point win new-sum-point)))) ) - (switch-to-buffer gnus-article-buffer) + (when (and (not not-restore-window) + new-sum-point) + (set-window-point win new-sum-point) + (set-window-start win new-sum-start) + (set-window-hscroll win new-sum-hscroll))))) + (set-window-configuration owin) (ding)))))) (defun gnus-article-describe-key (key) @@ -5756,16 +5734,14 @@ If given a prefix, show the hidden text instead." gnus-summary-buffer (get-buffer gnus-summary-buffer) (gnus-buffer-exists-p gnus-summary-buffer) - (eq (cdr (save-excursion - (set-buffer gnus-summary-buffer) + (eq (cdr (with-current-buffer gnus-summary-buffer (assq article gnus-newsgroup-reads))) gnus-canceled-mark)) nil) ;; We first check `gnus-original-article-buffer'. ((and (get-buffer gnus-original-article-buffer) (numberp article) - (save-excursion - (set-buffer gnus-original-article-buffer) + (with-current-buffer gnus-original-article-buffer (and (equal (car gnus-original-article) group) (eq (cdr gnus-original-article) article)))) (insert-buffer-substring gnus-original-article-buffer) @@ -5889,7 +5865,6 @@ If given a prefix, show the hidden text instead." (defvar gnus-article-edit-done-function nil) (defvar gnus-article-edit-mode-map nil) -(defvar gnus-article-edit-mode nil) ;; Should we be using derived.el for this? (unless gnus-article-edit-mode-map @@ -6029,7 +6004,7 @@ groups." (car gnus-article-current) (cdr gnus-article-current))) ;; We remove all text props from the article buffer. (kill-all-local-variables) - (gnus-set-text-properties (point-min) (point-max) nil) + (set-text-properties (point-min) (point-max) nil) (gnus-article-mode) (set-window-configuration winconf) (set-buffer buf) @@ -6240,7 +6215,7 @@ The function must take one argument, the string naming the URL." (defcustom gnus-button-ctan-directory-regexp (concat - "\\("; Cannot use `\(?: ... \)' (compatibility with Emacs 20). + "\\(?:" "biblio\\|digests\\|dviware\\|fonts\\|graphics\\|help\\|" "indexing\\|info\\|language\\|macros\\|support\\|systems\\|" "tds\\|tools\\|usergrps\\|web\\|nonfree\\|obsolete" @@ -6573,7 +6548,7 @@ positives are possible." ("\\( \n\t]+\\)>" 0 (>= gnus-button-message-level 0) gnus-url-mailto 2) ;; RFC 2368 (The mailto URL scheme) - ("mailto:\\([-a-z.@_+0-9%=?&]+\\)" + ("\\bmailto:\\([-a-z.@_+0-9%=?&/]+\\)" 0 (>= gnus-button-message-level 0) gnus-url-mailto 1) ("\\bmailto:\\([^ \n\t]+\\)" 0 (>= gnus-button-message-level 0) gnus-url-mailto 1) @@ -6708,7 +6683,7 @@ variable it the real callback function." 0 (>= gnus-button-browse-level 0) browse-url 0) ("^[^:]+:" gnus-button-url-regexp 0 (>= gnus-button-browse-level 0) browse-url 0) - ("^[^:]+:" "\\bmailto:\\([-a-z.@_+0-9%=?&]+\\)" + ("^[^:]+:" "\\bmailto:\\([-a-z.@_+0-9%=?&/]+\\)" 0 (>= gnus-button-message-level 0) gnus-url-mailto 1) ("^[^:]+:" "\\(<\\(url: \\)?\\(nntp\\|news\\):\\([^>\n ]*\\)>\\)" 1 (>= gnus-button-message-level 0) gnus-button-message-id 4)) @@ -6732,13 +6707,6 @@ HEADER is a regexp to match a header. For a fuller explanation, see :inline t (integer :tag "Regexp group"))))) -(defvar gnus-button-regexp nil) -(defvar gnus-button-marker-list nil) -;; Regexp matching any of the regexps from `gnus-button-alist'. - -(defvar gnus-button-last nil) -;; The value of `gnus-button-alist' when `gnus-button-regexp' was build. - ;;; Commands: (defun gnus-article-push-button (event) @@ -6824,41 +6792,35 @@ do the highlighting. See the documentation for those functions." (defun gnus-article-highlight-headers () "Highlight article headers as specified by `gnus-header-face-alist'." (interactive) - (save-excursion - (set-buffer gnus-article-buffer) - (save-restriction - (let ((alist gnus-header-face-alist) - (buffer-read-only nil) - (case-fold-search t) - (inhibit-point-motion-hooks t) - entry regexp header-face field-face from hpoints fpoints) - (article-narrow-to-head) - (while (setq entry (pop alist)) - (goto-char (point-min)) - (setq regexp (concat "^\\(" - (if (string-equal "" (nth 0 entry)) - "[^\t ]" - (nth 0 entry)) - "\\)") - header-face (nth 1 entry) - field-face (nth 2 entry)) - (while (and (re-search-forward regexp nil t) - (not (eobp))) - (beginning-of-line) - (setq from (point)) - (unless (search-forward ":" nil t) - (forward-char 1)) - (when (and header-face - (not (memq (point) hpoints))) - (push (point) hpoints) - (gnus-put-text-property from (point) 'face header-face)) - (when (and field-face - (not (memq (setq from (point)) fpoints))) - (push from fpoints) - (if (re-search-forward "^[^ \t]" nil t) - (forward-char -2) - (goto-char (point-max))) - (gnus-put-text-property from (point) 'face field-face)))))))) + (gnus-with-article-headers + (let ((alist gnus-header-face-alist) + entry regexp header-face field-face from hpoints fpoints) + (while (setq entry (pop alist)) + (goto-char (point-min)) + (setq regexp (concat "^\\(" + (if (string-equal "" (nth 0 entry)) + "[^\t ]" + (nth 0 entry)) + "\\)") + header-face (nth 1 entry) + field-face (nth 2 entry)) + (while (and (re-search-forward regexp nil t) + (not (eobp))) + (beginning-of-line) + (setq from (point)) + (unless (search-forward ":" nil t) + (forward-char 1)) + (when (and header-face + (not (memq (point) hpoints))) + (push (point) hpoints) + (gnus-put-text-property from (point) 'face header-face)) + (when (and field-face + (not (memq (setq from (point)) fpoints))) + (push from fpoints) + (if (re-search-forward "^[^ \t]" nil t) + (forward-char -2) + (goto-char (point-max))) + (gnus-put-text-property from (point) 'face field-face))))))) (defun gnus-article-highlight-signature () "Highlight the signature in an article. @@ -6866,10 +6828,8 @@ It does this by highlighting everything after `gnus-signature-separator' using `gnus-signature-face'." (interactive) (when gnus-signature-face - (save-excursion - (set-buffer gnus-article-buffer) - (let ((buffer-read-only nil) - (inhibit-point-motion-hooks t)) + (gnus-with-article-buffer + (let ((inhibit-point-motion-hooks t)) (save-restriction (when (gnus-article-narrow-to-signature) (gnus-overlay-put (gnus-make-overlay (point-min) (point-max)) @@ -6897,10 +6857,8 @@ It does this by highlighting everything after \"External references\" are things like Message-IDs and URLs, as specified by `gnus-button-alist'." (interactive (list 'force)) - (save-excursion - (set-buffer gnus-article-buffer) - (let ((buffer-read-only nil) - (inhibit-point-motion-hooks t) + (gnus-with-article-buffer + (let ((inhibit-point-motion-hooks t) (case-fold-search t) (alist gnus-button-alist) beg entry regexp) @@ -6941,40 +6899,33 @@ specified by `gnus-button-alist'." (defun gnus-article-add-buttons-to-head () "Add buttons to the head of the article." (interactive) - (save-excursion - (set-buffer gnus-article-buffer) - (save-restriction - (let ((buffer-read-only nil) - (inhibit-point-motion-hooks t) - (case-fold-search t) - (alist gnus-header-button-alist) - entry beg end) - (article-narrow-to-head) - (while alist - ;; Each alist entry. - (setq entry (car alist) - alist (cdr alist)) - (goto-char (point-min)) - (while (re-search-forward (car entry) nil t) - ;; Each header matching the entry. - (setq beg (match-beginning 0)) - (setq end (or (and (re-search-forward "^[^ \t]" nil t) - (match-beginning 0)) - (point-max))) - (goto-char beg) - (while (re-search-forward (eval (nth 1 entry)) end t) - ;; Each match within a header. - (let* ((entry (cdr entry)) - (start (match-beginning (nth 1 entry))) - (end (match-end (nth 1 entry))) - (form (nth 2 entry))) - (goto-char (match-end 0)) - (when (eval form) - (gnus-article-add-button - start end (nth 3 entry) - (buffer-substring (match-beginning (nth 4 entry)) - (match-end (nth 4 entry))))))) - (goto-char end))))))) + (gnus-with-article-headers + (let ((alist gnus-header-button-alist) + entry beg end) + (while alist + ;; Each alist entry. + (setq entry (pop alist)) + (goto-char (point-min)) + (while (re-search-forward (car entry) nil t) + ;; Each header matching the entry. + (setq beg (match-beginning 0)) + (setq end (or (and (re-search-forward "^[^ \t]" nil t) + (match-beginning 0)) + (point-max))) + (goto-char beg) + (while (re-search-forward (eval (nth 1 entry)) end t) + ;; Each match within a header. + (let* ((entry (cdr entry)) + (start (match-beginning (nth 1 entry))) + (end (match-end (nth 1 entry))) + (form (nth 2 entry))) + (goto-char (match-end 0)) + (when (eval form) + (gnus-article-add-button + start end (nth 3 entry) + (buffer-substring (match-beginning (nth 4 entry)) + (match-end (nth 4 entry))))))) + (goto-char end)))))) ;;; External functions: @@ -6990,22 +6941,17 @@ specified by `gnus-button-alist'." (list 'gnus-callback fun) (and data (list 'gnus-data data)))) (widget-convert-button 'link from to :action 'gnus-widget-press-button - ;; Quote `:button-keymap' for Mule 2.3 - ;; but it won't work. - ':button-keymap gnus-widget-button-keymap)) + :button-keymap gnus-widget-button-keymap)) ;;; Internal functions: (defun gnus-article-set-globals () - (save-excursion - (set-buffer gnus-summary-buffer) + (with-current-buffer gnus-summary-buffer (gnus-set-global-variables))) (defun gnus-signature-toggle (end) - (save-excursion - (set-buffer gnus-article-buffer) - (let ((buffer-read-only nil) - (inhibit-point-motion-hooks t) + (gnus-with-article-buffer + (let ((inhibit-point-motion-hooks t) (limit (next-single-property-change end 'mime-view-entity nil (point-max)))) (if (text-property-any end limit 'article-type 'signature) @@ -7043,7 +6989,7 @@ specified by `gnus-button-alist'." (fun (nth 3 entry)) (args (mapcar (lambda (group) (let ((string (match-string group))) - (gnus-set-text-properties + (set-text-properties 0 (length string) nil string) string)) (nthcdr 4 entry)))) @@ -7143,8 +7089,7 @@ specified by `gnus-button-alist'." (defun gnus-button-message-id (message-id) "Fetch MESSAGE-ID." - (save-excursion - (set-buffer gnus-summary-buffer) + (with-current-buffer gnus-summary-buffer (gnus-summary-refer-article message-id))) (defun gnus-button-fetch-group (address) @@ -7224,20 +7169,23 @@ specified by `gnus-button-alist'." (defvar gnus-prev-page-map (let ((map (make-sparse-keymap))) - (unless (>= emacs-major-version 21) - ;; XEmacs doesn't care. - (set-keymap-parent map gnus-article-mode-map)) (define-key map gnus-mouse-2 'gnus-button-prev-page) (define-key map "\r" 'gnus-button-prev-page) map)) +(defvar gnus-next-page-map + (let ((map (make-sparse-keymap))) + (define-key map gnus-mouse-2 'gnus-button-next-page) + (define-key map "\r" 'gnus-button-next-page) + map)) + (defun gnus-insert-prev-page-button () (let ((b (point)) (buffer-read-only nil) (situation (get-text-property (point-min) 'mime-view-situation))) (gnus-eval-format gnus-prev-page-line-format nil - `(,@(gnus-local-map-property gnus-prev-page-map) + `(keymap ,gnus-prev-page-map gnus-prev t gnus-callback gnus-article-button-prev-page article-type annotation @@ -7250,15 +7198,6 @@ specified by `gnus-button-alist'." :action 'gnus-button-prev-page :button-keymap gnus-prev-page-map))) -(defvar gnus-next-page-map - (let ((map (make-sparse-keymap))) - (unless (>= emacs-major-version 21) - ;; XEmacs doesn't care. - (set-keymap-parent map gnus-article-mode-map)) - (define-key map gnus-mouse-2 'gnus-button-next-page) - (define-key map "\r" 'gnus-button-next-page) - map)) - (defun gnus-button-next-page (&optional args more-args) "Go to the next page." (interactive) @@ -7280,7 +7219,7 @@ specified by `gnus-button-alist'." (buffer-read-only nil) (situation (get-text-property (point-min) 'mime-view-situation))) (gnus-eval-format gnus-next-page-line-format nil - `(,@(gnus-local-map-property gnus-next-page-map) + `(keymap ,gnus-next-page-map gnus-next t gnus-callback gnus-article-button-next-page article-type annotation @@ -7535,8 +7474,6 @@ For example: (defvar gnus-mime-security-button-map (let ((map (make-sparse-keymap))) - (unless (>= (string-to-number emacs-version) 21) - (set-keymap-parent map gnus-article-mode-map)) (define-key map gnus-mouse-2 'gnus-article-push-button) (define-key map "\r" 'gnus-article-press-button) map)) @@ -7643,7 +7580,7 @@ For example: (gnus-eval-format gnus-mime-security-button-line-format gnus-mime-security-button-line-format-alist - `(,@(gnus-local-map-property gnus-mime-security-button-map) + `(keymap ,gnus-mime-security-button-map gnus-callback gnus-mime-security-press-button gnus-line-format ,gnus-mime-security-button-line-format gnus-mime-details ,gnus-mime-security-button-pressed diff --git a/lisp/gnus-cache.el b/lisp/gnus-cache.el index 0484732..1d5a81b 100644 --- a/lisp/gnus-cache.el +++ b/lisp/gnus-cache.el @@ -29,14 +29,10 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'gnus) -(require 'gnus-int) -(require 'gnus-range) -(require 'gnus-start) (eval-when-compile - (if (not (fboundp 'gnus-agent-load-alist)) + (unless (fboundp 'gnus-agent-load-alist) (defun gnus-agent-load-alist (group))) (require 'gnus-sum)) @@ -94,6 +90,7 @@ it's not cached." (defvar gnus-cache-buffer nil) (defvar gnus-cache-active-hashtb nil) (defvar gnus-cache-active-altered nil) +(defvar gnus-cache-total-fetched-hashtb nil) (defvar gnus-cache-write-file-coding-system 'raw-text) (eval-and-compile @@ -129,9 +126,8 @@ it's not cached." (overview-file (gnus-cache-file-name (car gnus-cache-buffer) ".overview"))) ;; write the overview only if it was modified - (when (buffer-modified-p buffer) - (save-excursion - (set-buffer buffer) + (when (and (buffer-live-p buffer) (buffer-modified-p buffer)) + (with-current-buffer buffer (if (> (buffer-size) 0) ;; Non-empty overview, write it to a file. (gnus-write-buffer-as-coding-system @@ -145,7 +141,10 @@ it's not cached." ;; of any inconsistencies (articles w/o nov entries?). ;; for now, just be conservative...delete only if safe -- sj (delete-directory (file-name-directory overview-file)) - (error nil))))) + (error))) + + (gnus-cache-update-overview-total-fetched-for (car gnus-cache-buffer) + overview-file))) ;; Kill the buffer -- it's either unmodified or saved. (gnus-kill-buffer buffer) (setq gnus-cache-buffer nil)))) @@ -185,6 +184,7 @@ it's not cached." (when (> (buffer-size) 0) (gnus-write-buffer-as-coding-system gnus-cache-write-file-coding-system file) + (gnus-cache-update-file-total-fetched-for group file) (nnheader-remove-body) (setq headers (nnheader-parse-naked-head)) (mail-header-set-number headers number) @@ -472,13 +472,15 @@ Returns the list of articles removed." (gnus-cache-member-of-class gnus-cache-remove-articles ticked dormant unread))) (save-excursion + (gnus-cache-update-file-total-fetched-for group file t) (delete-file file) + (set-buffer (cdr gnus-cache-buffer)) (goto-char (point-min)) (when (or (looking-at (concat (int-to-string number) "\t")) (search-forward (concat "\n" (int-to-string number) "\t") (point-max) t)) - (gnus-delete-line))) + (gnus-delete-line))) (unless (setq gnus-newsgroup-cached (delq article gnus-newsgroup-cached)) (gnus-sethash gnus-newsgroup-name nil gnus-cache-active-hashtb) @@ -528,7 +530,7 @@ Returns the list of articles removed." (set-buffer cache-buf) (if (search-forward (concat "\n" (int-to-string (car cached)) "\t") nil t) - (setq beg (gnus-point-at-bol) + (setq beg (point-at-bol) end (progn (end-of-line) (point))) (setq beg nil)) (set-buffer nntp-server-buffer) @@ -711,6 +713,9 @@ If LOW, update the lower bound instead." (gnus-cache-close) (let ((nnml-generate-active-function 'identity)) (nnml-generate-nov-databases-1 dir)) + + (setq gnus-cache-total-fetched-hashtb nil) + (gnus-cache-open)) (defun gnus-cache-move-cache (dir) @@ -731,6 +736,126 @@ If GROUP is non-nil, also cater to `gnus-cacheable-groups' and (or (not gnus-uncacheable-groups) (not (string-match gnus-uncacheable-groups group))))))) +;;;###autoload +(defun gnus-cache-rename-group (old-group new-group) + "Rename OLD-GROUP as NEW-GROUP. Always updates the cache, even when +disabled, as the old cache files would corrupt gnus when the cache was +next enabled. Depends upon the caller to determine whether group renaming is supported." + (let ((old-dir (gnus-cache-file-name old-group "")) + (new-dir (gnus-cache-file-name new-group ""))) + (gnus-rename-file old-dir new-dir t)) + + (gnus-cache-rename-group-total-fetched-for old-group new-group) + + (let ((no-save gnus-cache-active-hashtb)) + (unless gnus-cache-active-hashtb + (gnus-cache-read-active)) + (let* ((old-group-hash-value (gnus-gethash old-group gnus-cache-active-hashtb)) + (new-group-hash-value (gnus-gethash new-group gnus-cache-active-hashtb)) + (delta (or old-group-hash-value new-group-hash-value))) + (gnus-sethash new-group old-group-hash-value gnus-cache-active-hashtb) + (gnus-sethash old-group nil gnus-cache-active-hashtb) + + (if no-save + (setq gnus-cache-active-altered delta) + (gnus-cache-write-active delta))))) + +;;;###autoload +(defun gnus-cache-delete-group (group) + "Delete GROUP. Always updates the cache, even when +disabled, as the old cache files would corrupt gnus when the cache was +next enabled. Depends upon the caller to determine whether group deletion is supported." + (let ((dir (gnus-cache-file-name group ""))) + (gnus-delete-file dir)) + + (gnus-cache-delete-group-total-fetched-for group) + + (let ((no-save gnus-cache-active-hashtb)) + (unless gnus-cache-active-hashtb + (gnus-cache-read-active)) + (let* ((group-hash-value (gnus-gethash group gnus-cache-active-hashtb))) + (gnus-sethash group nil gnus-cache-active-hashtb) + + (if no-save + (setq gnus-cache-active-altered group-hash-value) + (gnus-cache-write-active group-hash-value))))) + +(defvar gnus-cache-inhibit-update-total-fetched-for nil) +(defvar gnus-cache-need-update-total-fetched-for nil) + +(defmacro gnus-cache-with-refreshed-group (group &rest body) + `(prog1 (let ((gnus-cache-inhibit-update-total-fetched-for t)) + ,@body) + (when (and gnus-cache-need-update-total-fetched-for + (not gnus-cache-inhibit-update-total-fetched-for)) + (save-excursion + (set-buffer gnus-group-buffer) + (setq gnus-cache-need-update-total-fetched-for nil) + (gnus-group-update-group ,group t))))) + +(defun gnus-cache-update-file-total-fetched-for (group file &optional subtract) + (when gnus-cache-total-fetched-hashtb + (gnus-cache-with-refreshed-group + group + (let* ((entry (or (gnus-gethash group gnus-cache-total-fetched-hashtb) + (gnus-sethash group (make-vector 2 0) + gnus-cache-total-fetched-hashtb))) + size) + + (if file + (setq size (or (nth 7 (file-attributes file)) 0)) + (let ((files (directory-files (gnus-cache-file-name group "") + t nil t)) + file attrs) + (setq size 0.0) + (while (setq file (pop files)) + (setq attrs (file-attributes file)) + (unless (nth 0 attrs) + (incf size (float (nth 7 attrs))))))) + + (setq gnus-cache-need-update-total-fetched-for t) + + (incf (nth 1 entry) (if subtract (- size) size)))))) + +(defun gnus-cache-update-overview-total-fetched-for (group file) + (when gnus-cache-total-fetched-hashtb + (gnus-cache-with-refreshed-group + group + (let* ((entry (or (gnus-gethash group gnus-cache-total-fetched-hashtb) + (gnus-sethash group (make-list 2 0) + gnus-cache-total-fetched-hashtb))) + (size (or (nth 7 (file-attributes + (or file + (gnus-cache-file-name group ".overview")))) + 0))) + (setq gnus-cache-need-update-total-fetched-for t) + (setf (nth 0 entry) size))))) + +(defun gnus-cache-rename-group-total-fetched-for (old-group new-group) + "Record of disk space used by OLD-GROUP now associated with NEW-GROUP." + (when gnus-cache-total-fetched-hashtb + (let ((entry (gnus-gethash old-group gnus-cache-total-fetched-hashtb))) + (gnus-sethash new-group entry gnus-cache-total-fetched-hashtb) + (gnus-sethash old-group nil gnus-cache-total-fetched-hashtb)))) + +(defun gnus-cache-delete-group-total-fetched-for (group) + "Delete record of disk space used by GROUP being deleted." + (when gnus-cache-total-fetched-hashtb + (gnus-sethash group nil gnus-cache-total-fetched-hashtb))) + +(defun gnus-cache-total-fetched-for (group &optional no-inhibit) + "Get total disk space used by the cache for the specified GROUP." + (unless gnus-cache-total-fetched-hashtb + (setq gnus-cache-total-fetched-hashtb (gnus-make-hashtable 1024))) + + (let* ((entry (gnus-gethash group gnus-cache-total-fetched-hashtb))) + (if entry + (apply '+ entry) + (let ((gnus-cache-inhibit-update-total-fetched-for (not no-inhibit))) + (+ + (gnus-cache-update-overview-total-fetched-for group nil) + (gnus-cache-update-file-total-fetched-for group nil)))))) + (provide 'gnus-cache) ;;; gnus-cache.el ends here diff --git a/lisp/gnus-cite.el b/lisp/gnus-cite.el index 779163a..7de2998 100644 --- a/lisp/gnus-cite.el +++ b/lisp/gnus-cite.el @@ -374,7 +374,7 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps (goto-char (point-min)) (forward-line (1- number)) (when (re-search-forward gnus-cite-attribution-suffix - (gnus-point-at-eol) + (point-at-eol) t) (gnus-article-add-button (match-beginning 1) (match-end 1) 'gnus-cite-toggle prefix)) @@ -722,13 +722,13 @@ See also the documentation for `gnus-article-highlight-citation'." (gnus-article-search-signature) (point))) (prefix-regexp (concat "^\\(" message-cite-prefix-regexp "\\)")) - alist entry start begin end numbers prefix guess-limit mc-flag) + alist entry start begin end numbers prefix guess-limit) ;; Get all potential prefixes in `alist'. (while (< (point) max) ;; Each line. (setq begin (point) guess-limit (progn (skip-chars-forward "^> \t\r\n") (point)) - end (gnus-point-at-bol 2) + end (point-at-bol 2) start end) (goto-char begin) ;; Ignore standard Supercite attribution prefix. @@ -744,7 +744,7 @@ See also the documentation for `gnus-article-highlight-citation'." ;; Each prefix. (setq end (match-end 0) prefix (buffer-substring begin end)) - (gnus-set-text-properties 0 (length prefix) nil prefix) + (set-text-properties 0 (length prefix) nil prefix) (setq entry (assoc prefix alist)) (if entry (setcdr entry (cons line (cdr entry))) @@ -826,11 +826,10 @@ See also the documentation for `gnus-article-highlight-citation'." (let ((al (buffer-substring (save-excursion (beginning-of-line 0) (1+ (point))) end))) - (if (not (assoc al al-alist)) - (progn - (push (list wrote in prefix tag) - gnus-cite-loose-attribution-alist) - (push (cons al t) al-alist)))))))) + (when (not (assoc al al-alist)) + (push (list wrote in prefix tag) + gnus-cite-loose-attribution-alist) + (push (cons al t) al-alist))))))) (defun gnus-cite-connect-attributions () ;; Connect attributions to citations @@ -979,12 +978,7 @@ See also the documentation for `gnus-article-highlight-citation'." from to overlay) (goto-char (point-min)) (when (zerop (forward-line (1- number))) - (static-if (or (featurep 'xemacs) - (and (eq emacs-major-version 20) - (>= emacs-minor-version 3)) - (>= emacs-major-version 21)) - (forward-char (length prefix)) - (move-to-column (string-width prefix))) + (forward-char (length prefix)) (skip-chars-forward " \t") (setq from (point)) (end-of-line 1) diff --git a/lisp/gnus-clfns.el b/lisp/gnus-clfns.el deleted file mode 100644 index db33634..0000000 --- a/lisp/gnus-clfns.el +++ /dev/null @@ -1,432 +0,0 @@ -;;; gnus-clfns.el --- compiler macros for emulating cl functions - -;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -;; Author: Kastsumi Yamaoka -;; Keywords: cl, compile - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This module is for mainly avoiding cl runtime functions in FSF -;; Emacsen. Function should also be defined as an ordinary function -;; if it will not be provided in cl. - -;;; Code: - -(if (featurep 'xemacs) - nil - (eval-when-compile (require 'cl)) - (require 'pym) - - (define-compiler-macro butlast (&whole form x &optional n) - (if (>= emacs-major-version 21) - form - (if n - `(let ((x ,x) - (n ,n)) - (if (and n (<= n 0)) - x - (let ((m (length x))) - (or n (setq n 1)) - (and (< n m) - (progn - (if (> n 0) - (progn - (setq x (copy-sequence x)) - (setcdr (nthcdr (- (1- m) n) x) nil))) - x))))) - `(let* ((x ,x) - (m (length x))) - (and (< 1 m) - (progn - (setq x (copy-sequence x)) - (setcdr (nthcdr (- m 2) x) nil) - x)))))) - -;; (define-compiler-macro coerce (&whole form x type) -;; (if (and (fboundp 'coerce) -;; (subrp (symbol-function 'coerce))) -;; form -;; `(let ((x ,x) -;; (type ,type)) -;; (cond ((eq type 'list) (if (listp x) x (append x nil))) -;; ((eq type 'vector) (if (vectorp x) x (vconcat x))) -;; ((eq type 'string) (if (stringp x) x (concat x))) -;; ((eq type 'array) (if (arrayp x) x (vconcat x))) -;; ((and (eq type 'character) (stringp x) (= (length x) 1)) -;; (aref x 0)) -;; ((and (eq type 'character) (symbolp x) -;; (= (length (symbol-name x)) 1)) -;; (aref (symbol-name x) 0)) -;; ((eq type 'float) (float x)) -;; ((typep x type) x) -;; (t (error "Can't coerce %s to type %s" x type)))))) - -;; (define-compiler-macro copy-list (&whole form list) -;; (if (and (fboundp 'copy-list) -;; (subrp (symbol-function 'copy-list))) -;; form -;; `(let ((list ,list)) -;; (if (consp list) -;; (let ((res nil)) -;; (while (consp list) (push (pop list) res)) -;; (prog1 (nreverse res) (setcdr res list))) -;; (car list))))) - - (define-compiler-macro last (&whole form x &optional n) - (if (>= emacs-major-version 20) - form - (if n - `(let* ((x ,x) - (n ,n) - (m 0) - (p x)) - (while (consp p) - (incf m) - (pop p)) - (if (<= n 0) - p - (if (< n m) - (nthcdr (- m n) x) - x))) - `(let ((x ,x)) - (while (consp (cdr x)) - (pop x)) - x)))) - - (define-compiler-macro mapc (&whole form fn seq &rest rest) - (if (>= emacs-major-version 21) - form - (if rest - `(let* ((fn ,fn) - (seq ,seq) - (args (list seq ,@rest)) - (m (apply (function min) (mapcar (function length) args))) - (n 0)) - (while (< n m) - (apply fn (mapcar (function (lambda (arg) (nth n arg))) args)) - (setq n (1+ n))) - seq) - `(let ((seq ,seq)) - (mapcar ,fn seq) - seq)))) - -;; (define-compiler-macro merge (&whole form type seq1 seq2 pred &rest keys) -;; (if (and (fboundp 'merge) -;; (subrp (symbol-function 'merge))) -;; form -;; `(let ((type ,type) -;; (seq1 ,seq1) -;; (seq2 ,seq2) -;; (pred ,pred)) -;; (or (listp seq1) (setq seq1 (append seq1 nil))) -;; (or (listp seq2) (setq seq2 (append seq2 nil))) -;; (let ((res nil)) -;; (while (and seq1 seq2) -;; (if (funcall pred (car seq2) (car seq1)) -;; (push (pop seq2) res) -;; (push (pop seq1) res))) -;; (coerce (nconc (nreverse res) seq1 seq2) type))))) - -;; (define-compiler-macro string (&whole form &rest args) -;; (if (>= emacs-major-version 20) -;; form -;; (list 'concat (cons 'list args)))) - -;; (defun-maybe string (&rest args) -;; "Concatenate all the argument characters and make the result a string." -;; (concat args)) - - (define-compiler-macro string-to-list (&whole form string) - (cond ((fboundp 'string-to-list) - form) - ((fboundp 'string-to-char-list) - (list 'string-to-char-list string)) - (t - `(let* ((str ,string) - (len (length str)) - (idx 0) - c l) - (while (< idx len) - (setq c (sref str idx)) - (setq idx (+ idx (char-bytes c))) - (setq l (cons c l))) - (nreverse l))))) - - ;; 92.7.2 by K.Handa (imported from Mule 2.3) - (defun-maybe string-to-list (str) - (let ((len (length str)) - (idx 0) - c l) - (while (< idx len) - (setq c (sref str idx)) - (setq idx (+ idx (char-bytes c))) - (setq l (cons c l))) - (nreverse l))) - -;; (define-compiler-macro subseq (&whole form seq start &optional end) -;; (if (and (fboundp 'subseq) -;; (subrp (symbol-function 'subseq))) -;; form -;; (if end -;; `(let ((seq ,seq) -;; (start ,start) -;; (end ,end)) -;; (if (stringp seq) -;; (substring seq start end) -;; (let (len) -;; (if (< end 0) -;; (setq end (+ end (setq len (length seq))))) -;; (if (< start 0) -;; (setq start (+ start (or len (setq len (length seq)))))) -;; (cond ((listp seq) -;; (if (> start 0) -;; (setq seq (nthcdr start seq))) -;; (let ((res nil)) -;; (while (>= (setq end (1- end)) start) -;; (push (pop seq) res)) -;; (nreverse res))) -;; (t -;; (let ((res (make-vector (max (- end start) 0) nil)) -;; (i 0)) -;; (while (< start end) -;; (aset res i (aref seq start)) -;; (setq i (1+ i) -;; start (1+ start))) -;; res)))))) -;; `(let ((seq ,seq) -;; (start ,start)) -;; (if (stringp seq) -;; (substring seq start) -;; (let (len) -;; (if (< start 0) -;; (setq start (+ start (or len (setq len (length seq)))))) -;; (cond ((listp seq) -;; (if (> start 0) -;; (setq seq (nthcdr start seq))) -;; (copy-sequence seq)) -;; (t -;; (let* ((end (or len (length seq))) -;; (res (make-vector (max (- end start) 0) nil)) -;; (i 0)) -;; (while (< start end) -;; (aset res i (aref seq start)) -;; (setq i (1+ i) -;; start (1+ start))) -;; res))))))))) - ) - -;; A tool for the developers. - -(defvar cl-run-time-functions - '(Values - Values-list acons assoc-if assoc-if-not build-klist butlast ceiling* - coerce common-lisp-indent-function compiler-macroexpand concatenate - copy-list count count-if count-if-not delete* delete-duplicates delete-if - delete-if-not duplicate-symbols-p elt-satisfies-test-p equalp evenp every - extract-from-klist fill find find-if find-if-not floatp-safe floor* gcd - gensym gentemp get-setf-method getf hash-table-count hash-table-p - intersection isqrt keyword-argument-supplied-p keyword-of keywordp last - lcm ldiff lisp-indent-259 lisp-indent-do lisp-indent-function-lambda-hack - lisp-indent-report-bad-format lisp-indent-tagbody list-length - make-hash-table make-random-state map mapc mapcan mapcar* mapcon mapl - maplist member-if member-if-not merge mismatch mod* nbutlast nintersection - notany notevery nreconc nset-difference nset-exclusive-or nsublis nsubst - nsubst-if nsubst-if-not nsubstitute nsubstitute-if nsubstitute-if-not - nunion oddp pair-with-newsyms pairlis position position-if position-if-not - proclaim random* random-state-p rassoc* rassoc-if rassoc-if-not - reassemble-argslists reduce rem* remove remove* remove-duplicates - remove-if remove-if-not remq replace revappend round* safe-idiv search - set-difference set-exclusive-or setelt setnth setnthcdr signum some sort* - stable-sort sublis subseq subsetp subst subst-if subst-if-not substitute - substitute-if substitute-if-not tailp tree-equal truncate* union - unzip-lists zip-lists) - "A list of CL run-time functions. Some functions were built-in, nowadays.") - -;;;###autoload -(defun find-cl-run-time-functions (file-or-directory arg) - "Find CL run-time functions in the FILE-OR-DIRECTORY. You can alter -the behavior of this command with the prefix ARG as described below. - -By default, it searches for all the CL run-time functions listed in - the variable `cl-run-time-functions'. -With 1 or 3 \\[universal-argument]'s, the built-in functions in this Emacs\ - will not be - reported. -With 2 or 3 \\[universal-argument]'s, just the symbols will also be reported. - -You can use the `digit-argument' 1, 2 or 3 instead of\ - \\[universal-argument]'s." - (interactive (list (read-file-name "Find CL run-time functions in: " - nil default-directory t) - current-prefix-arg)) - (unless (interactive-p) - (error "You should invoke `M-x find-cl-run-time-functions' interactively")) - (let ((report-symbols (member arg '((16) (64) 2 3))) - files clfns working file lines form forms fns fn newform buffer - window scroll - buffer-file-format format-alist - insert-file-contents-post-hook insert-file-contents-pre-hook) - (cond ((file-directory-p file-or-directory) - (setq files (directory-files file-or-directory t "\\.el$")) - (dolist (file files) - (unless (file-exists-p file) - (setq files (delete file files)))) - (unless files - (message "No files found in: %s" file-or-directory)) - files) - ((file-exists-p file-or-directory) - (setq files (list file-or-directory))) - (t - (message "No such file or directory: %s" file-or-directory))) - (when files - (if (member arg '((4) (64) 1 3)) - (dolist (fn cl-run-time-functions) - (unless (and (fboundp fn) - (subrp (symbol-function fn))) - (push fn clfns))) - (setq clfns cl-run-time-functions)) - (set-buffer (setq working - (get-buffer-create - " *Searching for CL run-time functions*"))) - (let (emacs-lisp-mode-hook) - (emacs-lisp-mode)) - (while files - (setq file (pop files) - lines (list nil nil)) - (message "Searching for CL run-time functions in: %s..." - (file-name-nondirectory file)) - (insert-file-contents file nil nil nil t) - ;; XEmacs moves point to the beginning of the buffer after - ;; inserting a file, FSFmacs doesn't so if the fifth argument - ;; of `insert-file-contents' is specified. - (goto-char (point-min)) - ;; - (while (progn - (while (and (looking-at "[\t\v\f\r ]*\\(;.*\\)?$") - (zerop (forward-line 1)))) - (not (eobp))) - (setcar lines (if (bolp) - (1+ (count-lines (point-min) (point))) - (count-lines (point-min) (point)))) - (when (consp;; Ignore stand-alone symbols, strings, etc. - (setq form (condition-case nil - (read working) - (error nil)))) - (setcdr lines (list (count-lines (point-min) (point)))) - (setq forms (list form) - fns nil) - (while forms - (setq form (pop forms)) - (when (consp form) - (setq fn (pop form)) - (cond ((memq fn '(apply mapatoms mapcar mapconcat - mapextent symbol-function)) - (if (consp (car form)) - (when (memq (caar form) '(\` backquote quote)) - (setcar form (cdar form))) - (setq form (cdr form)))) - ((memq fn '(\` backquote quote)) - (if report-symbols - (progn - (setq form (car form) - newform nil) - (while form - (push (list (or (car-safe form) form)) - newform) - (setq form (cdr-safe form))) - (setq form (nreverse newform))) - (setq form nil))) - ((memq fn '(defadvice - defmacro defsubst defun - defmacro-maybe defmacro-maybe-cond - defsubst-maybe defun-maybe - defun-maybe-cond)) - (setq form (cddr form))) - ((memq fn '(defalias lambda fset)) - (setq form (cdr form))) - ((eq fn 'define-compiler-macro) - (setq form nil)) - ((eq fn 'dolist) - (setcar form (cadar form))) - ((memq fn '(let let*)) - (setq form - (append - (delq nil - (mapcar - (lambda (element) - (when (and (consp element) - (consp (cadr element))) - (cadr element))) - (car form))) - (cdr form)))) - ((eq fn 'sort) - (when (and (consp (cadr form)) - (memq (caadr form) '(\` backquote quote))) - (setcdr form (list (cdadr form))))) - ((and (memq fn clfns) - (listp form)) - (push fn fns))) - (when (listp form) - (setq forms (append form forms))))) - (when fns - (if buffer - (set-buffer buffer) - (display-buffer - (setq buffer (get-buffer-create - (concat "*CL run-time functions in: " - file-or-directory "*")))) - (set-buffer buffer) - (erase-buffer) - (setq window (get-buffer-window buffer t) - scroll (- 2 (window-height window)) - fill-column (max 16 (- (window-width window) 2)) - fill-prefix " ")) - (when file - (insert file "\n") - (setq file nil)) - (narrow-to-region - (point) - (progn - (insert fill-prefix - (mapconcat (lambda (fn) (format "%s" fn)) - (nreverse fns) " ") - "\n") - (point))) - (fill-region (point-min) (point-max)) - (goto-char (point-min)) - (widen) - (delete-char 14) - (insert (format "%5d - %5d:" (car lines) (cadr lines))) - (goto-char (point-max)) - (forward-line scroll) - (set-window-start window (point)) - (goto-char (point-max)) - (sit-for 0) - (set-buffer working))))) - (kill-buffer working) - (if buffer - (message "Done") - (message "No CL run-time functions found in: %s" - file-or-directory))))) - -(provide 'gnus-clfns) - -;;; gnus-clfns.el ends here diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 7ebcce2..fac490b 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -313,15 +313,15 @@ has been stored locally for at least this many days." (const :format "Disable " DISABLE)) "\nEnable, or disable, agent expiration in this group or topic." gnus-agent-cat-enable-expiration) - (agent-disable-undownloaded-faces - (boolean :tag "Disable Agent Faces") - "Have the summary buffer ignore the agent's undownloaded faces. -These faces, when used, act as a warning that an article has not been -fetched into either the agent nor the cache. This is of most use to -users who use the agent as a cache (i.e. they only operate on articles -that have been downloaded). Disable to display normal article faces -even when the article hasn't been downloaded." - gnus-agent-cat-disable-undownloaded-faces)) + (agent-enable-undownloaded-faces + (boolean :tag "Enable Agent Faces") + "Have the summary buffer use the agent's undownloaded faces. +These faces, when enabled, act as a warning that an article has not +been fetched into either the agent nor the cache. This is of most use +to users who use the agent as a cache (i.e. they only operate on +articles that have been downloaded). Leave disabled to display normal +article faces even when the article hasn't been downloaded." +gnus-agent-cat-enable-undownloaded-faces)) "Alist of group parameters that are not also topic parameters. Each entry has the form (NAME TYPE DOC ACCESSOR), where NAME is the @@ -898,7 +898,7 @@ articles in the thread. (defvar gnus-agent-cat-days-until-old) (defvar gnus-agent-cat-predicate) (defvar gnus-agent-cat-groups) - (defvar gnus-agent-cat-disable-undownloaded-faces) + (defvar gnus-agent-cat-enable-undownloaded-faces) ) (defun gnus-trim-whitespace (s) @@ -930,11 +930,11 @@ articles in the thread. (if deflt (let ((tag (cdr (memq :tag type)))) - (if (string-match "\n" deflt) - (progn (while (progn (setq deflt (replace-match "\n " t t - deflt)) - (string-match "\n" deflt (match-end 0)))) - (setq deflt (concat "\n" deflt)))) + (when (string-match "\n" deflt) + (while (progn (setq deflt (replace-match "\n " t t + deflt)) + (string-match "\n" deflt (match-end 0)))) + (setq deflt (concat "\n" deflt))) (setcar tag (concat (car tag) deflt)))) @@ -985,7 +985,7 @@ articles in the thread. (widgets category-fields)) (while widgets (let* ((widget (pop widgets)) - (value (ignore-errors (widget-value widget)))) + (value (condition-case nil (widget-value widget) (error)))) (eval `(setf (,(widget-get widget :accessor) ',info) ',value))))) (gnus-category-write) @@ -1048,7 +1048,7 @@ articles in the thread. (widget-insert "\nVisual Settings ") - (gnus-agent-cat-prepare-category-field agent-disable-undownloaded-faces) + (gnus-agent-cat-prepare-category-field agent-enable-undownloaded-faces) (use-local-map widget-keymap) (widget-setup) diff --git a/lisp/gnus-delay.el b/lisp/gnus-delay.el index cc212fa..67f74ce 100644 --- a/lisp/gnus-delay.el +++ b/lisp/gnus-delay.el @@ -150,7 +150,7 @@ DELAY is a string, giving the length of the time. Possible values are: (message-send-hook (copy-sequence message-send-hook)) articles article deadline) - (when (gnus-gethash group gnus-newsrc-hashtb) + (when (gnus-group-entry group) (gnus-activate-group group) (add-hook 'message-send-hook '(lambda () diff --git a/lisp/gnus-demon.el b/lisp/gnus-demon.el index 3d943b6..a8515b8 100644 --- a/lisp/gnus-demon.el +++ b/lisp/gnus-demon.el @@ -107,7 +107,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's." (when gnus-demon-handlers ;; Set up the timer. (setq gnus-demon-timer - (nnheader-run-at-time + (run-at-time gnus-demon-timestep gnus-demon-timestep 'gnus-demon)) ;; Reset control variables. (setq gnus-demon-handler-state diff --git a/lisp/gnus-diary.el b/lisp/gnus-diary.el index dafb8c3..620f7ca 100644 --- a/lisp/gnus-diary.el +++ b/lisp/gnus-diary.el @@ -204,7 +204,7 @@ There are currently two built-in format functions: (let ((head (cdr (assoc (intern (format "X-Diary-%s" (car elt))) headers)))) (when head - (nndiary-parse-schedule-value head (cadr elt) (caddr elt))))) + (nndiary-parse-schedule-value head (cadr elt) (car (cddr elt)))))) nndiary-headers)) ;; #### NOTE: Gnus sometimes gives me a HEADER not corresponding to any @@ -406,7 +406,7 @@ If ARG (or prefix) is non-nil, force prompting for all fields." (when (re-search-forward (concat "^" header ":") nil t) (unless (eq (char-after) ? ) (insert " ")) - (setq value (buffer-substring (point) (gnus-point-at-eol))) + (setq value (buffer-substring (point) (point-at-eol))) (and (string-match "[ \t]*\\([^ \t]+\\)[ \t]*" value) (setq value (match-string 1 value))) (condition-case () diff --git a/lisp/gnus-dired.el b/lisp/gnus-dired.el index 1fa657f..3937874 100644 --- a/lisp/gnus-dired.el +++ b/lisp/gnus-dired.el @@ -72,7 +72,7 @@ (if (null arg) (not gnus-dired-mode) (> (prefix-numeric-value arg) 0))) (when gnus-dired-mode - (gnus-add-minor-mode 'gnus-dired-mode "" gnus-dired-mode-map) + (add-minor-mode 'gnus-dired-mode "" gnus-dired-mode-map) (gnus-run-hooks 'gnus-dired-mode-hook)))) ;;;###autoload diff --git a/lisp/gnus-draft.el b/lisp/gnus-draft.el index a0774ef..c941bb3 100644 --- a/lisp/gnus-draft.el +++ b/lisp/gnus-draft.el @@ -76,7 +76,7 @@ ;; Set up the menu. (when (gnus-visual-p 'draft-menu 'menu) (gnus-draft-make-menu-bar)) - (gnus-add-minor-mode 'gnus-draft-mode " Draft" gnus-draft-mode-map) + (add-minor-mode 'gnus-draft-mode " Draft" gnus-draft-mode-map) (gnus-run-hooks 'gnus-draft-mode-hook)))) ;;; Commands @@ -133,17 +133,20 @@ (defun gnus-draft-send (article &optional group interactive) "Send message ARTICLE." - (let ((message-syntax-checks (if interactive message-syntax-checks - 'dont-check-for-anything-just-trust-me)) - (message-hidden-headers nil) - (message-inhibit-body-encoding (or (not group) - (equal group "nndraft:queue") - message-inhibit-body-encoding)) - (message-send-hook (and group (not (equal group "nndraft:queue")) - message-send-hook)) - (message-setup-hook (and group (not (equal group "nndraft:queue")) - message-setup-hook)) - type method move-to) + (let* ((is-queue (or (not group) + (equal group "nndraft:queue"))) + (message-syntax-checks (if interactive message-syntax-checks + 'dont-check-for-anything-just-trust-me)) + (message-hidden-headers nil) + (message-inhibit-body-encoding (or is-queue + message-inhibit-body-encoding)) + (message-send-hook (and (not is-queue) + message-send-hook)) + (message-setup-hook (and (not is-queue) + message-setup-hook)) + (gnus-agent-queue-mail (and (not is-queue) + gnus-agent-queue-mail)) + type method move-to) (gnus-draft-setup article (or group "nndraft:queue")) ;; We read the meta-information that says how and where ;; this message is to be sent. @@ -153,7 +156,7 @@ (concat "^" (regexp-quote gnus-agent-target-move-group-header) ":") nil t) (skip-syntax-forward "-") - (setq move-to (buffer-substring (point) (gnus-point-at-eol))) + (setq move-to (buffer-substring (point) (point-at-eol))) (message-remove-header gnus-agent-target-move-group-header)) (goto-char (point-min)) (when (re-search-forward @@ -197,22 +200,25 @@ (defun gnus-group-send-queue () "Send all sendable articles from the queue group." (interactive) - (gnus-activate-group "nndraft:queue") - (save-excursion - (let* ((articles (nndraft-articles)) - (unsendable (gnus-uncompress-range - (cdr (assq 'unsend - (gnus-info-marks - (gnus-get-info "nndraft:queue")))))) - (gnus-posting-styles nil) - (total (length articles)) - article) - (while (setq article (pop articles)) - (unless (memq article unsendable) - (let ((message-sending-message - (format "Sending message %d of %d..." - (- total (length articles)) total))) - (gnus-draft-send article))))))) + (when (or gnus-plugged + (not gnus-agent-prompt-send-queue) + (gnus-y-or-n-p "Gnus is unplugged; really send queue? ")) + (gnus-activate-group "nndraft:queue") + (save-excursion + (let* ((articles (nndraft-articles)) + (unsendable (gnus-uncompress-range + (cdr (assq 'unsend + (gnus-info-marks + (gnus-get-info "nndraft:queue")))))) + (gnus-posting-styles nil) + (total (length articles)) + article) + (while (setq article (pop articles)) + (unless (memq article unsendable) + (let ((message-sending-message + (format "Sending message %d of %d..." + (- total (length articles)) total))) + (gnus-draft-send article)))))))) ;;;###autoload (defun gnus-draft-reminder () diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index d2dde41..1493bbd 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -1,5 +1,5 @@ ;;; gnus-ems.el --- functions for making Semi-gnus work under different Emacsen -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -38,8 +38,7 @@ (defvar gnus-down-mouse-2 [down-mouse-2]) (defvar gnus-widget-button-keymap nil) (defvar gnus-mode-line-modified - (if (or (featurep 'xemacs) - (< emacs-major-version 20)) + (if (featurep 'xemacs) '("--**-" . "-----") '("**" "--"))) @@ -50,11 +49,7 @@ (autoload 'gnus-get-buffer-create "gnus") (autoload 'nnheader-find-etc-directory "nnheader")) -(if (or (featurep 'xemacs) - (>= emacs-major-version 21)) - (autoload 'smiley-region "smiley") - (autoload 'smiley-region "smiley-mule")) - +(autoload 'smiley-region "smiley") ;; Fixme: shouldn't require message (autoload 'message-text-with-property "message") @@ -69,12 +64,6 @@ ;;; Mule functions. (eval-and-compile - (defalias 'gnus-char-width - (if (fboundp 'char-width) - 'char-width - (lambda (ch) 1)))) ;; A simple hack. - -(eval-and-compile (if (featurep 'xemacs) (gnus-xmas-define) (defvar gnus-mouse-face-prop 'mouse-face @@ -102,16 +91,13 @@ ((featurep 'mule) ;; Mule and new Emacs definitions - ;; [Note] Now there are three kinds of mule implementations, - ;; original MULE, XEmacs/mule and Emacs 20+ including - ;; MULE features. Unfortunately these APIs are different. In - ;; particular, Emacs (including original Mule) and XEmacs are - ;; quite different. However, this version of Gnus doesn't support - ;; anything other than XEmacs 20+ and Emacs 20.3+. + ;; [Note] Now there are two kinds of mule implementations, + ;; XEmacs/mule and Emacs 20+ including Mule features. + ;; Unfortunately these APIs are different. In particular, Emacs + ;; and XEmacs are quite different. However, this version of Gnus + ;; doesn't support anything other than XEmacs 21+ and Emacs 21+. - ;; Predicates to check are following: - ;; (boundp 'MULE) is t only if Mule (original; anything older than - ;; Mule 2.3) is running. + ;; Predicate to check is the following: ;; (featurep 'mule) is t when other mule variants are running. ;; It is possible to detect XEmacs/mule by (featurep 'mule) and @@ -173,16 +159,6 @@ "Non-nil means the mark and region are currently active in this buffer." mark-active) ; aliased to region-exists-p in XEmacs. -(if (fboundp 'add-minor-mode) - (defalias 'gnus-add-minor-mode 'add-minor-mode) - (defun gnus-add-minor-mode (mode name map &rest rest) - (set (make-local-variable mode) t) - (unless (assq mode minor-mode-alist) - (push `(,mode ,name) minor-mode-alist)) - (unless (assq mode minor-mode-map-alist) - (push (cons mode map) - minor-mode-map-alist)))) - (defun gnus-x-splash () "Show a splash screen using a pixmap in the current buffer." (let ((dir (nnheader-find-etc-directory "gnus")) diff --git a/lisp/gnus-fun.el b/lisp/gnus-fun.el index b293d4e..f8fb34f 100644 --- a/lisp/gnus-fun.el +++ b/lisp/gnus-fun.el @@ -29,6 +29,9 @@ (require 'cl) (require 'mm-util)) +(require 'gnus-ems) +(require 'gnus-util) + (defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory) "*Directory where X-Face PBM files are stored." :group 'gnus-fun @@ -53,6 +56,30 @@ on stdout." :group 'gnus-fun :type 'string) +(defcustom gnus-face-properties-alist (if (featurep 'xemacs) + '((xface . (:face gnus-x-face))) + '((pbm . (:face gnus-x-face)) + (png . nil))) + "Alist of image types and properties applied to Face and X-Face images. +Here are examples: + +;; Specify the altitude of Face images in the From header. +\(setq gnus-face-properties-alist + '((pbm . (:face gnus-x-face :ascent 80)) + (png . (:ascent 80)))) + +;; Show Face images as pressed buttons. +\(setq gnus-face-properties-alist + '((pbm . (:face gnus-x-face :relief -2)) + (png . (:relief -2)))) + +See the manual for the valid properties for various image types. +Currently, `pbm' is used for X-Face images and `png' is used for Face +images in Emacs. Only the `:face' property is effective on the `xface' +image type in XEmacs if it is built with the libcompface library." + :group 'gnus-fun + :type '(repeat (cons :format "%v" (symbol :tag "Image type") plist))) + (defun gnus-shell-command-to-string (command) "Like `shell-command-to-string' except not mingling ERROR." (with-output-to-string @@ -188,11 +215,11 @@ colors of the displayed X-Faces." 'xface (gnus-put-image (if (gnus-image-type-available-p 'xface) - (gnus-create-image - (concat "X-Face: " data) - 'xface t :face 'gnus-x-face) - (gnus-create-image - pbm 'pbm t :face 'gnus-x-face)) nil 'xface)) + (apply 'gnus-create-image (concat "X-Face: " data) 'xface t + (cdr (assq 'xface gnus-face-properties-alist))) + (apply 'gnus-create-image pbm 'pbm t + (cdr (assq 'pbm gnus-face-properties-alist)))) + nil 'xface)) (gnus-add-wash-type 'xface)))))) (defun gnus-grab-cam-x-face () diff --git a/lisp/gnus-gl.el b/lisp/gnus-gl.el deleted file mode 100644 index 7a989e6..0000000 --- a/lisp/gnus-gl.el +++ /dev/null @@ -1,860 +0,0 @@ -;;; gnus-gl.el --- an interface to GroupLens for Gnus - -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. - -;; Author: Brad Miller -;; Keywords: news, score - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; GroupLens software and documentation is copyright (c) 1995 by Paul -;; Resnick (Massachusetts Institute of Technology); Brad Miller, John -;; Riedl, Jon Herlocker, and Joseph Konstan (University of Minnesota), -;; and David Maltz (Carnegie-Mellon University). -;; -;; Permission to use, copy, modify, and distribute this documentation -;; for non-commercial and commercial purposes without fee is hereby -;; granted provided that this copyright notice and permission notice -;; appears in all copies and that the names of the individuals and -;; institutions holding this copyright are not used in advertising or -;; publicity pertaining to this software without specific, written -;; prior permission. The copyright holders make no representations -;; about the suitability of this software and documentation for any -;; purpose. It is provided ``as is'' without express or implied -;; warranty. -;; -;; The copyright holders request that they be notified of -;; modifications of this code. Please send electronic mail to -;; grouplens@cs.umn.edu for more information or to announce derived -;; works. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Author: Brad Miller -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; User Documentation: -;; To use GroupLens you must load this file. -;; You must also register a pseudonym with the Better Bit Bureau. -;; http://www.cs.umn.edu/Research/GroupLens -;; -;; ---------------- For your .emacs or .gnus file ---------------- -;; -;; As of version 2.5, grouplens now works as a minor mode of -;; gnus-summary-mode. To get make that work you just need a couple of -;; hooks. -;; (setq gnus-use-grouplens t) -;; (setq grouplens-pseudonym "") -;; (setq grouplens-bbb-host "grouplens.cs.umn.edu") -;; -;; (setq gnus-summary-default-score 0) -;; -;; USING GROUPLENS -;; How do I Rate an article?? -;; Before you type n to go to the next article, hit a number from 1-5 -;; Type r in the summary buffer and you will be prompted. -;; Note that when you're in grouplens-minor-mode 'r' masks the -;; usual reply binding for 'r' -;; -;; What if, Gasp, I find a bug??? -;; Please type M-x gnus-gl-submit-bug-report. This will set up a -;; mail buffer with the state of variables and buffers that will help -;; me debug the problem. A short description up front would help too! -;; -;; How do I display the prediction for an article: -;; If you set the gnus-summary-line-format as shown above, the score -;; (prediction) will be shown automatically. -;; -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Programmer Notes -;; 10/9/95 -;; gnus-scores-articles contains the articles -;; When scoring is done, the call tree looks something like: -;; gnus-possibly-score-headers -;; ==> gnus-score-headers -;; ==> gnus-score-load-file -;; ==> get-all-mids (from the eval form) -;; -;; it would be nice to have one that gets called after all the other -;; headers have been scored. -;; we may want a variable gnus-grouplens-scale-factor -;; and gnus-grouplens-offset this would probably be either -3 or 0 -;; to make the scores centered around zero or not. -;; Notes 10/12/95 -;; According to Lars, Norse god of gnus, the simple way to insert a -;; call to an external function is to have a function added to the -;; variable gnus-score-find-files-function This new function -;; gnus-grouplens-score-alist will return a core alist that -;; has (("message-id" ("" score) ("" score)) -;; This seems like it would be pretty inefficient, though workable. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; TODO -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; 3. Add some more ways to rate messages -;; 4. Better error handling for token timeouts. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; bugs -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; - -;;; Code: - -(eval-when-compile (require 'cl)) - -(require 'gnus-score) -(require 'gnus) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; User variables -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defvar gnus-summary-grouplens-line-format - "%U\%R\%z%l%I\%(%[%4L: %-23,23n%]%) %s\n" - "*The line format spec in summary GroupLens mode buffers.") - -(defvar grouplens-pseudonym "" - "User's pseudonym. -This pseudonym is obtained during the registration process") - -(defvar grouplens-bbb-host "grouplens.cs.umn.edu" - "Host where the bbbd is running.") - -(defvar grouplens-bbb-port 9000 - "Port where the bbbd is listening.") - -(defvar grouplens-newsgroups - '("comp.groupware" "comp.human-factors" "comp.lang.c++" - "comp.lang.java" "comp.os.linux.admin" "comp.os.linux.advocacy" - "comp.os.linux.announce" "comp.os.linux.answers" - "comp.os.linux.development" "comp.os.linux.development.apps" - "comp.os.linux.development.system" "comp.os.linux.hardware" - "comp.os.linux.help" "comp.os.linux.m68k" "comp.os.linux.misc" - "comp.os.linux.networking" "comp.os.linux.setup" "comp.os.linux.x" - "mn.general" "rec.arts.movies" "rec.arts.movies.current-films" - "rec.food.recipes" "rec.humor") - "*Groups that are part of the GroupLens experiment.") - -(defvar grouplens-prediction-display 'prediction-spot - "valid values are: - prediction-spot -- an * corresponding to the prediction between 1 and 5, - confidence-interval -- a numeric confidence interval - prediction-bar -- |##### | the longer the bar, the better the article, - confidence-bar -- | ----- } the prediction is in the middle of the bar, - confidence-spot -- ) * | the spot gets bigger with more confidence, - prediction-num -- plain-old numeric value, - confidence-plus-minus -- prediction +/i confidence") - -(defvar grouplens-score-offset 0 - "Offset the prediction by this value. -Setting this variable to -2 would have the following effect on -GroupLens scores: - - 1 --> -2 - 2 --> -1 - 3 --> 0 - 4 --> 1 - 5 --> 2 - -The reason is that a user might want to do this is to combine -GroupLens predictions with scores calculated by other score methods.") - -(defvar grouplens-score-scale-factor 1 - "This variable allows the user to magnify the effect of GroupLens scores. -The scale factor is applied after the offset.") - -(defvar gnus-grouplens-override-scoring 'override - "Tell GroupLens to override the normal Gnus scoring mechanism. -GroupLens scores can be combined with gnus scores in one of three ways. -'override -- just use grouplens predictions for grouplens groups -'combine -- combine grouplens scores with gnus scores -'separate -- treat grouplens scores completely separate from gnus") - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Program global variables -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar grouplens-bbb-token nil - "Current session token number.") - -(defvar grouplens-bbb-process nil - "Process Id of current bbbd network stream process.") - -(defvar grouplens-bbb-buffer nil - "Buffer associated with the BBBD process.") - -(defvar grouplens-rating-alist nil - "Current set of message-id rating pairs.") - -(defvar grouplens-current-hashtable nil - "A hashtable to hold predictions from the BBB.") - -(defvar grouplens-current-group nil) - -;;(defvar bbb-alist nil) - -(defvar bbb-timeout-secs 10 - "Number of seconds to wait for some response from the BBB. -If this times out we give up and assume that something has died..." ) - -(defvar grouplens-previous-article nil - "Message-ID of the last article read.") - -(defvar bbb-read-point) -(defvar bbb-response-point) - -(defun bbb-renew-hash-table () - (setq grouplens-current-hashtable (make-vector 100 0))) - -(bbb-renew-hash-table) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Utility Functions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun bbb-connect-to-bbbd (host port) - (unless grouplens-bbb-buffer - (setq grouplens-bbb-buffer - (gnus-get-buffer-create (format " *BBBD trace: %s*" host))) - (save-excursion - (set-buffer grouplens-bbb-buffer) - (make-local-variable 'bbb-read-point) - (make-local-variable 'bbb-response-point) - (setq bbb-read-point (point-min)))) - - ;; if an old process is still running for some reason, kill it - (when grouplens-bbb-process - (ignore-errors - (when (eq 'open (process-status grouplens-bbb-process)) - (set-process-buffer grouplens-bbb-process nil) - (delete-process grouplens-bbb-process)))) - - ;; clear the trace buffer of old output - (save-excursion - (set-buffer grouplens-bbb-buffer) - (erase-buffer)) - - ;; open the connection to the server - (catch 'done - (condition-case error - (setq grouplens-bbb-process - (open-network-stream-as-binary - "BBBD" grouplens-bbb-buffer host port)) - (error (gnus-message 3 "Error: Failed to connect to BBB") - nil)) - (and (null grouplens-bbb-process) - (throw 'done nil)) - (save-excursion - (set-buffer grouplens-bbb-buffer) - (setq bbb-read-point (point-min)) - (or (bbb-read-response grouplens-bbb-process) - (throw 'done nil)))) - - ;; return the process - grouplens-bbb-process) - -(defun bbb-send-command (process command) - (goto-char (point-max)) - (insert command) - (insert "\r\n") - (setq bbb-read-point (point)) - (setq bbb-response-point (point)) - (set-marker (process-mark process) (point)) ; process output also comes here - (process-send-string process command) - (process-send-string process "\r\n") - (process-send-eof process)) - -(defun bbb-read-response (process) - "This function eats the initial response of OK or ERROR from the BBB." - (let ((case-fold-search nil) - match-end) - (goto-char bbb-read-point) - (while (and (not (search-forward "\r\n" nil t)) - (accept-process-output process bbb-timeout-secs)) - (goto-char bbb-read-point)) - (setq match-end (point)) - (goto-char bbb-read-point) - (setq bbb-read-point match-end) - (looking-at "OK"))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Login Functions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun bbb-login () - "return the token number if login is successful, otherwise return nil." - (interactive) - (setq grouplens-bbb-token nil) - (if (not (equal grouplens-pseudonym "")) - (let ((bbb-process - (bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port))) - (if bbb-process - (save-excursion - (set-buffer (process-buffer bbb-process)) - (bbb-send-command bbb-process - (concat "login " grouplens-pseudonym)) - (if (bbb-read-response bbb-process) - (setq grouplens-bbb-token (bbb-extract-token-number)) - (gnus-message 3 "Error: GroupLens login failed"))))) - (gnus-message 3 "Error: you must set a pseudonym")) - grouplens-bbb-token) - -(defun bbb-extract-token-number () - (let ((token-pos (search-forward "token=" nil t))) - (when (looking-at "[0-9]+") - (buffer-substring token-pos (match-end 0))))) - -(gnus-add-shutdown 'bbb-logout 'gnus) - -(defun bbb-logout () - "logout of bbb session." - (when grouplens-bbb-token - (let ((bbb-process - (bbb-connect-to-bbbd grouplens-bbb-host grouplens-bbb-port))) - (when bbb-process - (save-excursion - (set-buffer (process-buffer bbb-process)) - (bbb-send-command bbb-process (concat "logout " grouplens-bbb-token)) - (bbb-read-response bbb-process)))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Get Predictions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun bbb-build-mid-scores-alist (groupname) - "this function can be called as part of the function to return the list of score files to use. -See the gnus variable `gnus-score-find-score-files-function'. - -*Note:* If you want to use grouplens scores along with calculated scores, -you should see the offset and scale variables. At this point, I don't -recommend using both scores and grouplens predictions together." - (setq grouplens-current-group groupname) - (when (member groupname grouplens-newsgroups) - (setq grouplens-previous-article nil) - ;; scores-alist should be a list of lists: - ;; ((("message-id" ("" score1 nil s) (" score2 nil s)))) - ;;`((("message-id" . ,predict-list))) ; Yes, this is the return value - (list - (list - (list (append (list "message-id") - (bbb-get-predictions (bbb-get-all-mids) groupname))))))) - -(defun bbb-get-predictions (midlist groupname) - "Ask the bbb for predictions, and build up the score alist." - (gnus-message 5 "Fetching Predictions...") - (if grouplens-bbb-token - (let ((bbb-process (bbb-connect-to-bbbd grouplens-bbb-host - grouplens-bbb-port))) - (when bbb-process - (save-excursion - (set-buffer (process-buffer bbb-process)) - (bbb-send-command bbb-process - (bbb-build-predict-command midlist groupname - grouplens-bbb-token)) - (if (bbb-read-response bbb-process) - (bbb-get-prediction-response bbb-process) - (gnus-message 1 "Invalid Token, login and try again") - (ding))))) - (gnus-message 3 "Error: You are not logged in to a BBB") - (ding))) - -(defun bbb-get-all-mids () - (mapcar (function (lambda (x) (mail-header-id x))) gnus-newsgroup-headers)) - -(defun bbb-build-predict-command (mlist grpname token) - (concat "getpredictions " token " " grpname "\r\n" - (mapconcat 'identity mlist "\r\n") "\r\n.\r\n")) - -(defun bbb-get-prediction-response (process) - (let ((case-fold-search nil)) - (goto-char bbb-read-point) - (while (and (not (search-forward ".\r\n" nil t)) - (accept-process-output process bbb-timeout-secs)) - (goto-char bbb-read-point)) - (goto-char (+ bbb-response-point 4));; we ought to be right before OK - (bbb-build-response-alist))) - -;; build-response-alist assumes that the cursor has been positioned at -;; the first line of the list of mid/rating pairs. -(defun bbb-build-response-alist () - (let (resp mid pred) - (while - (cond - ((looking-at "\\(<.*>\\) :nopred=") - ;;(push `(,(bbb-get-mid) ,gnus-summary-default-score nil s) resp) - (forward-line 1) - t) - ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\) :conflow=\\([0-9]\.[0-9][0-9]\\) :confhigh=\\([0-9]\.[0-9][0-9]\\)") - (setq mid (bbb-get-mid) - pred (bbb-get-pred)) - (push `(,mid ,pred nil s) resp) - (gnus-sethash mid (list pred (bbb-get-confl) (bbb-get-confh)) - grouplens-current-hashtable) - (forward-line 1) - t) - ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\)") - (setq mid (bbb-get-mid) - pred (bbb-get-pred)) - (push `(,mid ,pred nil s) resp) - (gnus-sethash mid (list pred 0 0) grouplens-current-hashtable) - (forward-line 1) - t) - (t nil))) - resp)) - -;; these "get" functions assume that there is an active match lying -;; around. Where the first parenthesized expression is the -;; message-id, and the second is the prediction, the third and fourth -;; are the confidence interval -;; -;; Since gnus assumes that scores are integer values?? we round the -;; prediction. -(defun bbb-get-mid () - (buffer-substring (match-beginning 1) (match-end 1))) - -(defun bbb-get-pred () - (let ((tpred (string-to-number (buffer-substring (match-beginning 2) - (match-end 2))))) - (if (> tpred 0) - (round (* grouplens-score-scale-factor - (+ grouplens-score-offset tpred))) - 1))) - -(defun bbb-get-confl () - (string-to-number (buffer-substring (match-beginning 4) (match-end 4)))) - -(defun bbb-get-confh () - (string-to-number (buffer-substring (match-beginning 4) (match-end 4)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Prediction Display -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defconst grplens-rating-range 4.0) -(defconst grplens-maxrating 5) -(defconst grplens-minrating 1) -(defconst grplens-predstringsize 12) - -(defvar gnus-tmp-score) -(defun bbb-grouplens-score (header) - (if (eq gnus-grouplens-override-scoring 'separate) - (bbb-grouplens-other-score header) - (let* ((rate-string (make-string 12 ?\ )) - (mid (mail-header-id header)) - (hashent (gnus-gethash mid grouplens-current-hashtable)) - (iscore gnus-tmp-score) - (low (car (cdr hashent))) - (high (car (cdr (cdr hashent))))) - (aset rate-string 0 ?|) - (aset rate-string 11 ?|) - (unless (member grouplens-current-group grouplens-newsgroups) - (unless (equal grouplens-prediction-display 'prediction-num) - (cond ((< iscore 0) - (setq iscore 1)) - ((> iscore 5) - (setq iscore 5)))) - (setq low 0) - (setq high 0)) - (if (and (bbb-valid-score iscore) - (not (null mid))) - (cond - ;; prediction-spot - ((equal grouplens-prediction-display 'prediction-spot) - (setq rate-string (bbb-fmt-prediction-spot rate-string iscore))) - ;; confidence-interval - ((equal grouplens-prediction-display 'confidence-interval) - (setq rate-string (bbb-fmt-confidence-interval iscore low high))) - ;; prediction-bar - ((equal grouplens-prediction-display 'prediction-bar) - (setq rate-string (bbb-fmt-prediction-bar rate-string iscore))) - ;; confidence-bar - ((equal grouplens-prediction-display 'confidence-bar) - (setq rate-string (format "| %4.2f |" iscore))) - ;; confidence-spot - ((equal grouplens-prediction-display 'confidence-spot) - (setq rate-string (format "| %4.2f |" iscore))) - ;; prediction-num - ((equal grouplens-prediction-display 'prediction-num) - (setq rate-string (bbb-fmt-prediction-num iscore))) - ;; confidence-plus-minus - ((equal grouplens-prediction-display 'confidence-plus-minus) - (setq rate-string (bbb-fmt-confidence-plus-minus iscore low high)) - ) - (t (gnus-message 3 "Invalid prediction display type"))) - (aset rate-string 5 ?N) (aset rate-string 6 ?A)) - rate-string))) - -;; Gnus user format function that doesn't depend on -;; bbb-build-mid-scores-alist being used as the score function, but is -;; instead called from gnus-select-group-hook. -- LAB -(defun bbb-grouplens-other-score (header) - (if (not (member grouplens-current-group grouplens-newsgroups)) - ;; Return an empty string - "" - (let* ((rate-string (make-string 12 ?\ )) - (mid (mail-header-id header)) - (hashent (gnus-gethash mid grouplens-current-hashtable)) - (pred (or (nth 0 hashent) 0)) - (low (nth 1 hashent)) - (high (nth 2 hashent))) - ;; Init rate-string - (aset rate-string 0 ?|) - (aset rate-string 11 ?|) - (unless (equal grouplens-prediction-display 'prediction-num) - (cond ((< pred 0) - (setq pred 1)) - ((> pred 5) - (setq pred 5)))) - ;; If no entry in BBB hash mark rate string as NA and return - (cond - ((null hashent) - (aset rate-string 5 ?N) - (aset rate-string 6 ?A) - rate-string) - - ((equal grouplens-prediction-display 'prediction-spot) - (bbb-fmt-prediction-spot rate-string pred)) - - ((equal grouplens-prediction-display 'confidence-interval) - (bbb-fmt-confidence-interval pred low high)) - - ((equal grouplens-prediction-display 'prediction-bar) - (bbb-fmt-prediction-bar rate-string pred)) - - ((equal grouplens-prediction-display 'confidence-bar) - (format "| %4.2f |" pred)) - - ((equal grouplens-prediction-display 'confidence-spot) - (format "| %4.2f |" pred)) - - ((equal grouplens-prediction-display 'prediction-num) - (bbb-fmt-prediction-num pred)) - - ((equal grouplens-prediction-display 'confidence-plus-minus) - (bbb-fmt-confidence-plus-minus pred low high)) - - (t - (gnus-message 3 "Invalid prediction display type") - (aset rate-string 0 ?|) - (aset rate-string 11 ?|) - rate-string))))) - -(defun bbb-valid-score (score) - (or (equal grouplens-prediction-display 'prediction-num) - (and (>= score grplens-minrating) - (<= score grplens-maxrating)))) - -(defun bbb-requires-confidence (format-type) - (or (equal format-type 'confidence-plus-minus) - (equal format-type 'confidence-spot) - (equal format-type 'confidence-interval))) - -(defun bbb-have-confidence (clow chigh) - (not (or (null clow) - (null chigh)))) - -(defun bbb-fmt-prediction-spot (rate-string score) - (aset rate-string - (round (* (/ (- score grplens-minrating) grplens-rating-range) - (+ (- grplens-predstringsize 4) 1.49))) - ?*) - rate-string) - -(defun bbb-fmt-confidence-interval (score low high) - (if (bbb-have-confidence low high) - (format "|%4.2f-%4.2f |" low high) - (bbb-fmt-prediction-num score))) - -(defun bbb-fmt-confidence-plus-minus (score low high) - (if (bbb-have-confidence low high) - (format "|%3.1f+/-%4.2f|" score (/ (- high low) 2.0)) - (bbb-fmt-prediction-num score))) - -(defun bbb-fmt-prediction-bar (rate-string score) - (let* ((i 1) - (step (/ grplens-rating-range (- grplens-predstringsize 4))) - (half-step (/ step 2)) - (loc (- grplens-minrating half-step))) - (while (< i (- grplens-predstringsize 2)) - (if (> score loc) - (aset rate-string i ?#) - (aset rate-string i ?\ )) - (setq i (+ i 1)) - (setq loc (+ loc step))) - ) - rate-string) - -(defun bbb-fmt-prediction-num (score) - (format "| %4.2f |" score)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;; Put Ratings -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun bbb-put-ratings () - (if (and grouplens-bbb-token - grouplens-rating-alist - (member gnus-newsgroup-name grouplens-newsgroups)) - (let ((bbb-process (bbb-connect-to-bbbd grouplens-bbb-host - grouplens-bbb-port)) - (rate-command (bbb-build-rate-command grouplens-rating-alist))) - (if bbb-process - (save-excursion - (set-buffer (process-buffer bbb-process)) - (gnus-message 5 "Sending Ratings...") - (bbb-send-command bbb-process rate-command) - (if (bbb-read-response bbb-process) - (setq grouplens-rating-alist nil) - (gnus-message 1 - "Token timed out: call bbb-login and quit again") - (ding)) - (gnus-message 5 "Sending Ratings...Done")) - (gnus-message 3 "No BBB connection"))) - (setq grouplens-rating-alist nil))) - -(defun bbb-build-rate-command (rate-alist) - (concat "putratings " grouplens-bbb-token " " grouplens-current-group " \r\n" - (mapconcat (lambda (this) ; form (mid . (score . time)) - (concat (car this) - " :rating=" (cadr this) ".00" - " :time=" (cddr this))) - rate-alist "\r\n") - "\r\n.\r\n")) - -;; Interactive rating functions. -(defun bbb-summary-rate-article (rating &optional midin) - (interactive "nRating: ") - (when (member gnus-newsgroup-name grouplens-newsgroups) - (let ((mid (or midin (bbb-get-current-id)))) - (if (and rating - (>= rating grplens-minrating) - (<= rating grplens-maxrating) - mid) - (let ((oldrating (assoc mid grouplens-rating-alist))) - (if oldrating - (setcdr oldrating (cons rating 0)) - (push `(,mid . (,rating . 0)) grouplens-rating-alist)) - (gnus-summary-mark-article nil (int-to-string rating))) - (gnus-message 3 "Invalid rating"))))) - -(defun grouplens-next-unread-article (rating) - "Select unread article after current one." - (interactive "P") - (when rating - (bbb-summary-rate-article rating)) - (gnus-summary-next-unread-article)) - -(defun grouplens-best-unread-article (rating) - "Select unread article after current one." - (interactive "P") - (when rating - (bbb-summary-rate-article rating)) - (gnus-summary-best-unread-article)) - -(defun grouplens-summary-catchup-and-exit (rating) - "Mark all articles not marked as unread in this newsgroup as read, then exit. -If prefix argument ALL is non-nil, all articles are marked as read." - (interactive "P") - (when rating - (bbb-summary-rate-article rating)) - (if (numberp rating) - (gnus-summary-catchup-and-exit) - (gnus-summary-catchup-and-exit rating))) - -(defun grouplens-score-thread (score) - "Raise the score of the articles in the current thread with SCORE." - (interactive "nRating: ") - (let (e) - (save-excursion - (let ((articles (gnus-summary-articles-in-thread)) - article) - (while (setq article (pop articles)) - (gnus-summary-goto-subject article) - (bbb-summary-rate-article score - (mail-header-id - (gnus-summary-article-header article))))) - (setq e (point))) - (let ((gnus-summary-check-current t)) - (or (zerop (gnus-summary-next-subject 1 t)) - (goto-char e)))) - (gnus-summary-recenter) - (gnus-summary-position-point) - (gnus-set-mode-line 'summary)) - -(defun bbb-exit-group () - (bbb-put-ratings) - (bbb-renew-hash-table)) - -(defun bbb-get-current-id () - (if gnus-current-headers - (mail-header-id gnus-current-headers) - (gnus-message 3 "You must select an article before you rate it"))) - -(defun bbb-grouplens-group-p (group) - "Say whether GROUP is a GroupLens group." - (if (member group grouplens-newsgroups) " (GroupLens Enhanced)" "")) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; TIME SPENT READING -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar grouplens-current-starting-time nil) - -(defun grouplens-start-timer () - (setq grouplens-current-starting-time (current-time))) - -(defun grouplens-elapsed-time () - (let ((et (bbb-time-float (current-time)))) - (- et (bbb-time-float grouplens-current-starting-time)))) - -(defun bbb-time-float (timeval) - (+ (* (car timeval) 65536) - (cadr timeval))) - -(defun grouplens-do-time () - (when (member gnus-newsgroup-name grouplens-newsgroups) - (when grouplens-previous-article - (let ((elapsed-time (grouplens-elapsed-time)) - (oldrating (assoc grouplens-previous-article - grouplens-rating-alist))) - (if (not oldrating) - (push `(,grouplens-previous-article . (0 . ,elapsed-time)) - grouplens-rating-alist) - (setcdr oldrating (cons (cadr oldrating) elapsed-time))))) - (grouplens-start-timer) - (setq grouplens-previous-article (bbb-get-current-id)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; BUG REPORTING -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defconst gnus-gl-version "gnus-gl.el 2.50") -(defconst gnus-gl-maintainer-address "grouplens-bug@cs.umn.edu") -(defun gnus-gl-submit-bug-report () - "Submit via mail a bug report on gnus-gl." - (interactive) - (require 'reporter) - (reporter-submit-bug-report gnus-gl-maintainer-address - (concat "gnus-gl.el " gnus-gl-version) - (list 'grouplens-pseudonym - 'grouplens-bbb-host - 'grouplens-bbb-port - 'grouplens-newsgroups - 'grouplens-bbb-token - 'grouplens-bbb-process - 'grouplens-current-group - 'grouplens-previous-article) - nil - 'gnus-gl-get-trace)) - -(defun gnus-gl-get-trace () - "Insert the contents of the BBBD trace buffer." - (when grouplens-bbb-buffer - (insert-buffer-substring grouplens-bbb-buffer))) - -;; -;; GroupLens minor mode -;; - -(defvar gnus-grouplens-mode nil - "Minor mode for providing a GroupLens interface in Gnus summary buffers.") - -(defvar gnus-grouplens-mode-map nil) - -(unless gnus-grouplens-mode-map - (setq gnus-grouplens-mode-map (make-keymap)) - (gnus-define-keys - gnus-grouplens-mode-map - "n" grouplens-next-unread-article - "r" bbb-summary-rate-article - "k" grouplens-score-thread - "c" grouplens-summary-catchup-and-exit - "," grouplens-best-unread-article)) - -(defun gnus-grouplens-make-menu-bar () - (unless (boundp 'gnus-grouplens-menu) - (easy-menu-define - gnus-grouplens-menu gnus-grouplens-mode-map "" - '("GroupLens" - ["Login" bbb-login t] - ["Rate" bbb-summary-rate-article t] - ["Next article" grouplens-next-unread-article t] - ["Best article" grouplens-best-unread-article t] - ["Raise thread" grouplens-score-thread t] - ["Report bugs" gnus-gl-submit-bug-report t])))) - -(defun gnus-grouplens-mode (&optional arg) - "Minor mode for providing a GroupLens interface in Gnus summary buffers." - (interactive "P") - (when (and (eq major-mode 'gnus-summary-mode) - (member gnus-newsgroup-name grouplens-newsgroups)) - (make-local-variable 'gnus-grouplens-mode) - (setq gnus-grouplens-mode - (if (null arg) (not gnus-grouplens-mode) - (> (prefix-numeric-value arg) 0))) - (when gnus-grouplens-mode - (gnus-make-local-hook 'gnus-select-article-hook) - (add-hook 'gnus-select-article-hook 'grouplens-do-time nil 'local) - (gnus-make-local-hook 'gnus-exit-group-hook) - (add-hook 'gnus-exit-group-hook 'bbb-exit-group nil 'local) - (make-local-variable 'gnus-score-find-score-files-function) - - (cond - ((eq gnus-grouplens-override-scoring 'combine) - ;; either add bbb-buld-mid-scores-alist to a list - ;; or make a list - (if (listp gnus-score-find-score-files-function) - (setq gnus-score-find-score-files-function - (append 'bbb-build-mid-scores-alist - gnus-score-find-score-files-function)) - (setq gnus-score-find-score-files-function - (list gnus-score-find-score-files-function - 'bbb-build-mid-scores-alist)))) - ;; leave the gnus-score-find-score-files variable alone - ((eq gnus-grouplens-override-scoring 'separate) - (add-hook 'gnus-select-group-hook - (lambda () - (bbb-get-predictions (bbb-get-all-mids) - gnus-newsgroup-name)))) - ;; default is to override - (t - (setq gnus-score-find-score-files-function - 'bbb-build-mid-scores-alist))) - - ;; Change how summary lines look - (make-local-variable 'gnus-summary-line-format) - (make-local-variable 'gnus-summary-line-format-spec) - (setq gnus-summary-line-format gnus-summary-grouplens-line-format) - (setq gnus-summary-line-format-spec nil) - (gnus-update-format-specifications nil 'summary) - (gnus-update-summary-mark-positions) - - ;; Set up the menu. - (when (and menu-bar-mode - (gnus-visual-p 'grouplens-menu 'menu)) - (gnus-grouplens-make-menu-bar)) - (gnus-add-minor-mode - 'gnus-grouplens-mode " GroupLens" gnus-grouplens-mode-map) - (gnus-run-hooks 'gnus-grouplens-mode-hook)))) - -(provide 'gnus-gl) - -;;; gnus-gl.el ends here diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index e934383..0f832ae 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -1,5 +1,5 @@ ;;; gnus-group.el --- group mode commands for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -41,21 +41,29 @@ (require 'time-date) (require 'gnus-ems) -(eval-when-compile (require 'mm-url)) +(eval-when-compile + (require 'mm-url) + (let ((features (cons 'gnus-group features))) + (require 'gnus-sum)) + (unless (boundp 'gnus-cache-active-hashtb) + (defvar gnus-cache-active-hashtb nil))) + +(autoload 'gnus-agent-total-fetched-for "gnus-agent") +(autoload 'gnus-cache-total-fetched-for "gnus-cache") (defcustom gnus-group-archive-directory - "*ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/" + "/ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/" "*The address of the (ding) archives." :group 'gnus-group-foreign :type 'directory) (defcustom gnus-group-recent-archive-directory - "*ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list-recent/" + "/ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list-recent/" "*The address of the most recent (ding) articles." :group 'gnus-group-foreign :type 'directory) -(defcustom gnus-no-groups-message "No gnus is bad news" +(defcustom gnus-no-groups-message "No Gnus is good news" "*Message displayed by Gnus when no groups are available." :group 'gnus-start :type 'string) @@ -145,7 +153,7 @@ list." (function-item gnus-group-sort-by-rank) (function :tag "other" nil)))) -(defcustom gnus-group-line-format "%M\%S\%p\%P\%5y:%B%(%g%)%l %O\n" +(defcustom gnus-group-line-format "%M\%S\%p\%P\%5y:%B%(%g%)%O\n" "*Format of group lines. It works along the same lines as a normal formatting string, with some simple extensions. @@ -174,11 +182,11 @@ with some simple extensions. %P Topic indentation (string) %m Whether there is new(ish) mail in the group (char, \"%\") %w Number of new(ish) mails in the group (integer) -%l Whether there are GroupLens predictions for this group (string) %n Select from where (string) %z A string that look like `<%s:%n>' if a foreign select method is used %d The date the group was last entered. %E Icon as defined by `gnus-group-icon-list'. +%F The disk space used by the articles fetched by both the cache and agent. %u User defined specifier. The next character in the format string should be a letter. Gnus will call the function gnus-user-format-function-X, where X is the letter following %u. The function will be passed a @@ -193,10 +201,10 @@ output may end up looking strange when listing both alive and killed groups. If you use %o or %O, reading the active file will be slower and quite -a bit of extra memory will be used. %D will also worsen performance. -Also note that if you change the format specification to include any -of these specs, you must probably re-start Gnus to see them go into -effect. +a bit of extra memory will be used. %D and %F will also worsen +performance. Also note that if you change the format specification to +include any of these specs, you must probably re-start Gnus to see +them go into effect. General format specifiers can also be used. See Info node `(gnus)Formatting Variables'." @@ -494,7 +502,6 @@ simple manner.") (?P gnus-group-indentation ?s) (?E gnus-tmp-group-icon ?s) (?B gnus-tmp-summary-live ?c) - (?l gnus-tmp-grouplens ?s) (?z gnus-tmp-news-method-string ?s) (?m (gnus-group-new-mail gnus-tmp-group) ?c) (?w (if (gnus-news-group-p gnus-tmp-group) @@ -505,7 +512,9 @@ simple manner.") ))) ?s) (?d (gnus-group-timestamp-string gnus-tmp-group) ?s) - (?u gnus-tmp-user-defined ?s))) + (?u gnus-tmp-user-defined ?s) + (?F (gnus-total-fetched-for gnus-tmp-group) ?s) + )) (defvar gnus-group-mode-line-format-alist `((?S gnus-tmp-news-server ?s) @@ -721,7 +730,8 @@ simple manner.") "?" gnus-group-list-plus) (gnus-define-keys (gnus-group-score-map "W" gnus-group-mode-map) - "f" gnus-score-flush-cache) + "f" gnus-score-flush-cache + "e" gnus-score-edit-all-score) (gnus-define-keys (gnus-group-help-map "H" gnus-group-mode-map) "c" gnus-group-fetch-charter @@ -1162,7 +1172,7 @@ Also see the `gnus-group-use-permanent-levels' variable." (gnus-group-setup-buffer) (gnus-update-format-specifications nil 'group 'group-mode) (let ((case-fold-search nil) - (props (text-properties-at (gnus-point-at-bol))) + (props (text-properties-at (point-at-bol))) (empty (= (point-min) (point-max))) (group (gnus-group-group-name)) number) @@ -1194,7 +1204,7 @@ Also see the `gnus-group-use-permanent-levels' variable." (point-min) (point-max) 'gnus-group (gnus-intern-safe group gnus-active-hashtb)))) - (let ((newsrc (cdddr (gnus-gethash group gnus-newsrc-hashtb)))) + (let ((newsrc (cdddr (gnus-group-entry group)))) (while (and newsrc (not (gnus-goto-char (text-property-any @@ -1249,7 +1259,7 @@ if it is a string, only list groups matching REGEXP." group (gnus-info-group info) params (gnus-info-params info) newsrc (cdr newsrc) - unread (car (gnus-gethash group gnus-newsrc-hashtb))) + unread (gnus-group-unread group)) (when not-in-list (setq not-in-list (delete group not-in-list))) (when (gnus-group-prepare-logic @@ -1349,7 +1359,7 @@ if it is a string, only list groups matching REGEXP." "Update the current line in the group buffer." (let* ((buffer-read-only nil) (group (gnus-group-group-name)) - (entry (and group (gnus-gethash group gnus-newsrc-hashtb))) + (entry (and group (gnus-group-entry group))) gnus-group-indentation) (when group (and entry @@ -1366,7 +1376,7 @@ if it is a string, only list groups matching REGEXP." (defun gnus-group-insert-group-line-info (group) "Insert GROUP on the current line." - (let ((entry (gnus-gethash group gnus-newsrc-hashtb)) + (let ((entry (gnus-group-entry group)) (gnus-group-indentation (gnus-group-group-indentation)) active info) (if entry @@ -1463,10 +1473,6 @@ if it is a string, only list groups matching REGEXP." (gnus-tmp-process-marked (if (member gnus-tmp-group gnus-group-marked) gnus-process-mark ? )) - (gnus-tmp-grouplens - (or (and gnus-use-grouplens - (bbb-grouplens-group-p gnus-tmp-group)) - "")) (buffer-read-only nil) header gnus-tmp-header) ; passed as parameter to user-funcs. (beginning-of-line) @@ -1495,7 +1501,7 @@ if it is a string, only list groups matching REGEXP." "Highlight the current line according to `gnus-group-highlight'." (let* ((list gnus-group-highlight) (p (point)) - (end (gnus-point-at-eol)) + (end (point-at-eol)) ;; now find out where the line starts and leave point there. (beg (progn (beginning-of-line) (point))) (group (gnus-group-group-name)) @@ -1546,7 +1552,7 @@ already." (loc (point-min)) found buffer-read-only) ;; Enter the current status into the dribble buffer. - (let ((entry (gnus-gethash group gnus-newsrc-hashtb))) + (let ((entry (gnus-group-entry group))) (when (and entry (not (gnus-ephemeral-group-p group))) (gnus-dribble-enter @@ -1571,7 +1577,7 @@ already." ;; go, and insert it there (or at the end of the buffer). (if gnus-goto-missing-group-function (funcall gnus-goto-missing-group-function group) - (let ((entry (cddr (gnus-gethash group gnus-newsrc-hashtb)))) + (let ((entry (cddr (gnus-group-entry group)))) (while (and entry (car entry) (not (gnus-goto-char @@ -1631,24 +1637,24 @@ already." (defun gnus-group-group-name () "Get the name of the newsgroup on the current line." - (let ((group (get-text-property (gnus-point-at-bol) 'gnus-group))) + (let ((group (get-text-property (point-at-bol) 'gnus-group))) (when group (symbol-name group)))) (defun gnus-group-group-level () "Get the level of the newsgroup on the current line." - (get-text-property (gnus-point-at-bol) 'gnus-level)) + (get-text-property (point-at-bol) 'gnus-level)) (defun gnus-group-group-indentation () "Get the indentation of the newsgroup on the current line." - (or (get-text-property (gnus-point-at-bol) 'gnus-indentation) + (or (get-text-property (point-at-bol) 'gnus-indentation) (and gnus-group-indentation-function (funcall gnus-group-indentation-function)) "")) (defun gnus-group-group-unread () "Get the number of unread articles of the newsgroup on the current line." - (get-text-property (gnus-point-at-bol) 'gnus-unread)) + (get-text-property (point-at-bol) 'gnus-unread)) (defun gnus-group-new-mail (group) (if (nnmail-new-mail-p (gnus-group-real-name group)) @@ -1706,6 +1712,18 @@ If FIRST-TOO, the current line is also eligible as a target." (goto-char (or pos beg)) (and pos t)))) +(defun gnus-total-fetched-for (group) + (let* ((size-in-cache (or (gnus-cache-total-fetched-for group) 0)) + (size-in-agent (or (gnus-agent-total-fetched-for group) 0)) + (size (+ size-in-cache size-in-agent)) + (suffix '("B" "K" "M" "G")) + (scale 1024.0) + (cutoff (* 10 scale))) + (while (> size cutoff) + (setq size (/ size scale) + suffix (cdr suffix))) + (format "%5.1f%s" size (car suffix)))) + ;;; Gnus group mode commands ;; Group marking. @@ -1727,15 +1745,14 @@ If FIRST-TOO, the current line is also eligible as a target." ;; Go to the mark position. (beginning-of-line) (forward-char (or (cdr (assq 'process gnus-group-mark-positions)) 2)) - (subst-char-in-region - (point) (1+ (point)) (char-after) - (if unmark - (progn - (setq gnus-group-marked (delete group gnus-group-marked)) - ? ) + (delete-char 1) + (if unmark + (progn + (setq gnus-group-marked (delete group gnus-group-marked)) + (insert-char ? 1 t)) (setq gnus-group-marked (cons group (delete group gnus-group-marked))) - gnus-process-mark))) + (insert-char gnus-process-mark 1 t))) (unless no-advance (gnus-group-next-group 1)) (decf n)) @@ -1900,8 +1917,7 @@ group." (unless group (error "No group on current line")) (setq marked (gnus-info-marks - (nth 2 (setq entry (gnus-gethash - group gnus-newsrc-hashtb))))) + (nth 2 (setq entry (gnus-group-entry group))))) ;; This group might be a dead group. In that case we have to get ;; the number of unread articles from `gnus-active-hashtb'. (setq number @@ -2272,15 +2288,14 @@ ADDRESS." method)))) (nname (if method (gnus-group-prefixed-name name meth) name)) backend info) - (when (gnus-gethash nname gnus-newsrc-hashtb) + (when (gnus-group-entry nname) (error "Group %s already exists" nname)) ;; Subscribe to the new group. (gnus-group-change-level (setq info (list t nname gnus-level-default-subscribed nil nil meth)) gnus-level-default-subscribed gnus-level-killed (and (gnus-group-group-name) - (gnus-gethash (gnus-group-group-name) - gnus-newsrc-hashtb)) + (gnus-group-entry (gnus-group-group-name))) t) ;; Make it active. (gnus-set-active nname (cons 1 0)) @@ -2318,8 +2333,6 @@ ADDRESS." (lambda (group) (gnus-group-delete-group group nil t)))))) -(defvar gnus-cache-active-altered) - (defun gnus-group-delete-group (group &optional force no-prompt) "Delete the current group. Only meaningful with editable groups. If FORCE (the prefix) is non-nil, all the articles in the group will @@ -2348,11 +2361,7 @@ be removed from the server, even when it's empty." (gnus-message 6 "Deleting group %s...done" group) (gnus-group-goto-group group) (gnus-group-kill-group 1 t) - (gnus-sethash group nil gnus-active-hashtb) - (if (boundp 'gnus-cache-active-hashtb) - (when gnus-cache-active-hashtb - (gnus-sethash group nil gnus-cache-active-hashtb) - (setq gnus-cache-active-altered t))) + (gnus-set-active group nil) t)) (gnus-group-position-point))) @@ -2522,7 +2531,7 @@ group already exists: (interactive) (let ((name (gnus-group-prefixed-name "gnus-help" '(nndoc "gnus-help"))) (file (nnheader-find-etc-directory "gnus-tut.txt" t))) - (if (gnus-gethash name gnus-newsrc-hashtb) + (if (gnus-group-entry name) (cond ((eq noerror nil) (error "Documentation group already exists")) ((eq noerror t) @@ -2680,7 +2689,7 @@ Given a prefix, create a full group." (interactive "P") (let ((group (gnus-group-prefixed-name (if all "ding.archives" "ding.recent") '(nndir "")))) - (when (gnus-gethash group gnus-newsrc-hashtb) + (when (gnus-group-entry group) (error "Archive group already exists")) (gnus-group-make-group (gnus-group-real-name group) @@ -2704,7 +2713,7 @@ mail messages or news articles in files that have numeric names." (let ((ext "") (i 0) group) - (while (or (not group) (gnus-gethash group gnus-newsrc-hashtb)) + (while (or (not group) (gnus-group-entry group)) (setq group (gnus-group-prefixed-name (expand-file-name ext dir) @@ -2723,7 +2732,7 @@ score file entries for articles to include in the group." (list (read-string "nnkiboze group name: ") (read-string "Source groups (regexp): ") - (let ((headers (mapcar (lambda (group) (list group)) + (let ((headers (mapcar 'list '("subject" "from" "number" "date" "message-id" "references" "chars" "lines" "xref" "followup" "all" "body" "head"))) @@ -2774,7 +2783,7 @@ score file entries for articles to include in the group." (let* ((method (list 'nnvirtual "^$")) (pgroup (gnus-group-prefixed-name group method))) ;; Check whether it exists already. - (when (gnus-gethash pgroup gnus-newsrc-hashtb) + (when (gnus-group-entry pgroup) (error "Group %s already exists" pgroup)) ;; Subscribe the new group after the group on the current line. (gnus-subscribe-group pgroup (gnus-group-group-name) method) @@ -2946,7 +2955,7 @@ If REVERSE, sort in reverse order." (let (entries infos) ;; First find all the group entries for these groups. (while groups - (push (nthcdr 2 (gnus-gethash (pop groups) gnus-newsrc-hashtb)) + (push (nthcdr 2 (gnus-group-entry (pop groups))) entries)) ;; Then sort the infos. (setq infos @@ -3027,8 +3036,8 @@ sort in reverse order." (defun gnus-group-sort-by-unread (info1 info2) "Sort by number of unread articles." - (let ((n1 (car (gnus-gethash (gnus-info-group info1) gnus-newsrc-hashtb))) - (n2 (car (gnus-gethash (gnus-info-group info2) gnus-newsrc-hashtb)))) + (let ((n1 (gnus-group-unread (gnus-info-group info1))) + (n2 (gnus-group-unread (gnus-info-group info1)))) (< (or (and (numberp n1) n1) 0) (or (and (numberp n2) n2) 0)))) @@ -3168,10 +3177,10 @@ Cross references (Xref: header) of articles are ignored." If ALL is non-nil, all articles are marked as read. The return value is the number of articles that were marked as read, or nil if no action could be taken." - (let* ((entry (gnus-gethash group gnus-newsrc-hashtb)) + (let* ((entry (gnus-group-entry group)) (num (car entry)) - (marks (nth 3 (nth 2 entry))) - (unread (gnus-list-of-unread-articles group))) + (marks (gnus-info-marks (nth 2 entry))) + (unread (gnus-sequence-of-unread-articles group))) ;; Remove entries for this group. (nnmail-purge-split-history (gnus-group-real-name group)) ;; Do the updating only if the newsgroup isn't killed. @@ -3184,16 +3193,17 @@ or nil if no action could be taken." 'del '(tick)) (list (cdr (assq 'dormant marks)) 'del '(dormant)))) - (setq unread (gnus-uncompress-range - (gnus-range-add (gnus-range-add - unread (cdr (assq 'dormant marks))) - (cdr (assq 'tick marks))))) + (setq unread (gnus-range-add (gnus-range-add + unread (cdr (assq 'dormant marks))) + (cdr (assq 'tick marks)))) (gnus-add-marked-articles group 'tick nil nil 'force) (gnus-add-marked-articles group 'dormant nil nil 'force)) ;; Do auto-expirable marks if that's required. (when (gnus-group-auto-expirable-p group) - (gnus-add-marked-articles group 'expire unread) - (gnus-request-set-mark group (list (list unread 'add '(expire))))) + (gnus-range-map (lambda (article) + (gnus-add-marked-articles group 'expire (list article)) + (gnus-request-set-mark group (list (list (list article) 'add '(expire))))) + unread)) (let ((gnus-newsgroup-name group)) (gnus-run-hooks 'gnus-group-catchup-group-hook)) num))) @@ -3326,7 +3336,7 @@ group line." (gnus-read-active-file-p) nil 'gnus-group-history))) - (let ((newsrc (gnus-gethash group gnus-newsrc-hashtb))) + (let ((newsrc (gnus-group-entry group))) (cond ((string-match "^[ \t]*$" group) (error "Empty group name")) @@ -3350,7 +3360,7 @@ group line." gnus-level-zombie) gnus-level-killed) (when (gnus-group-group-name) - (gnus-gethash (gnus-group-group-name) gnus-newsrc-hashtb))) + (gnus-group-entry (gnus-group-group-name)))) (unless silent (gnus-group-update-group group))) (t (error "No such newsgroup: %s" group))) @@ -3389,12 +3399,10 @@ The killed newsgroups can be yanked by using \\[gnus-group-yank-group]." (count-lines (progn (goto-char begin) - (beginning-of-line) - (point)) + (point-at-bol)) (progn (goto-char end) - (beginning-of-line) - (point)))))) + (point-at-bol)))))) (goto-char begin) (beginning-of-line) ;Important when LINES < 1 (gnus-group-kill-group lines))) @@ -3418,7 +3426,7 @@ of groups killed." (setq level (gnus-group-group-level)) (gnus-delete-line) (when (and (not discard) - (setq entry (gnus-gethash group gnus-newsrc-hashtb))) + (setq entry (gnus-group-entry group))) (gnus-undo-register `(progn (gnus-group-goto-group ,(gnus-group-group-name)) @@ -3441,7 +3449,7 @@ of groups killed." (funcall gnus-group-change-level-function group gnus-level-killed 3)) (cond - ((setq entry (gnus-gethash group gnus-newsrc-hashtb)) + ((setq entry (gnus-group-entry group)) (push (cons (car entry) (nth 2 entry)) gnus-list-of-killed-groups) (setcdr (cdr entry) (cdddr entry))) @@ -3474,7 +3482,7 @@ yanked) a list of yanked groups is returned." (setq prev (gnus-group-group-name)) (gnus-group-change-level info (gnus-info-level (cdr info)) gnus-level-killed - (and prev (gnus-gethash prev gnus-newsrc-hashtb)) + (and prev (gnus-group-entry prev)) t) (gnus-group-insert-group-line-info group) (gnus-undo-register @@ -3555,7 +3563,7 @@ entail asking the server for the groups." ;; First we make sure that we have really read the active file. (unless (gnus-read-active-file-p) (let ((gnus-read-active-file t) - (gnus-agent nil)) ; Trick the agent into ignoring the active file. + (gnus-agent gnus-plugged)); If we're actually plugged, store the active file in the agent. (gnus-read-active-file))) ;; Find all groups and sort them. (let ((groups @@ -3966,10 +3974,8 @@ The hook `gnus-suspend-gnus-hook' is called before actually suspending." (let ((group-buf (get-buffer gnus-group-buffer))) (mapcar (lambda (buf) (unless (or (member buf (list group-buf gnus-dribble-buffer)) - (progn - (save-excursion - (set-buffer buf) - (eq major-mode 'message-mode)))) + (with-current-buffer buf + (eq major-mode 'message-mode))) (gnus-kill-buffer buf))) (gnus-buffers)) (setq gnus-backlog-articles nil) @@ -4055,17 +4061,15 @@ and the second element is the address." ;; Suggested by mapjph@bath.ac.uk. (completing-read "Address: " - (mapcar (lambda (server) (list server)) - gnus-secondary-servers))) + (mapcar 'list gnus-secondary-servers))) ;; We got a server name. how)))) (gnus-browse-foreign-server method)) (defun gnus-group-set-info (info &optional method-only-group part) (when (or info part) - (let* ((entry (gnus-gethash - (or method-only-group (gnus-info-group info)) - gnus-newsrc-hashtb)) + (let* ((entry (gnus-group-entry + (or method-only-group (gnus-info-group info)))) (part-info info) (info (if method-only-group (nth 2 entry) info)) method) @@ -4103,10 +4107,9 @@ and the second element is the address." (gnus-group-make-group (gnus-info-group info)))) (gnus-message 6 "Note: New group created") (setq entry - (gnus-gethash (gnus-group-prefixed-name - (gnus-group-real-name (gnus-info-group info)) - (or (gnus-info-method info) gnus-select-method)) - gnus-newsrc-hashtb)))) + (gnus-group-entry (gnus-group-prefixed-name + (gnus-group-real-name (gnus-info-group info)) + (or (gnus-info-method info) gnus-select-method)))))) ;; Whether it was a new group or not, we now have the entry, so we ;; can do the update. (if entry diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index 49c9ed6..922d575 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -34,6 +34,7 @@ (require 'gnus-range) (autoload 'gnus-agent-expire "gnus-agent") +(autoload 'gnus-agent-regenerate-group "gnus-agent") (autoload 'gnus-agent-read-servers-validate-native "gnus-agent") (defcustom gnus-open-server-hook nil @@ -73,7 +74,7 @@ If CONFIRM is non-nil, the user will be asked for an NNTP server." ;; Read server name with completion. (setq gnus-nntp-server (completing-read "NNTP server: " - (mapcar (lambda (server) (list server)) + (mapcar 'list (cons (list gnus-nntp-server) gnus-secondary-servers)) nil nil gnus-nntp-server))) @@ -176,7 +177,7 @@ If it is down, start it up (again)." (setq method (gnus-server-to-method method))) ;; Check cache of constructed names. (let* ((method-sym (if gnus-agent - (gnus-agent-get-function method) + (inline (gnus-agent-get-function method)) (car method))) (method-fns (get method-sym 'gnus-method-functions)) (func (let ((method-fnlist-elt (assq function method-fns))) @@ -338,7 +339,7 @@ name. The method this group uses will be queried." (when (stringp gnus-command-method) (setq gnus-command-method (inline (gnus-server-to-method gnus-command-method)))) - (funcall (inline (gnus-get-function gnus-command-method 'request-group)) + (funcall (inline (gnus-get-function gnus-command-method 'request-group)) (gnus-group-real-name group) (nth 1 gnus-command-method) dont-check))) @@ -517,12 +518,11 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." (if group (gnus-find-method-for-group group) gnus-command-method)) (gnus-inhibit-demon t) (mail-source-plugged gnus-plugged)) - (if (or gnus-plugged (not (gnus-agent-method-p gnus-command-method))) - (progn - (setq gnus-internal-registry-spool-current-method gnus-command-method) - (funcall (gnus-get-function gnus-command-method 'request-scan) - (and group (gnus-group-real-name group)) - (nth 1 gnus-command-method)))))) + (when (or gnus-plugged (not (gnus-agent-method-p gnus-command-method))) + (setq gnus-internal-registry-spool-current-method gnus-command-method) + (funcall (gnus-get-function gnus-command-method 'request-scan) + (and group (gnus-group-real-name group)) + (nth 1 gnus-command-method))))) (defsubst gnus-request-update-info (info gnus-command-method) "Request that GNUS-COMMAND-METHOD update INFO." @@ -580,21 +580,30 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." (setq gnus-command-method (gnus-server-to-method gnus-command-method))) (when (and (not gnus-command-method) (stringp group)) - (setq gnus-command-method (gnus-group-name-to-method group))) + (setq gnus-command-method (or (gnus-find-method-for-group group) + (gnus-group-name-to-method group)))) (goto-char (point-max)) (unless (bolp) (insert "\n")) (let ((gnus-command-method (or gnus-command-method - (gnus-find-method-for-group group)))) - (funcall (gnus-get-function gnus-command-method 'request-accept-article) - (if (stringp group) (gnus-group-real-name group) group) - (cadr gnus-command-method) - last))) + (gnus-find-method-for-group group))) + (result + (funcall + (gnus-get-function gnus-command-method 'request-accept-article) + (if (stringp group) (gnus-group-real-name group) group) + (cadr gnus-command-method) + last))) + (when (and gnus-agent (gnus-agent-method-p gnus-command-method)) + (gnus-agent-regenerate-group group (list (cdr result)))) + result)) (defun gnus-request-replace-article (article group buffer &optional no-encode) - (let ((func (car (gnus-group-name-to-method group)))) - (funcall (intern (format "%s-request-replace-article" func)) - article (gnus-group-real-name group) buffer))) + (let* ((func (car (gnus-group-name-to-method group))) + (result (funcall (intern (format "%s-request-replace-article" func)) + article (gnus-group-real-name group) buffer))) + (when (and gnus-agent (gnus-agent-method-p gnus-command-method)) + (gnus-agent-regenerate-group group (list article))) + result)) (defun gnus-request-associate-buffer (group) (let ((gnus-command-method (gnus-find-method-for-group group))) @@ -617,15 +626,25 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." (gnus-group-real-name group) (nth 1 gnus-command-method) args))) (defun gnus-request-delete-group (group &optional force) - (let ((gnus-command-method (gnus-find-method-for-group group))) - (funcall (gnus-get-function gnus-command-method 'request-delete-group) - (gnus-group-real-name group) force (nth 1 gnus-command-method)))) + (let* ((gnus-command-method (gnus-find-method-for-group group)) + (result + (funcall (gnus-get-function gnus-command-method 'request-delete-group) + (gnus-group-real-name group) force (nth 1 gnus-command-method)))) + (when result + (gnus-cache-delete-group group) + (gnus-agent-delete-group group)) + result)) (defun gnus-request-rename-group (group new-name) - (let ((gnus-command-method (gnus-find-method-for-group group))) - (funcall (gnus-get-function gnus-command-method 'request-rename-group) - (gnus-group-real-name group) - (gnus-group-real-name new-name) (nth 1 gnus-command-method)))) + (let* ((gnus-command-method (gnus-find-method-for-group group)) + (result + (funcall (gnus-get-function gnus-command-method 'request-rename-group) + (gnus-group-real-name group) + (gnus-group-real-name new-name) (nth 1 gnus-command-method)))) + (when result + (gnus-cache-rename-group group new-name) + (gnus-agent-rename-group group new-name)) + result)) (defun gnus-close-backends () ;; Send a close request to all backends that support such a request. diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el index cf95f9f..d634dfe 100644 --- a/lisp/gnus-kill.el +++ b/lisp/gnus-kill.el @@ -496,7 +496,7 @@ Optional 1st argument COMMAND is default to (gnus-summary-mark-as-read nil \"X\"). If optional 2nd argument ALL is non-nil, articles marked are also applied to. If FIELD is an empty string (or nil), entire article body is searched for. -COMMAND must be a lisp expression or a string representing a key sequence." +COMMAND must be a Lisp expression or a string representing a key sequence." ;; We don't want to change current point nor window configuration. (let ((old-buffer (current-buffer))) (save-excursion @@ -624,7 +624,7 @@ COMMAND must be a lisp expression or a string representing a key sequence." did-kill))) (defun gnus-execute (field regexp form &optional backward unread) - "If FIELD of article header matches REGEXP, execute lisp FORM (or a string). + "If FIELD of article header matches REGEXP, execute Lisp FORM (or a string). If FIELD is an empty string (or nil), entire article body is searched for. If optional 1st argument BACKWARD is non-nil, do backward instead. If optional 2nd argument UNREAD is non-nil, articles which are @@ -690,7 +690,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score" (mail-sources nil) (gnus-use-dribble-file nil) (gnus-batch-mode t) - info group newsrc entry + info group newsrc unread ;; Disable verbose message. gnus-novice-user gnus-large-newsgroup gnus-options-subscribe gnus-auto-subscribed-groups @@ -702,11 +702,11 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score" (setq newsrc (cdr gnus-newsrc-alist)) (while (setq info (pop newsrc)) (setq group (gnus-info-group info) - entry (gnus-gethash group gnus-newsrc-hashtb)) + unread (gnus-group-unread group)) (when (and (<= (gnus-info-level info) gnus-level-subscribed) - (and (car entry) - (or (eq (car entry) t) - (not (zerop (car entry)))))) + (and unread + (or (eq unread t) + (not (zerop unread))))) (ignore-errors (gnus-summary-read-group group nil t nil t)) (when (eq (current-buffer) (get-buffer gnus-summary-buffer)) diff --git a/lisp/gnus-ml.el b/lisp/gnus-ml.el index 25f6685..71957b2 100644 --- a/lisp/gnus-ml.el +++ b/lisp/gnus-ml.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2000, 2001 Free Software Foundation, Inc. ;; Author: Julien Gilles -;; Keywords: news +;; Keywords: news, mail ;; This file is part of GNU Emacs. @@ -102,7 +102,7 @@ If FORCE is non-nil, replace the old ones." ;; Set up the menu. (when (gnus-visual-p 'mailing-list-menu 'menu) (gnus-mailing-list-make-menu-bar)) - (gnus-add-minor-mode 'gnus-mailing-list-mode " Mailing-List" gnus-mailing-list-mode-map) + (add-minor-mode 'gnus-mailing-list-mode " Mailing-List" gnus-mailing-list-mode-map) (gnus-run-hooks 'gnus-mailing-list-mode-hook)))) ;;; Commands @@ -117,7 +117,7 @@ If FORCE is non-nil, replace the old ones." (t (gnus-message 1 "no list-help in this group"))))) (defun gnus-mailing-list-subscribe () - "Subscribe" + "Subscribe." (interactive) (let ((list-subscribe (with-current-buffer gnus-original-article-buffer @@ -126,7 +126,7 @@ If FORCE is non-nil, replace the old ones." (t (gnus-message 1 "no list-subscribe in this group"))))) (defun gnus-mailing-list-unsubscribe () - "Unsubscribe" + "Unsubscribe." (interactive) (let ((list-unsubscribe (with-current-buffer gnus-original-article-buffer @@ -144,7 +144,7 @@ If FORCE is non-nil, replace the old ones." (t (gnus-message 1 "no list-post in this group"))))) (defun gnus-mailing-list-owner () - "Mail to the owner" + "Mail to the owner." (interactive) (let ((list-owner (with-current-buffer gnus-original-article-buffer @@ -153,7 +153,7 @@ If FORCE is non-nil, replace the old ones." (t (gnus-message 1 "no list-owner in this group"))))) (defun gnus-mailing-list-archive () - "Browse archive" + "Browse archive." (interactive) (require 'browse-url) (let ((list-archive diff --git a/lisp/gnus-mlspl.el b/lisp/gnus-mlspl.el index 2379a17..f1f939e 100644 --- a/lisp/gnus-mlspl.el +++ b/lisp/gnus-mlspl.el @@ -34,31 +34,31 @@ (require 'nnmail) (defvar gnus-group-split-updated-hook nil - "Hook called just after nnmail-split-fancy is updated by -gnus-group-split-update.") + "Hook called just after `nnmail-split-fancy' is updated by +`gnus-group-split-update'.") (defvar gnus-group-split-default-catch-all-group "mail.misc" "Group name (or arbitrary fancy split) with default splitting rules. -Used by gnus-group-split and gnus-group-split-update as a fallback +Used by `gnus-group-split' and `gnus-group-split-update' as a fallback split, in case none of the group-based splits matches.") ;;;###autoload (defun gnus-group-split-setup (&optional auto-update catch-all) - "Set up the split for nnmail-split-fancy. + "Set up the split for `nnmail-split-fancy'. Sets things up so that nnmail-split-fancy is used for mail splitting, and defines the variable nnmail-split-fancy according with group parameters. If AUTO-UPDATE is non-nil (prefix argument accepted, if called interactively), it makes sure nnmail-split-fancy is re-computed before -getting new mail, by adding gnus-group-split-update to -nnmail-pre-get-new-mail-hook. +getting new mail, by adding `gnus-group-split-update' to +`nnmail-pre-get-new-mail-hook'. A non-nil CATCH-ALL replaces the current value of -gnus-group-split-default-catch-all-group. This variable is only used +`gnus-group-split-default-catch-all-group'. This variable is only used by gnus-group-split-update, and only when its CATCH-ALL argument is nil. This argument may contain any fancy split, that will be added as -the last split in a `|' split produced by gnus-group-split-fancy, +the last split in a `|' split produced by `gnus-group-split-fancy', unless overridden by any group marked as a catch-all group. Typical uses are as simple as the name of a default mail group, but more elaborate fancy splits may also be useful to split mail that doesn't @@ -74,11 +74,11 @@ match any of the group-specified splitting rules. See ;;;###autoload (defun gnus-group-split-update (&optional catch-all) - "Computes nnmail-split-fancy from group params and CATCH-ALL, by + "Computes `nnmail-split-fancy' from group params and CATCH-ALL, by calling (gnus-group-split-fancy nil nil CATCH-ALL). -If CATCH-ALL is nil, gnus-group-split-default-catch-all-group is used -instead. This variable is set by gnus-group-split-setup." +If CATCH-ALL is nil, `gnus-group-split-default-catch-all-group' is used +instead. This variable is set by `gnus-group-split-setup'." (interactive) (setq nnmail-split-fancy (gnus-group-split-fancy @@ -88,10 +88,10 @@ instead. This variable is set by gnus-group-split-setup." ;;;###autoload (defun gnus-group-split () - "Uses information from group parameters in order to split mail. + "Use information from group parameters in order to split mail. See `gnus-group-split-fancy' for more information. -gnus-group-split is a valid value for nnmail-split-methods." +`gnus-group-split' is a valid value for `nnmail-split-methods'." (let (nnmail-split-fancy) (gnus-group-split-update) (nnmail-split-fancy))) diff --git a/lisp/gnus-move.el b/lisp/gnus-move.el index 36839c8..3e06945 100644 --- a/lisp/gnus-move.el +++ b/lisp/gnus-move.el @@ -176,8 +176,7 @@ Update the .newsrc.eld file to reflect the change of nntp server." (new-name (gnus-group-prefixed-name (gnus-group-real-name group) to-server))) (gnus-info-set-group info new-name) - (gnus-sethash new-name (gnus-gethash group gnus-newsrc-hashtb) - gnus-newsrc-hashtb) + (gnus-sethash new-name (gnus-group-entry group) gnus-newsrc-hashtb) (gnus-sethash group nil gnus-newsrc-hashtb)))) (provide 'gnus-move) diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 479979e..c7cbf23 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -354,11 +354,7 @@ Thank you for your help in stamping out bugs. ", a modified version of Semi-gnus"))) (eval-and-compile - (autoload 'gnus-uu-post-news "gnus-uu" nil t) - (autoload 'news-setup "rnewspost") - (autoload 'news-reply-mode "rnewspost") - (autoload 'rmail-dont-reply-to "mail-utils") - (autoload 'rmail-output "rmailout")) + (autoload 'gnus-uu-post-news "gnus-uu" nil t)) ;;; @@ -434,8 +430,13 @@ Thank you for your help in stamping out bugs. ;; added an optional argument to `gnus-configure-posting-styles' to ;; make sure that the correct value for the group name is used. -- drv (add-hook 'message-mode-hook - (lambda () - (gnus-configure-posting-styles ,group))) + (if (memq ,config '(reply-yank reply)) + (lambda () + (gnus-configure-posting-styles ,group)) + (lambda () + ;; There may be an old " *gnus article copy*" buffer. + (let (gnus-article-copy) + (gnus-configure-posting-styles ,group))))) (gnus-pull ',(intern gnus-draft-meta-information-header) message-required-headers) (when (and ,group @@ -704,9 +705,9 @@ network. The corresponding back end must have a 'request-post method." (progn (message-news (gnus-group-real-name gnus-newsgroup-name)) (set (make-local-variable 'gnus-discouraged-post-methods) - (delq + (remove (car (gnus-find-method-for-group gnus-newsgroup-name)) - (copy-sequence gnus-discouraged-post-methods)))))) + gnus-discouraged-post-methods))))) (save-excursion (set-buffer buffer) (setq gnus-newsgroup-name group))))) @@ -991,7 +992,9 @@ header line with the old Message-ID." (not to-address))) ;; This is news. (if post - (message-news (or to-group group)) + (message-news + (or to-group + (and (not (gnus-virtual-group-p pgroup)) group))) (set-buffer gnus-article-copy) (gnus-msg-treat-broken-reply-to) (message-followup (if (or newsgroup-p force-news) @@ -1604,7 +1607,7 @@ The current group name will be inserted at \"%s\".") (not (gnus-group-read-only-p group))) (setq group (read-string "Put in group: " nil (gnus-writable-groups)))) - (when (gnus-gethash group gnus-newsrc-hashtb) + (when (gnus-group-entry group) (error "No such group: %s" group)) (save-excursion (save-restriction @@ -1830,7 +1833,6 @@ this is a reply." (message-narrow-to-headers) (let ((gcc (or gcc (mail-fetch-field "gcc" nil t))) (coding-system-for-write 'raw-text) - (output-coding-system 'raw-text) groups group method group-art mml-externalize-attachments) (when gcc diff --git a/lisp/gnus-namazu.el b/lisp/gnus-namazu.el index ee43a56..836fbdc 100644 --- a/lisp/gnus-namazu.el +++ b/lisp/gnus-namazu.el @@ -1,6 +1,7 @@ ;;; gnus-namazu.el --- Search mail with Namazu -*- coding: iso-2022-7bit; -*- -;; Copyright (C) 2000,2001,2002,2003 TSUCHIYA Masatoshi +;; Copyright (C) 2000, 2001, 2002, 2003, 2004 +;; TSUCHIYA Masatoshi ;; Author: TSUCHIYA Masatoshi ;; Keywords: mail searching namazu @@ -101,10 +102,6 @@ (require 'nnmail) (require 'gnus-sum) -;; It is required for Mule 2.3. See the file Mule23@1934.en. -(eval-and-compile - (autoload 'regexp-opt "regexp-opt")) - ;; To suppress byte-compile warning. (eval-when-compile (defvar nnml-directory) @@ -164,10 +161,9 @@ options make any sense in this context." (defcustom gnus-namazu-make-index-arguments (nconc (list "--all" "--mailnews" "--deny=^.*[^0-9].*$") - (when (or (and (boundp 'current-language-environment) - (string= "Japanese" - (symbol-value 'current-language-environment))) - (boundp 'MULE)) + (when (and (boundp 'current-language-environment) + (string= "Japanese" + (symbol-value 'current-language-environment))) (list "--indexing-lang=ja"))) "*Arguments of the indexer of Namazu." :type '(repeat string) @@ -181,8 +177,8 @@ options make any sense in this context." (defcustom gnus-namazu-coding-system (if (memq system-type '(windows-nt OS/2 emx)) - (if (boundp 'MULE) '*sjis* 'shift_jis) - (if (boundp 'MULE) '*euc-japan* 'euc-japan)) + 'shift_jis + 'euc-japan) "*Coding system for Namazu process." :type 'coding-system :group 'gnus-namazu) @@ -215,6 +211,24 @@ options make any sense in this context." "Face used for namazu query matching words." :group 'gnus-namazu) +(defcustom gnus-namazu-command-prefix nil + "*Prefix command, +if set '(\"ssh\" \"-x\" \"host\"), +then execute \"ssh -x host namazu ...\"" + :type '(repeat string) + :group 'gnus-namazu) + +(defcustom gnus-namazu-imap-group-prefix nil + "*Prefix of imap group name. +ex. nnimap+server:INBOX." + :type 'string + :group 'gnus-namazu) + +(defcustom gnus-namazu-imap-maildir nil + "*Maildir directory name." + :type 'string + :group 'gnus-namazu) + ;;; Internal Variable: (defconst gnus-namazu/group-name-regexp "\\`nnvirtual:namazu-search\\?") @@ -223,9 +237,8 @@ options make any sense in this context." (fboundp 'gnus-group-decoded-name) (let ((gnus-group-name-charset-group-alist (list (cons gnus-namazu/group-name-regexp gnus-namazu-coding-system))) - (query (decode-coding-string - (string 27 36 66 52 65 59 122 27 40 66) - (if (boundp 'MULE) '*iso-2022-jp* 'iso-2022-7bit)))) + (query (decode-coding-string (string 27 36 66 52 65 59 122 27 40 66) + 'iso-2022-7bit))) (not (string-match query (gnus-summary-buffer-name (encode-coding-string @@ -289,31 +302,41 @@ options make any sense in this context." (replace-match "\\1:/")) (eq ?~ (char-after (point)))) (insert (expand-file-name - (buffer-substring (gnus-point-at-bol) (gnus-point-at-eol)))) - (delete-region (point) (gnus-point-at-eol))) + (buffer-substring (point-at-bol) (point-at-eol)))) + (delete-region (point) (point-at-eol))) (forward-line 1))) (defsubst gnus-namazu/call-namazu (query) (let ((coding-system-for-read gnus-namazu-coding-system) (coding-system-for-write gnus-namazu-coding-system) - (input-coding-system gnus-namazu-coding-system) - (output-coding-system gnus-namazu-coding-system) (default-process-coding-system (cons gnus-namazu-coding-system gnus-namazu-coding-system)) program-coding-system-alist - (file-name-coding-system gnus-namazu-coding-system) - (pathname-coding-system gnus-namazu-coding-system)) - (apply 'call-process - `(,gnus-namazu-command - nil ; input from /dev/null - t ; output - nil ; don't redisplay - "-q" ; don't be verbose - "-a" ; show all matches - "-l" ; use list format - ,@gnus-namazu-additional-arguments - ,query - ,@gnus-namazu-index-directories)))) + (file-name-coding-system gnus-namazu-coding-system)) + (if gnus-namazu-command-prefix + (apply 'call-process + (append + (list (car gnus-namazu-command-prefix)) + '(nil t nil) + (cdr gnus-namazu-command-prefix) + `(,gnus-namazu-command + "-q" ; don't be verbose + "-a" ; show all matches + "-l" ; use list format + ,@gnus-namazu-additional-arguments + ,query + ,@gnus-namazu-index-directories))) + (apply 'call-process + `(,gnus-namazu-command + nil ; input from /dev/null + t ; output + nil ; don't redisplay + "-q" ; don't be verbose + "-a" ; show all matches + "-l" ; use list format + ,@gnus-namazu-additional-arguments + ,query + ,@gnus-namazu-index-directories))))) (defvar gnus-namazu/directory-table nil) (defun gnus-namazu/make-directory-table (&optional force) @@ -369,19 +392,29 @@ options make any sense in this context." ;; as file names of articles. (skip-chars-backward "0-9") (point)))) - (and (setq group - (symbol-value - (intern-soft (if gnus-namazu-case-sensitive-filesystem - group - (downcase group)) - (cdr gnus-namazu/directory-table)))) + (and (if (not gnus-namazu-imap-maildir) + (setq group + (symbol-value + (intern-soft (if gnus-namazu-case-sensitive-filesystem + group + (downcase group)) + (cdr gnus-namazu/directory-table)))) + ;; FIXME: + ;; gnus-select-method is '(nnimap "server") + ;; nnimap+server:INBOX.group = ~/Maildir/.group + ;; Namazu resault: ~/Maildir/.group/123 + (setq group (and (string-match + (concat gnus-namazu-imap-maildir + "/\\.\\(.*\\)/") group) + (concat gnus-namazu-imap-group-prefix + (match-string 1 group))))) (or (not groups) (member group groups)) (push (gnus-namazu/make-article group (string-to-number (buffer-substring-no-properties (point) - (gnus-point-at-eol)))) + (point-at-eol)))) articles)) (forward-line 1)) (nreverse articles)))) @@ -761,7 +794,8 @@ than the period that is set to `gnus-namazu-index-update-interval'" (mapcar 'list gnus-namazu-index-directories) nil t) (gnus-namazu/default-index-directory)) t)) - (when (setq directory (gnus-namazu/update-p directory force)) + (when (and (not gnus-namazu-imap-maildir) + (setq directory (gnus-namazu/update-p directory force))) (with-current-buffer (get-buffer-create (concat " *mknmz*" directory)) (buffer-disable-undo) (erase-buffer) @@ -796,9 +830,11 @@ than the period that is set to `gnus-namazu-index-update-interval'" (gnus-namazu-update-indices gnus-namazu-index-directories force)) (defun gnus-namazu-update-indices (&optional directories force) - (when (setq directories - (delq nil (mapcar (lambda (d) (gnus-namazu/update-p d force)) - directories))) + (when (and (not gnus-namazu-imap-maildir) + (setq directories + (delq nil (mapcar (lambda (d) + (gnus-namazu/update-p d force)) + directories)))) (setq gnus-namazu/update-directories (cons force (cdr directories))) (gnus-namazu-update-index (car directories) force))) diff --git a/lisp/gnus-nocem.el b/lisp/gnus-nocem.el index 086b9f4..bbaf550 100644 --- a/lisp/gnus-nocem.el +++ b/lisp/gnus-nocem.el @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'gnus) (require 'nnmail) @@ -191,7 +190,7 @@ valid issuer, which is much faster if you are selective about the issuers." (and gnus-nocem-check-from (let ((case-fold-search t)) (catch 'ok - (mapcar + (mapc (lambda (author) (if (consp author) (setq author (car author))) diff --git a/lisp/gnus-offline.el b/lisp/gnus-offline.el index 79eaa10..0e1655a 100644 --- a/lisp/gnus-offline.el +++ b/lisp/gnus-offline.el @@ -846,35 +846,13 @@ Please check your .emacs or .gnus.el to work nnspool fine.") ((featurep 'xemacs) (popup-menu menu)) (t - (let ((menu-func (or (and (fboundp 'easy-menu-create-menu) - 'easy-menu-create-menu) - 'easy-menu-create-keymaps)) - keymap pop func) - (static-cond ((< emacs-major-version 20) - ;; For Emacsen from 19.34 down to 19.28. - ;; Seems the first item in MENU will be ignored. - (or (keymapp menu) - (setq menu - (append (list "" ;; This will be ignored. - (or title "Popup Menu") - "-----" - "-----") - (cdr menu)))) - (setq keymap - (if (keymapp menu) - (append (list 'keymap - (if title - `(nil ,title) - '(nil "Popup Menu")) - '(nil "") - '(nil "")) - (cdr menu)) - (funcall menu-func (car menu) (cdr menu))))) - (t - (setq keymap - (if (keymapp menu) - menu - (funcall menu-func (car menu) (cdr menu)))))) + (let* ((menu-func (or (and (fboundp 'easy-menu-create-menu) + 'easy-menu-create-menu) + 'easy-menu-create-keymaps)) + (keymap (if (keymapp menu) + menu + (funcall menu-func (car menu) (cdr menu)))) + pop func) ;; Display the popup menu. (if (and (setq pop (x-popup-menu t keymap)) (setq func (lookup-key keymap diff --git a/lisp/gnus-ofsetup.el b/lisp/gnus-ofsetup.el index 839db29..5bfc6df 100644 --- a/lisp/gnus-ofsetup.el +++ b/lisp/gnus-ofsetup.el @@ -501,7 +501,7 @@ mail source specifier $B$H$+>e5-$N$h$&$J%-!<%o!<%I$K$D$$$F$b$C$H$h$/(B exec-directory "movemail")) (setq args (read-from-minibuffer (format "<%d of %d> %s" j n - (gnus-ofsetup-gettext 'setup-18) "-pf"))) + (gnus-ofsetup-gettext 'setup-18)) "-pf")) (setq program (format "%s %s %s %s %s" prog args "po:%u" "%t" "%p")))) (when (string= type "imap") diff --git a/lisp/gnus-picon.el b/lisp/gnus-picon.el index 7c6c5e1..ebd226d 100644 --- a/lisp/gnus-picon.el +++ b/lisp/gnus-picon.el @@ -43,7 +43,6 @@ (eval-when-compile (require 'cl)) (require 'gnus) -(require 'custom) (require 'gnus-art) ;;; User variables: diff --git a/lisp/gnus-range.el b/lisp/gnus-range.el index 2e0a988..eea1737 100644 --- a/lisp/gnus-range.el +++ b/lisp/gnus-range.el @@ -1,6 +1,6 @@ ;;; gnus-range.el --- range and sequence functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -184,6 +184,58 @@ LIST1 and LIST2 have to be sorted over <." (nreverse out))) ;;;###autoload +(defun gnus-sorted-range-intersection (range1 range2) + "Return intersection of RANGE1 and RANGE2. +RANGE1 and RANGE2 have to be sorted over <." + (let* (out + (min1 (car range1)) + (max1 (if (numberp min1) + (if (numberp (cdr range1)) + (prog1 (cdr range1) + (setq range1 nil)) min1) + (prog1 (cdr min1) + (setq min1 (car min1))))) + (min2 (car range2)) + (max2 (if (numberp min2) + (if (numberp (cdr range2)) + (prog1 (cdr range2) + (setq range2 nil)) min2) + (prog1 (cdr min2) + (setq min2 (car min2)))))) + (setq range1 (cdr range1) + range2 (cdr range2)) + (while (and min1 min2) + (cond ((< max1 min2) ; range1 preceeds range2 + (setq range1 (cdr range1) + min1 nil)) + ((< max2 min1) ; range2 preceeds range1 + (setq range2 (cdr range2) + min2 nil)) + (t ; some sort of overlap is occurring + (let ((min (max min1 min2)) + (max (min max1 max2))) + (setq out (if (= min max) + (cons min out) + (cons (cons min max) out)))) + (if (< max1 max2) ; range1 ends before range2 + (setq min1 nil) ; incr range1 + (setq min2 nil)))) ; incr range2 + (unless min1 + (setq min1 (car range1) + max1 (if (numberp min1) min1 (prog1 (cdr min1) (setq min1 (car min1)))) + range1 (cdr range1))) + (unless min2 + (setq min2 (car range2) + max2 (if (numberp min2) min2 (prog1 (cdr min2) (setq min2 (car min2)))) + range2 (cdr range2)))) + (cond ((cdr out) + (nreverse out)) + ((numberp (car out)) + out) + (t + (car out))))) + +;;;###autoload (defalias 'gnus-set-sorted-intersection 'gnus-sorted-nintersection) ;;;###autoload @@ -255,7 +307,7 @@ LIST1 and LIST2 have to be sorted over <." (cdr top))) (defun gnus-compress-sequence (numbers &optional always-list) - "Convert list of numbers to a list of ranges or a single range. + "Convert sorted list of numbers to a list of ranges or a single range. If ALWAYS-LIST is non-nil, this function will always release a list of ranges." (let* ((first (car numbers)) @@ -589,6 +641,19 @@ LIST is a sorted list." (setcdr prev (cons num list))) (cdr top))) +(defun gnus-range-map (func range) + "Apply FUNC to each value contained by RANGE." + (setq range (gnus-range-normalize range)) + (while range + (let ((span (pop range))) + (if (numberp span) + (funcall func span) + (let ((first (car span)) + (last (cdr span))) + (while (<= first last) + (funcall func first) + (setq first (1+ first)))))))) + (provide 'gnus-range) ;;; gnus-range.el ends here diff --git a/lisp/gnus-registry.el b/lisp/gnus-registry.el index 900eeab..a84ea83 100644 --- a/lisp/gnus-registry.el +++ b/lisp/gnus-registry.el @@ -24,11 +24,11 @@ ;;; Commentary: -;; This is the gnus-registry.el package, works with other backends -;; besides nnmail. The major issue is that it doesn't go across -;; backends, so for instance if an article is in nnml:sys and you see -;; a reference to it in nnimap splitting, the article will end up in -;; nnimap:sys +;; This is the gnus-registry.el package, which works with all +;; backends, not just nnmail (e.g. NNTP). The major issue is that it +;; doesn't go across backends, so for instance if an article is in +;; nnml:sys and you see a reference to it in nnimap splitting, the +;; article will end up in nnimap:sys ;; gnus-registry.el intercepts article respooling, moving, deleting, ;; and copying for all backends. If it doesn't work correctly for @@ -84,7 +84,8 @@ The group names are matched, they don't have to be fully qualified." (defcustom gnus-registry-clean-empty t "Whether the empty registry entries should be deleted. -Registry entries are considered empty when they have no groups." +Registry entries are considered empty when they have no groups +and no extra data." :group 'gnus-registry :type 'boolean) @@ -118,7 +119,10 @@ way." :group 'gnus-registry :type 'boolean) -(defcustom gnus-registry-cache-file "~/.gnus.registry.eld" +(defcustom gnus-registry-cache-file + (nnheader-concat + (or gnus-dribble-directory gnus-home-directory "~/") + ".gnus.registry.eld") "File where the Gnus registry will be stored." :group 'gnus-registry :type 'file) @@ -129,13 +133,6 @@ way." :type '(radio (const :format "Unlimited " nil) (integer :format "Maximum number: %v\n" :size 0))) -;; Function(s) missing in Emacs 20 -(when (memq nil (mapcar 'fboundp '(puthash))) - (require 'cl) - (unless (fboundp 'puthash) - ;; alias puthash is missing from Emacs 20 cl-extra.el - (defalias 'puthash 'cl-puthash))) - (defun gnus-registry-track-subject-p () (memq 'subject gnus-registry-track-extra)) @@ -216,7 +213,7 @@ way." ;; Idea from Dan Christensen ;; Save the gnus-registry file with extra line breaks. (defun gnus-registry-cache-whitespace (filename) - (gnus-message 5 "Adding whitespace to %s" filename) + (gnus-message 7 "Adding whitespace to %s" filename) (save-excursion (goto-char (point-min)) (while (re-search-forward "^(\\|(\\\"" nil t) @@ -252,7 +249,11 @@ way." (let ((count 0)) (maphash (lambda (key value) - (unless (gnus-registry-fetch-group key) + (unless (or + (gnus-registry-fetch-group key) + ;; TODO: look for specific extra data here! + ;; in this example, we look for 'label + (gnus-registry-fetch-extra key 'label)) (incf count) (remhash key gnus-registry-hashtb))) gnus-registry-hashtb) @@ -315,7 +316,7 @@ way." (to (if to (gnus-group-guess-full-name-from-command-method to) nil)) (to-name (if to to "the Bit Bucket")) (old-entry (gethash id gnus-registry-hashtb))) - (gnus-message 5 "Registry: article %s %s from %s to %s" + (gnus-message 7 "Registry: article %s %s from %s to %s" id (if method "respooling" "going") from @@ -333,7 +334,7 @@ way." (let ((group (gnus-group-guess-full-name-from-command-method group))) (when (and (stringp id) (string-match "\r$" id)) (setq id (substring id 0 -1))) - (gnus-message 5 "Registry: article %s spooled to %s" + (gnus-message 7 "Registry: article %s spooled to %s" id group) (gnus-registry-add-group id group subject sender))) @@ -346,6 +347,10 @@ is obtained from the registry. This function can be used as an entry in `nnmail-split-fancy' or `nnimap-split-fancy', for example like this: (: gnus-registry-split-fancy-with-parent) +This function tracks ALL backends, unlike +`nnmail-split-fancy-with-parent' which tracks only nnmail +messages. + For a message to be split, it looks for the parent message in the References or In-Reply-To header and then looks in the registry to see which group that message was put in. This group is returned. @@ -391,13 +396,14 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (unless (equal res (gnus-registry-fetch-group key)) (setq single-match nil)) (setq res (gnus-registry-fetch-group key)) - (gnus-message - ;; raise level of messaging if gnus-registry-track-extra - (if gnus-registry-track-extra 5 9) - "%s (extra tracking) traced sender %s to group %s" - "gnus-registry-split-fancy-with-parent" - sender - (if res res "nil"))))) + (when (and sender res) + (gnus-message + ;; raise level of messaging if gnus-registry-track-extra + (if gnus-registry-track-extra 7 9) + "%s (extra tracking) traced sender %s to group %s" + "gnus-registry-split-fancy-with-parent" + sender + res))))) gnus-registry-hashtb)) (when (and single-match (gnus-registry-track-subject-p) @@ -414,24 +420,26 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (unless (equal res (gnus-registry-fetch-group key)) (setq single-match nil)) (setq res (gnus-registry-fetch-group key)) - (gnus-message - ;; raise level of messaging if gnus-registry-track-extra - (if gnus-registry-track-extra 5 9) - "%s (extra tracking) traced subject %s to group %s" - "gnus-registry-split-fancy-with-parent" - subject - (if res res "nil"))))) + (when (and subject res) + (gnus-message + ;; raise level of messaging if gnus-registry-track-extra + (if gnus-registry-track-extra 7 9) + "%s (extra tracking) traced subject %s to group %s" + "gnus-registry-split-fancy-with-parent" + subject + res))))) gnus-registry-hashtb)) (unless single-match (gnus-message - 5 + 3 "gnus-registry-split-fancy-with-parent: too many extra matches for %s" refstr) (setq res nil)))) - (gnus-message - 5 - "gnus-registry-split-fancy-with-parent traced %s to group %s" - refstr (if res res "nil")) + (when (and refstr res) + (gnus-message + 5 + "gnus-registry-split-fancy-with-parent traced %s to group %s" + refstr res)) (when (and res gnus-registry-use-long-group-names) (let ((m1 (gnus-find-method-for-group res)) @@ -448,7 +456,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (setq res short-res)) ;; else... (gnus-message - 5 + 7 "gnus-registry-split-fancy-with-parent ignored foreign group %s" res) (setq res nil)))) diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 3727a4f..739d073 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -128,7 +128,7 @@ It accepts the same format specs that `gnus-summary-line-format' does." ;; Set up the menu. (when (gnus-visual-p 'pick-menu 'menu) (gnus-pick-make-menu-bar)) - (gnus-add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map + (add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map nil 'gnus-pick-mode) (gnus-run-hooks 'gnus-pick-mode-hook)))) @@ -361,7 +361,7 @@ This must be bound to a button-down mouse event." ;; Set up the menu. (when (gnus-visual-p 'binary-menu 'menu) (gnus-binary-make-menu-bar)) - (gnus-add-minor-mode 'gnus-binary-mode " Binary" + (add-minor-mode 'gnus-binary-mode " Binary" gnus-binary-mode-map nil 'gnus-binary-mode) (gnus-run-hooks 'gnus-binary-mode-hook)))) @@ -725,7 +725,7 @@ Two predefined functions are available: (unless (zerop level) (gnus-tree-indent level) (insert (cadr gnus-tree-parent-child-edges)) - (setq col (- (setq beg (point)) (gnus-point-at-bol) 1)) + (setq col (- (setq beg (point)) (point-at-bol) 1)) ;; Draw "|" lines upwards. (while (progn (forward-line -1) @@ -749,7 +749,7 @@ Two predefined functions are available: (defsubst gnus-tree-indent-vertical () (let ((len (- (* (1+ gnus-tree-node-length) gnus-tmp-indent) - (- (point) (gnus-point-at-bol))))) + (- (point) (point-at-bol))))) (when (> len 0) (insert (make-string len ? ))))) @@ -1027,11 +1027,11 @@ The following commands are available: (setq button (car buttons) buttons (cdr buttons)) (if (stringp button) - (gnus-set-text-properties + (set-text-properties (point) (prog2 (insert button) (point) (insert " ")) (list 'face gnus-carpal-header-face)) - (gnus-set-text-properties + (set-text-properties (point) (prog2 (insert (car button)) (point) (insert " ")) (list 'gnus-callback (cdr button) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index d9015b6..b1502e5 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -1,5 +1,5 @@ ;;; gnus-score.el --- scoring code for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Per Abrahamsen @@ -28,7 +28,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'gnus) (require 'gnus-sum) @@ -37,8 +36,6 @@ (require 'message) (require 'score-mode) -(autoload 'ffap-string-at-point "ffap") - (defcustom gnus-global-score-files nil "List of global score files and directories. Set this variable if you want to use people's score files. One entry @@ -662,7 +659,7 @@ file for the command instead of the current score file." (gnus-score-insert-help "Match permanence" char-to-perm 2))) (gnus-score-kill-help-buffer) - (if mimic (message "%c %c %c" prefix hchar tchar pchar) + (if mimic (message "%c %c %c %c" prefix hchar tchar pchar) (message "")) (unless (setq temporary (cadr (assq pchar char-to-perm))) ;; Deal with der(r)ided superannuated paradigms. @@ -1123,6 +1120,12 @@ EXTRA is the possible non-standard header." 4 (substitute-command-keys "\\\\[gnus-score-edit-exit] to save edits")))) +(defun gnus-score-edit-all-score () + "Edit the all.SCORE file." + (interactive) + (find-file (gnus-score-file-name "all")) + (gnus-score-mode)) + (defun gnus-score-edit-file (file) "Edit a score file." (interactive @@ -1152,9 +1155,9 @@ If FORMAT, also format the current score file." (reg " -> +") (file (save-excursion (end-of-line) - (if (and (re-search-backward reg (gnus-point-at-bol) t) - (re-search-forward reg (gnus-point-at-eol) t)) - (buffer-substring (point) (gnus-point-at-eol)) + (if (and (re-search-backward reg (point-at-bol) t) + (re-search-forward reg (point-at-eol) t)) + (buffer-substring (point) (point-at-eol)) nil)))) (if (or (not file) (string-match "\\<\\(non-file rule\\|A file\\)\\>" file) @@ -1243,8 +1246,7 @@ If FORMAT, also format the current score file." ;; files. (when (and files (not global)) (setq lists (apply 'append lists - (mapcar (lambda (file) - (gnus-score-load-file file)) + (mapcar 'gnus-score-load-file (if adapt-file (cons adapt-file files) files))))) (when (and eval (not global)) @@ -1884,7 +1886,7 @@ score in `gnus-newsgroup-scored' by SCORE." (goto-char (point-min)) (if (= dmt ?e) (while (funcall search-func match nil t) - (and (= (gnus-point-at-bol) + (and (= (point-at-bol) (match-beginning 0)) (= (progn (end-of-line) (point)) (match-end 0)) @@ -2054,7 +2056,7 @@ score in `gnus-newsgroup-scored' by SCORE." (funcall search-func match nil t)) ;; Is it really exact? (and (eolp) - (= (gnus-point-at-bol) (match-beginning 0)) + (= (point-at-bol) (match-beginning 0)) ;; Yup. (progn (setq found (setq arts (get-text-property @@ -2144,7 +2146,7 @@ score in `gnus-newsgroup-scored' by SCORE." (goto-char (point-min)) (while (and (not (eobp)) (search-forward match nil t)) - (when (and (= (gnus-point-at-bol) (match-beginning 0)) + (when (and (= (point-at-bol) (match-beginning 0)) (eolp)) (setq found (setq arts (get-text-property (point) 'articles))) (if trace @@ -2218,23 +2220,19 @@ score in `gnus-newsgroup-scored' by SCORE." (defun gnus-enter-score-words-into-hashtb (hashtb) ;; Find all the words in the buffer and enter them into ;; the hashtable. - (let ((syntab (syntax-table)) - word val) + (let (word val) (goto-char (point-min)) - (unwind-protect - (progn - (set-syntax-table gnus-adaptive-word-syntax-table) - (while (re-search-forward "\\b\\w+\\b" nil t) - (setq val - (gnus-gethash - (setq word (downcase (buffer-substring - (match-beginning 0) (match-end 0)))) - hashtb)) - (gnus-sethash - word - (append (get-text-property (gnus-point-at-eol) 'articles) val) - hashtb))) - (set-syntax-table syntab)) + (with-syntax-table gnus-adaptive-word-syntax-table + (while (re-search-forward "\\b\\w+\\b" nil t) + (setq val + (gnus-gethash + (setq word (downcase (buffer-substring + (match-beginning 0) (match-end 0)))) + hashtb)) + (gnus-sethash + word + (append (get-text-property (point-at-eol) 'articles) val) + hashtb))) ;; Make all the ignorable words ignored. (let ((ignored (append gnus-ignored-adaptive-words (if gnus-adaptive-word-no-group-words @@ -2337,39 +2335,35 @@ score in `gnus-newsgroup-scored' by SCORE." (let* ((hashtb (gnus-make-hashtable 1000)) (date (date-to-day (current-time-string))) (data gnus-newsgroup-data) - (syntab (syntax-table)) word d score val) - (unwind-protect - (progn - (set-syntax-table gnus-adaptive-word-syntax-table) - ;; Go through all articles. - (while (setq d (pop data)) - (when (and - (not (gnus-data-pseudo-p d)) - (setq score - (cdr (assq - (gnus-data-mark d) - gnus-adaptive-word-score-alist)))) - ;; This article has a mark that should lead to - ;; adaptive word rules, so we insert the subject - ;; and find all words in that string. - (insert (mail-header-subject (gnus-data-header d))) - (downcase-region (point-min) (point-max)) - (goto-char (point-min)) - (while (re-search-forward "\\b\\w+\\b" nil t) - ;; Put the word and score into the hashtb. - (setq val (gnus-gethash (setq word (match-string 0)) - hashtb)) - (when (or (not gnus-adaptive-word-length-limit) - (> (length word) - gnus-adaptive-word-length-limit)) - (setq val (+ score (or val 0))) - (if (and gnus-adaptive-word-minimum - (< val gnus-adaptive-word-minimum)) - (setq val gnus-adaptive-word-minimum)) - (gnus-sethash word val hashtb))) - (erase-buffer)))) - (set-syntax-table syntab)) + (with-syntax-table gnus-adaptive-word-syntax-table + ;; Go through all articles. + (while (setq d (pop data)) + (when (and + (not (gnus-data-pseudo-p d)) + (setq score + (cdr (assq + (gnus-data-mark d) + gnus-adaptive-word-score-alist)))) + ;; This article has a mark that should lead to + ;; adaptive word rules, so we insert the subject + ;; and find all words in that string. + (insert (mail-header-subject (gnus-data-header d))) + (downcase-region (point-min) (point-max)) + (goto-char (point-min)) + (while (re-search-forward "\\b\\w+\\b" nil t) + ;; Put the word and score into the hashtb. + (setq val (gnus-gethash (setq word (match-string 0)) + hashtb)) + (when (or (not gnus-adaptive-word-length-limit) + (> (length word) + gnus-adaptive-word-length-limit)) + (setq val (+ score (or val 0))) + (if (and gnus-adaptive-word-minimum + (< val gnus-adaptive-word-minimum)) + (setq val gnus-adaptive-word-minimum)) + (gnus-sethash word val hashtb))) + (erase-buffer)))) ;; Make all the ignorable words ignored. (let ((ignored (append gnus-ignored-adaptive-words (if gnus-adaptive-word-no-group-words @@ -2425,6 +2419,11 @@ score in `gnus-newsgroup-scored' by SCORE." (interactive) (bury-buffer nil) (gnus-summary-expand-window))) + (local-set-key "k" + (lambda () + (interactive) + (kill-buffer (current-buffer)) + (gnus-summary-expand-window))) (local-set-key "e" (lambda () "Run `gnus-score-edit-file-at-point'." (interactive) @@ -2453,7 +2452,7 @@ score in `gnus-newsgroup-scored' by SCORE." Type `e' to edit score file corresponding to the score rule on current line, `f' to format (pretty print) the score file and edit it, `t' toggle to truncate long lines in this buffer, -`q' to quit. +`q' to quit, `k' to kill score trace buffer. The first sexp on each line is the score rule, followed by the file name of the score file and its full name, including the directory.") @@ -2799,9 +2798,7 @@ Destroys the current buffer." (lambda (file) (cons (inline (gnus-score-file-rank file)) file)) files))) - (mapcar - (lambda (f) (cdr f)) - (sort alist 'car-less-than-car))))) + (mapcar 'cdr (sort alist 'car-less-than-car))))) (defun gnus-score-find-alist (group) "Return list of score files for GROUP. diff --git a/lisp/gnus-setup.el b/lisp/gnus-setup.el index 7ad8883..25dfda0 100644 --- a/lisp/gnus-setup.el +++ b/lisp/gnus-setup.el @@ -1,6 +1,6 @@ ;;; gnus-setup.el --- Initialization & Setup for Gnus 5 -;; Copyright (C) 1995, 1996, 2000, 2001 +;; Copyright (C) 1995, 1996, 2000, 2001, 2004 ;; Free Software Foundation, Inc. ;; Author: Steven L. Baur @@ -140,8 +140,7 @@ (when gnus-use-sc (add-hook 'mail-citation-hook 'sc-cite-original) - (setq message-cite-function 'sc-cite-original) - (autoload 'sc-cite-original "supercite")) + (setq message-cite-function 'sc-cite-original)) ;;;### (autoloads (gnus gnus-slave gnus-no-server) "gnus" "lisp/gnus.el" (12473 2137)) ;;; Generated autoloads from lisp/gnus.el diff --git a/lisp/gnus-soup.el b/lisp/gnus-soup.el index 2b9d305..32a2bdd 100644 --- a/lisp/gnus-soup.el +++ b/lisp/gnus-soup.el @@ -278,7 +278,7 @@ Note -- this function hasn't been implemented yet." If NOT-ALL, don't pack ticked articles." (let ((gnus-expert-user t) (gnus-large-newsgroup nil) - (entry (gnus-gethash group gnus-newsrc-hashtb))) + (entry (gnus-group-entry group))) (when (or (null entry) (eq (car entry) t) (and (car entry) diff --git a/lisp/gnus-spec.el b/lisp/gnus-spec.el index a45f1ca..25d67fb 100644 --- a/lisp/gnus-spec.el +++ b/lisp/gnus-spec.el @@ -136,7 +136,7 @@ text properties. This is only needed on XEmacs, as FSF Emacs does this anyway." (gnus-byte-code 'gnus-group-line-format-spec)) (defvar gnus-format-specs - `((group ("%M\%S\%p\%P\%5y: %(%g%)%l\n" ,gnus-group-line-format-spec)) + `((group ("%M\%S\%p\%P\%5y: %(%g%)\n" ,gnus-group-line-format-spec)) (summary-dummy ("* %(: :%) %S\n" ,gnus-summary-dummy-line-format-spec)) (summary ("%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n" @@ -234,6 +234,14 @@ text properties. This is only needed on XEmacs, as FSF Emacs does this anyway." gnus-format-specs-compiled nil) (gnus-product-variable-touch 'gnus-format-specs 'gnus-format-specs-compiled)) + ;; Flush the group format spec cache if there's the grouplens stuff. + (let ((spec (assq 'group gnus-format-specs))) + (when (and (memq 'group types) + (string-match " gnus-tmp-grouplens[ )]" + (gnus-prin1-to-string (cdr spec)))) + (setq gnus-format-specs (delq spec gnus-format-specs) + spec (assq 'group gnus-format-specs-compiled) + gnus-format-specs-compiled (delq spec gnus-format-specs-compiled)))) ;; Go through all the formats and see whether they need updating. (let (type val) @@ -321,7 +329,7 @@ text properties. This is only needed on XEmacs, as FSF Emacs does this anyway." (defun gnus-correct-length (string) "Return the correct width of STRING." (let ((length 0)) - (mapcar (lambda (char) (incf length (gnus-char-width char))) string) + (mapcar (lambda (char) (incf length (char-width char))) string) length)) (defun gnus-correct-substring (string start &optional end) @@ -334,14 +342,14 @@ text properties. This is only needed on XEmacs, as FSF Emacs does this anyway." ;; Find the start position. (while (and (< seek length) (< wseek start)) - (incf wseek (gnus-char-width (aref string seek))) + (incf wseek (char-width (aref string seek))) (incf seek)) (setq wstart seek) ;; Find the end position. (while (and (<= seek length) (or (not end) (<= wseek end))) - (incf wseek (gnus-char-width (aref string seek))) + (incf wseek (char-width (aref string seek))) (incf seek)) (setq wend seek) (substring string wstart (1- wend)))) @@ -646,6 +654,9 @@ are supported for %s." ?s))) ;; Find the specification from `spec-alist'. ((setq elem (cdr (assq (or extended-spec spec) spec-alist)))) + ;; We used to use "%l" for displaying the grouplens score. + ((eq spec ?l) + (setq elem '("" ?s))) (t (setq elem '("*" ?s)))) (setq elem-type (cadr elem)) @@ -696,7 +707,7 @@ are supported for %s." (list (car flist))) ;; A single number. ((string= fstring "%d") - (setq dontinsert) + (setq dontinsert t) (if insert (list `(princ ,(car flist))) (list `(int-to-string ,(car flist))))) diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index bfc3d08..2bd5c2a 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -51,7 +51,7 @@ with some simple extensions. The following specs are understood: -%h backend +%h back end %n name %w address %s status @@ -342,13 +342,13 @@ The following commands are available: (gnus-server-position-point)) (defun gnus-server-server-name () - (let ((server (get-text-property (gnus-point-at-bol) 'gnus-server))) + (let ((server (get-text-property (point-at-bol) 'gnus-server))) (and server (symbol-name server)))) (defun gnus-server-named-server () - "Returns a server name that matches one of the names returned by -gnus-method-to-server." - (let ((server (get-text-property (gnus-point-at-bol) 'gnus-named-server))) + "Return a server name that matches one of the names returned by +`gnus-method-to-server'." + (let ((server (get-text-property (point-at-bol) 'gnus-named-server))) (and server (symbol-name server)))) (defalias 'gnus-server-position-point 'gnus-goto-colon) @@ -730,10 +730,10 @@ gnus-method-to-server." (if (eq (car method) 'nntp) (while (not (eobp)) (ignore-errors - (push (cons - (buffer-substring + (push (cons + (buffer-substring (point) - (progn + (progn (skip-chars-forward "^ \t") (point))) (let ((last (read cur))) @@ -797,18 +797,26 @@ gnus-method-to-server." (prog1 (1+ (point)) (insert (format "%c%7d: %s\n" - (let ((level (gnus-group-level - (concat prefix (setq name (car group)))))) + (let ((level + (if (string= prefix "") + (gnus-group-level (setq name (car group))) + (gnus-group-level + (concat prefix (setq name (car group))))))) (cond ((<= level gnus-level-subscribed) ? ) ((<= level gnus-level-unsubscribed) ?U) ((= level gnus-level-zombie) ?Z) (t ?K))) (max 0 (- (1+ (cddr group)) (cadr group))) - (decode-coding-string - name - (inline (gnus-group-name-charset method name)))))) - (list 'gnus-group name)))) + ;; Don't decode if name is ASCII + (if (and (fboundp 'detect-coding-string) + (eq (detect-coding-string name t) 'undecided)) + name + (decode-coding-string + name + (inline (gnus-group-name-charset method name))))))) + (list 'gnus-group name) + ))) (switch-to-buffer (current-buffer))) (goto-char (point-min)) (gnus-group-position-point) @@ -896,8 +904,8 @@ buffer. (save-excursion (beginning-of-line) (let ((name (get-text-property (point) 'gnus-group))) - (when (re-search-forward ": \\(.*\\)$" (gnus-point-at-eol) t) - (concat (gnus-method-to-server-name gnus-browse-current-method) ":" + (when (re-search-forward ": \\(.*\\)$" (point-at-eol) t) + (concat (gnus-method-to-server-name gnus-browse-current-method) ":" (or name (match-string-no-properties 1))))))) @@ -933,8 +941,7 @@ buffer. gnus-browse-current-method))) gnus-level-default-subscribed (gnus-group-level group) (and (car (nth 1 gnus-newsrc-alist)) - (gnus-gethash (car (nth 1 gnus-newsrc-alist)) - gnus-newsrc-hashtb)) + (gnus-group-entry (car (nth 1 gnus-newsrc-alist)))) t) (delete-char 1) (insert ? )) @@ -973,7 +980,7 @@ buffer. (gnus-get-function (gnus-server-to-method server) 'request-regenerate) (error - (error "This backend doesn't support regeneration"))) + (error "This back end doesn't support regeneration"))) (gnus-message 5 "Requesting regeneration of %s..." server) (unless (gnus-open-server server) (error "Couldn't open server")) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 122288a..6ffb8a1 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -37,7 +37,12 @@ (require 'gnus-util) (autoload 'message-make-date "message") (autoload 'gnus-agent-read-servers-validate "gnus-agent") +(autoload 'gnus-agent-save-local "gnus-agent") (autoload 'gnus-agent-possibly-alter-active "gnus-agent") +(eval-when-compile + (defvar gnus-agent-covered-methods nil) + (defvar gnus-agent-file-loading-local nil) + (defvar gnus-agent-file-loading-cache nil)) (defcustom gnus-startup-file (nnheader-concat gnus-home-directory ".newsrc") "Your `.newsrc' file. @@ -454,9 +459,7 @@ Can be used to turn version control on or off." ;;; Internal variables -(defvar gnus-ding-file-coding-system (static-if (boundp 'MULE) - '*ctext* - 'ctext) +(defvar gnus-ding-file-coding-system 'ctext "Coding system for ding file.") ;; Note that the ding file for T-gnus ought not to have byte-codes. @@ -626,8 +629,7 @@ the first newsgroup." ;; We subscribe the group by changing its level to `subscribed'. (gnus-group-change-level newsgroup gnus-level-default-subscribed - gnus-level-killed (gnus-gethash (or next "dummy.group") - gnus-newsrc-hashtb)) + gnus-level-killed (gnus-group-entry (or next "dummy.group"))) (gnus-message 5 "Subscribe newsgroup: %s" newsgroup) (run-hook-with-args 'gnus-subscribe-newsgroup-hooks newsgroup) t)) @@ -684,6 +686,8 @@ the first newsgroup." (setq gnus-list-of-killed-groups nil gnus-have-read-active-file nil gnus-agent-covered-methods nil + gnus-agent-file-loading-local nil + gnus-agent-file-loading-cache nil gnus-server-method-cache nil gnus-newsrc-alist nil gnus-newsrc-hashtb nil @@ -791,11 +795,6 @@ prompt the user for the name of an NNTP server to use." (when (or gnus-slave gnus-use-dribble-file) (gnus-dribble-read-file)) - ;; Allow using GroupLens predictions. - (when gnus-use-grouplens - (bbb-login) - (add-hook 'gnus-summary-mode-hook 'gnus-grouplens-mode)) - ;; Do the actual startup. (if gnus-agent (gnus-request-create-group "queue" '(nndraft ""))) @@ -815,7 +814,7 @@ prompt the user for the name of an NNTP server to use." (defun gnus-start-draft-setup () "Make sure the draft group exists." (gnus-request-create-group "drafts" '(nndraft "")) - (unless (gnus-gethash "nndraft:drafts" gnus-newsrc-hashtb) + (unless (gnus-group-entry "nndraft:drafts") (let ((gnus-level-default-subscribed 1)) (gnus-subscribe-group "nndraft:drafts" nil '(nndraft ""))) (gnus-group-set-parameter @@ -1320,16 +1319,16 @@ for new groups, and subscribe the new groups as zombies." (when (and (stringp entry) oldlevel (< oldlevel gnus-level-zombie)) - (setq entry (gnus-gethash entry gnus-newsrc-hashtb))) + (setq entry (gnus-group-entry entry))) (if (and (not oldlevel) (consp entry)) (setq oldlevel (gnus-info-level (nth 2 entry))) (setq oldlevel (or oldlevel gnus-level-killed))) (when (stringp previous) - (setq previous (gnus-gethash previous gnus-newsrc-hashtb))) + (setq previous (gnus-group-entry previous))) (if (and (>= oldlevel gnus-level-zombie) - (gnus-gethash group gnus-newsrc-hashtb)) + (gnus-group-entry group)) ;; We are trying to subscribe a group that is already ;; subscribed. () ; Do nothing. @@ -1353,8 +1352,7 @@ for new groups, and subscribe the new groups as zombies." entry) (gnus-sethash (car (nth 2 entry)) nil gnus-newsrc-hashtb) (when (nth 3 entry) - (setcdr (gnus-gethash (car (nth 3 entry)) - gnus-newsrc-hashtb) + (setcdr (gnus-group-entry (car (nth 3 entry))) (cdr entry))) (setcdr (cdr entry) (cdddr entry))))) @@ -1414,7 +1412,7 @@ for new groups, and subscribe the new groups as zombies." (gnus-sethash group (cons num previous) gnus-newsrc-hashtb)) (when (cdr entry) - (setcdr (gnus-gethash (caadr entry) gnus-newsrc-hashtb) entry)) + (setcdr (gnus-group-entry (caadr entry)) entry)) (gnus-dribble-enter (format "(gnus-group-set-info '%S)" info))))) @@ -1425,7 +1423,7 @@ for new groups, and subscribe the new groups as zombies." (defun gnus-kill-newsgroup (newsgroup) "Obsolete function. Kills a newsgroup." (gnus-group-change-level - (gnus-gethash newsgroup gnus-newsrc-hashtb) gnus-level-killed)) + (gnus-group-entry newsgroup) gnus-level-killed)) (defun gnus-check-bogus-newsgroups (&optional confirm) "Remove bogus newsgroups. @@ -1453,14 +1451,14 @@ newsgroup." (lambda (group) ;; Remove all bogus subscribed groups by first killing them, and ;; then removing them from the list of killed groups. - (when (setq entry (gnus-gethash group gnus-newsrc-hashtb)) + (when (setq entry (gnus-group-entry group)) (gnus-group-change-level entry gnus-level-killed) (setq gnus-killed-list (delete group gnus-killed-list)))) bogus '("group" "groups" "remove")) (while (setq group (pop bogus)) ;; Remove all bogus subscribed groups by first killing them, and ;; then removing them from the list of killed groups. - (when (setq entry (gnus-gethash group gnus-newsrc-hashtb)) + (when (setq entry (gnus-group-entry group)) (gnus-group-change-level entry gnus-level-killed) (setq gnus-killed-list (delete group gnus-killed-list))))) ;; Then we remove all bogus groups from the list of killed and @@ -1534,6 +1532,15 @@ newsgroup." (gnus-active group)) (gnus-active group) + ;; If a cache is present, we may have to alter the active info. + (when gnus-use-cache + (inline (gnus-cache-possibly-alter-active + group active))) + + ;; If the agent is enabled, we may have to alter the active info. + (when gnus-agent + (gnus-agent-possibly-alter-active group active)) + (gnus-set-active group active) ;; Return the new active info. active))))) @@ -1549,6 +1556,10 @@ newsgroup." (let* ((range (gnus-info-read info)) (num 0)) + + ;; These checks are present in gnus-activate-group but skipped + ;; due to setting dont-check in the preceeding call. + ;; If a cache is present, we may have to alter the active info. (when (and gnus-use-cache info) (inline (gnus-cache-possibly-alter-active @@ -1556,8 +1567,7 @@ newsgroup." ;; If the agent is enabled, we may have to alter the active info. (when (and gnus-agent info) - (gnus-agent-possibly-alter-active - (gnus-info-group info) active)) + (gnus-agent-possibly-alter-active (gnus-info-group info) active info)) ;; Modify the list of read articles according to what articles ;; are available; then tally the unread articles and add the @@ -1626,8 +1636,8 @@ newsgroup." (setq num (max 0 (- (cdr active) num))))) ;; Set the number of unread articles. (when (and info - (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb)) - (setcar (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb) num)) + (gnus-group-entry (gnus-info-group info))) + (setcar (gnus-group-entry (gnus-info-group info)) num)) num))) ;; Go though `gnus-newsrc-alist' and compare with `gnus-active-hashtb' @@ -1653,7 +1663,7 @@ newsgroup." (while newsrc (setq active (gnus-active (setq group (gnus-info-group - (setq info (pop newsrc)))))) + (setq info (pop newsrc)))))) ;; Check newsgroups. If the user doesn't want to check them, or ;; they can't be checked (for instance, if the news server can't @@ -1676,61 +1686,60 @@ newsgroup." (when (and method (not (setq method-type (cdr (assoc method type-cache))))) (setq method-type - (cond - ((gnus-secondary-method-p method) - 'secondary) - ((inline (gnus-server-equal gnus-select-method method)) - 'primary) - (t - 'foreign))) + (cond + ((gnus-secondary-method-p method) + 'secondary) + ((inline (gnus-server-equal gnus-select-method method)) + 'primary) + (t + 'foreign))) (push (cons method method-type) type-cache)) - (if (and method - (eq method-type 'foreign)) - ;; These groups are foreign. Check the level. - (when (and (<= (gnus-info-level info) foreign-level) - (setq active (gnus-activate-group group 'scan))) - ;; Let the Gnus agent save the active file. - (when (and gnus-agent active (gnus-online method)) - (gnus-agent-save-group-info - method (gnus-group-real-name group) active)) - (unless (inline (gnus-virtual-group-p group)) - (inline (gnus-close-group group))) - (when (fboundp (intern (concat (symbol-name (car method)) - "-request-update-info"))) - (inline (gnus-request-update-info info method)))) - ;; These groups are native or secondary. - (cond - ;; We don't want these groups. - ((> (gnus-info-level info) level) - (setq active 'ignore)) - ;; Activate groups. - ((not gnus-read-active-file) - (if (gnus-check-backend-function 'retrieve-groups group) - ;; if server support gnus-retrieve-groups we push - ;; the group onto retrievegroups for later checking - (if (assoc method retrieve-groups) - (setcdr (assoc method retrieve-groups) - (cons group (cdr (assoc method retrieve-groups)))) - (push (list method group) retrieve-groups)) - ;; hack: `nnmail-get-new-mail' changes the mail-source depending - ;; on the group, so we must perform a scan for every group - ;; if the users has any directory mail sources. - ;; hack: if `nnmail-scan-directory-mail-source-once' is non-nil, - ;; for it scan all spool files even when the groups are - ;; not required. - (if (and - (or nnmail-scan-directory-mail-source-once - (null (assq 'directory - (or mail-sources - (if (listp nnmail-spool-file) - nnmail-spool-file - (list nnmail-spool-file)))))) - (member method scanned-methods)) - (setq active (gnus-activate-group group)) - (setq active (gnus-activate-group group 'scan)) - (push method scanned-methods)) - (when active - (gnus-close-group group)))))) + + (cond ((and method (eq method-type 'foreign)) + ;; These groups are foreign. Check the level. + (when (and (<= (gnus-info-level info) foreign-level) + (setq active (gnus-activate-group group 'scan))) + ;; Let the Gnus agent save the active file. + (when (and gnus-agent active (gnus-online method)) + (gnus-agent-save-group-info + method (gnus-group-real-name group) active)) + (unless (inline (gnus-virtual-group-p group)) + (inline (gnus-close-group group))) + (when (fboundp (intern (concat (symbol-name (car method)) + "-request-update-info"))) + (inline (gnus-request-update-info info method))))) + ;; These groups are native or secondary. + ((> (gnus-info-level info) level) + ;; We don't want these groups. + (setq active 'ignore)) + ;; Activate groups. + ((not gnus-read-active-file) + (if (gnus-check-backend-function 'retrieve-groups group) + ;; if server support gnus-retrieve-groups we push + ;; the group onto retrievegroups for later checking + (if (assoc method retrieve-groups) + (setcdr (assoc method retrieve-groups) + (cons group (cdr (assoc method retrieve-groups)))) + (push (list method group) retrieve-groups)) + ;; hack: `nnmail-get-new-mail' changes the mail-source depending + ;; on the group, so we must perform a scan for every group + ;; if the users has any directory mail sources. + ;; hack: if `nnmail-scan-directory-mail-source-once' is non-nil, + ;; for it scan all spool files even when the groups are + ;; not required. + (if (and + (or nnmail-scan-directory-mail-source-once + (null (assq 'directory + (or mail-sources + (if (listp nnmail-spool-file) + nnmail-spool-file + (list nnmail-spool-file)))))) + (member method scanned-methods)) + (setq active (gnus-activate-group group)) + (setq active (gnus-activate-group group 'scan)) + (push method scanned-methods)) + (when active + (gnus-close-group group))))) ;; Get the number of unread articles in the group. (cond @@ -1743,7 +1752,7 @@ newsgroup." ;; The group couldn't be reached, so we nix out the number of ;; unread articles and stuff. (gnus-set-active group nil) - (let ((tmp (gnus-gethash group gnus-newsrc-hashtb))) + (let ((tmp (gnus-group-entry group))) (when tmp (setcar tmp t)))))) @@ -1757,8 +1766,8 @@ newsgroup." (when (gnus-check-backend-function 'request-scan (car method)) (gnus-request-scan nil method)) (gnus-read-active-file-2 - (mapcar (lambda (group) (gnus-group-real-name group)) groups) - method) + (mapcar (lambda (group) (gnus-group-real-name group)) groups) + method) (dolist (group groups) (cond ((setq active (gnus-active (gnus-info-group @@ -1768,7 +1777,7 @@ newsgroup." ;; The group couldn't be reached, so we nix out the number of ;; unread articles and stuff. (gnus-set-active group nil) - (setcar (gnus-gethash group gnus-newsrc-hashtb) t))))))) + (setcar (gnus-group-entry group) t))))))) (gnus-message 6 "Checking new news...done"))) @@ -1820,9 +1829,9 @@ newsgroup." (defun gnus-make-articles-unread (group articles) "Mark ARTICLES in GROUP as unread." - (let* ((info (nth 2 (or (gnus-gethash group gnus-newsrc-hashtb) - (gnus-gethash (gnus-group-real-name group) - gnus-newsrc-hashtb)))) + (let* ((info (nth 2 (or (gnus-group-entry group) + (gnus-group-entry + (gnus-group-real-name group))))) (ranges (gnus-info-read info)) news article) (while articles @@ -1842,9 +1851,8 @@ newsgroup." (defun gnus-make-ascending-articles-unread (group articles) "Mark ascending ARTICLES in GROUP as unread." - (let* ((entry (or (gnus-gethash group gnus-newsrc-hashtb) - (gnus-gethash (gnus-group-real-name group) - gnus-newsrc-hashtb))) + (let* ((entry (or (gnus-group-entry group) + (gnus-group-entry (gnus-group-real-name group)))) (info (nth 2 entry)) (ranges (gnus-info-read info)) (r ranges) @@ -2003,10 +2011,10 @@ newsgroup." (while (setq info (pop newsrc)) (when (inline (gnus-server-equal - (inline - (gnus-find-method-for-group - (gnus-info-group info) info)) - gmethod)) + (inline + (gnus-find-method-for-group + (gnus-info-group info) info)) + gmethod)) (push (gnus-group-real-name (gnus-info-group info)) groups))) (gnus-read-active-file-2 groups method))) @@ -2093,7 +2101,7 @@ newsgroup." (while (not (eobp)) (condition-case () (progn - (narrow-to-region (point) (gnus-point-at-eol)) + (narrow-to-region (point) (point-at-eol)) ;; group gets set to a symbol interned in the hash table ;; (what a hack!!) - jwz (setq group (let ((obarray hashtb)) (read cur))) @@ -2125,7 +2133,7 @@ newsgroup." (unless ignore-errors (gnus-message 3 "Warning - invalid active: %s" (buffer-substring - (gnus-point-at-bol) (gnus-point-at-eol)))))) + (point-at-bol) (point-at-eol)))))) (widen) (forward-line 1))))) @@ -2150,7 +2158,7 @@ newsgroup." (gnus-online method) (gnus-agent-method-p method)) (progn - (gnus-agent-save-groups method) + (gnus-agent-save-active method) (gnus-active-to-gnus-format method hashtb nil real-active)) (goto-char (point-min)) @@ -2219,6 +2227,108 @@ If FORCE is non-nil, the .newsrc file is read." (kill-buffer (current-buffer)) (gnus-message 5 "Reading %s...done" newsrc-file)))))) +(quote (;; T-gnus doesn't provide those functions. +(defun gnus-convert-old-newsrc () + "Convert old newsrc formats into the current format, if needed." + (let ((fcv (and gnus-newsrc-file-version + (gnus-continuum-version gnus-newsrc-file-version)))) + (when fcv + ;; A .newsrc.eld file was loaded. + (let (prompt-displayed + (converters + (sort + (mapcar (lambda (date-func) + (cons (gnus-continuum-version (car date-func)) + date-func)) + ;; This is a list of converters that must be run + ;; to bring the newsrc file up to the current + ;; version. If you create an incompatibility + ;; with older versions, you should create an + ;; entry here. The entry should consist of the + ;; current gnus version (hardcoded so that it + ;; doesn't change with each release) and the + ;; function that must be applied to convert the + ;; previous version into the current version. + '(("September Gnus v0.1" nil + gnus-convert-old-ticks) + ("Oort Gnus v0.08" "legacy-gnus-agent" + gnus-agent-convert-to-compressed-agentview) + ("No Gnus v0.2" "legacy-gnus-agent" + gnus-agent-unlist-expire-days) + ("No Gnus v0.2" "legacy-gnus-agent" + gnus-agent-unhook-expire-days))) + #'car-less-than-car))) + ;; Skip converters older than the file version + (while (and converters (>= fcv (caar converters))) + (pop converters)) + + ;; Perform converters to bring older version up to date. + (when (and converters (< fcv (caar converters))) + (while (and converters (< fcv (caar converters))) + (let* ((converter-spec (pop converters)) + (convert-to (nth 1 converter-spec)) + (load-from (nth 2 converter-spec)) + (func (nth 3 converter-spec))) + (when (and load-from + (not (fboundp func))) + (load load-from t)) + + (or prompt-displayed + (not (gnus-convert-converter-needs-prompt func)) + (while (let (c + (cursor-in-echo-area t) + (echo-keystrokes 0)) + (message "Convert newsrc from version '%s' to '%s'? (n/y/?)" + gnus-newsrc-file-version gnus-version) + (setq c (read-char-exclusive)) + + (cond ((or (eq c ?n) (eq c ?N)) + (error "Can not start gnus using old (unconverted) newsrc")) + ((or (eq c ?y) (eq c ?Y)) + (setq prompt-displayed t) + nil) + ((eq c ?\?) + (message "This conversion is irreversible. \ + You should backup your files before proceeding.") + (sit-for 5) + t) + (t + (gnus-message 3 "Ignoring unexpected input") + (sit-for 3) + t))))) + + (funcall func convert-to))) + (gnus-dribble-enter + (format ";Converted newsrc from version '%s' to '%s'? (n/y/?)" + gnus-newsrc-file-version gnus-version))))))) + +(defun gnus-convert-mark-converter-prompt (converter no-prompt) + (setplist converter + (let* ((symbol 'gnus-convert-no-prompt) + (value (delq symbol (symbol-plist converter)))) + (if no-prompt + (cons symbol value) + value)))) + +(defun gnus-convert-converter-needs-prompt (converter) + (not (memq 'gnus-convert-no-prompt (symbol-plist converter)))) + +(defun gnus-convert-old-ticks (converting-to) + (let ((newsrc (cdr gnus-newsrc-alist)) + marks info dormant ticked) + (while (setq info (pop newsrc)) + (when (setq marks (gnus-info-marks info)) + (setq dormant (cdr (assq 'dormant marks)) + ticked (cdr (assq 'tick marks))) + (when (or dormant ticked) + (gnus-info-set-read + info + (gnus-add-to-range + (gnus-info-read info) + (nconc (gnus-uncompress-range dormant) + (gnus-uncompress-range ticked))))))))) +)) + (defun gnus-load (file &optional coding-system) "Load FILE, but in such a way that read errors can be reported." (with-temp-buffer @@ -2303,8 +2413,7 @@ If FORCE is non-nil, the .newsrc file is read." &rest variables) (let (error gnus-product-file-version method file-ver) (when (or (condition-case err - (let ((coding-system-for-read coding) - (input-coding-system coding)) + (let ((coding-system-for-read coding)) (load (expand-file-name file gnus-product-directory) nil nil t) nil) @@ -2446,10 +2555,10 @@ If FORCE is non-nil, the .newsrc file is read." ;; don't give a damn, frankly, my dear. (concat gnus-newsrc-options (buffer-substring - (gnus-point-at-bol) + (point-at-bol) ;; Options may continue on the next line. (or (and (re-search-forward "^[^ \t]" nil 'move) - (progn (beginning-of-line) (point))) + (point-at-bol)) (point))))) (forward-line -1)) (symbol @@ -2517,8 +2626,8 @@ If FORCE is non-nil, the .newsrc file is read." ;; The line was buggy. (setq group nil) (gnus-error 3.1 "Mangled line: %s" - (buffer-substring (gnus-point-at-bol) - (gnus-point-at-eol)))) + (buffer-substring (point-at-bol) + (point-at-eol)))) nil)) ;; Skip past ", ". Spaces are invalid in these ranges, but ;; we allow them, because it's a common mistake to put a @@ -2627,9 +2736,9 @@ If FORCE is non-nil, the .newsrc file is read." (while (re-search-forward "[ \t]-n" nil t) (setq eol (or (save-excursion - (and (re-search-forward "[ \t]-n" (gnus-point-at-eol) t) + (and (re-search-forward "[ \t]-n" (point-at-eol) t) (- (point) 2))) - (gnus-point-at-eol))) + (point-at-eol))) ;; Search for all "words"... (while (re-search-forward "[^ \t,\n]+" eol t) (if (eq (char-after (match-beginning 0)) ?!) @@ -2662,6 +2771,10 @@ If FORCE is non-nil, the .newsrc file is read." ;; from the variable gnus-newsrc-alist. (when (and (or gnus-newsrc-alist gnus-killed-list) gnus-current-startup-file) + ;; Save agent range limits for the currently active method. + (when gnus-agent + (gnus-agent-save-local force)) + (save-excursion (if (and (or gnus-use-dribble-file gnus-slave) (not force) @@ -2679,6 +2792,7 @@ If FORCE is non-nil, the .newsrc file is read." (gnus-message 8 "Saving %s..." gnus-current-startup-file) (gnus-gnus-to-newsrc-format) (gnus-message 8 "Saving %s...done" gnus-current-startup-file)) + ;; Save .newsrc.eld. (set-buffer (gnus-get-buffer-create " *Gnus-newsrc*")) (make-local-variable 'version-control) @@ -2692,13 +2806,11 @@ If FORCE is non-nil, the .newsrc file is read." (if gnus-save-startup-file-via-temp-buffer (let ((coding-system-for-write gnus-ding-file-coding-system) - (output-coding-system gnus-ding-file-coding-system) (standard-output (current-buffer))) (gnus-gnus-to-quick-newsrc-format) (gnus-run-hooks 'gnus-save-quick-newsrc-hook) (save-buffer)) (let ((coding-system-for-write gnus-ding-file-coding-system) - (output-coding-system gnus-ding-file-coding-system) (version-control gnus-backup-startup-file) (startup-file (concat gnus-current-startup-file ".eld")) (working-dir (file-name-directory gnus-current-startup-file)) @@ -2951,7 +3063,7 @@ If FORCE is non-nil, the .newsrc file is read." (defun gnus-slave-mode () "Minor mode for slave Gnusae." - (gnus-add-minor-mode 'gnus-slave-mode " Slave" (make-sparse-keymap)) + (add-minor-mode 'gnus-slave-mode " Slave" (make-sparse-keymap)) (gnus-run-hooks 'gnus-slave-mode-hook)) (defun gnus-slave-save-newsrc () diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index a8938f3..24b01ca 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -30,7 +30,6 @@ (eval-when-compile (require 'cl) - (require 'gnus-clfns) (defvar tool-bar-map)) (require 'gnus) @@ -54,6 +53,7 @@ (autoload 'gnus-cache-write-active "gnus-cache") (autoload 'gnus-mailing-list-insinuate "gnus-ml" nil t) (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" nil t) +(autoload 'gnus-pick-line-number "gnus-salt" nil t) (autoload 'mm-uu-dissect "mm-uu") (autoload 'gnus-article-outlook-deuglify-article "deuglify" "Deuglify broken Outlook (Express) articles and redisplay." @@ -446,6 +446,13 @@ this variable specifies group names." (cons :value ("" "") regexp (repeat string)) (sexp :value nil)))) +(defcustom gnus-move-group-prefix-function 'gnus-group-real-prefix + "Function used to compute default prefix for article move/copy/etc prompts. +The function should take one argument, a group name, and return a +string with the suggested prefix." + :group 'gnus-summary-mail + :type 'function) + (defcustom gnus-unread-mark ?\ ;;;Whitespace "*Mark used for unread articles." :group 'gnus-summary-marks @@ -696,6 +703,41 @@ score file." :group 'gnus-score-default :type 'integer) +(defun gnus-widget-reversible-match (widget value) + "Ignoring WIDGET, convert VALUE to internal form. +VALUE should have the form `FOO' or `(not FOO)', where FOO is an symbol." + ;; (debug value) + (or (symbolp value) + (and (listp value) + (eq (length value) 2) + (eq (nth 0 value) 'not) + (symbolp (nth 1 value))))) + +(defun gnus-widget-reversible-to-internal (widget value) + "Ignoring WIDGET, convert VALUE to internal form. +VALUE should have the form `FOO' or `(not FOO)', where FOO is an atom. +FOO is converted to (FOO nil) and (not FOO) is converted to (FOO t)." + ;; (debug value) + (if (atom value) + (list value nil) + (list (nth 1 value) t))) + +(defun gnus-widget-reversible-to-external (widget value) + "Ignoring WIDGET, convert VALUE to external form. +VALUE should have the form `(FOO nil)' or `(FOO t)', where FOO is an atom. +\(FOO nil) is converted to FOO and (FOO t) is converted to (not FOO)." + ;; (debug value) + (if (nth 1 value) + (list 'not (nth 0 value)) + (nth 0 value))) + +(define-widget 'gnus-widget-reversible 'group + "A `group' that convert values." + :match 'gnus-widget-reversible-match + :value-to-internal 'gnus-widget-reversible-to-internal + :value-to-external 'gnus-widget-reversible-to-external) + + (defcustom gnus-article-sort-functions '(gnus-article-sort-by-number) "*List of functions used for sorting articles in the summary buffer. @@ -708,6 +750,9 @@ is often much slower than sorting by number, and the sorting order is very similar. (Sorting by date means sorting by the time the message was sent, sorting by number means sorting by arrival time.) +Each item can also be a list `(not F)' where F is a function; +this reverses the sort order. + Ready-made functions include `gnus-article-sort-by-number', `gnus-article-sort-by-author', `gnus-article-sort-by-subject', `gnus-article-sort-by-date', `gnus-article-sort-by-random' @@ -716,13 +761,16 @@ and `gnus-article-sort-by-score'. When threading is turned on, the variable `gnus-thread-sort-functions' controls how articles are sorted." :group 'gnus-summary-sort - :type '(repeat (choice (function-item gnus-article-sort-by-number) - (function-item gnus-article-sort-by-author) - (function-item gnus-article-sort-by-subject) - (function-item gnus-article-sort-by-date) - (function-item gnus-article-sort-by-score) - (function-item gnus-article-sort-by-random) - (function :tag "other")))) + :type '(repeat (gnus-widget-reversible + (choice (function-item gnus-article-sort-by-number) + (function-item gnus-article-sort-by-author) + (function-item gnus-article-sort-by-subject) + (function-item gnus-article-sort-by-date) + (function-item gnus-article-sort-by-score) + (function-item gnus-article-sort-by-random) + (function :tag "other")) + (boolean :tag "Reverse order")))) + (defcustom gnus-thread-sort-functions '(gnus-thread-sort-by-number) "*List of functions used for sorting threads in the summary buffer. @@ -737,6 +785,9 @@ is often much slower than sorting by number, and the sorting order is very similar. (Sorting by date means sorting by the time the message was sent, sorting by number means sorting by arrival time.) +Each list item can also be a list `(not F)' where F is a +function; this specifies reversed sort order. + Ready-made functions include `gnus-thread-sort-by-number', `gnus-thread-sort-by-author', `gnus-thread-sort-by-subject', `gnus-thread-sort-by-date', `gnus-thread-sort-by-score', @@ -748,14 +799,19 @@ Ready-made functions include `gnus-thread-sort-by-number', When threading is turned off, the variable `gnus-article-sort-functions' controls how articles are sorted." :group 'gnus-summary-sort - :type '(repeat (choice (function-item gnus-thread-sort-by-number) - (function-item gnus-thread-sort-by-author) - (function-item gnus-thread-sort-by-subject) - (function-item gnus-thread-sort-by-date) - (function-item gnus-thread-sort-by-score) - (function-item gnus-thread-sort-by-total-score) - (function-item gnus-thread-sort-by-random) - (function :tag "other")))) + :type '(repeat + (gnus-widget-reversible + (choice (function-item gnus-thread-sort-by-number) + (function-item gnus-thread-sort-by-author) + (function-item gnus-thread-sort-by-subject) + (function-item gnus-thread-sort-by-date) + (function-item gnus-thread-sort-by-score) + (function-item gnus-thread-sort-by-most-recent-number) + (function-item gnus-thread-sort-by-most-recent-date) + (function-item gnus-thread-sort-by-random) + (function-item gnus-thread-sort-by-total-score) + (function :tag "other")) + (boolean :tag "Reverse order")))) (defcustom gnus-thread-score-function '+ "*Function used for calculating the total score of a thread. @@ -1212,7 +1268,6 @@ the normal Gnus MIME machinery." (?\< (make-string (max 0 (- 20 gnus-tmp-level)) ? ) ?s) (?i gnus-tmp-score ?d) (?z gnus-tmp-score-char ?c) - (?l (bbb-grouplens-score gnus-tmp-header) ?s) (?V (gnus-thread-total-score (and (boundp 'thread) (car thread))) ?d) (?U gnus-tmp-unread ?c) (?f (gnus-summary-from-or-to-or-newsgroups gnus-tmp-header gnus-tmp-from) @@ -1434,11 +1489,19 @@ This list will always be a subset of gnus-newsgroup-undownloaded.") (defvar gnus-newsgroup-variables nil "A list of variables that have separate values in different newsgroups. A list of newsgroup (summary buffer) local variables, or cons of -variables and their default values (when the default values are not -nil), that should be made global while the summary buffer is active. +variables and their default expressions to be evalled (when the default +values are not nil), that should be made global while the summary buffer +is active. + +Note: The default expressions will be evaluated (using function `eval') +before assignment to the local variable rather than just assigned to it. +If the default expression is the symbol `global', that symbol will not +be evaluated but the global value of the local variable will be used +instead. + These variables can be used to set variables in the group parameters -while still allowing them to affect operations done in other -buffers. For example: +while still allowing them to affect operations done in other buffers. +For example: \(setq gnus-newsgroup-variables '(message-use-followup-to @@ -1772,7 +1835,8 @@ increase the score of each group you read." "c" gnus-summary-limit-exclude-childless-dormant "C" gnus-summary-limit-mark-excluded-as-read "o" gnus-summary-insert-old-articles - "N" gnus-summary-insert-new-articles) + "N" gnus-summary-insert-new-articles + "r" gnus-summary-limit-to-replied) (gnus-define-keys (gnus-summary-goto-map "G" gnus-summary-mode-map) "n" gnus-summary-next-unread-article @@ -1861,6 +1925,7 @@ increase the score of each group you read." "C" gnus-article-capitalize-sentences "c" gnus-article-remove-cr "Z" gnus-article-decode-HZ + "A" gnus-article-treat-ansi-sequences "h" gnus-article-wash-html "u" gnus-article-unsplit-urls "f" gnus-article-display-x-face @@ -2177,6 +2242,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs)))) ["Unsplit URLs" gnus-article-unsplit-urls t] ["Verify X-PGP-Sig" gnus-article-verify-x-pgp-sig t] ["Decode HZ" gnus-article-decode-HZ t] + ["ANSI sequences" gnus-article-treat-ansi-sequences t] ("(Outlook) Deuglify" ["Unwrap lines" gnus-article-outlook-unwrap-lines t] ["Repair attribution" gnus-article-outlook-repair-attribution t] @@ -2375,6 +2441,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs)))) ["Display Predicate" gnus-summary-limit-to-display-predicate t] ["Unread" gnus-summary-limit-to-unread t] ["Unseen" gnus-summary-limit-to-unseen t] + ["Replied" gnus-summary-limit-to-replied t] ["Non-dormant" gnus-summary-limit-exclude-dormant t] ["Next articles" gnus-summary-limit-to-articles t] ["Pop limit" gnus-summary-pop-limit t] @@ -3123,8 +3190,7 @@ buffer that was in action when the last article was fetched." (push (eval (car locals)) vlist)) (setq locals (cdr locals))) (setq vlist (nreverse vlist))) - (save-excursion - (set-buffer gnus-group-buffer) + (with-current-buffer gnus-group-buffer (setq gnus-newsgroup-name name gnus-newsgroup-marked marked gnus-newsgroup-spam-marked spam @@ -3986,13 +4052,12 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." "Translate STRING into something that doesn't contain weird characters." (mm-subst-char-in-string ?\r ?\- - (mm-subst-char-in-string - ?\n ?\- string))) + (mm-subst-char-in-string ?\n ?\- string t) t)) ;; This function has to be called with point after the article number ;; on the beginning of the line. (defsubst gnus-nov-parse-line (number dependencies &optional force-new) - (let ((eol (gnus-point-at-eol)) + (let ((eol (point-at-eol)) (buffer (current-buffer)) header references in-reply-to) @@ -4083,8 +4148,7 @@ the id of the parent article (if any)." (setq article (read (current-buffer)) header (gnus-nov-parse-line article dependencies))) (when header - (save-excursion - (set-buffer gnus-summary-buffer) + (with-current-buffer gnus-summary-buffer (push header gnus-newsgroup-headers) (if (memq (setq article (mail-header-number header)) gnus-newsgroup-unselected) @@ -4181,7 +4245,7 @@ If LINE, insert the rebuilt thread starting on line LINE." (setq thread (list (car (gnus-id-to-thread id)))) ;; Get the thread this article is part of. (setq thread (gnus-remove-thread id))) - (setq old-pos (gnus-point-at-bol)) + (setq old-pos (point-at-bol)) (setq current (save-excursion (and (re-search-backward "[\r\n]" nil t) (gnus-summary-article-number)))) @@ -4363,9 +4427,9 @@ If LINE, insert the rebuilt thread starting on line LINE." (gnus-summary-show-thread) (gnus-data-remove number - (- (gnus-point-at-bol) + (- (point-at-bol) (prog1 - (1+ (gnus-point-at-eol)) + (1+ (point-at-eol)) (gnus-delete-line))))))) (defun gnus-sort-threads-1 (threads func) @@ -4957,23 +5021,20 @@ or a straight list of headers." gnus-list-identifiers)) changed subject) (when regexp + (setq regexp (concat "^\\(?:R[Ee]: +\\)*\\(" regexp " *\\)")) (dolist (header gnus-newsgroup-headers) (setq subject (mail-header-subject header) changed nil) - (while (string-match - (concat "^\\(R[Ee]: +\\)*\\(" regexp " *\\)") - subject) + (while (string-match regexp subject) (setq subject - (concat (substring subject 0 (match-beginning 2)) + (concat (substring subject 0 (match-beginning 1)) (substring subject (match-end 0))) changed t)) - (when (and changed - (string-match - "^\\(\\(R[Ee]: +\\)+\\)R[Ee]: +" subject)) - (setq subject - (concat (substring subject 0 (match-beginning 1)) - (substring subject (match-end 1))))) (when changed + (when (string-match "^\\(\\(?:R[Ee]: +\\)+\\)R[Ee]: +" subject) + (setq subject + (concat (substring subject 0 (match-beginning 1)) + (substring subject (match-end 1))))) (mail-header-set-subject header subject)))))) (defun gnus-fetch-headers (articles) @@ -5001,7 +5062,7 @@ or a straight list of headers." "Select newsgroup GROUP. If READ-ALL is non-nil, all articles in the group are selected. If SELECT-ARTICLES, only select those articles from GROUP." - (let* ((entry (gnus-gethash group gnus-newsrc-hashtb)) + (let* ((entry (gnus-group-entry group)) ;;!!! Dirty hack; should be removed. (gnus-summary-ignore-duplicates (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual) @@ -5030,17 +5091,8 @@ If SELECT-ARTICLES, only select those articles from GROUP." group (gnus-status-message group))) (when gnus-agent - ;; The agent may be storing articles that are no longer in the - ;; server's active range. If that is the case, the active range - ;; needs to be expanded such that the agent's articles can be - ;; included in the summary. - (let* ((gnus-command-method (gnus-find-method-for-group group)) - (alist (gnus-agent-load-alist group)) - (active (gnus-active group))) - (if (and (car alist) - (< (caar alist) (car active))) - (gnus-set-active group (cons (caar alist) (cdr active))))) - + (gnus-agent-possibly-alter-active group (gnus-active group) info) + (setq gnus-summary-use-undownloaded-faces (gnus-agent-find-parameter group @@ -5369,7 +5421,8 @@ If SELECT-ARTICLES, only select those articles from GROUP." (min (car active)) (max (cdr active)) (types gnus-article-mark-lists) - marks var articles article mark mark-type) + marks var articles article mark mark-type + bgn end) (dolist (marks marked-lists) (setq mark (car marks) @@ -5379,13 +5432,30 @@ If SELECT-ARTICLES, only select those articles from GROUP." ;; We set the variable according to the type of the marks list, ;; and then adjust the marks to a subset of the active articles. (cond - ;; Adjust "simple" lists. + ;; Adjust "simple" lists - compressed yet unsorted ((eq mark-type 'list) - (set var (setq articles (gnus-uncompress-range (cdr marks)))) - (when (memq mark '(tick dormant expire reply save)) - (while articles - (when (or (< (setq article (pop articles)) min) (> article max)) - (set var (delq article (symbol-value var))))))) + ;; Simultaneously uncompress and clip to active range + ;; See gnus-uncompress-range for a description of possible marks + (let (l lh) + (if (not (cadr marks)) + (set var nil) + (setq articles (if (numberp (cddr marks)) + (list (cdr marks)) + (cdr marks)) + lh (cons nil nil) + l lh) + + (while (setq article (pop articles)) + (cond ((consp article) + (setq bgn (max (car article) min) + end (min (cdr article) max)) + (while (<= bgn end) + (setq l (setcdr l (cons bgn nil)) + bgn (1+ bgn)))) + ((and (<= min article) + (>= max article)) + (setq l (setcdr l (cons article nil)))))) + (set var (cdr lh))))) ;; Adjust assocs. ((eq mark-type 'tuple) (set var (setq articles (cdr marks))) @@ -5595,7 +5665,7 @@ The resulting hash table is returned, or nil if no Xrefs were found." (defun gnus-mark-xrefs-as-read (from-newsgroup headers unreads) "Look through all the headers and mark the Xrefs as read." (let ((virtual (gnus-virtual-group-p from-newsgroup)) - name entry info xref-hashtb idlist method nth4) + name info xref-hashtb idlist method nth4) (save-excursion (set-buffer gnus-group-buffer) (when (setq xref-hashtb @@ -5606,8 +5676,7 @@ The resulting hash table is returned, or nil if no Xrefs were found." (setq idlist (symbol-value group)) ;; Dead groups are not updated. (and (prog1 - (setq entry (gnus-gethash name gnus-newsrc-hashtb) - info (nth 2 entry)) + (setq info (gnus-get-info name)) (when (stringp (setq nth4 (gnus-info-method info))) (setq nth4 (gnus-server-to-method nth4)))) ;; Only do the xrefs if the group has the same @@ -5629,7 +5698,7 @@ The resulting hash table is returned, or nil if no Xrefs were found." xref-hashtb))))) (defun gnus-compute-read-articles (group articles) - (let* ((entry (gnus-gethash group gnus-newsrc-hashtb)) + (let* ((entry (gnus-group-entry group)) (info (nth 2 entry)) (active (gnus-active group)) ninfo) @@ -5666,14 +5735,13 @@ The resulting hash table is returned, or nil if no Xrefs were found." (defun gnus-group-make-articles-read (group articles) "Update the info of GROUP to say that ARTICLES are read." (let* ((num 0) - (entry (gnus-gethash group gnus-newsrc-hashtb)) + (entry (gnus-group-entry group)) (info (nth 2 entry)) (active (gnus-active group)) range) (when entry (setq range (gnus-compute-read-articles group articles)) - (save-excursion - (set-buffer gnus-group-buffer) + (with-current-buffer gnus-group-buffer (gnus-undo-register `(progn (gnus-info-set-marks ',info ',(gnus-info-marks info) t) @@ -5712,8 +5780,8 @@ The resulting hash table is returned, or nil if no Xrefs were found." (let ((cur nntp-server-buffer) (dependencies (or dependencies - (save-excursion (set-buffer gnus-summary-buffer) - gnus-newsgroup-dependencies))) + (with-current-buffer gnus-summary-buffer + gnus-newsgroup-dependencies))) headers id end ref (mail-parse-charset gnus-newsgroup-charset) (mail-parse-ignored-charsets @@ -5932,8 +6000,8 @@ Return a list of headers that match SEQUENCE (see (defun gnus-article-get-xrefs () "Fill in the Xref value in `gnus-current-headers', if necessary. This is meant to be called in `gnus-article-internal-prepare-hook'." - (let ((headers (save-excursion (set-buffer gnus-summary-buffer) - gnus-current-headers))) + (let ((headers (with-current-buffer gnus-summary-buffer + gnus-current-headers))) (or (not gnus-use-cross-reference) (not headers) (and (mail-header-xref headers) @@ -5948,7 +6016,7 @@ This is meant to be called in `gnus-article-internal-prepare-hook'." (looking-at "Xref:")) (search-forward "\nXref:" nil t)) (goto-char (1+ (match-end 0))) - (setq xref (buffer-substring (point) (gnus-point-at-eol))) + (setq xref (buffer-substring (point) (point-at-eol))) (mail-header-set-xref headers xref))))))) (defun gnus-summary-insert-subject (id &optional old-header use-old-header) @@ -5976,9 +6044,9 @@ the subject line on." (goto-char (gnus-data-pos d)) (gnus-data-remove number - (- (gnus-point-at-bol) + (- (point-at-bol) (prog1 - (1+ (gnus-point-at-eol)) + (1+ (point-at-eol)) (gnus-delete-line)))))) (when old-header (mail-header-set-number header (mail-header-number old-header))) @@ -6105,8 +6173,7 @@ If optional argument BACKWARD is non-nil, search backward instead." (defun gnus-summary-best-group (&optional exclude-group) "Find the name of the best unread group. If EXCLUDE-GROUP, do not go to this group." - (save-excursion - (set-buffer gnus-group-buffer) + (with-current-buffer gnus-group-buffer (save-excursion (gnus-group-best-unread-group exclude-group)))) @@ -6316,15 +6383,15 @@ displayed, no centering will be performed." (while read (when first (while (< first nlast) - (push first unread) - (setq first (1+ first)))) + (setq unread (cons first unread) + first (1+ first)))) (setq first (1+ (if (atom (car read)) (car read) (cdar read)))) (setq nlast (if (atom (cadr read)) (cadr read) (caadr read))) (setq read (cdr read))))) ;; And add the last unread articles. (while (<= first last) - (push first unread) - (setq first (1+ first))) + (setq unread (cons first unread) + first (1+ first))) ;; Return the list of unread articles. (delq 0 (nreverse unread)))) @@ -6342,6 +6409,44 @@ displayed, no centering will be performed." (cdr (assq 'dormant marked))) (cdr (assq 'tick marked)))))) +;; This function returns a sequence of article numbers based on the +;; difference between the ranges of read articles in this group and +;; the range of active articles. +(defun gnus-sequence-of-unread-articles (group) + (let* ((read (gnus-info-read (gnus-get-info group))) + (active (or (gnus-active group) (gnus-activate-group group))) + (last (cdr active)) + first nlast unread) + ;; If none are read, then all are unread. + (if (not read) + (setq first (car active)) + ;; If the range of read articles is a single range, then the + ;; first unread article is the article after the last read + ;; article. Sounds logical, doesn't it? + (if (and (not (listp (cdr read))) + (or (< (car read) (car active)) + (progn (setq read (list read)) + nil))) + (setq first (max (car active) (1+ (cdr read)))) + ;; `read' is a list of ranges. + (when (/= (setq nlast (or (and (numberp (car read)) (car read)) + (caar read))) + 1) + (setq first (car active))) + (while read + (when first + (push (cons first nlast) unread)) + (setq first (1+ (if (atom (car read)) (car read) (cdar read)))) + (setq nlast (if (atom (cadr read)) (cadr read) (caadr read))) + (setq read (cdr read))))) + ;; And add the last unread articles. + (cond ((< first last) + (push (cons first last) unread)) + ((= first last) + (push first unread))) + ;; Return the sequence of unread articles. + (delq 0 (nreverse unread)))) + ;; Various summary commands (defun gnus-summary-select-article-buffer () @@ -6443,8 +6548,7 @@ The prefix argument ALL means to select all articles." (setq gnus-newsgroup-killed (list gnus-newsgroup-killed))) (let ((headers gnus-newsgroup-headers)) ;; Set the new ranges of read articles. - (save-excursion - (set-buffer gnus-group-buffer) + (with-current-buffer gnus-group-buffer (gnus-undo-force-boundary)) (gnus-update-read-articles group (gnus-sorted-union @@ -6697,7 +6801,7 @@ The state which existed when entering the ephemeral is reset." (if (null arg) (not gnus-dead-summary-mode) (> (prefix-numeric-value arg) 0))) (when gnus-dead-summary-mode - (gnus-add-minor-mode + (add-minor-mode 'gnus-dead-summary-mode " Dead" gnus-dead-summary-mode-map)))) (defun gnus-deaden-summary () @@ -6705,8 +6809,7 @@ The state which existed when entering the ephemeral is reset." ;; Kill any previous dead summary buffer. (when (and gnus-dead-summary (buffer-name gnus-dead-summary)) - (save-excursion - (set-buffer gnus-dead-summary) + (with-current-buffer gnus-dead-summary (when gnus-dead-summary-mode (kill-buffer (current-buffer))))) ;; Make this the current dead summary. @@ -6725,8 +6828,7 @@ The state which existed when entering the ephemeral is reset." (save-excursion (when (and (buffer-name buffer) (not gnus-single-article-buffer)) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (gnus-kill-buffer gnus-article-buffer) (gnus-kill-buffer gnus-original-article-buffer))) (cond @@ -6766,7 +6868,7 @@ in." (when current-prefix-arg (completing-read "FAQ dir: " (and (listp gnus-group-faq-directory) - (mapcar (lambda (file) (list file)) + (mapcar 'list gnus-group-faq-directory)))))) (let (gnus-faq-buffer) (when (setq gnus-faq-buffer @@ -7091,8 +7193,7 @@ If BACKWARD, the previous article is selected instead of the next." (gnus-summary-jump-to-group gnus-newsgroup-name)) (let ((cmd last-command-char) (point - (save-excursion - (set-buffer gnus-group-buffer) + (with-current-buffer gnus-group-buffer (point))) (group (if (eq gnus-keep-same-level 'best) @@ -7144,7 +7245,7 @@ If BACKWARD, the previous article is selected instead of the next." (not (gnus-ephemeral-group-p gnus-newsgroup-name))) (format " (Type %s for %s [%s])" (single-key-description cmd) group - (car (gnus-gethash group gnus-newsrc-hashtb))) + (gnus-group-unread group)) (format " (Type %s to exit %s)" (single-key-description cmd) gnus-newsgroup-name)))) @@ -7550,10 +7651,9 @@ articles that are younger than AGE days." (if (numberp days) (progn (setq days-got t) - (if (< days 0) - (progn - (setq younger (not younger)) - (setq days (* days -1))))) + (when (< days 0) + (setq younger (not younger)) + (setq days (* days -1)))) (message "Please enter a number.") (sleep-for 1))) (list days younger))) @@ -7638,6 +7738,17 @@ If ALL is non-nil, limit strictly to unread articles." gnus-duplicate-mark gnus-souped-mark) 'reverse))) +(defun gnus-summary-limit-to-replied (&optional unreplied) + "Limit the summary buffer to replied articles. +If UNREPLIED (the prefix), limit to unreplied articles." + (interactive "P") + (if unreplied + (gnus-summary-limit + (gnus-set-difference gnus-newsgroup-articles + gnus-newsgroup-replied)) + (gnus-summary-limit gnus-newsgroup-replied)) + (gnus-summary-position-point)) + (defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks) (make-obsolete 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks) @@ -7983,13 +8094,12 @@ fetch-old-headers verbiage, and so on." (and gnus-newsgroup-display (not (funcall gnus-newsgroup-display))) ;; Check NoCeM things. - (if (and gnus-use-nocem - (gnus-nocem-unwanted-article-p - (mail-header-id (car thread)))) - (progn - (setq gnus-newsgroup-unreads - (delq number gnus-newsgroup-unreads)) - t)))) + (when (and gnus-use-nocem + (gnus-nocem-unwanted-article-p + (mail-header-id (car thread)))) + (setq gnus-newsgroup-unreads + (delq number gnus-newsgroup-unreads)) + t))) ;; Nope, invisible article. 0 ;; Ok, this article is to be visible, so we add it to the limit @@ -8201,8 +8311,7 @@ to guess what the document format is." (let* ((name (format "%s-%d" (gnus-group-prefixed-name gnus-newsgroup-name (list 'nndoc "")) - (save-excursion - (set-buffer gnus-summary-buffer) + (with-current-buffer gnus-summary-buffer gnus-current-article))) (ogroup gnus-newsgroup-name) (params (append (gnus-info-params (gnus-get-info ogroup)) @@ -8275,7 +8384,7 @@ Obeys the standard process/prefix convention." ;; the wrong guess. (message-narrow-to-head) (goto-char (point-min)) - (delete-matching-lines "^\\(Path\\):\\|^From ") + (delete-matching-lines "^Path:\\|^From ") (widen) (if (setq egroup (gnus-group-read-ephemeral-group @@ -8940,7 +9049,8 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (let ((articles (gnus-summary-work-articles n)) (prefix (if (gnus-check-backend-function 'request-move-article gnus-newsgroup-name) - (gnus-group-real-prefix gnus-newsgroup-name) + (funcall gnus-move-group-prefix-function + gnus-newsgroup-name) "")) (names '((move "Move" "Moving") (copy "Copy" "Copying") @@ -9058,9 +9168,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." (t (let* ((pto-group (gnus-group-prefixed-name (car art-group) to-method)) - (entry - (gnus-gethash pto-group gnus-newsrc-hashtb)) - (info (nth 2 entry)) + (info (gnus-get-info pto-group)) (to-group (gnus-info-group info)) to-marks) ;; Update the group that has been moved to. @@ -9765,8 +9873,7 @@ ARTICLE can also be a list of articles." ;; (article-number . line-number-in-body). (push (cons article - (save-excursion - (set-buffer gnus-article-buffer) + (with-current-buffer gnus-article-buffer (count-lines (min (point) (save-excursion @@ -10012,7 +10119,7 @@ If NO-EXPIRE, auto-expiry will be inhibited." (defun gnus-summary-update-mark (mark type) (let ((forward (cdr (assq type gnus-summary-mark-positions))) (buffer-read-only nil)) - (re-search-backward "[\n\r]" (gnus-point-at-bol) 'move-to-limit) + (re-search-backward "[\n\r]" (point-at-bol) 'move-to-limit) (when forward (when (looking-at "\r") (incf forward)) @@ -10536,7 +10643,7 @@ Returns nil if no thread was there to be shown." (interactive) (let ((buffer-read-only nil) (orig (point)) - (end (gnus-point-at-eol)) + (end (point-at-eol)) ;; Leave point at bol (beg (progn (beginning-of-line) (point)))) (prog1 @@ -11023,8 +11130,7 @@ save those articles instead." (t (gnus-completing-read-with-default nil prom - (mapcar (lambda (el) (list el)) - (nreverse split-name)) + (mapcar 'list (nreverse split-name)) nil nil nil 'gnus-group-history)))) (to-method (gnus-server-to-method (gnus-group-method to-newsgroup)))) @@ -11132,7 +11238,7 @@ If REVERSE, save parts that do not match TYPE." (lambda (f) (if (equal f " ") f - (gnus-quote-arg-for-sh-or-csh f))) + (shell-quote-argument f))) files " "))))) (setq ps (cdr ps))))) (if (and gnus-view-pseudos (not not-view)) @@ -11227,14 +11333,6 @@ If REVERSE, save parts that do not match TYPE." (not (gnus-summary-article-sparse-p (mail-header-number header)))) ;; We have found the header. header - ;; If this is a sparse article, we have to nix out its - ;; previous entry in the thread hashtb. - (when (and header - (gnus-summary-article-sparse-p (mail-header-number header))) - (let* ((parent (gnus-parent-id (mail-header-references header))) - (thread (and parent (gnus-id-to-thread parent)))) - (when thread - (delq (assq header thread) thread)))) ;; We have to really fetch the header to this article. (save-excursion (set-buffer nntp-server-buffer) @@ -11292,8 +11390,8 @@ If REVERSE, save parts that do not match TYPE." ;; Added by Per Abrahamsen . (when gnus-summary-selected-face (save-excursion - (let* ((beg (gnus-point-at-bol)) - (end (gnus-point-at-eol)) + (let* ((beg (point-at-bol)) + (end (point-at-eol)) ;; Fix by Mike Dugan . (from (if (get-text-property beg gnus-mouse-face-prop) beg @@ -11342,7 +11440,7 @@ If REVERSE, save parts that do not match TYPE." (defun gnus-summary-highlight-line () "Highlight current line according to `gnus-summary-highlight'." - (let* ((beg (gnus-point-at-bol)) + (let* ((beg (point-at-bol)) (article (or (gnus-summary-article-number) gnus-current-article)) (score (or (cdr (assq article gnus-newsgroup-scored)) @@ -11353,11 +11451,12 @@ If REVERSE, save parts that do not match TYPE." (default-high gnus-summary-default-high-score) (default-low gnus-summary-default-low-score) (uncached (and gnus-summary-use-undownloaded-faces - (memq article gnus-newsgroup-undownloaded)))) + (memq article gnus-newsgroup-undownloaded) + (not (memq article gnus-newsgroup-cached))))) (let ((face (funcall (gnus-summary-highlight-line-0)))) (unless (eq face (get-text-property beg 'face)) (gnus-put-text-property-excluding-characters-with-faces - beg (gnus-point-at-eol) 'face + beg (point-at-eol) 'face (setq face (if (boundp face) (symbol-value face) face))) (when gnus-summary-highlight-line-function (funcall gnus-summary-highlight-line-function article face)))))) @@ -11365,11 +11464,10 @@ If REVERSE, save parts that do not match TYPE." (defun gnus-update-read-articles (group unread &optional compute) "Update the list of read articles in GROUP. UNREAD is a sorted list." - (let* ((active (or gnus-newsgroup-active (gnus-active group))) - (entry (gnus-gethash group gnus-newsrc-hashtb)) - (info (nth 2 entry)) - (prev 1) - read) + (let ((active (or gnus-newsgroup-active (gnus-active group))) + (info (gnus-get-info group)) + (prev 1) + read) (if (or (not info) (not active)) ;; There is no info on this group if it was, in fact, ;; killed. Gnus stores no information on killed groups, so @@ -11437,8 +11535,7 @@ UNREAD is a sorted list." (dolist (buffer (buffer-list)) (when (and (setq buffer (buffer-name buffer)) (string-match "Summary" buffer) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer ;; We check that this is, indeed, a summary buffer. (and (eq major-mode 'gnus-summary-mode) ;; Also make sure this isn't bogus. @@ -11627,7 +11724,7 @@ treated as multipart/mixed." (insert "Mime-Version: 1.0\n") (widen) (when (search-forward "\n--" nil t) - (let ((separator (buffer-substring (point) (gnus-point-at-eol)))) + (let ((separator (buffer-substring (point) (point-at-eol)))) (message-narrow-to-head) (message-remove-header "Content-Type") (goto-char (point-max)) @@ -11945,7 +12042,7 @@ If ALL is a number, fetch this number of articles." (push i new) (decf i)) (if (not new) - (message "No gnus is bad news.") + (message "No gnus is bad news") (gnus-summary-insert-articles new) (setq gnus-newsgroup-unreads (gnus-sorted-nunion gnus-newsgroup-unreads new)) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 2352e2b..f16d899 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -28,7 +28,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'gnus) (require 'gnus-group) @@ -105,16 +104,16 @@ See Info node `(gnus)Formatting Variables'." (defun gnus-group-topic-name () "The name of the topic on the current line." - (let ((topic (get-text-property (gnus-point-at-bol) 'gnus-topic))) + (let ((topic (get-text-property (point-at-bol) 'gnus-topic))) (and topic (symbol-name topic)))) (defun gnus-group-topic-level () "The level of the topic on the current line." - (get-text-property (gnus-point-at-bol) 'gnus-topic-level)) + (get-text-property (point-at-bol) 'gnus-topic-level)) (defun gnus-group-topic-unread () "The number of unread articles in topic on the current line." - (get-text-property (gnus-point-at-bol) 'gnus-topic-unread)) + (get-text-property (point-at-bol) 'gnus-topic-unread)) (defun gnus-topic-unread (topic) "Return the number of unread articles in TOPIC." @@ -127,7 +126,7 @@ See Info node `(gnus)Formatting Variables'." (defun gnus-topic-visible-p () "Return non-nil if the current topic is visible." - (get-text-property (gnus-point-at-bol) 'gnus-topic-visible)) + (get-text-property (point-at-bol) 'gnus-topic-visible)) (defun gnus-topic-articles-in-topic (entries) (let ((total 0) @@ -196,9 +195,7 @@ If TOPIC, start with that topic." (defun gnus-group-active-topic-p () "Say whether the current topic comes from the active topics." - (save-excursion - (beginning-of-line) - (get-text-property (point) 'gnus-active))) + (get-text-property (point-at-bol) 'gnus-active)) (defun gnus-topic-find-groups (topic &optional level all lowest recursive) "Return entries for all visible groups in TOPIC. @@ -210,7 +207,7 @@ If RECURSIVE is t, return groups in its subtopics too." ;; We go through the newsrc to look for matches. (while groups (when (setq group (pop groups)) - (setq entry (gnus-gethash group gnus-newsrc-hashtb) + (setq entry (gnus-group-entry group) info (nth 2 entry) params (gnus-info-params info) active (gnus-active group) @@ -465,7 +462,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher." (gnus-make-hashtable-from-killed)) (gnus-group-prepare-flat-list-dead (gnus-remove-if (lambda (group) - (or (gnus-gethash group gnus-newsrc-hashtb) + (or (gnus-group-entry group) (gnus-gethash group gnus-killed-hashtb))) not-in-list) gnus-level-killed ?K regexp))) @@ -843,8 +840,7 @@ articles in the topic and its subtopics." (pop topics))) ;; Go through all living groups and make sure that ;; they belong to some topic. - (let* ((tgroups (apply 'append (mapcar (lambda (entry) (cdr entry)) - gnus-topic-alist))) + (let* ((tgroups (apply 'append (mapcar 'cdr gnus-topic-alist))) (entry (last (assoc (caar gnus-topic-topology) gnus-topic-alist))) (newsrc (cdr gnus-newsrc-alist)) group) @@ -858,7 +854,7 @@ articles in the topic and its subtopics." (while (setq topic (pop alist)) (while (cdr topic) (if (and (cadr topic) - (gnus-gethash (cadr topic) gnus-newsrc-hashtb)) + (gnus-group-entry (cadr topic))) (setq topic (cdr topic)) (setcdr topic (cddr topic))))))) @@ -888,7 +884,7 @@ articles in the topic and its subtopics." (let ((topic-name (pop topic)) group filtered-topic) (while (setq group (pop topic)) - (when (and (or (gnus-gethash group gnus-active-hashtb) + (when (and (or (gnus-active group) (gnus-info-method (gnus-get-info group))) (not (gnus-gethash group gnus-killed-hashtb))) (push group filtered-topic))) @@ -1137,7 +1133,7 @@ articles in the topic and its subtopics." (when (gnus-visual-p 'topic-menu 'menu) (gnus-topic-make-menu-bar)) (gnus-set-format 'topic t) - (gnus-add-minor-mode 'gnus-topic-mode " Topic" + (add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map nil (lambda (&rest junk) (interactive) (gnus-topic-mode nil t))) @@ -1316,7 +1312,7 @@ If COPYP, copy the groups instead." (let ((use-marked (and (not n) (not (gnus-region-active-p)) gnus-group-marked t)) (groups (gnus-group-process-prefix n))) - (mapcar + (mapc (lambda (group) (gnus-group-remove-mark group use-marked) (let ((topicl (assoc (gnus-current-topic) gnus-topic-alist)) diff --git a/lisp/gnus-undo.el b/lisp/gnus-undo.el index f022926..6557f5a 100644 --- a/lisp/gnus-undo.el +++ b/lisp/gnus-undo.el @@ -50,7 +50,6 @@ (require 'gnus-util) (require 'gnus) -(require 'custom) (defgroup gnus-undo nil "Undoing in Gnus buffers." @@ -113,7 +112,7 @@ ;; Set up the menu. (when (gnus-visual-p 'undo-menu 'menu) (gnus-undo-make-menu-bar)) - (gnus-add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map) + (add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map) (gnus-make-local-hook 'post-command-hook) (add-hook 'post-command-hook 'gnus-undo-boundary nil t) (gnus-run-hooks 'gnus-undo-mode-hook))) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 09cf62b..b77af79 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -31,20 +31,24 @@ ;; Gnus first. ;; [Unfortunately, it does depend on other parts of Gnus, e.g. the -;; autoloads below...] +;; autoloads and defvars below...] ;;; Code: (eval-when-compile (require 'cl) ;; Fixme: this should be a gnus variable, not nnmail-. - (defvar nnmail-pathname-coding-system)) -(eval-when-compile (require 'static)) + (defvar nnmail-pathname-coding-system) + + ;; Inappropriate references to other parts of Gnus. + (defvar gnus-emphasize-whitespace-regexp) + ) -(require 'custom) (require 'time-date) (require 'netrc) +(eval-when-compile (require 'static)) + (eval-and-compile (autoload 'message-fetch-field "message") (autoload 'gnus-get-buffer-window "gnus-win") @@ -60,15 +64,7 @@ (defalias 'gnus-replace-in-string 'replace-in-string)) ((fboundp 'replace-regexp-in-string) (defun gnus-replace-in-string (string regexp newtext &optional literal) - (replace-regexp-in-string regexp newtext string nil literal))) - (t - (defun gnus-replace-in-string (string regexp newtext &optional literal) - (let ((start 0) tail) - (while (string-match regexp string start) - (setq tail (- (length string) (match-end 0))) - (setq string (replace-match newtext nil literal string)) - (setq start (- (length string) tail)))) - string)))) + (replace-regexp-in-string regexp newtext string nil literal))))) ;;; bring in the netrc functions as aliases (defalias 'gnus-netrc-get 'netrc-get) @@ -130,35 +126,6 @@ (funcall (if (stringp buffer) 'get-buffer 'buffer-name) buffer)))) -(static-cond - ((fboundp 'point-at-bol) - (defalias 'gnus-point-at-bol 'point-at-bol)) - ((fboundp 'line-beginning-position) - (defalias 'gnus-point-at-bol 'line-beginning-position)) - (t - (defun gnus-point-at-bol () - "Return point at the beginning of the line." - (let ((p (point))) - (beginning-of-line) - (prog1 - (point) - (goto-char p)))) - )) -(static-cond - ((fboundp 'point-at-eol) - (defalias 'gnus-point-at-eol 'point-at-eol)) - ((fboundp 'line-end-position) - (defalias 'gnus-point-at-eol 'line-end-position)) - (t - (defun gnus-point-at-eol () - "Return point at the end of the line." - (let ((p (point))) - (end-of-line) - (prog1 - (point) - (goto-char p)))) - )) - ;; The LOCAL arg to `add-hook' is interpreted differently in Emacs and ;; XEmacs. In Emacs we don't need to call `make-local-hook' first. ;; It's harmless, though, so the main purpose of this alias is to shut @@ -183,7 +150,7 @@ ;; Delete the current line (and the next N lines). (defmacro gnus-delete-line (&optional n) - `(delete-region (gnus-point-at-bol) + `(delete-region (point-at-bol) (progn (forward-line ,(or n 1)) (point)))) (defun gnus-byte-code (func) @@ -233,8 +200,7 @@ is slower." "Return the value of the header FIELD of current article." (save-excursion (save-restriction - (let ((case-fold-search t) - (inhibit-point-motion-hooks t)) + (let ((inhibit-point-motion-hooks t)) (nnheader-narrow-to-headers) (message-fetch-field field))))) @@ -246,7 +212,7 @@ is slower." (defun gnus-goto-colon () (beginning-of-line) - (let ((eol (gnus-point-at-eol))) + (let ((eol (point-at-eol))) (goto-char (or (text-property-any (point) eol 'gnus-position t) (search-forward ":" eol t) (point))))) @@ -570,13 +536,7 @@ If N, return the Nth ancestor instead." (defun gnus-read-event-char (&optional prompt) "Get the next event." - (let ((event (condition-case nil - (read-event prompt) - ;; `read-event' doesn't allow arguments in Mule 2.3 - (wrong-number-of-arguments - (when prompt - (message "%s" prompt)) - (read-event))))) + (let ((event (read-event prompt))) ;; should be gnus-characterp, but this can't be called in XEmacs anyway (cons (and (numberp event) event) event))) @@ -605,7 +565,8 @@ If N, return the Nth ancestor instead." (set-buffer gnus-work-buffer) (erase-buffer)) (set-buffer (gnus-get-buffer-create gnus-work-buffer)) - (kill-all-local-variables))) + (kill-all-local-variables) + (set-buffer-multibyte t))) (defmacro gnus-group-real-name (group) "Find the real name of a foreign newsgroup." @@ -681,8 +642,7 @@ and `print-level' to nil." (defun gnus-make-directory (directory) "Make DIRECTORY (and all its parents) if it doesn't exist." (require 'nnmail) - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) (when (and directory (not (file-exists-p directory))) (make-directory directory t))) @@ -692,8 +652,7 @@ and `print-level' to nil." "Write the current buffer's contents to FILE." ;; Make sure the directory exists. (gnus-make-directory (file-name-directory file)) - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) ;; Write the buffer. (write-region (point-min) (point-max) file nil 'quietly))) @@ -902,8 +861,7 @@ with potentially long computations." ;; Decide whether to append to a file or to an Emacs buffer. (let ((outbuf (get-file-buffer filename))) (if (not outbuf) - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) (write-region-as-binary (point-min) (point-max) filename 'append)) ;; File has been visited, in buffer OUTBUF. @@ -974,8 +932,7 @@ with potentially long computations." (insert "\n")) (insert "\n")) (goto-char (point-max)) - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) (write-region-as-binary (point-min) (point-max) filename 'append)))) ;; File has been visited, in buffer OUTBUF. @@ -1089,8 +1046,7 @@ Return the modified alist." t)) (defun gnus-write-active-file (file hashtb &optional full-names) - (let ((output-coding-system nnmail-active-file-coding-system) - (coding-system-for-write nnmail-active-file-coding-system)) + (let ((coding-system-for-write nnmail-active-file-coding-system)) (with-temp-file file (mapatoms (lambda (sym) @@ -1291,32 +1247,12 @@ SPEC is a predicate specifier that contains stuff like `or', `and', `(,(car spec) ,@(mapcar 'gnus-make-predicate-1 (cdr spec))) (error "Invalid predicate specifier: %s" spec))))) -(defun gnus-local-map-property (map) - "Return a list suitable for a text property list specifying keymap MAP." - (cond - ((featurep 'xemacs) - (list 'keymap map)) - ((>= emacs-major-version 21) - (list 'keymap map)) - (t - (list 'local-map map)))) - -(defmacro gnus-completing-read-maybe-default (prompt table &optional predicate - require-match initial-contents - history default) - "Like `completing-read', allowing for non-existent 7th arg in older XEmacsen." - `(completing-read ,prompt ,table ,predicate ,require-match - ,initial-contents ,history - ,@(if (and (featurep 'xemacs) (< emacs-minor-version 2)) - () - (list default)))) - (defun gnus-completing-read (prompt table &optional predicate require-match history) (when (and history (not (boundp history))) (set history nil)) - (gnus-completing-read-maybe-default + (completing-read (if (symbol-value history) (concat prompt " (" (car (symbol-value history)) "): ") (concat prompt ": ")) @@ -1434,17 +1370,9 @@ CHOICE is a list of the choice char and help message at IDX." (x-focus-frame frame)) ((eq window-system 'w32) (w32-focus-frame frame))) - (when (or (not (boundp 'focus-follows-mouse)) - (symbol-value 'focus-follows-mouse)) + (when focus-follows-mouse (set-mouse-position frame (1- (frame-width frame)) 0))))) -(unless (fboundp 'frame-parameter) - (defalias 'frame-parameter - (lambda (frame parameter) - "Return FRAME's value for parameter PARAMETER. -If FRAME is nil, describe the currently selected frame." - (cdr (assq parameter (frame-parameters frame)))))) - (defun gnus-frame-or-window-display-name (object) "Given a frame or window, return the associated display name. Return nil otherwise." @@ -1526,10 +1454,7 @@ predicate on the elements." ((eq gnus-user-agent 'gnus) nil) ((string-match "^\\(\\([.0-9]+\\)*\\)\\.[0-9]+$" emacs-version) - (concat (format (if (boundp 'MULE) - "Mule/2.3 (based on Emacs %s)" - "Emacs/%s") - (match-string 1 emacs-version)) + (concat "Emacs/" (match-string 1 emacs-version) (if system-v (concat " (" system-v ")") ""))) @@ -1551,6 +1476,28 @@ predicate on the elements." ""))) (t emacs-version)))) +(defun gnus-rename-file (old-path new-path &optional trim) + "Rename OLD-PATH as NEW-PATH. If TRIM, recursively delete +empty directories from OLD-PATH." + (when (file-exists-p old-path) + (let* ((old-dir (file-name-directory old-path)) + (old-name (file-name-nondirectory old-path)) + (new-dir (file-name-directory new-path)) + (new-name (file-name-nondirectory new-path)) + temp) + (gnus-make-directory new-dir) + (rename-file old-path new-path t) + (when trim + (while (progn (setq temp (directory-files old-dir)) + (while (member (car temp) '("." "..")) + (setq temp (cdr temp))) + (= (length temp) 0)) + (delete-directory old-dir) + (setq old-dir (file-name-as-directory + (file-truename + (concat old-dir ".."))))))))) + + (provide 'gnus-util) ;;; gnus-util.el ends here diff --git a/lisp/gnus-uu.el b/lisp/gnus-uu.el index c6703be..9b9f87e 100644 --- a/lisp/gnus-uu.el +++ b/lisp/gnus-uu.el @@ -509,11 +509,11 @@ didn't work, and overwrite existing files. Otherwise, ask each time." "Various")))) (goto-char (point-min)) (when (re-search-forward "^Subject: ") - (delete-region (point) (gnus-point-at-eol)) + (delete-region (point) (point-at-eol)) (insert subject)) (goto-char (point-min)) (when (re-search-forward "^From:") - (delete-region (point) (gnus-point-at-eol)) + (delete-region (point) (point-at-eol)) (insert " " from)) (let ((message-forward-decoded-p t)) (message-forward post)))) @@ -846,7 +846,7 @@ When called interactively, prompt for REGEXP." (save-restriction (set-buffer buffer) (let (buffer-read-only) - (gnus-set-text-properties (point-min) (point-max) nil) + (set-text-properties (point-min) (point-max) nil) ;; These two are necessary for XEmacs 19.12 fascism. (put-text-property (point-min) (point-max) 'invisible nil) (put-text-property (point-min) (point-max) 'intangible nil)) @@ -915,8 +915,7 @@ When called interactively, prompt for REGEXP." (with-current-buffer gnus-uu-digest-buffer (goto-char (point-max)) (insert-buffer "*gnus-uu-body*")) - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) (write-region-as-coding-system nnheader-text-coding-system (point-min) (point-max) gnus-uu-saved-article-name t))))) @@ -1127,7 +1126,7 @@ When called interactively, prompt for REGEXP." ;; Expand numbers, sort, and return the list of article ;; numbers. - (mapcar (lambda (sub) (cdr sub)) + (mapcar 'cdr (sort (gnus-uu-expand-numbers list-of-subjects (not do-not-translate)) @@ -1383,7 +1382,7 @@ When called interactively, prompt for REGEXP." (setq part (match-string 0 subject)) (setq subject (substring subject (match-end 0))))) (or part - (while (string-match "\\([0-9]+\\)[^0-9]+\\([0-9]+\\)" subject) + (while (string-match "[0-9]+[^0-9]+[0-9]+" subject) (setq part (match-string 0 subject)) (setq subject (substring subject (match-end 0))))) (or part ""))) @@ -1685,8 +1684,7 @@ Gnus might fail to display all of it.") (defun gnus-uu-check-correct-stripped-uucode (start end) (save-excursion (let (found beg length) - (if (not gnus-uu-correct-stripped-uucode) - () + (unless gnus-uu-correct-stripped-uucode (goto-char start) (if (re-search-forward " \\|`" end t) @@ -1699,19 +1697,15 @@ Gnus might fail to display all of it.") (forward-line 1)))) (while (not (eobp)) - (if (looking-at (concat gnus-uu-begin-string "\\|" - gnus-uu-end-string)) - () + (unless (looking-at (concat gnus-uu-begin-string "\\|" + gnus-uu-end-string)) (when (not found) - (beginning-of-line) - (setq beg (point)) - (end-of-line) - (setq length (- (point) beg))) + (setq length (- (point-at-eol) (point-at-bol)))) (setq found t) (beginning-of-line) (setq beg (point)) (end-of-line) - (when (not (= length (- (point) beg))) + (unless (= length (- (point) beg)) (insert (make-string (- length (- (point) beg)) ? )))) (forward-line 1))))))) @@ -1768,7 +1762,7 @@ Gnus might fail to display all of it.") ;; that the filename will be treated as a single argument when the shell ;; executes the command. (defun gnus-uu-command (action file) - (let ((quoted-file (gnus-quote-arg-for-sh-or-csh file))) + (let ((quoted-file (shell-quote-argument file))) (if (string-match "%s" action) (format action quoted-file) (concat action " " quoted-file)))) @@ -2023,8 +2017,7 @@ If no file has been included, the user will be asked for a file." (goto-char (point-min)) (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$") nil t) - (beginning-of-line) - (setq header (buffer-substring (point-min) (point))) + (setq header (buffer-substring (point-min) (point-at-bol))) (goto-char (point-min)) (when gnus-uu-post-separate-description @@ -2100,8 +2093,7 @@ If no file has been included, the user will be asked for a file." (when (not gnus-uu-post-separate-description) (set-buffer-modified-p nil) - (when (fboundp 'bury-buffer) - (bury-buffer))))) + (bury-buffer)))) (provide 'gnus-uu) diff --git a/lisp/gnus-vers.el b/lisp/gnus-vers.el index dea64e1..f1a32f5 100644 --- a/lisp/gnus-vers.el +++ b/lisp/gnus-vers.el @@ -28,7 +28,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'poe) (require 'product) @@ -40,10 +39,10 @@ ;; Product information of this gnus. (product-provide 'gnus-vers (product-define "T-gnus" nil - (list 6 17 1 + (list 6 17 2 (string-to-number gnus-revision-number)))) -(defconst gnus-original-version-number "0.1" +(defconst gnus-original-version-number "0.2" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index 6fff59e..7e2b920 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -40,6 +40,7 @@ (defvar menu-bar-mode (featurep 'menubar)) (require 'messagexmas) (require 'wid-edit) +(require 'run-at-time) (defgroup gnus-xmas nil "XEmacsoid support for Gnus" @@ -104,27 +105,13 @@ Possibly the `etc' directory has not been installed."))) (defvar standard-display-table) (defvar gnus-tree-minimize-window) -(defun gnus-xmas-set-text-properties (start end props &optional buffer) - "You should NEVER use this function. It is ideologically blasphemous. -It is provided only to ease porting of broken FSF Emacs programs." - (if (stringp buffer) - nil - (map-extents (lambda (extent ignored) - (remove-text-properties - start end - (list (extent-property extent 'text-prop) nil) - buffer) - nil) - buffer start end nil nil 'text-prop) - (gnus-add-text-properties start end props buffer))) - (defun gnus-xmas-highlight-selected-summary () ;; Highlight selected article in summary buffer (when gnus-summary-selected-face (when gnus-newsgroup-selected-overlay (delete-extent gnus-newsgroup-selected-overlay)) (setq gnus-newsgroup-selected-overlay - (make-extent (gnus-point-at-bol) (gnus-point-at-eol))) + (make-extent (point-at-bol) (point-at-eol))) (set-extent-face gnus-newsgroup-selected-overlay gnus-summary-selected-face))) @@ -345,10 +332,6 @@ call it with the value of the `gnus-data' text property." (gnus-xmas-menu-add browse gnus-browse-menu)) -(defun gnus-xmas-grouplens-menu-add () - (gnus-xmas-menu-add grouplens - gnus-grouplens-menu)) - (defun gnus-xmas-read-event-char (&optional prompt) "Get the next event." (when prompt @@ -401,10 +384,6 @@ call it with the value of the `gnus-data' text property." (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)) - (defalias 'gnus-set-text-properties 'gnus-xmas-set-text-properties)) - (unless (boundp 'standard-display-table) (setq standard-display-table nil)) @@ -422,7 +401,10 @@ call it with the value of the `gnus-data' text property." 'x-color-values (lambda (color) (color-instance-rgb-components - (make-color-instance color)))))) + (make-color-instance color))))) + + (unless (fboundp 'char-width) + (defalias 'char-width (lambda (ch) 1)))) (defun gnus-xmas-redefine () "Redefine lots of Gnus functions for XEmacs." @@ -451,18 +433,12 @@ call it with the value of the `gnus-data' text property." (defalias 'gnus-create-image 'gnus-xmas-create-image) (defalias 'gnus-remove-image 'gnus-xmas-remove-image) - (when (or (< emacs-major-version 21) - (and (= emacs-major-version 21) - (< emacs-minor-version 3))) - (defalias 'gnus-completing-read 'gnus-xmas-completing-read)) - ;; These ones are not defcutom'ed, sometimes not even defvar'ed. They ;; probably should. If that is done, the code below should then be moved ;; where each variable is defined, in order not to mess with user settings. ;; -- didier (add-hook 'gnus-score-mode-hook 'gnus-xmas-score-menu-add) (add-hook 'gnus-binary-mode-hook 'gnus-xmas-binary-menu-add) - (add-hook 'gnus-grouplens-mode-hook 'gnus-xmas-grouplens-menu-add) (add-hook 'gnus-server-mode-hook 'gnus-xmas-server-menu-add) (add-hook 'gnus-browse-mode-hook 'gnus-xmas-browse-menu-add) (add-hook 'gnus-draft-mode-hook 'gnus-xmas-draft-menu-add) @@ -814,7 +790,7 @@ XEmacs compatibility workaround." (defun gnus-group-add-icon () "Add an icon to the current line according to `gnus-group-icon-list'." (let* ((p (point)) - (end (gnus-point-at-eol)) + (end (point-at-eol)) ;; now find out where the line starts and leave point there. (beg (progn (beginning-of-line) (point)))) (save-restriction @@ -946,31 +922,6 @@ Warning: Don't insert text immediately after the image." nil) nil nil nil nil nil 'gnus-image category)) -(defun gnus-xmas-completing-read (prompt table &optional - predicate require-match history) - (when (and history - (not (boundp history))) - (set history nil)) - (completing-read - (if (symbol-value history) - (concat prompt " (" (car (symbol-value history)) "): ") - (concat prompt ": ")) - table - predicate - require-match - nil - history)) - -;; This macro is because XEmacs versions prior to 21.2 do not have the -;; PROTOCOL argument to `open-network-stream'. -(defmacro gnus-xmas-open-network-stream (name buffer host service &optional protocol) - "Like `open-network-stream' but take into account older XEmacs versions." - (if (and (featurep 'xemacs) - (fboundp 'open-network-stream) - (emacs-version>= 21 2)) - `(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)) diff --git a/lisp/gnus.el b/lisp/gnus.el index 85f57a8..2f20f6a 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -75,7 +75,7 @@ ;; These belong to gnus-group.el. (defgroup gnus-group nil "Group buffers." - :link '(custom-manual "(gnus)The Group Buffer") + :link '(custom-manual "(gnus)Group Buffer") :group 'gnus) (defgroup gnus-group-foreign nil @@ -116,7 +116,7 @@ ;; These belong to gnus-sum.el. (defgroup gnus-summary nil "Summary buffers." - :link '(custom-manual "(gnus)The Summary Buffer") + :link '(custom-manual "(gnus)Summary Buffer") :group 'gnus) (defgroup gnus-summary-exit nil @@ -160,7 +160,7 @@ (defgroup gnus-summary-sort nil "Sorting the summary buffer." - :link '(custom-manual "(gnus)Sorting") + :link '(custom-manual "(gnus)Summary Sorting") :group 'gnus-summary) (defgroup gnus-summary-visual nil @@ -302,9 +302,6 @@ be set in `.emacs' instead." (unless (fboundp 'gnus-group-remove-excess-properties) (defalias 'gnus-group-remove-excess-properties 'ignore)) -(unless (fboundp 'gnus-set-text-properties) - (defalias 'gnus-set-text-properties 'set-text-properties)) - (unless (featurep 'gnus-xmas) (defalias 'gnus-make-overlay 'make-overlay) (defalias 'gnus-delete-overlay 'delete-overlay) @@ -855,12 +852,12 @@ be set in `.emacs' instead." (storm "#666699" "#99ccff") (pdino "#9999cc" "#99ccff") (purp "#9999cc" "#666699") - (no "#000000" "#ff0000") + (no "#ff0000" "#ffff00") (neutral "#b4b4b4" "#878787") (september "#bf9900" "#ffcc00")) "Color alist used for the Gnus logo.") -(defcustom gnus-logo-color-style 'oort +(defcustom gnus-logo-color-style 'no "*Color styles used for the Gnus logo." :type `(choice ,@(mapcar (lambda (elem) (list 'const (car elem))) gnus-logo-color-alist)) @@ -967,10 +964,10 @@ be set in `.emacs' instead." (eval-when (load) (let ((command (format "%s" this-command))) - (if (and (string-match "gnus" command) - (not (string-match "gnus-other-frame" command))) - (gnus-splash) - (gnus-get-buffer-create gnus-group-buffer)))) + (when (string-match "gnus" command) + (if (string-match "gnus-other-frame" command) + (gnus-get-buffer-create gnus-group-buffer) + (gnus-splash))))) ;;; Do the rest. @@ -1140,9 +1137,8 @@ Check the NNTPSERVER environment variable and the (and (file-readable-p gnus-nntpserver-file) (with-temp-buffer (insert-file-contents gnus-nntpserver-file) - (let ((name (buffer-string))) - (unless (string-match "\\`[ \t\n]*$" name) - name)))))) + (when (re-search-forward "[^ \t\n\r]+" nil t) + (match-string 0)))))) (defcustom gnus-select-method (condition-case nil @@ -1451,11 +1447,6 @@ cache to the full extent of the law." :group 'gnus-meta :type 'boolean) -(defcustom gnus-use-grouplens nil - "*If non-nil, use GroupLens ratings." - :group 'gnus-meta - :type 'boolean) - (defcustom gnus-keep-backlog 20 "*If non-nil, Gnus will keep read articles for later re-retrieval. If it is a number N, then Gnus will only keep the last N articles @@ -1940,19 +1931,23 @@ Only applicable to non-spam (unclassified and ham) groups.") (variable-item gnus-group-ham-exit-processor-BBDB) (variable-item gnus-group-ham-exit-processor-spamoracle) (variable-item gnus-group-ham-exit-processor-copy) - (const :tag "Spam: Gmane Report" (spam spam-use-gmane)) (const :tag "Spam: Bogofilter" (spam spam-use-bogofilter)) (const :tag "Spam: Blacklist" (spam spam-use-blacklist)) - (const :tag "Spam: ifile" (spam spam-use-ifile)) - (const :tag "Spam: Spam-stat" (spam spam-use-stat)) + (const :tag "Spam: Bsfilter" (spam spam-use-bsfilter)) + (const :tag "Spam: Gmane Report" (spam spam-use-gmane)) + (const :tag "Spam: ifile" (spam spam-use-ifile)) (const :tag "Spam: Spam Oracle" (spam spam-use-spamoracle)) - (const :tag "Ham: ifile" (ham spam-use-ifile)) + (const :tag "Spam: Spam-stat" (spam spam-use-stat)) + (const :tag "Spam: SpamAssassin" (spam spam-use-spamassassin)) + (const :tag "Ham: BBDB" (ham spam-use-BBDB)) (const :tag "Ham: Bogofilter" (ham spam-use-bogofilter)) + (const :tag "Ham: Bsfilter" (ham spam-use-bsfilter)) + (const :tag "Ham: Copy" (ham spam-use-ham-copy)) + (const :tag "Ham: ifile" (ham spam-use-ifile)) + (const :tag "Ham: Spam Oracle" (ham spam-use-spamoracle)) (const :tag "Ham: Spam-stat" (ham spam-use-stat)) - (const :tag "Ham: Whitelist" (ham spam-use-whitelist)) - (const :tag "Ham: BBDB" (ham spam-use-BBDB)) - (const :tag "Ham: Copy" (ham spam-use-ham-copy)) - (const :tag "Ham: Spam Oracle" (ham spam-use-spamoracle))))) + (const :tag "Ham: SpamAssassin" (ham spam-use-spamassassin)) + (const :tag "Ham: Whitelist" (ham spam-use-whitelist))))) :function-document "Which spam or ham processors will be applied when the summary is exited." :variable gnus-spam-process-newsgroups @@ -1982,19 +1977,23 @@ spam processing, associated with the appropriate processor." (variable-item gnus-group-ham-exit-processor-BBDB) (variable-item gnus-group-ham-exit-processor-spamoracle) (variable-item gnus-group-ham-exit-processor-copy) - (const :tag "Spam: Gmane Report" (spam spam-use-gmane)) (const :tag "Spam: Bogofilter" (spam spam-use-bogofilter)) (const :tag "Spam: Blacklist" (spam spam-use-blacklist)) - (const :tag "Spam: ifile" (spam spam-use-ifile)) + (const :tag "Spam: Bsfilter" (spam spam-use-bsfilter)) + (const :tag "Spam: ifile" (spam spam-use-ifile)) + (const :tag "Spam: Gmane Report" (spam spam-use-gmane)) (const :tag "Spam: Spam-stat" (spam spam-use-stat)) (const :tag "Spam: Spam Oracle" (spam spam-use-spamoracle)) - (const :tag "Ham: ifile" (ham spam-use-ifile)) + (const :tag "Spam: SpamAssassin" (spam spam-use-spamassassin)) + (const :tag "Ham: BBDB" (ham spam-use-BBDB)) (const :tag "Ham: Bogofilter" (ham spam-use-bogofilter)) - (const :tag "Ham: Spam-stat" (ham spam-use-stat)) - (const :tag "Ham: Whitelist" (ham spam-use-whitelist)) - (const :tag "Ham: BBDB" (ham spam-use-BBDB)) - (const :tag "Ham: Copy" (ham spam-use-ham-copy)) - (const :tag "Ham: Spam Oracle" (ham spam-use-spamoracle))))) + (const :tag "Ham: Bsfilter" (ham spam-use-bsfilter)) + (const :tag "Ham: Copy" (ham spam-use-ham-copy)) + (const :tag "Ham: ifile" (ham spam-use-ifile)) + (const :tag "Ham: Spam-stat" (ham spam-use-stat)) + (const :tag "Ham: Spam Oracle" (ham spam-use-spamoracle)) + (const :tag "Ham: SpamAssassin" (ham spam-use-spamassassin)) + (const :tag "Ham: Whitelist" (ham spam-use-whitelist))))) :parameter-document "Which spam or ham processors will be applied when the summary is exited.") @@ -2033,12 +2032,17 @@ spam-autodetect-recheck-messages is set.") (const default) (set :tag "Use specific methods" (variable-item spam-use-blacklist) + (variable-item spam-use-gmane-xref) (variable-item spam-use-regex-headers) (variable-item spam-use-regex-body) (variable-item spam-use-whitelist) (variable-item spam-use-BBDB) (variable-item spam-use-ifile) (variable-item spam-use-spamoracle) + (variable-item spam-use-spamassassin) + (variable-item spam-use-spamassassin-headers) + (variable-item spam-use-bsfilter) + (variable-item spam-use-bsfilter-headers) (variable-item spam-use-stat) (variable-item spam-use-blackholes) (variable-item spam-use-hashcash) @@ -2064,6 +2068,7 @@ set." (const default) (set :tag "Use specific methods" (variable-item spam-use-blacklist) + (variable-item spam-use-gmane-xref) (variable-item spam-use-regex-headers) (variable-item spam-use-regex-body) (variable-item spam-use-whitelist) @@ -2073,6 +2078,10 @@ set." (variable-item spam-use-stat) (variable-item spam-use-blackholes) (variable-item spam-use-hashcash) + (variable-item spam-use-spamassassin) + (variable-item spam-use-spamassassin-headers) + (variable-item spam-use-bsfilter) + (variable-item spam-use-bsfilter-headers) (variable-item spam-use-bogofilter-headers) (variable-item spam-use-bogofilter))))) :parameter-document @@ -2250,8 +2259,7 @@ It is called with three parameters -- GROUP, LEVEL and OLDLEVEL." summary-menu group-menu article-menu tree-highlight menu highlight browse-menu server-menu - page-marker tree-menu binary-menu pick-menu - grouplens-menu) + page-marker tree-menu binary-menu pick-menu) "*Enable visual features. If `visual' is disabled, there will be no menus and few faces. Most of the visual customization options below will be ignored. Gnus will use @@ -2265,8 +2273,7 @@ instance, to switch off all visual things except menus, you can say: Valid elements include `summary-highlight', `group-highlight', `article-highlight', `mouse-face', `summary-menu', `group-menu', `article-menu', `tree-highlight', `menu', `highlight', `browse-menu', -`server-menu', `page-marker', `tree-menu', `binary-menu', `pick-menu', -and `grouplens-menu'." +`server-menu', `page-marker', `tree-menu', `binary-menu', and`pick-menu'." :group 'gnus-meta :group 'gnus-visual :type '(set (const summary-highlight) @@ -2284,8 +2291,7 @@ and `grouplens-menu'." (const page-marker) (const tree-menu) (const binary-menu) - (const pick-menu) - (const grouplens-menu))) + (const pick-menu))) ;; Byte-compiler warning. (defvar gnus-visual) @@ -2536,8 +2542,7 @@ This variable can be nil, gnus or gnus-ja." "Gnus variables saved in the quick startup file.") (defvar gnus-product-variable-file-list - (let ((version (product-version (product-find 'gnus-vers))) - (codesys (static-if (boundp 'MULE) '*ctext* 'ctext))) + (let ((version (product-version (product-find 'gnus-vers)))) `(("strict-cache" ((product-version ,version) (emacs-version) @@ -2548,7 +2553,7 @@ This variable can be nil, gnus or gnus-ja." ((product-version ,version) (emacs-version) (correct-string-widths)) - ,codesys + ctext gnus-format-specs))) "Alist of the methods for checking whether the contents of the T-gnus quick startup files are valid. One is for the byte-compiled format @@ -2741,8 +2746,6 @@ gnus-registry.el will populate this if it's loaded.") gnus-summary-wide-reply-with-original gnus-summary-post-forward gnus-summary-digest-mail-forward gnus-summary-digest-post-forward) ("gnus-picon" :interactive t gnus-treat-from-picon) - ("gnus-gl" bbb-login bbb-logout bbb-grouplens-group-p - gnus-grouplens-mode) ("smiley" :interactive t smiley-region) ("gnus-win" gnus-configure-windows gnus-add-configuration) ("gnus-sum" gnus-summary-insert-line gnus-summary-read-group @@ -2827,9 +2830,8 @@ gnus-registry.el will populate this if it's loaded.") (eval-and-compile (unless (featurep 'xemacs) - (if (>= emacs-major-version 21) - (autoload 'x-face-decode-message-header "x-face-e21") - (autoload 'x-face-mule-gnus-article-display-x-face "x-face-mule")))) + (autoload 'x-face-decode-message-header "x-face-e21") + (autoload 'x-face-mule-gnus-article-display-x-face "x-face-mule"))) (unless (and (fboundp 'base64-encode-string) (subrp (symbol-function 'base64-encode-string))) @@ -2847,12 +2849,8 @@ gnus-registry.el will populate this if it's loaded.") ;; To make shimbun groups. (autoload 'gnus-group-make-shimbun-group "nnshimbun" nil t) -;; A tool for the developers. -(autoload 'find-cl-run-time-functions "gnus-clfns" nil t) - ;;; gnus-sum.el thingies - (defcustom gnus-summary-line-format "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n" "*The format specification of the lines in the summary buffer. @@ -2892,7 +2890,6 @@ with some simple extensions. %z Article zcore (character) %t Number of articles under the current thread (number). %e Whether the thread is empty or not (character). -%l GroupLens score (string). %V Total thread score (number). %P The line number (number). %O Download mark (character). @@ -3310,7 +3307,7 @@ that that variable is buffer-local to the summary buffers." (defun gnus-generate-new-group-name (leaf) (let ((name leaf) (num 0)) - (while (gnus-gethash name gnus-newsrc-hashtb) + (while (gnus-group-entry name) (setq name (concat leaf "<" (int-to-string (setq num (1+ num))) ">"))) name)) @@ -3347,6 +3344,38 @@ that that variable is buffer-local to the summary buffers." (nth 1 method)))) method))) +(defsubst gnus-method-to-server (method) + (catch 'server-name + (setq method (or method gnus-select-method)) + + ;; Perhaps it is already in the cache. + (mapc (lambda (name-method) + (if (equal (cdr name-method) method) + (throw 'server-name (car name-method)))) + gnus-server-method-cache) + + (mapc + (lambda (server-alist) + (mapc (lambda (name-method) + (when (gnus-methods-equal-p (cdr name-method) method) + (unless (member name-method gnus-server-method-cache) + (push name-method gnus-server-method-cache)) + (throw 'server-name (car name-method)))) + server-alist)) + (let ((alists (list gnus-server-alist + gnus-predefined-server-alist))) + (if gnus-select-method + (push (list (cons "native" gnus-select-method)) alists)) + alists)) + + (let* ((name (if (member (cadr method) '(nil "")) + (format "%s" (car method)) + (format "%s:%s" (car method) (cadr method)))) + (name-method (cons name method))) + (unless (member name-method gnus-server-method-cache) + (push name-method gnus-server-method-cache)) + name))) + (defsubst gnus-server-to-method (server) "Map virtual server names to select methods." (or (and server (listp server) server) @@ -3394,38 +3423,6 @@ that that variable is buffer-local to the summary buffers." (push (cons server result) gnus-server-method-cache)) result))) -(defsubst gnus-method-to-server (method) - (catch 'server-name - (setq method (or method gnus-select-method)) - - ;; Perhaps it is already in the cache. - (mapc (lambda (name-method) - (if (equal (cdr name-method) method) - (throw 'server-name (car name-method)))) - gnus-server-method-cache) - - (mapc - (lambda (server-alist) - (mapc (lambda (name-method) - (when (gnus-methods-equal-p (cdr name-method) method) - (unless (member name-method gnus-server-method-cache) - (push name-method gnus-server-method-cache)) - (throw 'server-name (car name-method)))) - server-alist)) - (let ((alists (list gnus-server-alist - gnus-predefined-server-alist))) - (if gnus-select-method - (push (list (cons "native" gnus-select-method)) alists)) - alists)) - - (let* ((name (if (member (cadr method) '(nil "")) - (format "%s" (car method)) - (format "%s:%s" (car method) (cadr method)))) - (name-method (cons name method))) - (unless (member name-method gnus-server-method-cache) - (push name-method gnus-server-method-cache)) - name))) - (defsubst gnus-server-get-method (group method) ;; Input either a server name, and extended server name, or a ;; select method, and return a select method. @@ -4003,6 +4000,9 @@ If NEWSGROUP is nil, return the global kill file name instead." (setq valids (cdr valids))) outs)) +(eval-when-compile + (autoload 'message-y-or-n-p "message" nil nil 'macro)) + (defun gnus-read-group (prompt &optional default) "Prompt the user for a group name. Disallow invalid group names." diff --git a/lisp/hex-util.el b/lisp/hex-util.el deleted file mode 100644 index 6936bf3..0000000 --- a/lisp/hex-util.el +++ /dev/null @@ -1,73 +0,0 @@ -;;; hex-util.el --- Functions to encode/decode hexadecimal string. - -;; Copyright (C) 1999, 2001 Free Software Foundation, Inc. - -;; Author: Shuhei KOBAYASHI -;; Keywords: data - -;; This file is part of FLIM (Faithful Library about Internet Message). - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;;; Code: - -(eval-when-compile - (defmacro hex-char-to-num (chr) - (` (let ((chr (, chr))) - (cond - ((and (<= ?a chr)(<= chr ?f)) (+ (- chr ?a) 10)) - ((and (<= ?A chr)(<= chr ?F)) (+ (- chr ?A) 10)) - ((and (<= ?0 chr)(<= chr ?9)) (- chr ?0)) - (t (error "Invalid hexadecimal digit `%c'" chr)))))) - (defmacro num-to-hex-char (num) - (` (aref "0123456789abcdef" (, num))))) - -(defun decode-hex-string (string) - "Decode hexadecimal STRING to octet string." - (let* ((len (length string)) - (dst (make-string (/ len 2) 0)) - (idx 0)(pos 0)) - (while (< pos len) -;;; logior and lsh are not byte-coded. -;;; (aset dst idx (logior (lsh (hex-char-to-num (aref string pos)) 4) -;;; (hex-char-to-num (aref string (1+ pos))))) - (aset dst idx (+ (* (hex-char-to-num (aref string pos)) 16) - (hex-char-to-num (aref string (1+ pos))))) - (setq idx (1+ idx) - pos (+ 2 pos))) - dst)) - -(defun encode-hex-string (string) - "Encode octet STRING to hexadecimal string." - (let* ((len (length string)) - (dst (make-string (* len 2) 0)) - (idx 0)(pos 0)) - (while (< pos len) -;;; logand and lsh are not byte-coded. -;;; (aset dst idx (num-to-hex-char (logand (lsh (aref string pos) -4) 15))) - (aset dst idx (num-to-hex-char (/ (aref string pos) 16))) - (setq idx (1+ idx)) -;;; (aset dst idx (num-to-hex-char (logand (aref string pos) 15))) - (aset dst idx (num-to-hex-char (% (aref string pos) 16))) - (setq idx (1+ idx) - pos (1+ pos))) - dst)) - -(provide 'hex-util) - -;;; hex-util.el ends here diff --git a/lisp/html2text.el b/lisp/html2text.el index 41fea4b..b5c7478 100644 --- a/lisp/html2text.el +++ b/lisp/html2text.el @@ -1,5 +1,5 @@ ;;; html2text.el --- a simple html to plain text converter -;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Joakim Hove @@ -42,7 +42,8 @@ (defvar html2text-format-single-element-list '(("hr" . html2text-clean-hr))) (defvar html2text-replace-list - '((" " . " ") (">" . ">") ("<" . "<") (""" . "\"")) + '((" " . " ") (">" . ">") ("<" . "<") (""" . "\"") + ("&" . "&") ("'" . "'")) "The map of entity to text. This is an alist were each element is a dotted pair consisting of an @@ -118,9 +119,7 @@ formatting, and then moved afterward.") (defun html2text-buffer-head () (if (string= mode-name "Article") (beginning-of-buffer) - (beginning-of-buffer) - ) - ) + (beginning-of-buffer))) (defun html2text-replace-string (from-string to-string p1 p2) (goto-char p1) @@ -128,11 +127,8 @@ formatting, and then moved afterward.") (change 0)) (while (search-forward from-string p2 t) (replace-match to-string) - (setq change (+ change delta)) - ) - change - ) - ) + (setq change (+ change delta))) + change)) ;; ;; @@ -146,108 +142,26 @@ formatting, and then moved afterward.") ;; (defun html2text-attr-value (attr-list attr) - (nth 1 (assoc attr attr-list)) - ) - -(defun html2text-get-attr (p1 p2 tag) - (goto-char p1) - (re-search-forward " +[^ ]" p2 t) - (let* ((attr-string (buffer-substring-no-properties (1- (point)) (1- p2))) - (tmp-list (split-string attr-string)) - (attr-list) - (counter 0) - (prev (car tmp-list)) - (this (nth 1 tmp-list)) - (next (nth 2 tmp-list)) - (index 1)) - - (cond - ;; size=3 - ((string-match "[^ ]=[^ ]" prev) - (let ((attr (nth 0 (split-string prev "="))) - (value (nth 1 (split-string prev "=")))) - (setq attr-list (cons (list attr value) attr-list)) - ) - ) - ;; size= 3 - ((string-match "[^ ]=\\'" prev) - (setq attr-list (cons (list (substring prev 0 -1) this) attr-list)) - ) - ) - - (while (< index (length tmp-list)) - (cond - ;; size=3 - ((string-match "[^ ]=[^ ]" this) - (let ((attr (nth 0 (split-string this "="))) - (value (nth 1 (split-string this "=")))) - (setq attr-list (cons (list attr value) attr-list)) - ) - ) - ;; size =3 - ((string-match "\\`=[^ ]" this) - (setq attr-list (cons (list prev (substring this 1)) attr-list))) - - ;; size= 3 - ((string-match "[^ ]=\\'" this) - (setq attr-list (cons (list (substring this 0 -1) next) attr-list)) - ) - - ;; size = 3 - ((string= "=" this) - (setq attr-list (cons (list prev next) attr-list)) - ) - ) - (setq index (1+ index)) - (setq prev this) - (setq this next) - (setq next (nth (1+ index) tmp-list)) - ) - - ;; - ;; Tags with no accompanying "=" i.e. value=nil - ;; - (setq prev (car tmp-list)) - (setq this (nth 1 tmp-list)) - (setq next (nth 2 tmp-list)) - (setq index 1) - - (if (not (string-match "=" prev)) - (progn - (if (not (string= (substring this 0 1) "=")) - (setq attr-list (cons (list prev nil) attr-list)) - ) - ) - ) - - (while (< index (1- (length tmp-list))) - (if (not (string-match "=" this)) - (if (not (or (string= (substring next 0 1) "=") - (string= (substring prev -1) "="))) - (setq attr-list (cons (list this nil) attr-list)) - ) - ) - (setq index (1+ index)) - (setq prev this) - (setq this next) - (setq next (nth (1+ index) tmp-list)) - ) - - (if this - (progn - (if (not (string-match "=" this)) - (progn - (if (not (string= (substring prev -1) "=")) - (setq attr-list (cons (list this nil) attr-list)) - ) - ) - ) - ) - ) - attr-list ;; return - value - ) - ) - + (nth 1 (assoc attr attr-list))) + +(defun html2text-get-attr (p1 p2) + (save-restriction + (narrow-to-region p1 p2) + (let (result) + (goto-char (point-min)) + (while (not (eobp)) + (when (re-search-forward "[^= ]+" nil t) + (push + (list + (match-string 0) + (when (looking-at " *= *") + (goto-char (match-end 0)) + (buffer-substring + (point) + (goto-char (or (ignore-errors (scan-sexps (point) 1)) + (point-max)))))) + result))) + result))) ;; ;; ;; @@ -271,10 +185,7 @@ formatting, and then moved afterward.") (cond ((string= list-type "ul") (insert " o ")) ((string= list-type "ol") (insert (format " %s: " item-nr))) - (t (insert " x "))) - ) - ) - ) + (t (insert " x ")))))) (defun html2text-clean-dtdd (p1 p2) (goto-char p1) @@ -313,62 +224,50 @@ formatting, and then moved afterward.") (html2text-delete-single-tag p1 p2) (goto-char p1) (newline 1) - (insert (make-string fill-column ?-)) - ) + (insert (make-string fill-column ?-))) (defun html2text-clean-ul (p1 p2 p3 p4) (html2text-delete-tags p1 p2 p3 p4) - (html2text-clean-list-items p1 (- p3 (- p1 p2)) "ul") - ) + (html2text-clean-list-items p1 (- p3 (- p1 p2)) "ul")) (defun html2text-clean-ol (p1 p2 p3 p4) (html2text-delete-tags p1 p2 p3 p4) - (html2text-clean-list-items p1 (- p3 (- p1 p2)) "ol") - ) + (html2text-clean-list-items p1 (- p3 (- p1 p2)) "ol")) (defun html2text-clean-dl (p1 p2 p3 p4) (html2text-delete-tags p1 p2 p3 p4) - (html2text-clean-dtdd p1 (- p3 (- p1 p2))) - ) + (html2text-clean-dtdd p1 (- p3 (- p1 p2)))) (defun html2text-clean-center (p1 p2 p3 p4) (html2text-delete-tags p1 p2 p3 p4) - (center-region p1 (- p3 (- p2 p1))) - ) + (center-region p1 (- p3 (- p2 p1)))) (defun html2text-clean-bold (p1 p2 p3 p4) (put-text-property p2 p3 'face 'bold) - (html2text-delete-tags p1 p2 p3 p4) - ) + (html2text-delete-tags p1 p2 p3 p4)) (defun html2text-clean-title (p1 p2 p3 p4) (put-text-property p2 p3 'face 'bold) - (html2text-delete-tags p1 p2 p3 p4) - ) + (html2text-delete-tags p1 p2 p3 p4)) (defun html2text-clean-underline (p1 p2 p3 p4) (put-text-property p2 p3 'face 'underline) - (html2text-delete-tags p1 p2 p3 p4) - ) + (html2text-delete-tags p1 p2 p3 p4)) (defun html2text-clean-italic (p1 p2 p3 p4) (put-text-property p2 p3 'face 'italic) - (html2text-delete-tags p1 p2 p3 p4) - ) + (html2text-delete-tags p1 p2 p3 p4)) (defun html2text-clean-font (p1 p2 p3 p4) - (html2text-delete-tags p1 p2 p3 p4) - ) + (html2text-delete-tags p1 p2 p3 p4)) (defun html2text-clean-blockquote (p1 p2 p3 p4) - (html2text-delete-tags p1 p2 p3 p4) - ) + (html2text-delete-tags p1 p2 p3 p4)) (defun html2text-clean-anchor (p1 p2 p3 p4) ;; If someone can explain how to make the URL clickable I will ;; surely improve upon this. - (let* ((attr-list (html2text-get-attr p1 p2 "a")) - (href (html2text-attr-value attr-list "href"))) + (let ((href (html2text-attr-value (html2text-get-attr p1 p2) "href"))) (delete-region p1 p4) (when href (goto-char p1) @@ -391,38 +290,29 @@ formatting, and then moved afterward.") (let ((has-br-line) (refill-start) (refill-stop)) - (if (re-search-forward "
$" p2 t) - (setq has-br-line t) - ) - (if has-br-line - (progn - (goto-char p1) - (if (re-search-forward ".+[^<][^b][^r][^>]$" p2 t) - (progn - (beginning-of-line) - (setq refill-start (point)) - (goto-char p2) - (re-search-backward ".+[^<][^b][^r][^>]$" refill-start t) - (next-line 1) - (end-of-line) - ;; refill-stop should ideally be adjusted to - ;; accomodate the "
" strings which are removed - ;; between refill-start and refill-stop. Can simply - ;; be returned from my-replace-string - (setq refill-stop (+ (point) - (html2text-replace-string - "
" "" - refill-start (point)))) - ;; (message "Point = %s refill-stop = %s" (point) refill-stop) - ;; (sleep-for 4) - (fill-region refill-start refill-stop) - ) - ) - ) - ) - ) - (html2text-replace-string "
" "" p1 p2) - ) + (when (re-search-forward "
$" p2 t) + (setq has-br-line t)) + (when has-br-line + (goto-char p1) + (when (re-search-forward ".+[^<][^b][^r][^>]$" p2 t) + (beginning-of-line) + (setq refill-start (point)) + (goto-char p2) + (re-search-backward ".+[^<][^b][^r][^>]$" refill-start t) + (next-line 1) + (end-of-line) + ;; refill-stop should ideally be adjusted to + ;; accomodate the "
" strings which are removed + ;; between refill-start and refill-stop. Can simply + ;; be returned from my-replace-string + (setq refill-stop (+ (point) + (html2text-replace-string + "
" "" + refill-start (point)))) + ;; (message "Point = %s refill-stop = %s" (point) refill-stop) + ;; (sleep-for 4) + (fill-region refill-start refill-stop)))) + (html2text-replace-string "
" "" p1 p2)) ;; ;; This one is interactive ... @@ -462,7 +352,7 @@ See the documentation for that variable." (interactive) (dolist (tag tag-list) (html2text-buffer-head) - (while (re-search-forward (format "\\(]*>\\)" tag) (point-max) t) + (while (re-search-forward (format "]*>" tag) (point-max) t) (delete-region (match-beginning 0) (match-end 0))))) (defun html2text-format-tags () @@ -472,12 +362,12 @@ See the documentation for that variable." (let ((tag (car tag-and-function)) (function (cdr tag-and-function))) (html2text-buffer-head) - (while (re-search-forward (format "\\(<%s\\( [^>]*\\)?>\\)" tag) + (while (re-search-forward (format "<%s\\( [^>]*\\)?>" tag) (point-max) t) (let ((p1) (p2 (point)) (p3) (p4) - (attr (match-string 1))) + (attr (match-string 0))) (search-backward "<" (point-min) t) (setq p1 (point)) (re-search-forward (format "" tag) (point-max) t) @@ -486,11 +376,7 @@ See the documentation for that variable." (setq p3 (point)) (funcall function p1 p2 p3 p4) (goto-char p1) - ) - ) - ) - ) - ) + ))))) (defun html2text-substitute () "See the variable \"html2text-replace-list\" for documentation" @@ -499,10 +385,8 @@ See the documentation for that variable." (html2text-buffer-head) (let ((old-string (car e)) (new-string (cdr e))) - (html2text-replace-string old-string new-string (point-min) (point-max)) - ) - ) - ) + (html2text-replace-string old-string new-string (point-min) (point-max))) + )) (defun html2text-format-single-elements () "" @@ -511,18 +395,13 @@ See the documentation for that variable." (let ((tag (car tag-and-function)) (function (cdr tag-and-function))) (html2text-buffer-head) - (while (re-search-forward (format "\\(<%s\\( [^>]*\\)?>\\)" tag) + (while (re-search-forward (format "<%s\\( [^>]*\\)?>" tag) (point-max) t) (let ((p1) (p2 (point))) (search-backward "<" (point-min) t) (setq p1 (point)) - (funcall function p1 p2) - ) - ) - ) - ) - ) + (funcall function p1 p2)))))) ;; ;; Main function diff --git a/lisp/ietf-drums.el b/lisp/ietf-drums.el index c546316..eec283b 100644 --- a/lisp/ietf-drums.el +++ b/lisp/ietf-drums.el @@ -88,14 +88,14 @@ backslash and doublequote.") (push c out))) (range (while (<= b c) - (push (mm-make-char 'ascii b) out) + (push (make-char 'ascii b) out) (incf b)) (setq range nil)) ((= i (length token)) - (push (mm-make-char 'ascii c) out)) + (push (make-char 'ascii c) out)) (t (when b - (push (mm-make-char 'ascii b) out)) + (push (make-char 'ascii b) out)) (setq b c)))) (nreverse out))) diff --git a/lisp/imap.el b/lisp/imap.el index 0c7f5dc..56a7e67 100644 --- a/lisp/imap.el +++ b/lisp/imap.el @@ -1,5 +1,5 @@ ;;; imap.el --- imap library -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Simon Josefsson @@ -73,13 +73,13 @@ ;; explanatory for someone that know IMAP. All functions have ;; additional documentation on how to invoke them. ;; -;; imap.el support RFC1730/2060 (IMAP4/IMAP4rev1), implemented IMAP -;; extensions are RFC2195 (CRAM-MD5), RFC2086 (ACL), RFC2342 +;; imap.el support RFC1730/2060/RFC3501 (IMAP4/IMAP4rev1), implemented +;; IMAP extensions are RFC2195 (CRAM-MD5), RFC2086 (ACL), RFC2342 ;; (NAMESPACE), RFC2359 (UIDPLUS), the IMAP-part of RFC2595 (STARTTLS, ;; LOGINDISABLED) (with use of external library starttls.el and -;; program starttls) and the GSSAPI / kerberos V4 sections of RFC1731 -;; (with use of external program `imtest'). It also take advantage -;; the UNSELECT extension in Cyrus IMAPD. +;; program starttls), and the GSSAPI / kerberos V4 sections of RFC1731 +;; (with use of external program `imtest'), RFC2971 (ID). It also +;; take advantage the UNSELECT extension in Cyrus IMAPD. ;; ;; Without the work of John McClary Prevost and Jim Radford this library ;; would not have seen the light of day. Many thanks. @@ -145,22 +145,16 @@ (eval-and-compile (autoload 'starttls-open-stream "starttls") (autoload 'starttls-negotiate "starttls") + (autoload 'digest-md5-parse-digest-challenge "digest-md5") + (autoload 'digest-md5-digest-response "digest-md5") + (autoload 'digest-md5-digest-uri "digest-md5") + (autoload 'digest-md5-challenge "digest-md5") (autoload 'rfc2104-hash "rfc2104") - (autoload 'md5 "md5") (autoload 'utf7-encode "utf7") (autoload 'utf7-decode "utf7") (autoload 'format-spec "format-spec") (autoload 'format-spec-make "format-spec") - (autoload 'open-tls-stream "tls") - ;; Avoid use gnus-point-at-eol so we're independent of Gnus. These - ;; days we have point-at-eol anyhow. - (if (fboundp 'point-at-eol) - (defalias 'imap-point-at-eol 'point-at-eol) - (defun imap-point-at-eol () - (save-excursion - (end-of-line) - (point)))) - (autoload 'sasl-digest-md5-digest-response "sasl")) + (autoload 'open-tls-stream "tls")) ;; User variables. @@ -268,6 +262,11 @@ Shorter values mean quicker response, but is more CPU intensive." :type 'number :group 'imap) +(defcustom imap-store-password nil + "If non-nil, store session password without promting." + :group 'imap + :type 'boolean) + ;; Various variables. (defvar imap-fetch-data-hook nil @@ -336,6 +335,7 @@ for doing the actual authentication.") imap-current-target-mailbox imap-message-data imap-capability + imap-id imap-namespace imap-state imap-reached-tag @@ -391,6 +391,10 @@ and `examine'.") (defvar imap-capability nil "Capability for server.") +(defvar imap-id nil + "Identity of server. +See RFC 2971.") + (defvar imap-namespace nil "Namespace for current server.") @@ -812,9 +816,10 @@ Returns t if login was successful, nil otherwise." (progn (setq ret t imap-username user) - (if (and (not imap-password) - (y-or-n-p "Store password for this session? ")) - (setq imap-password passwd))) + (when (and (not imap-password) + (or imap-store-password + (y-or-n-p "Store password for this session? "))) + (setq imap-password passwd))) (message "Login failed...") (setq passwd nil) (setq imap-password nil) @@ -914,11 +919,16 @@ Returns t if login was successful, nil otherwise." (list "AUTHENTICATE DIGEST-MD5" (lambda (challenge) - (base64-encode-string - (sasl-digest-md5-digest-response - (base64-decode-string challenge) - user passwd "imap" imap-server) - 'no-line-break)))))) + (digest-md5-parse-digest-challenge + (base64-decode-string challenge)) + (let* ((digest-uri + (digest-md5-digest-uri + "imap" (digest-md5-challenge 'realm))) + (response + (digest-md5-digest-response + user passwd digest-uri))) + (base64-encode-string response 'no-line-break)))) + ))) (if (not (eq (imap-wait-for-tag tag) 'INCOMPLETE)) nil (setq imap-continuation nil) @@ -1096,6 +1106,26 @@ If BUFFER is nil, the current buffer is assumed." (memq (intern (upcase (symbol-name identifier))) imap-capability) imap-capability))) +(defun imap-id (&optional list-of-values buffer) + "Identify client to server in BUFFER, and return server identity. +LIST-OF-VALUES is nil, or a plist with identifier and value +strings to send to the server to identify the client. + +Return a list of identifiers which server in BUFFER support, or +nil if it doesn't support ID or returns no information. + +If BUFFER is nil, the current buffer is assumed." + (with-current-buffer (or buffer (current-buffer)) + (when (and (imap-capability 'ID) + (imap-ok-p (imap-send-command-wait + (if (null list-of-values) + "ID NIL" + (concat "ID (" (mapconcat (lambda (el) + (concat "\"" el "\"")) + list-of-values + " ") ")"))))) + imap-id))) + (defun imap-namespace (&optional buffer) "Return a namespace hierarchy at server in BUFFER. If BUFFER is nil, the current buffer is assumed." @@ -2059,6 +2089,8 @@ Return nil if no complete line has arrived." (read (concat "(" (upcase (buffer-substring (point) (point-max))) ")")))) + (ID (setq imap-id (read (buffer-substring (point) + (point-max))))) (ACL (imap-parse-acl)) (t (case (prog1 (read (current-buffer)) (imap-forward)) @@ -2406,16 +2438,16 @@ Return nil if no complete line has arrived." (defun imap-parse-flag-list () (let (flag-list start) - (assert (eq (char-after) ?\() t "In imap-parse-flag-list") + (assert (eq (char-after) ?\() nil "In imap-parse-flag-list") (while (and (not (eq (char-after) ?\))) (setq start (progn (imap-forward) ;; next line for Courier IMAP bug. (skip-chars-forward " ") (point))) - (> (skip-chars-forward "^ )" (imap-point-at-eol)) 0)) + (> (skip-chars-forward "^ )" (point-at-eol)) 0)) (push (buffer-substring start (point)) flag-list)) - (assert (eq (char-after) ?\)) t "In imap-parse-flag-list") + (assert (eq (char-after) ?\)) nil "In imap-parse-flag-list") (imap-forward) (nreverse flag-list))) @@ -2500,7 +2532,7 @@ Return nil if no complete line has arrived." (while (eq (char-after) ?\ ) (imap-forward) (push (imap-parse-body-extension) b-e)) - (assert (eq (char-after) ?\)) t "In imap-parse-body-extension") + (assert (eq (char-after) ?\)) nil "In imap-parse-body-extension") (imap-forward) (nreverse b-e)) (or (imap-parse-number) @@ -2624,7 +2656,7 @@ Return nil if no complete line has arrived." (push (and (imap-parse-nil) nil) body)) (setq body (append (imap-parse-body-ext) body))) ;; body-ext-... - (assert (eq (char-after) ?\)) t "In imap-parse-body") + (assert (eq (char-after) ?\)) nil "In imap-parse-body") (imap-forward) (nreverse body)) @@ -2684,7 +2716,7 @@ Return nil if no complete line has arrived." (push (imap-parse-nstring) body) ;; body-fld-md5 (setq body (append (imap-parse-body-ext) body))) ;; body-ext-1part.. - (assert (eq (char-after) ?\)) t "In imap-parse-body 2") + (assert (eq (char-after) ?\)) nil "In imap-parse-body 2") (imap-forward) (nreverse body))))) diff --git a/lisp/legacy-gnus-agent.el b/lisp/legacy-gnus-agent.el new file mode 100644 index 0000000..7127dbd --- /dev/null +++ b/lisp/legacy-gnus-agent.el @@ -0,0 +1,213 @@ +(require 'gnus-start) +(require 'gnus-util) +(require 'gnus-range) +(require 'gnus-agent) + +; Oort Gnus v0.08 - This release updated agent to no longer use +; history file and to support a compressed alist. + +(defun gnus-agent-convert-to-compressed-agentview (converting-to) + "Iterates over all agentview files to ensure that they have been +converted to the compressed format." + + (let ((search-in (list gnus-agent-directory)) + here + members + member + converted-something) + (while (setq here (pop search-in)) + (setq members (directory-files here t)) + (while (setq member (pop members)) + (cond ((string-match "/\\.\\.?$" member) + nil) + ((file-directory-p member) + (push member search-in)) + ((equal (file-name-nondirectory member) ".agentview") + (setq converted-something + (or (gnus-agent-convert-agentview member) + converted-something)))))) + + (if converted-something + (gnus-message 4 "Successfully converted Gnus %s offline (agent) files to %s" gnus-newsrc-file-version converting-to)))) + +(defun gnus-agent-convert-agentview (file) + "Load FILE and do a `read' there." + (with-temp-buffer + (nnheader-insert-file-contents file) + (goto-char (point-min)) + (let ((inhibit-quit t) + (alist (read (current-buffer))) + (version (condition-case nil (read (current-buffer)) + (end-of-file 0))) + changed-version + history-file) + + (cond + ((= version 0) + (let (entry + (gnus-command-method nil)) + (mm-disable-multibyte) ;; everything is binary + (erase-buffer) + (insert "\n") + (let ((file (concat (file-name-directory file) "/history"))) + (when (file-exists-p file) + (nnheader-insert-file-contents file) + (setq history-file file))) + + (goto-char (point-min)) + (while (not (eobp)) + (if (and (looking-at + "[^\t\n]+\t\\([0-9]+\\)\t\\([^ \n]+\\) \\([0-9]+\\)") + (string= (gnus-agent-article-name ".agentview" (match-string 2)) + file) + (setq entry (assoc (string-to-number (match-string 3)) alist))) + (setcdr entry (string-to-number (match-string 1)))) + (forward-line 1)) + (setq changed-version t))) + ((= version 1) + (setq changed-version t))) + + (when changed-version + (erase-buffer) + (let ((compressed nil)) + (mapcar (lambda (pair) + (let* ((article-id (car pair)) + (day-of-download (cdr pair)) + (comp-list (assq day-of-download compressed))) + (if comp-list + (setcdr comp-list + (cons article-id (cdr comp-list))) + (setq compressed + (cons (list day-of-download article-id) + compressed))) + nil)) alist) + (mapcar (lambda (comp-list) + (setcdr comp-list + (gnus-compress-sequence + (nreverse (cdr comp-list))))) + compressed) + (princ compressed (current-buffer))) + (insert "\n2\n") + (write-file file) + (when history-file + (delete-file history-file)) + t)))) + +;; End of Oort Gnus v0.08 updates + +;; No Gnus v0.3 - This release provides a mechanism for upgrading gnus +;; from previous versions. Therefore, the previous +;; hacks to handle a gnus-agent-expire-days that +;; specifies a list of values can be removed. + +(defun gnus-agent-unlist-expire-days (converting-to) + (when (listp gnus-agent-expire-days) + (let (buffer) + (unwind-protect + (save-window-excursion + (setq buffer (gnus-get-buffer-create " *Gnus agent upgrade*")) + (set-buffer buffer) + (erase-buffer) + (insert "The definition of gnus-agent-expire-days has been changed.\nYou currently have it set to the list:\n ") + (let (print-level print-length) (pp gnus-agent-expire-days (current-buffer))) + + (insert "\nIn order to use version '" converting-to "' of gnus, you will need to set\n") + (insert "gnus-agent-expire-days to an integer. If you still wish to set different\n") + (insert "expiration days to individual groups, you must instead set the\n") + (insert "'agent-days-until-old group and/or topic parameter.\n") + (insert "\n") + (insert "If you would like, gnus can iterate over every group comparing its name to the\n") + (insert "regular expressions that you currently have in gnus-agent-expire-days. When\n") + (insert "gnus finds a match, it will update that group's 'agent-days-until-old group\n") + (insert "parameter to the value associated with the regular expression.\n") + (insert "\n") + (insert "Whether gnus assigns group parameters, or not, gnus will terminate with an\n") + (insert "ERROR as soon as this function completes. The reason is that you must\n") + (insert "manually edit your configuration to either not set gnus-agent-expire-days or\n") + (insert "to set it to an integer before gnus can be used.\n") + (insert "\n") + (insert "Once you have successfully edited gnus-agent-expire-days, gnus will be able to\n") + (insert "execute past this function.\n") + (insert "\n") + (insert "Should gnus use gnus-agent-expire-days to assign\n") + (insert "agent-days-until-old parameters to individual groups? (Y/N)") + + (switch-to-buffer buffer) + (beep) + (beep) + + (let ((echo-keystrokes 0) + c) + (while (progn (setq c (read-char-exclusive)) + (cond ((or (eq c ?y) (eq c ?Y)) + (save-excursion + (let ((groups (gnus-group-listed-groups))) + (while groups + (let* ((group (pop groups)) + (days gnus-agent-expire-days) + (day (catch 'found + (while days + (when (eq 0 (string-match + (caar days) + group)) + (throw 'found (cadar days))) + (setq days (cdr days))) + nil))) + (when day + (gnus-group-set-parameter group 'agent-days-until-old + day)))))) + nil + ) + ((or (eq c ?n) (eq c ?N)) + nil) + (t + t)))))) + (kill-buffer buffer)) + (error "Change gnus-agent-expire-days to an integer for gnus to start.")))) + +;; The gnus-agent-unlist-expire-days has its own conversion prompt. +;; Therefore, hide the default prompt. +(gnus-convert-mark-converter-prompt 'gnus-agent-unlist-expire-days t) + +(defun gnus-agent-unhook-expire-days (converting-to) + "Remove every lambda from gnus-group-prepare-hook that mention the +symbol gnus-agent-do-once in their definition. This should NOT be +necessary as gnus-agent.el no longer adds them. However, it is +possible that the hook was persistently saved." + (let ((h t)) ; iterate from bgn of hook + (while h + (let ((func (progn (when (eq h t) + ;; init h to list of functions + (setq h (cond ((listp gnus-group-prepare-hook) + gnus-group-prepare-hook) + ((boundp 'gnus-group-prepare-hook) + (list gnus-group-prepare-hook))))) + (pop h)))) + + (when (cond ((eq (type-of func) 'compiled-function) + ;; Search def. of compiled function for gnus-agent-do-once string + (let* (definition + print-level + print-length + (standard-output + (lambda (char) + (setq definition (cons char definition))))) + (princ func) ; populates definition with reversed list of characters + (let* ((i (length definition)) + (s (make-string i 0))) + (while definition + (aset s (setq i (1- i)) (pop definition))) + + (string-match "\\bgnus-agent-do-once\\b" s)))) + ((listp func) + (eq (cadr (nth 2 func)) 'gnus-agent-do-once) ; handles eval'd lambda + )) + + (remove-hook 'gnus-group-prepare-hook func) + ;; I don't what remove-hook is going to actually do to the + ;; hook list so start over from the beginning. + (setq h t)))))) + +;; gnus-agent-unhook-expire-days is safe in that it does not modify +;; the .newsrc.eld file. +(gnus-convert-mark-converter-prompt 'gnus-agent-unhook-expire-days t) diff --git a/lisp/lpath.el b/lisp/lpath.el index 0529e9a..920e1e3 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -21,9 +21,10 @@ url-generic-parse-url url-http-file-exists-p url-insert-file-contents vcard-pretty-print w32-focus-frame w3m-charset-to-coding-system w3m-region x-focus-frame)) -(maybe-bind '(filladapt-mode - mc-pgp-always-sign rmail-insert-mime-forwarded-message-function - url-current-object url-package-name url-package-version +(maybe-bind '(eudc-protocol + filladapt-mode mc-pgp-always-sign + rmail-insert-mime-forwarded-message-function url-current-object + url-package-name url-package-version w3-meta-charset-content-type-regexp w3-meta-content-type-charset-regexp w3m-cid-retrieve-function-alist w3m-current-buffer @@ -33,8 +34,8 @@ (if (featurep 'xemacs) (progn (maybe-fbind '(delete-overlay - event-click-count event-end event-start - find-coding-systems-for-charsets + detect-coding-string eudc-expand-inline event-click-count + event-end event-start find-coding-systems-for-charsets find-coding-systems-region find-coding-systems-string mail-abbrevs-setup mouse-minibuffer-check mouse-movement-p mouse-scroll-subr overlay-lists @@ -85,16 +86,6 @@ (cond ((featurep 'xemacs) '(frame-char-height frame-char-width)) - ((>= emacs-major-version 21) - '(function-max-args smiley-encode-buffer)) - ((boundp 'MULE) - '(charsetp - coding-system-base coding-system-get coding-system-list - coding-system-to-mime-charset compose-mail - file-name-extension find-coding-systems-for-charsets - find-coding-systems-region function-max-args get-charset-property - read-passwd ;; See the Mule23@1934 file. - smiley-encode-buffer smtpmail-send-it)) (t '(function-max-args smiley-encode-buffer)))) (common-fns @@ -103,11 +94,6 @@ (cond ((featurep 'xemacs) '(font-lock-defaults)) - ((>= emacs-major-version 21) - nil) - ((boundp 'MULE) - '(adaptive-fill-first-line-regexp - default-enable-multibyte-characters enable-multibyte-characters)) (t nil))) (common-vars diff --git a/lisp/mail-source.el b/lisp/mail-source.el index 0942443..1871fec 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -29,12 +29,11 @@ (eval-when-compile (require 'cl) (require 'imap) - (defvar display-time-mail-function) - (autoload 'pop3-movemail "pop3") - (autoload 'pop3-get-message-count "pop3")) + (defvar display-time-mail-function)) (eval-and-compile - (autoload 'nnheader-cancel-timer "nnheader") - (autoload 'nnheader-run-at-time "nnheader")) + (autoload 'pop3-movemail "pop3") + (autoload 'pop3-get-message-count "pop3") + (autoload 'nnheader-cancel-timer "nnheader")) (require 'format-spec) (require 'message) ;; for `message-directory' @@ -834,12 +833,14 @@ Pass INFO on to CALLBACK." "Open and close a POP connection shortly. POP server should be defined in `mail-source-primary-source' (which is preferred) or `mail-sources'. You may use it for the POP-before-SMTP -authentication. To do that, you need to set the option -`message-send-mail-function' to `message-send-mail-with-smtp' or -`message-smtpmail-send-it' and put the following line in .gnus file: +authentication. To do that, you need to set the +`message-send-mail-function' variable as `message-send-mail-with-smtp' +or `message-smtpmail-send-it' and put the following line in your +~/.gnus.el file: \(add-hook 'message-send-mail-hook 'mail-source-touch-pop) -" + +See the Gnus manual for details." (let ((sources (if mail-source-primary-source (list mail-source-primary-source) mail-sources))) @@ -909,7 +910,7 @@ This only works when `display-time' is enabled." (setq display-time-mail-function #'mail-source-new-mail-p) ;; Set up the main timer. (setq mail-source-report-new-mail-timer - (nnheader-run-at-time + (run-at-time (* 60 mail-source-report-new-mail-interval) (* 60 mail-source-report-new-mail-interval) #'mail-source-start-idle-timer)) @@ -939,10 +940,6 @@ This only works when `display-time' is enabled." (let ((coding-system-for-write nnheader-text-coding-system) (coding-system-for-read - nnheader-text-coding-system) - (output-coding-system - nnheader-text-coding-system) - (input-coding-system nnheader-text-coding-system)) (with-temp-file mail-source-crash-box (insert-file-contents file) @@ -997,7 +994,6 @@ This only works when `display-time' is enabled." password) buf) (imap-mailbox-select mailbox nil buf)) (let ((coding-system-for-write mail-source-imap-file-coding-system) - (output-coding-system mail-source-imap-file-coding-system) str) (with-temp-file mail-source-crash-box ;; Avoid converting 8-bit chars from inserted strings to diff --git a/lisp/md5.el b/lisp/md5.el deleted file mode 100644 index 2f85d70..0000000 --- a/lisp/md5.el +++ /dev/null @@ -1,413 +0,0 @@ -;;; md5.el -- MD5 Message Digest Algorithm -;;; Gareth Rees - -;; LCD Archive Entry: -;; md5|Gareth Rees|gdr11@cl.cam.ac.uk| -;; MD5 cryptographic message digest algorithm| -;; 13-Nov-95|1.0|~/misc/md5.el.Z| - -;;; Details: ------------------------------------------------------------------ - -;; This is a direct translation into Emacs LISP of the reference C -;; implementation of the MD5 Message-Digest Algorithm written by RSA -;; Data Security, Inc. -;; -;; The algorithm takes a message (that is, a string of bytes) and -;; computes a 16-byte checksum or "digest" for the message. This digest -;; is supposed to be cryptographically strong in the sense that if you -;; are given a 16-byte digest D, then there is no easier way to -;; construct a message whose digest is D than to exhaustively search the -;; space of messages. However, the robustness of the algorithm has not -;; been proven, and a similar algorithm (MD4) was shown to be unsound, -;; so treat with caution! -;; -;; The C algorithm uses 32-bit integers; because GNU Emacs -;; implementations provide 28-bit integers (with 24-bit integers on -;; versions prior to 19.29), the code represents a 32-bit integer as the -;; cons of two 16-bit integers. The most significant word is stored in -;; the car and the least significant in the cdr. The algorithm requires -;; at least 17 bits of integer representation in order to represent the -;; carry from a 16-bit addition. - -;;; Usage: -------------------------------------------------------------------- - -;; To compute the MD5 Message Digest for a message M (represented as a -;; string or as a vector of bytes), call -;; -;; (md5-encode M) -;; -;; which returns the message digest as a vector of 16 bytes. If you -;; need to supply the message in pieces M1, M2, ... Mn, then call -;; -;; (md5-init) -;; (md5-update M1) -;; (md5-update M2) -;; ... -;; (md5-update Mn) -;; (md5-final) - -;;; Copyright and licence: ---------------------------------------------------- - -;; Copyright (C) 1995 by Gareth Rees -;; Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm -;; -;; md5.el is free software; you can redistribute it and/or modify it -;; under the terms of the GNU General Public License as published by the -;; Free Software Foundation; either version 2, or (at your option) any -;; later version. -;; -;; md5.el is distributed in the hope that it will be useful, but WITHOUT -;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -;; for more details. -;; -;; The original copyright notice is given below, as required by the -;; licence for the original code. This code is distributed under *both* -;; RSA's original licence and the GNU General Public Licence. (There -;; should be no problems, as the former is more liberal than the -;; latter). - -;;; Original copyright notice: ------------------------------------------------ - -;; Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. -;; -;; License to copy and use this software is granted provided that it is -;; identified as the "RSA Data Security, Inc. MD5 Message- Digest -;; Algorithm" in all material mentioning or referencing this software or -;; this function. -;; -;; License is also granted to make and use derivative works provided -;; that such works are identified as "derived from the RSA Data -;; Security, Inc. MD5 Message-Digest Algorithm" in all material -;; mentioning or referencing the derived work. -;; -;; RSA Data Security, Inc. makes no representations concerning either -;; the merchantability of this software or the suitability of this -;; software for any particular purpose. It is provided "as is" without -;; express or implied warranty of any kind. -;; -;; These notices must be retained in any copies of any part of this -;; documentation and/or software. - -;;; Code: --------------------------------------------------------------------- - -(defvar md5-program "md5sum" - "*Program that reads a message on its standard input and writes an -MD5 digest on its output.") - -(defvar md5-maximum-internal-length 4096 - "*The maximum size of a piece of data that should use the MD5 routines -written in lisp. If a message exceeds this, it will be run through an -external filter for processing. Also see the `md5-program' variable. -This variable has no effect if you call the md5-init|update|final -functions - only used by the `md5' function's simpler interface.") - -(defvar md5-bits (make-vector 4 0) - "Number of bits handled, modulo 2^64. -Represented as four 16-bit numbers, least significant first.") -(defvar md5-buffer (make-vector 4 '(0 . 0)) - "Scratch buffer (four 32-bit integers).") -(defvar md5-input (make-vector 64 0) - "Input buffer (64 bytes).") - -(defun md5-unhex (x) - (if (> x ?9) - (if (>= x ?a) - (+ 10 (- x ?a)) - (+ 10 (- x ?A))) - (- x ?0))) - -(defun md5-encode (message) - "Encodes MESSAGE using the MD5 message digest algorithm. -MESSAGE must be a string or an array of bytes. -Returns a vector of 16 bytes containing the message digest." - (if (<= (length message) md5-maximum-internal-length) - (progn - (md5-init) - (md5-update message) - (md5-final)) - (save-excursion - (set-buffer (get-buffer-create " *md5-work*")) - (erase-buffer) - (insert message) - (call-process-region (point-min) (point-max) - (or shell-file-name "/bin/sh") - t (current-buffer) nil - "-c" md5-program) - ;; MD5 digest is 32 chars long - ;; mddriver adds a newline to make neaten output for tty - ;; viewing, make sure we leave it behind. - (let ((data (buffer-substring (point-min) (+ (point-min) 32))) - (vec (make-vector 16 0)) - (ctr 0)) - (while (< ctr 16) - (aset vec ctr (+ (* 16 (md5-unhex (aref data (* ctr 2)))) - (md5-unhex (aref data (1+ (* ctr 2)))))) - (setq ctr (1+ ctr))))))) - -(defsubst md5-add (x y) - "Return 32-bit sum of 32-bit integers X and Y." - (let ((m (+ (car x) (car y))) - (l (+ (cdr x) (cdr y)))) - (cons (logand 65535 (+ m (lsh l -16))) (logand l 65535)))) - -;; FF, GG, HH and II are basic MD5 functions, providing transformations -;; for rounds 1, 2, 3 and 4 respectively. Each function follows this -;; pattern of computation (where ROTATE(x,y) means rotate 32-bit value x -;; by y bits to the left): -;; -;; FF(a,b,c,d,x,s,ac) = ROTATE(a + F(b,c,d) + x + ac,s) + b -;; -;; so we use the macro `md5-make-step' to construct each one. The -;; helper functions F, G, H and I operate on 16-bit numbers; the full -;; operation splits its inputs, operates on the halves separately and -;; then puts the results together. - -(defsubst md5-F (x y z) (logior (logand x y) (logand (lognot x) z))) -(defsubst md5-G (x y z) (logior (logand x z) (logand y (lognot z)))) -(defsubst md5-H (x y z) (logxor x y z)) -(defsubst md5-I (x y z) (logxor y (logior x (logand 65535 (lognot z))))) - -(defmacro md5-make-step (name func) - (` - (defun (, name) (a b c d x s ac) - (let* - ((m1 (+ (car a) ((, func) (car b) (car c) (car d)) (car x) (car ac))) - (l1 (+ (cdr a) ((, func) (cdr b) (cdr c) (cdr d)) (cdr x) (cdr ac))) - (m2 (logand 65535 (+ m1 (lsh l1 -16)))) - (l2 (logand 65535 l1)) - (m3 (logand 65535 (if (> s 15) - (+ (lsh m2 (- s 32)) (lsh l2 (- s 16))) - (+ (lsh m2 s) (lsh l2 (- s 16)))))) - (l3 (logand 65535 (if (> s 15) - (+ (lsh l2 (- s 32)) (lsh m2 (- s 16))) - (+ (lsh l2 s) (lsh m2 (- s 16))))))) - (md5-add (cons m3 l3) b))))) - -(md5-make-step md5-FF md5-F) -(md5-make-step md5-GG md5-G) -(md5-make-step md5-HH md5-H) -(md5-make-step md5-II md5-I) - -(defun md5-init () - "Initialise the state of the message-digest routines." - (aset md5-bits 0 0) - (aset md5-bits 1 0) - (aset md5-bits 2 0) - (aset md5-bits 3 0) - (aset md5-buffer 0 '(26437 . 8961)) - (aset md5-buffer 1 '(61389 . 43913)) - (aset md5-buffer 2 '(39098 . 56574)) - (aset md5-buffer 3 '( 4146 . 21622))) - -(defun md5-update (string) - "Update the current MD5 state with STRING (an array of bytes)." - (let ((len (length string)) - (i 0) - (j 0)) - (while (< i len) - ;; Compute number of bytes modulo 64 - (setq j (% (/ (aref md5-bits 0) 8) 64)) - - ;; Store this byte (truncating to 8 bits to be sure) - (aset md5-input j (logand 255 (aref string i))) - - ;; Update number of bits by 8 (modulo 2^64) - (let ((c 8) (k 0)) - (while (and (> c 0) (< k 4)) - (let ((b (aref md5-bits k))) - (aset md5-bits k (logand 65535 (+ b c))) - (setq c (if (> b (- 65535 c)) 1 0) - k (1+ k))))) - - ;; Increment number of bytes processed - (setq i (1+ i)) - - ;; When 64 bytes accumulated, pack them into sixteen 32-bit - ;; integers in the array `in' and then tranform them. - (if (= j 63) - (let ((in (make-vector 16 (cons 0 0))) - (k 0) - (kk 0)) - (while (< k 16) - (aset in k (md5-pack md5-input kk)) - (setq k (+ k 1) kk (+ kk 4))) - (md5-transform in)))))) - -(defun md5-pack (array i) - "Pack the four bytes at ARRAY reference I to I+3 into a 32-bit integer." - (cons (+ (lsh (aref array (+ i 3)) 8) (aref array (+ i 2))) - (+ (lsh (aref array (+ i 1)) 8) (aref array (+ i 0))))) - -(defun md5-byte (array n b) - "Unpack byte B (0 to 3) from Nth member of ARRAY of 32-bit integers." - (let ((e (aref array n))) - (cond ((eq b 0) (logand 255 (cdr e))) - ((eq b 1) (lsh (cdr e) -8)) - ((eq b 2) (logand 255 (car e))) - ((eq b 3) (lsh (car e) -8))))) - -(defun md5-final () - (let ((in (make-vector 16 (cons 0 0))) - (j 0) - (digest (make-vector 16 0)) - (padding)) - - ;; Save the number of bits in the message - (aset in 14 (cons (aref md5-bits 1) (aref md5-bits 0))) - (aset in 15 (cons (aref md5-bits 3) (aref md5-bits 2))) - - ;; Compute number of bytes modulo 64 - (setq j (% (/ (aref md5-bits 0) 8) 64)) - - ;; Pad out computation to 56 bytes modulo 64 - (setq padding (make-vector (if (< j 56) (- 56 j) (- 120 j)) 0)) - (aset padding 0 128) - (md5-update padding) - - ;; Append length in bits and transform - (let ((k 0) (kk 0)) - (while (< k 14) - (aset in k (md5-pack md5-input kk)) - (setq k (+ k 1) kk (+ kk 4)))) - (md5-transform in) - - ;; Store the results in the digest - (let ((k 0) (kk 0)) - (while (< k 4) - (aset digest (+ kk 0) (md5-byte md5-buffer k 0)) - (aset digest (+ kk 1) (md5-byte md5-buffer k 1)) - (aset digest (+ kk 2) (md5-byte md5-buffer k 2)) - (aset digest (+ kk 3) (md5-byte md5-buffer k 3)) - (setq k (+ k 1) kk (+ kk 4)))) - - ;; Return digest - digest)) - -;; It says in the RSA source, "Note that if the Mysterious Constants are -;; arranged backwards in little-endian order and decrypted with the DES -;; they produce OCCULT MESSAGES!" Security through obscurity? - -(defun md5-transform (in) - "Basic MD5 step. Transform md5-buffer based on array IN." - (let ((a (aref md5-buffer 0)) - (b (aref md5-buffer 1)) - (c (aref md5-buffer 2)) - (d (aref md5-buffer 3))) - (setq - a (md5-FF a b c d (aref in 0) 7 '(55146 . 42104)) - d (md5-FF d a b c (aref in 1) 12 '(59591 . 46934)) - c (md5-FF c d a b (aref in 2) 17 '( 9248 . 28891)) - b (md5-FF b c d a (aref in 3) 22 '(49597 . 52974)) - a (md5-FF a b c d (aref in 4) 7 '(62844 . 4015)) - d (md5-FF d a b c (aref in 5) 12 '(18311 . 50730)) - c (md5-FF c d a b (aref in 6) 17 '(43056 . 17939)) - b (md5-FF b c d a (aref in 7) 22 '(64838 . 38145)) - a (md5-FF a b c d (aref in 8) 7 '(27008 . 39128)) - d (md5-FF d a b c (aref in 9) 12 '(35652 . 63407)) - c (md5-FF c d a b (aref in 10) 17 '(65535 . 23473)) - b (md5-FF b c d a (aref in 11) 22 '(35164 . 55230)) - a (md5-FF a b c d (aref in 12) 7 '(27536 . 4386)) - d (md5-FF d a b c (aref in 13) 12 '(64920 . 29075)) - c (md5-FF c d a b (aref in 14) 17 '(42617 . 17294)) - b (md5-FF b c d a (aref in 15) 22 '(18868 . 2081)) - a (md5-GG a b c d (aref in 1) 5 '(63006 . 9570)) - d (md5-GG d a b c (aref in 6) 9 '(49216 . 45888)) - c (md5-GG c d a b (aref in 11) 14 '( 9822 . 23121)) - b (md5-GG b c d a (aref in 0) 20 '(59830 . 51114)) - a (md5-GG a b c d (aref in 5) 5 '(54831 . 4189)) - d (md5-GG d a b c (aref in 10) 9 '( 580 . 5203)) - c (md5-GG c d a b (aref in 15) 14 '(55457 . 59009)) - b (md5-GG b c d a (aref in 4) 20 '(59347 . 64456)) - a (md5-GG a b c d (aref in 9) 5 '( 8673 . 52710)) - d (md5-GG d a b c (aref in 14) 9 '(49975 . 2006)) - c (md5-GG c d a b (aref in 3) 14 '(62677 . 3463)) - b (md5-GG b c d a (aref in 8) 20 '(17754 . 5357)) - a (md5-GG a b c d (aref in 13) 5 '(43491 . 59653)) - d (md5-GG d a b c (aref in 2) 9 '(64751 . 41976)) - c (md5-GG c d a b (aref in 7) 14 '(26479 . 729)) - b (md5-GG b c d a (aref in 12) 20 '(36138 . 19594)) - a (md5-HH a b c d (aref in 5) 4 '(65530 . 14658)) - d (md5-HH d a b c (aref in 8) 11 '(34673 . 63105)) - c (md5-HH c d a b (aref in 11) 16 '(28061 . 24866)) - b (md5-HH b c d a (aref in 14) 23 '(64997 . 14348)) - a (md5-HH a b c d (aref in 1) 4 '(42174 . 59972)) - d (md5-HH d a b c (aref in 4) 11 '(19422 . 53161)) - c (md5-HH c d a b (aref in 7) 16 '(63163 . 19296)) - b (md5-HH b c d a (aref in 10) 23 '(48831 . 48240)) - a (md5-HH a b c d (aref in 13) 4 '(10395 . 32454)) - d (md5-HH d a b c (aref in 0) 11 '(60065 . 10234)) - c (md5-HH c d a b (aref in 3) 16 '(54511 . 12421)) - b (md5-HH b c d a (aref in 6) 23 '( 1160 . 7429)) - a (md5-HH a b c d (aref in 9) 4 '(55764 . 53305)) - d (md5-HH d a b c (aref in 12) 11 '(59099 . 39397)) - c (md5-HH c d a b (aref in 15) 16 '( 8098 . 31992)) - b (md5-HH b c d a (aref in 2) 23 '(50348 . 22117)) - a (md5-II a b c d (aref in 0) 6 '(62505 . 8772)) - d (md5-II d a b c (aref in 7) 10 '(17194 . 65431)) - c (md5-II c d a b (aref in 14) 15 '(43924 . 9127)) - b (md5-II b c d a (aref in 5) 21 '(64659 . 41017)) - a (md5-II a b c d (aref in 12) 6 '(25947 . 22979)) - d (md5-II d a b c (aref in 3) 10 '(36620 . 52370)) - c (md5-II c d a b (aref in 10) 15 '(65519 . 62589)) - b (md5-II b c d a (aref in 1) 21 '(34180 . 24017)) - a (md5-II a b c d (aref in 8) 6 '(28584 . 32335)) - d (md5-II d a b c (aref in 15) 10 '(65068 . 59104)) - c (md5-II c d a b (aref in 6) 15 '(41729 . 17172)) - b (md5-II b c d a (aref in 13) 21 '(19976 . 4513)) - a (md5-II a b c d (aref in 4) 6 '(63315 . 32386)) - d (md5-II d a b c (aref in 11) 10 '(48442 . 62005)) - c (md5-II c d a b (aref in 2) 15 '(10967 . 53947)) - b (md5-II b c d a (aref in 9) 21 '(60294 . 54161))) - - (aset md5-buffer 0 (md5-add (aref md5-buffer 0) a)) - (aset md5-buffer 1 (md5-add (aref md5-buffer 1) b)) - (aset md5-buffer 2 (md5-add (aref md5-buffer 2) c)) - (aset md5-buffer 3 (md5-add (aref md5-buffer 3) d)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Here begins the merger with the XEmacs API and the md5.el from the URL -;;; package. Courtesy wmperry@spry.com -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun md5 (object &optional start end coding noerror) - "Return the MD5 (a secure message digest algorithm) of an object. -OBJECT is either a string or a buffer. -Optional arguments START and END denote buffer positions for computing the -hash of a portion of OBJECT. - -The optional CODING and NOERROR arguments are ignored. They are no -more than placeholders to ensure the compatibility with XEmacsen with -file-coding or Mule support." - (let ((buffer nil)) - (unwind-protect - (save-excursion - (setq buffer (generate-new-buffer " *md5-work*")) - (set-buffer buffer) - (cond - ((bufferp object) - (insert-buffer-substring object start end)) - ((stringp object) - (insert (if (or start end) - (substring object start end) - object))) - (t nil)) - (prog1 - (if (<= (point-max) md5-maximum-internal-length) - (mapconcat - (function (lambda (node) (format "%02x" node))) - (md5-encode (buffer-string)) - "") - (call-process-region (point-min) (point-max) - (or shell-file-name "/bin/sh") - t buffer nil - "-c" md5-program) - ;; MD5 digest is 32 chars long - ;; mddriver adds a newline to make neaten output for tty - ;; viewing, make sure we leave it behind. - (buffer-substring (point-min) (+ (point-min) 32))) - (kill-buffer buffer))) - (and buffer (kill-buffer buffer) nil)))) - -(provide 'md5) - -;;; md5.el ends here diff --git a/lisp/message.el b/lisp/message.el index 6784330..6634e39 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -41,12 +41,7 @@ (require 'smtp) (defvar gnus-message-group-art) (defvar gnus-list-identifiers)) ; gnus-sum is required where necessary -(eval-and-compile - (if (boundp 'MULE) - (progn - (require 'base64) - (require 'canlock-om)) - (require 'canlock))) +(require 'canlock) (require 'mailheader) (require 'nnheader) ;; This is apparently necessary even though things are autoloaded. @@ -64,12 +59,6 @@ (require 'mml)) (require 'rfc822) -(eval-and-compile - (autoload 'customize-save-variable "cus-edit") ;; for Mule 2. - (autoload 'sha1 "sha1-el") - (autoload 'gnus-find-method-for-group "gnus") - (autoload 'nnvirtual-find-group-art "nnvirtual") - (autoload 'gnus-group-decoded-name "gnus-group")) (defgroup message '((user-mail-address custom-variable) (user-full-name custom-variable)) @@ -667,15 +656,13 @@ Done before generating the new subject of a forward." (if (string-match "[[:digit:]]" "1") ;; support POSIX? "\\([ \t]*[-_.[:word:]]+>+\\|[ \t]*[]>|}+]\\)+" ;; ?-, ?_ or ?. MUST NOT be in syntax entry w. - (let ((old-table (syntax-table)) - non-word-constituents) - (set-syntax-table text-mode-syntax-table) - (setq non-word-constituents - (concat - (if (string-match "\\w" "-") "" "-") - (if (string-match "\\w" "_") "" "_") - (if (string-match "\\w" ".") "" "."))) - (set-syntax-table old-table) + (let (non-word-constituents) + (with-syntax-table text-mode-syntax-table + (setq non-word-constituents + (concat + (if (string-match "\\w" "-") "" "-") + (if (string-match "\\w" "_") "" "_") + (if (string-match "\\w" ".") "" ".")))) (if (equal non-word-constituents "") "\\([ \t]*\\(\\w\\)+>+\\|[ \t]*[]>|}+]\\)+" (concat "\\([ \t]*\\(\\w\\|[" @@ -888,11 +875,6 @@ might set this variable to '(\"-f\" \"you@some.where\")." :type '(choice (function) (repeat string))) -(defvar message-cater-to-broken-inn t - "Non-nil means Gnus should not fold the `References' header. -Folding `References' makes ancient versions of INN create incorrect -NOV lines.") - (eval-when-compile (defvar gnus-post-method) (defvar gnus-select-method)) @@ -919,7 +901,7 @@ variable isn't used." ;; is nil. See: http://article.gmane.org/gmane.emacs.gnus.general/51138 (defcustom message-generate-headers-first '(references) "Which headers should be generated before starting to compose a message. -If `t', generate all required headers. This can also be a list of headers to +If t, generate all required headers. This can also be a list of headers to generate. The variables `message-required-news-headers' and `message-required-mail-headers' specify which headers to generate. @@ -1206,9 +1188,6 @@ actually occur." (defvar message-user-agent nil "String of the form of PRODUCT/VERSION. Used for User-Agent header field.") -(static-when (boundp 'MULE) - (require 'reporter));; `define-mail-user-agent' is here. - ;;;###autoload (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit @@ -1749,30 +1728,35 @@ no, only reply back to the author." :type 'regexp) (eval-and-compile - (autoload 'message-setup-toolbar "messagexmas") - (autoload 'mh-new-draft-name "mh-comp") - (autoload 'mh-send-letter "mh-comp") - (autoload 'gnus-point-at-eol "gnus-util") - (autoload 'gnus-point-at-bol "gnus-util") - (autoload 'gnus-output-to-rmail "gnus-util") - (autoload 'gnus-output-to-mail "gnus-util") - (autoload 'nndraft-request-associate-buffer "nndraft") - (autoload 'nndraft-request-expire-articles "nndraft") - (autoload 'gnus-open-server "gnus-int") - (autoload 'gnus-request-post "gnus-int") - (autoload 'gnus-copy-article-buffer "gnus-msg") (autoload 'gnus-alive-p "gnus-util") - (autoload 'gnus-server-string "gnus") + (autoload 'gnus-delay-article "gnus-delay") + (autoload 'gnus-extract-address-components "gnus-util") + (autoload 'gnus-find-method-for-group "gnus") + (autoload 'gnus-group-decoded-name "gnus-group") (autoload 'gnus-group-name-charset "gnus-group") (autoload 'gnus-group-name-decode "gnus-group") (autoload 'gnus-groups-from-server "gnus") - (autoload 'rmail-output "rmailout") - (autoload 'gnus-delay-article "gnus-delay") (autoload 'gnus-make-local-hook "gnus-util") - (autoload 'gnus-extract-address-components "gnus-util")) + (autoload 'gnus-open-server "gnus-int") + (autoload 'gnus-output-to-mail "gnus-util") + (autoload 'gnus-output-to-rmail "gnus-util") + (autoload 'gnus-request-post "gnus-int") + (autoload 'gnus-server-string "gnus") + (autoload 'idna-to-ascii "idna") + (autoload 'message-setup-toolbar "messagexmas") + (autoload 'mh-new-draft-name "mh-comp") + (autoload 'mh-send-letter "mh-comp") + (autoload 'mu-cite-original "mu-cite") + (autoload 'nndraft-request-associate-buffer "nndraft") + (autoload 'nndraft-request-expire-articles "nndraft") + (autoload 'nnvirtual-find-group-art "nnvirtual") + (autoload 'rmail-dont-reply-to "mail-utils") + (autoload 'rmail-msg-is-pruned "rmail") + (autoload 'rmail-msg-restore-non-pruned-header "rmail") + (autoload 'rmail-output "rmailout")) -(eval-and-compile - (autoload 'mu-cite-original "mu-cite")) +(eval-when-compile + (autoload 'sha1 "sha1-el")) @@ -1868,7 +1852,6 @@ is used by default." The buffer is expected to be narrowed to just the header of the message; see `message-narrow-to-headers-or-head'." (let* ((inhibit-point-motion-hooks t) - (case-fold-search t) (value (mail-fetch-field header nil (not not-all)))) (when value (while (string-match "\n[\t ]+" value) @@ -1891,9 +1874,7 @@ see `message-narrow-to-headers-or-head'." (progn (forward-line 1) (if (re-search-forward "^[^ \n\t]" nil t) - (progn - (beginning-of-line) - (point)) + (point-at-bol) (point-max)))) (goto-char (point-min))) @@ -2692,11 +2673,6 @@ M-RET `message-newline-and-reformat' (break the line and reformat)." (setq message-parameter-alist (copy-sequence message-startup-parameter-alist)) (message-setup-fill-variables) - (set - (make-local-variable 'paragraph-separate) - (format "\\(%s\\)\\|\\(%s\\)" - paragraph-separate - "<#!*/?\\(multipart\\|part\\|external\\|mml\\|secure\\)")) ;; Allow using comment commands to add/remove quoting. (set (make-local-variable 'comment-start) message-yank-prefix) (if (featurep 'xemacs) @@ -2743,7 +2719,8 @@ M-RET `message-newline-and-reformat' (break the line and reformat)." "---+$\\|" ; delimiters for forwarded messages page-delimiter "$\\|" ; spoiler warnings ".*wrote:$\\|" ; attribution lines - quote-prefix-regexp "$")) ; empty lines in quoted text + quote-prefix-regexp "$\\|" ; empty lines in quoted text + mime-edit-tag-regexp)) ; MIME-Edit tags (setq paragraph-separate paragraph-start) (setq adaptive-fill-regexp (concat quote-prefix-regexp "\\|" adaptive-fill-regexp)) @@ -3032,16 +3009,23 @@ or in the synonym headers, defined by `message-header-synonyms'." (when (message-goto-signature) (forward-line -2))) -(defun message-kill-to-signature () - "Deletes all text up to the signature." - (interactive) - (let ((point (point))) - (message-goto-signature) - (unless (eobp) - (end-of-line -1)) - (kill-region point (point)) - (unless (bolp) - (insert "\n")))) +(defun message-kill-to-signature (&optional arg) + "Kill all text up to the signature. +If a numberic argument or prefix arg is given, leave that number +of lines before the signature intact." + (interactive "p") + (save-excursion + (save-restriction + (let ((point (point))) + (narrow-to-region point (point-max)) + (message-goto-signature) + (unless (eobp) + (if (and arg (numberp arg)) + (forward-line (- -1 arg)) + (end-of-line -1))) + (unless (= point (point)) + (kill-region point (point)) + (insert "\n")))))) (defun message-newline-and-reformat (&optional arg not-break) "Insert four newlines, and then reformat if inside quoted text. @@ -3743,10 +3727,9 @@ Instead, just auto-save the buffer and then bury it." (defun message-delete-frame (frame org-frame) "Delete frame for editing message." - (when (and (or (static-if (featurep 'xemacs) - (device-on-window-system-p) - window-system) - (>= emacs-major-version 20)) + (when (and (static-if (featurep 'xemacs) + (device-on-window-system-p) + window-system) (or (and (eq message-delete-frame-on-exit t) (select-frame frame) (or (eq frame org-frame) @@ -3951,7 +3934,7 @@ used to distinguish whether the invisible text is a MIME part or not." font-lock-face highlight)))) (when hidden-start (goto-char hidden-start) - (set-window-start (selected-window) (gnus-point-at-bol)) + (set-window-start (selected-window) (point-at-bol)) (unless (yes-or-no-p "Invisible text found and made visible; continue sending? ") (error "Invisible text found and made visible"))))) @@ -4428,14 +4411,15 @@ This sub function is for exclusive use of `message-send-news'." "Send the prepared message buffer with `smtpmail-send-it'. This only differs from `smtpmail-send-it' that this command evaluates `message-send-mail-hook' just before sending a message. It is useful -if your ISP requires the POP-before-SMTP authentication. See the -documentation for the function `mail-source-touch-pop'." +if your ISP requires the POP-before-SMTP authentication. See the Gnus +manual for details." (run-hooks 'message-send-mail-hook) (smtpmail-send-it)) (defun message-canlock-generate () "Return a string that is non-trivial to guess. Do not use this for anything important, it is cryptographically weak." + (require 'sha1-el) (let (sha1-maximum-internal-length) (sha1 (concat (message-unique-id) (format "%x%x%x" (random) (random t) (random)) @@ -5023,7 +5007,6 @@ Otherwise, generate and save a value for `canlock-password' first." "Process Fcc headers in the current buffer." (let ((case-fold-search t) (coding-system-for-write 'raw-text) - (output-coding-system 'raw-text) list file (mml-externalize-attachments message-fcc-externalize-attachments)) (save-excursion @@ -5507,8 +5490,6 @@ I.e., calling it on a Subject: header is useless." (incf paren)) (and (= (% dquote 2) 1) (= (% paren 2) 1)))))) -(autoload 'idna-to-ascii "idna") - (defun message-idna-to-ascii-rhs-1 (header) "Interactively potentially IDNA encode domain names in HEADER." (let (rhs ace start startpos endpos ovl) @@ -5665,7 +5646,7 @@ Headers already prepared in the buffer are not modified." (forward-line -1))) ;; The value of this header was empty, so we clear ;; totally and insert the new value. - (delete-region (point) (gnus-point-at-eol)) + (delete-region (point) (point-at-eol)) ;; If the header is optional, and the header was ;; empty, we can't insert it anyway. (unless optionalp @@ -5801,8 +5782,9 @@ If the current line has `message-yank-prefix', insert it on the new line." (defun message-shorten-references (header references) "Trim REFERENCES to be 21 Message-ID long or less, and fold them. -If folding is disallowed, also check that the REFERENCES are less -than 988 characters long, and if they are not, trim them until they are." +When sending via news, also check that the REFERENCES are less +than 988 characters long, and if they are not, trim them until +they are." (let ((maxcount 21) (count 0) (cut 2) @@ -5824,33 +5806,25 @@ than 988 characters long, and if they are not, trim them until they are." (message-shorten-1 refs cut surplus) (decf count surplus))) - ;; If folding is disallowed, make sure the total length (including - ;; the spaces between) will be less than MAXSIZE characters. + ;; When sending via news, make sure the total folded length will + ;; be less than 998 characters. This is to cater to broken INN + ;; 2.3 which counts the total number of characters in a header + ;; rather than the physical line length of each line, as it shuld. ;; - ;; Only disallow folding for News messages. At this point the headers - ;; have not been generated, thus we use message-this-is-news directly. - (when (and message-this-is-news message-cater-to-broken-inn) - (let ((maxsize 988) - (totalsize (+ (apply #'+ (mapcar #'length refs)) - (1- count))) - (surplus 0) - (ptr (nthcdr (1- cut) refs))) - ;; Decide how many elements to cut off... - (while (> totalsize maxsize) - (decf totalsize (1+ (length (car ptr)))) - (incf surplus) - (setq ptr (cdr ptr))) - ;; ...and do it. - (when (> surplus 0) - (message-shorten-1 refs cut surplus)))) - + ;; This hack should be removed when it's believed than INN 2.3 is + ;; no longer widely used. + ;; + ;; At this point the headers have not been generated, thus we use + ;; message-this-is-news directly. + (when message-this-is-news + (while (< 998 + (with-temp-buffer + (message-fill-header header (mapconcat #'identity refs " ")) + (buffer-size))) + (message-shorten-1 refs cut 1))) ;; Finally, collect the references back into a string and insert ;; it into the buffer. - (let ((refstring (mapconcat #'identity refs " "))) - (if (and message-this-is-news message-cater-to-broken-inn) - (insert (capitalize (symbol-name header)) ": " - refstring "\n") - (message-fill-header header refstring))))) + (message-fill-header header (mapconcat #'identity refs " ")))) (defun message-position-point () "Move point to where the user probably wants to find it." @@ -5899,7 +5873,7 @@ beginning of line." (message-point-in-header-p)) (let* ((here (point)) (bol (progn (beginning-of-line n) (point))) - (eol (gnus-point-at-eol)) + (eol (point-at-eol)) (eoh (re-search-forward ": *" eol t))) (if (or (not eoh) (equal here eoh)) (goto-char bol) @@ -5950,10 +5924,9 @@ beginning of line." (defun message-pop-to-buffer (name) "Pop to buffer NAME, and warn if it already exists and is modified." (let ((buffer (get-buffer name)) - (pop-up-frames (and (or (static-if (featurep 'xemacs) - (device-on-window-system-p) - window-system) - (>= emacs-major-version 20)) + (pop-up-frames (and (static-if (featurep 'xemacs) + (device-on-window-system-p) + window-system) message-use-multi-frames))) (if (and buffer (buffer-name buffer)) @@ -6096,12 +6069,7 @@ are not included." (when message-default-headers (insert message-default-headers) (or (bolp) (insert ?\n))) - (put-text-property - (point) - (progn - (insert mail-header-separator "\n") - (1- (point))) - 'read-only nil) + (insert mail-header-separator "\n") (forward-line -1) (when (message-news-p) (when message-default-news-headers @@ -6160,9 +6128,7 @@ are not included." message-auto-save-directory)) (setq buffer-auto-save-file-name (make-auto-save-file-name))) (clear-visited-file-modtime) - (static-if (boundp 'MULE) - (set-file-coding-system message-draft-coding-system) - (setq buffer-file-coding-system message-draft-coding-system)))) + (setq buffer-file-coding-system message-draft-coding-system))) (defun message-disassociate-draft () "Disassociate the message buffer from the drafts directory." @@ -7002,8 +6968,6 @@ Optional NEWS will use news to forward instead of mail." (defun message-forward-rmail-make-body (forward-buffer) (save-window-excursion (set-buffer forward-buffer) - ;; Rmail doesn't have rmail-msg-restore-non-pruned-header in Emacs - ;; 20. FIXIT, or we drop support for rmail in Emacs 20. (if (rmail-msg-is-pruned) (rmail-msg-restore-non-pruned-header))) (message-forward-make-body forward-buffer)) @@ -7225,7 +7189,13 @@ which specify the range to operate on." (if (eq (char-after) (char-after (- (point) 2))) (delete-char -2)))))) -(defalias 'message-exchange-point-and-mark 'exchange-point-and-mark) +(defun message-exchange-point-and-mark () + "Exchange point and mark, but don't activate region if it was inactive." + (unless (prog1 + (message-mark-active-p) + (exchange-point-and-mark)) + (setq mark-active nil))) + (defalias 'message-make-overlay 'make-overlay) (defalias 'message-delete-overlay 'delete-overlay) (defalias 'message-overlay-put 'overlay-put) @@ -7306,11 +7276,14 @@ which specify the range to operate on." :type '(alist :key-type regexp :value-type function)) (defcustom message-expand-name-function - (if (fboundp 'bbdb-complete-name) - 'bbdb-complete-name - (if (fboundp 'lsdb-complete-name) - 'lsdb-complete-name - 'expand-abbrev)) + (cond ((and (boundp 'eudc-protocol) + eudc-protocol) + 'eudc-expand-inline) + ((fboundp 'bbdb-complete-name) + 'bbdb-complete-name) + ((fboundp 'lsdb-complete-name) + 'lsdb-complete-name) + (t 'expand-abbrev)) "*A function called to expand addresses in field body." :group 'message :type 'function) diff --git a/lisp/messagexmas.el b/lisp/messagexmas.el index d94afa8..7bbac9f 100644 --- a/lisp/messagexmas.el +++ b/lisp/messagexmas.el @@ -122,9 +122,8 @@ If it is non-nil, it must be a toolbar. The five valid values are 'message-xmas-exchange-point-and-mark) (defalias 'message-mark-active-p 'region-exists-p) - (when (>= emacs-major-version 20) - (defalias 'message-make-caesar-translation-table - 'message-xmas-make-caesar-translation-table)) + (defalias 'message-make-caesar-translation-table + 'message-xmas-make-caesar-translation-table) (defalias 'message-make-overlay 'make-extent) (defalias 'message-delete-overlay 'delete-extent) (defalias 'message-overlay-put 'set-extent-property)) diff --git a/lisp/mm-bodies.el b/lisp/mm-bodies.el index 3475168..6470ddf 100644 --- a/lisp/mm-bodies.el +++ b/lisp/mm-bodies.el @@ -26,10 +26,6 @@ ;;; Code: -(eval-and-compile - (or (fboundp 'base64-decode-region) - (require 'base64))) - (eval-when-compile (defvar mm-uu-decode-function) (defvar mm-uu-binhex-decode-function)) @@ -38,9 +34,16 @@ (require 'rfc2047) (require 'mm-encode) -;; 8bit treatment gets any char except: 0x32 - 0x7f, CR, LF, TAB, BEL, +;; 8bit treatment gets any char except: 0x32 - 0x7f, LF, TAB, BEL, ;; BS, vertical TAB, form feed, and ^_ -(defvar mm-7bit-chars "\x20-\x7f\r\n\t\x7\x8\xb\xc\x1f") +;; +;; Note that CR is *not* included, as that would allow a non-paired CR +;; in the body contrary to RFC 2822: +;; +;; - CR and LF MUST only occur together as CRLF; they MUST NOT +;; appear independently in the body. + +(defvar mm-7bit-chars "\x20-\x7f\n\t\x7\x8\xb\xc\x1f") (defcustom mm-body-charset-encoding-alist '((iso-2022-jp . 7bit) @@ -49,6 +52,8 @@ ;; known to break servers. ;; Note: UTF-16 variants are invalid for text parts [RFC 2781], ;; so this can't happen :-/. + ;; PPS: Yes, it can happen if the user specifies UTF-16 in the MML + ;; markup. - jh. (utf-16 . base64) (utf-16be . base64) (utf-16le . base64)) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 0fcc1be..67b040e 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -32,7 +32,6 @@ (require 'term)) (eval-and-compile - (autoload 'executable-find "executable") (autoload 'mm-inline-partial "mm-partial") (autoload 'mm-inline-external-body "mm-extern") (autoload 'mm-insert-inline "mm-view")) @@ -41,7 +40,7 @@ (defgroup mime-display () "Display of MIME in mail and news articles." - :link '(custom-manual "(emacs-mime)Customization") + :link '(custom-manual "(emacs-mime)Display Customization") :version "21.1" :group 'mail :group 'news @@ -49,7 +48,7 @@ (defgroup mime-security () "MIME security in mail and news articles." - :link '(custom-manual "(emacs-mime)Customization") + :link '(custom-manual "(emacs-mime)Display Customization") :group 'mail :group 'news :group 'multimedia) @@ -837,16 +836,16 @@ external if displayed external." (string= total "'%s'") (string= total "\"%s\"")) (setq uses-stdin nil) - (push (mm-quote-arg + (push (shell-quote-argument (gnus-map-function mm-path-name-rewrite-functions file)) out)) ((string= total "%t") - (push (mm-quote-arg (car type-list)) out)) + (push (shell-quote-argument (car type-list)) out)) (t - (push (mm-quote-arg (or (cdr (assq (intern sub) ctl)) "")) out)))) + (push (shell-quote-argument (or (cdr (assq (intern sub) ctl)) "")) out)))) (push (substring method beg (length method)) out) (when uses-stdin (push "<" out) - (push (mm-quote-arg + (push (shell-quote-argument (gnus-map-function mm-path-name-rewrite-functions file)) out)) (mapconcat 'identity (nreverse out) ""))) @@ -1094,9 +1093,10 @@ string if you do not like underscores." (setq filename (gnus-map-function mm-file-name-rewrite-functions (file-name-nondirectory filename)))) (setq file - (read-file-name "Save MIME part to: " - (or mm-default-directory default-directory) - nil nil (or filename name ""))) + (mm-with-multibyte + (read-file-name "Save MIME part to: " + (or mm-default-directory default-directory) + nil nil (or filename name "")))) (setq mm-default-directory (file-name-directory file)) (and (or (not (file-exists-p file)) (yes-or-no-p (format "File %s already exists; overwrite? " @@ -1455,6 +1455,12 @@ If RECURSIVE, search recursively." parts)) (defun mm-multiple-handles (handles) + (and (listp handles) + (> (length handles) 1) + (or (listp (car handles)) + (stringp (car handles))))) + +(defun mm-complicated-handles (handles) (and (listp (car handles)) (> (length handles) 1))) diff --git a/lisp/mm-url.el b/lisp/mm-url.el index 7ff8140..405bc05 100644 --- a/lisp/mm-url.el +++ b/lisp/mm-url.el @@ -1,5 +1,5 @@ ;;; mm-url.el --- a wrapper of url functions/commands for Gnus -;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu @@ -400,9 +400,7 @@ spaces. Die Die Die." (encode-coding-string chunk (if (fboundp 'find-coding-systems-string) (car (find-coding-systems-string chunk)) - (static-if (boundp 'MULE) - file-coding-system - buffer-file-coding-system))) + buffer-file-coding-system)) chunk) "")) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index 5c1ea1e..65e2a95 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -1,5 +1,5 @@ ;;; mm-util.el --- Utility functions for Mule and low level things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -25,9 +25,9 @@ ;;; Code: -(eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) -(eval-when-compile (require 'static)) +(eval-when-compile + (require 'cl) + (require 'static)) (require 'mail-prsvr) @@ -47,9 +47,6 @@ (coding-system-equal . equal) (annotationp . ignore) (set-buffer-file-coding-system . ignore) - (make-char - . (lambda (charset int) - (int-to-char int))) (read-charset . (lambda (prompt) "Return a charset." @@ -60,9 +57,10 @@ mm-mime-mule-charset-alist) nil t)))) (subst-char-in-string - . (lambda (from to string) ;; stolen (and renamed) from nnheader.el - "Replace characters in STRING from FROM to TO." - (let ((string (substring string 0)) ;Copy string. + . (lambda (from to string &optional inplace) ;; stolen (and renamed) from nnheader.el + "Replace characters in STRING from FROM to TO. + Unless optional argument INPLACE is non-nil, return a new string." + (let ((string (if inplace string (copy-sequence string))) (len (length string)) (idx 0)) ;; Replace all occurrences of FROM with TO. @@ -136,15 +134,9 @@ In XEmacs, also return non-nil if CS is a coding system object." (defvar mm-charset-synonym-alist `( - ;; Perfectly fine? A valid MIME name, anyhow. - ,@(unless (mm-coding-system-p 'big5) - '((big5 . cn-big5))) ;; Not in XEmacs, but it's not a proper MIME charset anyhow. ,@(unless (mm-coding-system-p 'x-ctext) '((x-ctext . ctext))) - ;; Apparently not defined in Emacs 20, but is a valid MIME name. - ,@(unless (mm-coding-system-p 'gb2312) - '((gb2312 . cn-gb-2312))) ;; ISO-8859-15 is very similar to ISO-8859-1. But it's _different_! ,@(unless (mm-coding-system-p 'iso-8859-15) '((iso-8859-15 . iso-8859-1))) @@ -163,6 +155,11 @@ In XEmacs, also return non-nil if CS is a coding system object." ,@(if (and (not (mm-coding-system-p 'windows-1250)) (mm-coding-system-p 'cp1250)) '((windows-1250 . cp1250))) + ;; A Microsoft misunderstanding. + ,@(unless (mm-coding-system-p 'ks_c_5601-1987) + (if (mm-coding-system-p 'cp949) + '((ks_c_5601-1987 . cp949)) + '((ks_c_5601-1987 . euc-kr)))) ) "A mapping from invalid charset names to the real charset names.") @@ -401,9 +398,6 @@ used as the line break code type of the coding system." (setq cs c))) cs)))) -(defsubst mm-replace-chars-in-string (string from to) - (mm-subst-char-in-string from to string)) - (eval-and-compile (defvar mm-emacs-mule (and (not (featurep 'xemacs)) (boundp 'default-enable-multibyte-characters) @@ -635,12 +629,19 @@ Equivalent to `progn' in XEmacs" (put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body)) (defmacro mm-with-unibyte (&rest forms) - "Eval the FORMS with the default value of `enable-multibyte-characters' nil, ." + "Eval the FORMS with the default value of `enable-multibyte-characters' nil." `(let (default-enable-multibyte-characters) ,@forms)) (put 'mm-with-unibyte 'lisp-indent-function 0) (put 'mm-with-unibyte 'edebug-form-spec '(body)) +(defmacro mm-with-multibyte (&rest forms) + "Eval the FORMS with the default value of `enable-multibyte-characters' t." + `(let ((default-enable-multibyte-characters t)) + ,@forms)) +(put 'mm-with-multibyte 'lisp-indent-function 0) +(put 'mm-with-multibyte 'edebug-form-spec '(body)) + (defun mm-find-charset-region (b e) "Return a list of Emacs charsets in the region B to E." (cond @@ -675,21 +676,6 @@ Equivalent to `progn' in XEmacs" mm-mime-mule-charset-alist))))) (list 'ascii (or charset 'latin-iso8859-1))))))))) -(static-if (fboundp 'shell-quote-argument) - (defalias 'mm-quote-arg 'shell-quote-argument) - (defun mm-quote-arg (arg) - "Return a version of ARG that is safe to evaluate in a shell." - (let ((pos 0) new-pos accum) - ;; *** bug: we don't handle newline characters properly - (while (setq new-pos (string-match "[]*[;!'`\"$\\& \t{} |()<>]" arg pos)) - (push (substring arg pos new-pos) accum) - (push "\\" accum) - (push (list (aref arg new-pos)) accum) - (setq pos (1+ new-pos))) - (if (= pos 0) - arg - (apply 'concat (nconc (nreverse accum) (list (substring arg pos)))))))) - (defun mm-auto-mode-alist () "Return an `auto-mode-alist' with only the .gz (etc) thingies." (let ((alist auto-mode-alist) @@ -772,11 +758,12 @@ If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'." (defun mm-image-load-path (&optional package) (let (dir result) (dolist (path load-path (nreverse result)) - (if (file-directory-p - (setq dir (concat (file-name-directory - (directory-file-name path)) - "etc/" (or package "gnus/")))) - (push dir result)) + (when (and path + (file-directory-p + (setq dir (concat (file-name-directory + (directory-file-name path)) + "etc/" (or package "gnus/"))))) + (push dir result)) (push path result)))) ;; Fixme: This doesn't look useful where it's used. diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 27a873f..4bced35 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -1,5 +1,6 @@ ;;; mm-view.el --- functions for viewing MIME objects -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -34,9 +35,7 @@ (autoload 'vcard-parse-string "vcard") (autoload 'vcard-format-string "vcard") (autoload 'fill-flowed "flow-fill") - (autoload 'html2text "html2text") - (unless (fboundp 'diff-mode) - (autoload 'diff-mode "diff-mode" "" t nil))) + (autoload 'html2text "html2text")) (defvar mm-text-html-renderer-alist '((w3 . mm-inline-text-html-render-with-w3) @@ -64,6 +63,11 @@ (html2text html2text)) "The attributes of washer types for text/html.") +(defcustom mm-fill-flowed t + "If non-nil a format=flowed article will be displayed flowed." + :type 'boolean + :group 'mime-display) + ;;; Internal variables. ;;; @@ -74,7 +78,6 @@ (let ((b (point-marker)) buffer-read-only) (put-image (mm-get-image handle) b) - (insert "\n\n") (mm-handle-set-undisplayer handle `(lambda () @@ -198,44 +201,21 @@ (setq w3m-display-inline-images mm-inline-text-html-with-images)) (defun mm-w3m-cid-retrieve-1 (url handle) - (dolist (elem handle) - (when (and (listp elem) - (equal url (mm-handle-id elem))) - (mm-insert-part elem) - (throw 'found-handle (mm-handle-media-type elem))))) + (if (mm-multiple-handles handle) + (dolist (elem handle) + (mm-w3m-cid-retrieve-1 url elem)) + (when (and (listp handle) + (equal url (mm-handle-id handle))) + (mm-insert-part handle) + (throw 'found-handle (mm-handle-media-type handle))))) (defun mm-w3m-cid-retrieve (url &rest args) "Insert a content pointed by URL if it has the cid: scheme." (when (string-match "\\`cid:" url) - (setq url (concat "<" (substring url (match-end 0)) ">")) (catch 'found-handle - (let ((handles (with-current-buffer w3m-current-buffer - gnus-article-mime-handles))) - (if (mm-multiple-handles handles) - (dolist (handle handles) - (mm-w3m-cid-retrieve-1 url handle)) - (mm-w3m-cid-retrieve-1 url handles)))))) - -(eval-and-compile - (unless (or (featurep 'xemacs) - (>= emacs-major-version 21)) - (defvar mm-w3m-mode-map nil - "Keymap for text/html parts rendered by emacs-w3m. -This keymap will be bound only when Emacs 20 is running and overwritten -by the value of `w3m-minor-mode-map'. In order to add some commands to -this keymap, add them to `w3m-minor-mode-map' instead of this keymap."))) - -(defun mm-w3m-local-map-property () - (when (and (boundp 'w3m-minor-mode-map) w3m-minor-mode-map) - (if (or (featurep 'xemacs) - (>= emacs-major-version 21)) - (list 'keymap w3m-minor-mode-map) - (list 'local-map - (or mm-w3m-mode-map - (progn - (setq mm-w3m-mode-map (copy-keymap w3m-minor-mode-map)) - (set-keymap-parent mm-w3m-mode-map gnus-article-mode-map) - mm-w3m-mode-map)))))) + (mm-w3m-cid-retrieve-1 (concat "<" (substring url (match-end 0)) ">") + (with-current-buffer w3m-current-buffer + gnus-article-mime-handles))))) (defun mm-inline-text-html-render-with-w3m (handle) "Render a text/html part using emacs-w3m." @@ -257,12 +237,14 @@ this keymap, add them to `w3m-minor-mode-map' instead of this keymap."))) (let ((w3m-safe-url-regexp mm-w3m-safe-url-regexp) w3m-force-redisplay) (w3m-region (point-min) (point-max))) - (when mm-inline-text-html-with-w3m-keymap + (when (and mm-inline-text-html-with-w3m-keymap + (boundp 'w3m-minor-mode-map) + w3m-minor-mode-map) (add-text-properties (point-min) (point-max) - (nconc (mm-w3m-local-map-property) - ;; Put the mark meaning this part was rendered by emacs-w3m. - '(mm-inline-text-html-with-w3m t))))) + (list 'keymap w3m-minor-mode-map + ;; Put the mark meaning this part was rendered by emacs-w3m. + 'mm-inline-text-html-with-w3m t)))) (mm-handle-set-undisplayer handle `(lambda () @@ -366,7 +348,8 @@ this keymap, add them to `w3m-minor-mode-map' instead of this keymap."))) (mm-insert-part handle) (goto-char (point-max))) (insert (mm-decode-string (mm-get-part handle) charset))) - (when (and (equal type "plain") + (when (and mm-fill-flowed + (equal type "plain") (equal (cdr (assoc 'format (mm-handle-type handle))) "flowed")) (save-restriction @@ -516,23 +499,21 @@ this keymap, add them to `w3m-minor-mode-map' instead of this keymap."))) ;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } (defvar mm-pkcs7-signed-magic (mm-string-as-unibyte - (apply 'concat - (mapcar 'char-to-string - (list ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c - ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e - ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48 - ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x02))))) + (mapconcat 'char-to-string + (list ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c + ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e + ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48 + ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x02) ""))) ;; id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) ;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 } (defvar mm-pkcs7-enveloped-magic (mm-string-as-unibyte - (apply 'concat - (mapcar 'char-to-string - (list ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c - ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e - ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48 - ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x03))))) + (mapconcat 'char-to-string + (list ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c + ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e + ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48 + ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x03) ""))) (defun mm-view-pkcs7-get-type (handle) (mm-with-unibyte-buffer @@ -566,8 +547,6 @@ this keymap, add them to `w3m-minor-mode-map' instead of this keymap."))) (sit-for 1) t) -(autoload 'gnus-completing-read-maybe-default "gnus-util" nil nil 'macro) - (defun mm-view-pkcs7-decrypt (handle) (insert-buffer-substring (mm-handle-buffer handle)) (goto-char (point-min)) @@ -578,7 +557,7 @@ this keymap, add them to `w3m-minor-mode-map' instead of this keymap."))) (if (= (length smime-keys) 1) (cadar smime-keys) (smime-get-key-by-email - (gnus-completing-read-maybe-default + (completing-read (concat "Decipher using which key? " (if smime-keys (concat "(default " (caar smime-keys) ") ") "")) diff --git a/lisp/mml-sec.el b/lisp/mml-sec.el index c1a494b..be4665b 100644 --- a/lisp/mml-sec.el +++ b/lisp/mml-sec.el @@ -112,7 +112,7 @@ You can also customize or set `mml-signencrypt-style-alist' instead." (setf (second style-item) style) ;; otherwise, just return the current value (second style-item)) - (gnus-message 3 "Warning, attempt to set invalid signencrypt-style")))) + (message "Warning, attempt to set invalid signencrypt style")))) ;;; Security functions diff --git a/lisp/mml-smime.el b/lisp/mml-smime.el index 45e06d7..dbcd1c1 100644 --- a/lisp/mml-smime.el +++ b/lisp/mml-smime.el @@ -25,9 +25,12 @@ ;;; Code: +(eval-when-compile (require 'cl)) + (require 'smime) (require 'mm-decode) (autoload 'message-narrow-to-headers "message") +(autoload 'message-fetch-field "message") (defun mml-smime-sign (cont) (when (null smime-keys) diff --git a/lisp/mml.el b/lisp/mml.el index cdec507..68370d6 100644 --- a/lisp/mml.el +++ b/lisp/mml.el @@ -34,11 +34,12 @@ (eval-and-compile (autoload 'message-make-message-id "message") (autoload 'gnus-setup-posting-charset "gnus-msg") - (autoload 'gnus-add-minor-mode "gnus-ems") (autoload 'gnus-make-local-hook "gnus-util") (autoload 'message-fetch-field "message") + (autoload 'message-mark-active-p "message") (autoload 'fill-flowed-encode "flow-fill") - (autoload 'message-posting-charset "message")) + (autoload 'message-posting-charset "message") + (autoload 'x-dnd-get-local-file-name "x-dnd")) (defcustom mml-content-type-parameters '(name access-type expiration size permission format) @@ -131,19 +132,15 @@ one charsets.") (defun mml-destroy-buffers () (let (kill-buffer-hook) - (mapcar 'kill-buffer mml-buffer-list) + (mapc 'kill-buffer mml-buffer-list) (setq mml-buffer-list nil))) (defun mml-parse () "Parse the current buffer as an MML document." (save-excursion (goto-char (point-min)) - (let ((table (syntax-table))) - (unwind-protect - (progn - (set-syntax-table mml-syntax-table) - (mml-parse-1)) - (set-syntax-table table))))) + (with-syntax-table mml-syntax-table + (mml-parse-1)))) (defun mml-parse-1 () "Parse the current buffer as an MML document." @@ -165,9 +162,8 @@ one charsets.") (method (cdr (assq 'method taginfo))) tags) (save-excursion - (if - (re-search-forward - "<#\\(/\\)?\\(multipart\\|part\\|external\\|mml\\)." nil t) + (if (re-search-forward + "<#/?\\(multipart\\|part\\|external\\|mml\\)." nil t) (setq secure-mode "multipart") (setq secure-mode "part"))) (save-excursion @@ -447,6 +443,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." ;; actually are hard newlines in the text. (let (use-hard-newlines) (when (and (string= type "text/plain") + (not (string= (cdr (assq 'sign cont)) "pgp")) (or (null (assq 'format cont)) (string= (cdr (assq 'format cont)) "flowed")) @@ -554,7 +551,8 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." (message-options-set 'message-sender sender)) (if (setq recipients (cdr (assq 'recipients cont))) (message-options-set 'message-recipients recipients)) - (let ((style (mml-signencrypt-style (first (or sign-item encrypt-item))))) + (let ((style (mml-signencrypt-style + (first (or sign-item encrypt-item))))) ;; check if: we're both signing & encrypting, both methods ;; are the same (why would they be different?!), and that ;; the signencrypt style allows for combined operation. @@ -588,7 +586,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." (insert-buffer-substring (cdr (assq 'buffer cont)))) ((and (setq filename (cdr (assq 'filename cont))) (not (equal (cdr (assq 'nofile cont)) "yes"))) - (mm-insert-file-contents filename)) + (mm-insert-file-contents filename nil nil nil nil t)) (t (insert (cdr (assq 'contents cont))))) (goto-char (point-min)) @@ -598,7 +596,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." (incf mml-multipart-number))) (throw 'not-unique nil)))) ((eq (car cont) 'multipart) - (mapcar 'mml-compute-boundary-1 (cddr cont)))) + (mapc 'mml-compute-boundary-1 (cddr cont)))) t)) (defun mml-make-boundary (number) @@ -851,33 +849,36 @@ If HANDLES is non-nil, use it instead reparsing the buffer." main)) (easy-menu-define - mml-menu mml-mode-map "" - `("Attachments" - ["Attach File..." mml-attach-file - ,@(if (featurep 'xemacs) '(t) - '(:help "Attach a file at point"))] - ["Attach Buffer..." mml-attach-buffer t] - ["Attach External..." mml-attach-external t] - ["Insert Part..." mml-insert-part t] - ["Insert Multipart..." mml-insert-multipart t] - ["PGP/MIME Sign" mml-secure-message-sign-pgpmime t] - ["PGP/MIME Encrypt" mml-secure-message-encrypt-pgpmime t] - ["PGP Sign" mml-secure-message-sign-pgp t] - ["PGP Encrypt" mml-secure-message-encrypt-pgp t] - ["S/MIME Sign" mml-secure-message-sign-smime t] - ["S/MIME Encrypt" mml-secure-message-encrypt-smime t] - ("Secure MIME part" - ["PGP/MIME Sign Part" mml-secure-sign-pgpmime t] - ["PGP/MIME Encrypt Part" mml-secure-encrypt-pgpmime t] - ["PGP Sign Part" mml-secure-sign-pgp t] - ["PGP Encrypt Part" mml-secure-encrypt-pgp t] - ["S/MIME Sign Part" mml-secure-sign-smime t] - ["S/MIME Encrypt Part" mml-secure-encrypt-smime t]) - ["Encrypt/Sign off" mml-unsecure-message t] - ;;["Narrow" mml-narrow-to-part t] - ["Quote MML" mml-quote-region t] - ["Validate MML" mml-validate t] - ["Preview" mml-preview t])) + mml-menu mml-mode-map "" + `("Attachments" + ["Attach File..." mml-attach-file + ,@(if (featurep 'xemacs) '(t) + '(:help "Attach a file at point"))] + ["Attach Buffer..." mml-attach-buffer t] + ["Attach External..." mml-attach-external t] + ["Insert Part..." mml-insert-part t] + ["Insert Multipart..." mml-insert-multipart t] + ["PGP/MIME Sign" mml-secure-message-sign-pgpmime t] + ["PGP/MIME Encrypt" mml-secure-message-encrypt-pgpmime t] + ["PGP Sign" mml-secure-message-sign-pgp t] + ["PGP Encrypt" mml-secure-message-encrypt-pgp t] + ["S/MIME Sign" mml-secure-message-sign-smime t] + ["S/MIME Encrypt" mml-secure-message-encrypt-smime t] + ("Secure MIME part" + ["PGP/MIME Sign Part" mml-secure-sign-pgpmime t] + ["PGP/MIME Encrypt Part" mml-secure-encrypt-pgpmime t] + ["PGP Sign Part" mml-secure-sign-pgp t] + ["PGP Encrypt Part" mml-secure-encrypt-pgp t] + ["S/MIME Sign Part" mml-secure-sign-smime t] + ["S/MIME Encrypt Part" mml-secure-encrypt-smime t]) + ["Encrypt/Sign off" mml-unsecure-message t] + ;;["Narrow" mml-narrow-to-part t] + ["Quote MML" mml-quote-region + :active (message-mark-active-p) + ,@(if (featurep 'xemacs) nil + '(:help "Quote MML tags in region"))] + ["Validate MML" mml-validate t] + ["Preview" mml-preview t])) (defvar mml-mode nil "Minor mode for editing MML.") @@ -892,8 +893,13 @@ See Info node `(emacs-mime)Composing'. (when (set (make-local-variable 'mml-mode) (if (null arg) (not mml-mode) (> (prefix-numeric-value arg) 0))) - (gnus-add-minor-mode 'mml-mode " MML" mml-mode-map) + (add-minor-mode 'mml-mode " MML" mml-mode-map) (easy-menu-add mml-menu mml-mode-map) + (when (boundp 'x-dnd-protocol-alist) + (set (make-local-variable 'x-dnd-protocol-alist) + '(("^file:///" . mml-x-dnd-attach-file) + ("^file://" . x-dnd-open-file) + ("^file:" . mml-x-dnd-attach-file)))) (run-hooks 'mml-mode-hook))) ;;; @@ -940,10 +946,11 @@ See Info node `(emacs-mime)Composing'. (if (string-match "^text/.*" type) "inline" "attachment"))) - (disposition (completing-read "Disposition: " - '(("attachment") ("inline") ("")) - nil - nil))) + (disposition (completing-read + (format "Disposition: (default %s): " default) + '(("attachment") ("inline") ("")) + nil + nil))) (if (not (equal disposition "")) disposition default))) @@ -1010,6 +1017,15 @@ description of the attachment." 'disposition (or disposition "attachment") 'description description)) +(defun mml-x-dnd-attach-file (uri action) + "Attach a drag and drop file." + (let ((file (x-dnd-get-local-file-name uri t))) + (when (and file (file-regular-p file)) + (let* ((type (mml-minibuffer-read-type file)) + (description (mml-minibuffer-read-description)) + (disposition (mml-minibuffer-read-disposition type))) + (mml-attach-file file type description disposition))))) + (defun mml-attach-buffer (buffer &optional type description) "Attach a buffer to the outgoing MIME message. See `mml-attach-file' for details of operation." diff --git a/lisp/mml2015.el b/lisp/mml2015.el index 6bf4f4e..96ca14a 100644 --- a/lisp/mml2015.el +++ b/lisp/mml2015.el @@ -1,5 +1,5 @@ ;;; mml2015.el --- MIME Security with Pretty Good Privacy (PGP) -;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: PGP MIME MML @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'mm-decode) (require 'mm-util) (require 'mml) @@ -37,7 +36,10 @@ (defvar mml2015-use (or (progn (ignore-errors - (require 'pgg)) + ;; Avoid the "Recursive load suspected" error + ;; in Emacs 21.1. + (let ((recursive-load-depth-limit 100)) + (require 'pgg))) (and (fboundp 'pgg-sign-region) 'pgg)) (progn @@ -51,7 +53,8 @@ (fboundp 'mc-sign-generic) (fboundp 'mc-cleanup-recipient-headers) 'mailcrypt))) - "The package used for PGP/MIME.") + "The package used for PGP/MIME. +Valid packages include `pgg', `gpg' and `mailcrypt'.") ;; Something is not RFC2015. (defvar mml2015-function-alist diff --git a/lisp/netrc.el b/lisp/netrc.el index 3bfc76d..b561885 100644 --- a/lisp/netrc.el +++ b/lisp/netrc.el @@ -31,16 +31,67 @@ ;;; Code: ;;; -;;; .netrc and .authinforc parsing +;;; .netrc and .authinfo rc parsing ;;; +;; autoload password (eval-and-compile - (defalias 'netrc-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position))) + (autoload 'password-read "password")) + +(defgroup netrc nil + "Netrc configuration.") + +(defcustom netrc-encrypting-method nil + "Decoding method used for the netrc file. +Use the OpenSSL symmetric ciphers here. Leave nil for no +decoding. Encrypt the file with netrc-encrypt, but make sure you +have set netrc-encrypting-method to a non-nil value." + :type '(choice + (const :tag "DES-3" "des3") + (const :tag "IDEA" "idea") + (const :tag "RC4" "rc4") + (string :tag "Explicit cipher name") + (const :tag "None" nil)) + :group 'netrc) + +(defcustom netrc-openssl-path (executable-find "openssl") + "File path of the OpenSSL shell." + :type '(choice (file :tag "Location of openssl") + (const :tag "openssl is not installed" nil)) + :group 'netrc) + +(defun netrc-encrypt (plain-file encrypted-file) + (interactive "fPlain File: \nFEncrypted File: ") + "Encrypt FILE to ENCRYPTED-FILE with netrc-encrypting-method cipher." + (when (and (file-exists-p plain-file) + (stringp encrypted-file) + netrc-encrypting-method + netrc-openssl-path) + (let ((buffer-file-coding-system 'binary) + (coding-system-for-read 'binary) + (coding-system-for-write 'binary) + (password + (password-read + (format "OpenSSL Password for cipher %s? " + netrc-encrypting-method) + (format "netrc-openssl-password-%s" + netrc-encrypting-method)))) + (when password + (with-temp-buffer + (insert-file-contents plain-file) + (setenv "NETRC_OPENSSL_PASSWORD" password) + (shell-command-on-region + (point-min) + (point-max) + (format "%s %s -pass env:NETRC_OPENSSL_PASSWORD -e" + netrc-openssl-path + netrc-encrypting-method) + t + t) + (write-file encrypted-file t)))))) (defun netrc-parse (file) + (interactive "fFile to Parse: ") "Parse FILE and return an list of all entries in the file." (when (file-exists-p file) (with-temp-buffer @@ -48,11 +99,33 @@ "password" "account" "macdef" "force" "port")) alist elem result pair) - (insert-file-contents file) + (if (and netrc-encrypting-method + netrc-openssl-path) + (let ((buffer-file-coding-system 'binary) + (coding-system-for-read 'binary) + (coding-system-for-write 'binary) + (password + (password-read + (format "OpenSSL Password for cipher %s? " + netrc-encrypting-method) + (format "netrc-openssl-password-%s" + netrc-encrypting-method)))) + (when password + (insert-file-contents file) + (setenv "NETRC_OPENSSL_PASSWORD" password) + (shell-command-on-region + (point-min) + (point-max) + (format "%s %s -pass env:NETRC_OPENSSL_PASSWORD -d" + netrc-openssl-path + netrc-encrypting-method) + t + t))) + (insert-file-contents file)) (goto-char (point-min)) ;; Go through the file, line by line. (while (not (eobp)) - (narrow-to-region (point) (netrc-point-at-eol)) + (narrow-to-region (point) (point-at-eol)) ;; For each line, get the tokens and values. (while (not (eobp)) (skip-chars-forward "\t ") diff --git a/lisp/nnbabyl.el b/lisp/nnbabyl.el index 0dd568d..400cb85 100644 --- a/lisp/nnbabyl.el +++ b/lisp/nnbabyl.el @@ -71,9 +71,6 @@ (defvoo nnbabyl-previous-buffer-mode nil) -(eval-and-compile - (autoload 'gnus-set-text-properties "gnus-ems")) - ;;; Interface functions @@ -272,7 +269,7 @@ (save-excursion (set-buffer nnbabyl-mbox-buffer) - (gnus-set-text-properties (point-min) (point-max) nil) + (set-text-properties (point-min) (point-max) nil) (while (and articles is-old) (goto-char (point-min)) (when (search-forward (nnbabyl-article-string (car articles)) nil t) diff --git a/lisp/nndb.el b/lisp/nndb.el index fa5e641..9b25a54 100644 --- a/lisp/nndb.el +++ b/lisp/nndb.el @@ -1,6 +1,6 @@ ;;; nndb.el --- nndb access for Gnus -;; Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 2000, 2003, 2004 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Kai Grossjohann @@ -60,10 +60,6 @@ (eval-when-compile (require 'cl)) (eval-and-compile - (autoload 'news-setup "rnewspost") - (autoload 'news-reply-mode "rnewspost") - (autoload 'cancel-timer "timer") - (autoload 'telnet "telnet" nil t) (autoload 'telnet-send-input "telnet" nil t) (autoload 'gnus-declare-backend "gnus-start")) diff --git a/lisp/nndiary.el b/lisp/nndiary.el index 51cbd9a..28cf37e 100644 --- a/lisp/nndiary.el +++ b/lisp/nndiary.el @@ -992,7 +992,7 @@ all. This may very well take some time.") (search-forward id nil t)) ; We find the ID. ;; And the id is in the fourth field. (if (not (and (search-backward "\t" nil t 4) - (not (search-backward"\t" (gnus-point-at-bol) t)))) + (not (search-backward"\t" (point-at-bol) t)))) (forward-line 1) (beginning-of-line) (setq found t) diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 2c008f3..6a09175 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -469,7 +469,7 @@ from the document.") (defun nndoc-forward-type-p () (when (and (re-search-forward "^-+ \\(Start of \\)?forwarded message.*\n+" nil t) - (looking-at "[\r\n]*[a-zA-Z][a-zA-Z0-9-]*:")) + (looking-at "[\r\n]*[a-zA-Z][a-zA-Z0-9-]*:\\|^>?From ")) t)) (defun nndoc-rfc934-type-p () diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 1102078..cad461a 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -31,7 +31,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnheader) (require 'message) @@ -204,7 +203,7 @@ the group. Then the marks file will be regenerated properly by Gnus.") (goto-char (match-end 0)) (setq num (string-to-int (buffer-substring - (point) (gnus-point-at-eol)))) + (point) (point-at-eol)))) (goto-char start) (< num article))) ;; Check that we are before an article with a @@ -214,7 +213,7 @@ the group. Then the marks file will be regenerated properly by Gnus.") (progn (setq num (string-to-int (buffer-substring - (point) (gnus-point-at-eol)))) + (point) (point-at-eol)))) (> num article)) ;; Discard any article numbers before the one we're ;; now looking at. @@ -288,7 +287,7 @@ the group. Then the marks file will be regenerated properly by Gnus.") (if (search-forward (concat "\n" nnfolder-article-marker) nil t) (string-to-int (buffer-substring - (point) (gnus-point-at-eol))) + (point) (point-at-eol))) -1)))))))) (deffoo nnfolder-request-group (group &optional server dont-check) @@ -713,8 +712,7 @@ deleted. Point is left where the deleted region was." (setq nnfolder-current-buffer nil nnfolder-current-group nil)) ;; Change group. - (let ((file-name-coding-system nnmail-pathname-coding-system) - (pathname-coding-system nnmail-pathname-coding-system)) + (let ((file-name-coding-system nnmail-pathname-coding-system)) (when (and group (not (equal group nnfolder-current-group)) (progn @@ -1072,10 +1070,9 @@ This command does not work if you use short group names." (when (buffer-modified-p) (run-hooks 'nnfolder-save-buffer-hook) (gnus-make-directory (file-name-directory (buffer-file-name))) - (let* ((coding-system-for-write - (or nnfolder-file-coding-system-for-write - nnfolder-file-coding-system)) - (output-coding-system coding-system-for-write)) + (let ((coding-system-for-write + (or nnfolder-file-coding-system-for-write + nnfolder-file-coding-system))) (save-buffer))) (unless (or gnus-nov-is-evil nnfolder-nov-is-evil) (nnfolder-save-nov))) @@ -1178,7 +1175,7 @@ This command does not work if you use short group names." (let ((range (nth 0 action)) (what (nth 1 action)) (marks (nth 2 action))) - (assert (or (eq what 'add) (eq what 'del)) t + (assert (or (eq what 'add) (eq what 'del)) nil "Unknown request-set-mark action: %s" what) (dolist (mark marks) (setq nnfolder-marks (gnus-update-alist-soft @@ -1199,16 +1196,16 @@ This command does not work if you use short group names." (nnheader-message 8 "Updating marks for %s..." group) (nnfolder-open-marks group server) ;; Update info using `nnfolder-marks'. - (mapcar (lambda (pred) - (unless (memq (cdr pred) gnus-article-unpropagated-mark-lists) - (gnus-info-set-marks - info - (gnus-update-alist-soft - (cdr pred) - (cdr (assq (cdr pred) nnfolder-marks)) - (gnus-info-marks info)) - t))) - gnus-article-mark-lists) + (mapc (lambda (pred) + (unless (memq (cdr pred) gnus-article-unpropagated-mark-lists) + (gnus-info-set-marks + info + (gnus-update-alist-soft + (cdr pred) + (cdr (assq (cdr pred) nnfolder-marks)) + (gnus-info-marks info)) + t))) + gnus-article-mark-lists) (let ((seen (cdr (assq 'read nnfolder-marks)))) (gnus-info-set-read info (if (and (integerp (car seen)) @@ -1244,7 +1241,7 @@ This command does not work if you use short group names." nnfolder-marks-modtime)) (error (or (gnus-yes-or-no-p (format "Could not write to %s (%s). Continue? " file err)) - (error "Cannot write to %s (%s)" err)))))) + (error "Cannot write to %s (%s)" file err)))))) (defun nnfolder-open-marks (group server) (let ((file (nnfolder-group-marks-pathname group))) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index 49f2ba5..eb7bdd0 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -119,7 +119,6 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") (defvar nnheader-auto-save-coding-system (cond - ((boundp 'MULE) '*junet*) ((not (fboundp 'find-coding-system)) nil) ((find-coding-system 'emacs-mule) (if (memq system-type '(windows-nt ms-dos ms-windows)) @@ -137,7 +136,6 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") (autoload 'nnmail-message-id "nnmail") (autoload 'mail-position-on-field "sendmail") (autoload 'message-remove-header "message") - (autoload 'gnus-point-at-eol "gnus-util") (autoload 'gnus-buffer-live-p "gnus-util")) ;; mm-util stuff. @@ -155,13 +153,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") (defalias 'mm-image-load-path 'nnheader-image-load-path) ;; Should keep track of `mm-read-coding-system' in mm-util.el. - (defalias 'mm-read-coding-system - (if (or (and (featurep 'xemacs) - (<= (string-to-number emacs-version) 21.1)) - (boundp 'MULE)) - (lambda (prompt &optional default-coding-system) - (read-coding-system prompt)) - 'read-coding-system)) + (defalias 'mm-read-coding-system 'read-coding-system) ;; Should keep track of `mm-%s' in mm-util.el. (defalias 'mm-multibyte-string-p @@ -174,10 +166,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") ;; Should keep track of `mm-detect-coding-region' in mm-util.el. (defun nnheader-detect-coding-region (start end) "Like 'detect-coding-region' except returning the best one." - (let ((coding-systems - (static-if (boundp 'MULE) - (code-detect-region (point) (point-max)) - (detect-coding-region (point) (point-max))))) + (let ((coding-systems (detect-coding-region (point) (point-max)))) (or (car-safe coding-systems) coding-systems))) (defalias 'mm-detect-coding-region 'nnheader-detect-coding-region) @@ -194,7 +183,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.") (defmacro nnheader-with-unibyte-buffer (&rest forms) "Create a temporary buffer, and evaluate FORMS there like `progn'. Use unibyte mode for this." - `(let (default-enable-multibyte-characters default-mc-flag) + `(let (default-enable-multibyte-characters) (with-temp-buffer ,@forms))) (put 'nnheader-with-unibyte-buffer 'lisp-indent-function 0) (put 'nnheader-with-unibyte-buffer 'edebug-form-spec '(body)) @@ -212,15 +201,6 @@ Equivalent to `progn' in XEmacs" (cond ((featurep 'xemacs) `(let (default-enable-multibyte-characters) ,@forms)) - ((boundp 'MULE) - `(let ((,multibyte mc-flag) - (,buffer (current-buffer))) - (unwind-protect - (let (default-enable-multibyte-characters default-mc-flag) - (setq mc-flag nil) - ,@forms) - (set-buffer ,buffer) - (setq mc-flag ,multibyte)))) (t `(let ((,multibyte enable-multibyte-characters) (,buffer (current-buffer))) @@ -284,8 +264,6 @@ nil, ." (lambda nil t)) ((featurep 'xemacs) (lambda nil nil)) - ((boundp 'MULE) - (lambda nil mc-flag)) (t (lambda nil enable-multibyte-characters)))) @@ -349,7 +327,7 @@ nil, ." (first t) (bol (save-restriction (widen) - (gnus-point-at-bol)))) + (point-at-bol)))) (while (not (eobp)) (when (and (or break qword-break) (> (- (point) bol) 76)) @@ -425,18 +403,18 @@ nil, ." (goto-char (point-min)) (let ((bol (save-restriction (widen) - (gnus-point-at-bol))) - (eol (gnus-point-at-eol))) + (point-at-bol))) + (eol (point-at-eol))) (forward-line 1) (while (not (eobp)) (if (and (looking-at "[ \t]") - (< (- (gnus-point-at-eol) bol) 76)) + (< (- (point-at-eol) bol) 76)) (delete-region eol (progn (goto-char eol) (skip-chars-forward "\r\n") (point))) - (setq bol (gnus-point-at-bol))) - (setq eol (gnus-point-at-eol)) + (setq bol (point-at-bol))) + (setq eol (point-at-eol)) (forward-line 1))))))) (unless (fboundp 'std11-unfold-field) @@ -685,9 +663,9 @@ given, the return value will not contain the last newline." (goto-char p) (if (search-forward "\nmessage-id:" nil t) (buffer-substring - (1- (or (search-forward "<" (gnus-point-at-eol) t) + (1- (or (search-forward "<" (point-at-eol) t) (point))) - (or (search-forward ">" (gnus-point-at-eol) t) (point))) + (or (search-forward ">" (point-at-eol) t) (point))) ;; If there was no message-id, we just fake one to make ;; subsequent routines simpler. (nnheader-generate-fake-message-id))) @@ -796,7 +774,7 @@ given, the return value will not contain the last newline." (nnheader-generate-fake-message-id)))) (defun nnheader-parse-nov () - (let ((eol (gnus-point-at-eol))) + (let ((eol (point-at-eol))) (make-full-mail-header (nnheader-nov-read-integer) ; number (nnheader-nov-field) ; subject @@ -951,7 +929,6 @@ the line could be found." (number (length articles)) (count 0) (file-name-coding-system 'binary) - (pathname-coding-system 'binary) (case-fold-search t) (cur (current-buffer)) article @@ -1200,7 +1177,7 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')." ;; This is invalid, but not all articles have Message-IDs. () (mail-position-on-field "References") - (let ((begin (gnus-point-at-bol)) + (let ((begin (point-at-bol)) (fill-column 78) (fill-prefix "\t")) (when references @@ -1273,8 +1250,7 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')." (defvar nnheader-directory-files-is-safe (or (eq system-type 'windows-nt) - (and (not (featurep 'xemacs)) - (> emacs-major-version 20))) + (not (featurep 'xemacs))) "If non-nil, Gnus believes `directory-files' is safe. It has been reported numerous times that `directory-files' fails with an alarming frequency on NFS mounted file systems. If it is nil, @@ -1626,7 +1602,6 @@ find-file-hooks, etc. "Strip all \r's from the current buffer." (nnheader-skeleton-replace "\r")) -(defalias 'nnheader-run-at-time 'run-at-time) (defalias 'nnheader-cancel-timer 'cancel-timer) (defalias 'nnheader-cancel-function-timers 'cancel-function-timers) (defalias 'nnheader-string-as-multibyte 'string-as-multibyte) diff --git a/lisp/nnheaderxm.el b/lisp/nnheaderxm.el index af0979c..d9021e7 100644 --- a/lisp/nnheaderxm.el +++ b/lisp/nnheaderxm.el @@ -28,67 +28,11 @@ ;;; Code: -(if (condition-case nil - (progn - (unless (or itimer-process itimer-timer) - (itimer-driver-start)) - ;; Check whether there is a bug to which the difference of - ;; the present time and the time when the itimer driver was - ;; woken up is subtracted from the initial itimer value. - (let* ((inhibit-quit t) - (ctime (current-time)) - (itimer-timer-last-wakeup - (prog1 - ctime - (setcar ctime (1- (car ctime))))) - (itimer-list nil) - (itimer (start-itimer "nnheader-run-at-time" 'ignore 5))) - (sleep-for 0.1) ;; Accept the timeout interrupt. - (prog1 - (> (itimer-value itimer) 0) - (delete-itimer itimer)))) - (error nil)) - (defun nnheader-xmas-run-at-time (time repeat function &rest args) - "Emulating function run as `run-at-time'. -TIME should be nil meaning now, or a number of seconds from now. -Return an itimer object which can be used in either `delete-itimer' -or `cancel-timer'." - (apply #'start-itimer "nnheader-run-at-time" - function (if time (max time 1e-9) 1e-9) - repeat nil t args)) - (defun nnheader-xmas-run-at-time (time repeat function &rest args) - "Emulating function run as `run-at-time' in the right way. -TIME should be nil meaning now, or a number of seconds from now. -Return an itimer object which can be used in either `delete-itimer' -or `cancel-timer'." - (let ((itimers (list nil))) - (setcar - itimers - (apply #'start-itimer "nnheader-run-at-time" - (lambda (itimers repeat function &rest args) - (let ((itimer (car itimers))) - (if repeat - (progn - (set-itimer-function - itimer - (lambda (itimer repeat function &rest args) - (set-itimer-restart itimer repeat) - (set-itimer-function itimer function) - (set-itimer-function-arguments itimer args) - (apply function args))) - (set-itimer-function-arguments - itimer - (append (list itimer repeat function) args))) - (set-itimer-function - itimer - (lambda (itimer function &rest args) - (delete-itimer itimer) - (apply function args))) - (set-itimer-function-arguments - itimer - (append (list itimer function) args))))) - 1e-9 (if time (max time 1e-9) 1e-9) - nil t itimers repeat function args))))) +(require 'run-at-time) + +(defalias 'nnheader-cancel-timer 'delete-itimer) +(defalias 'nnheader-cancel-function-timers 'ignore) +(defalias 'nnheader-string-as-multibyte 'identity) (defun nnheader-xmas-Y-or-n-p (prompt) "Ask user a \"Y/n\" question. Return t if answer is neither \"n\", \"N\" nor \"C-g\"." @@ -110,10 +54,6 @@ or `cancel-timer'." (message "%s(Y/n) Yes" prompt) t)))) -(defalias 'nnheader-run-at-time 'nnheader-xmas-run-at-time) -(defalias 'nnheader-cancel-timer 'delete-itimer) -(defalias 'nnheader-cancel-function-timers 'ignore) -(defalias 'nnheader-string-as-multibyte 'identity) (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 7001a0d..91a1a2b 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -61,7 +61,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'imap) (require 'nnoo) @@ -404,6 +403,43 @@ just like \"ticked\" articles, in other IMAP clients.") If this is 'imap-mailbox-lsub, then use a server-side subscription list to restrict visible folders.") +(defcustom nnimap-id nil + "Plist with client identity to send to server upon login. +Nil means no information is sent, symbol `no' to disable ID query +alltogheter, or plist with identifier-value pairs to send to +server. RFC 2971 describes the list as follows: + + Any string may be sent as a field, but the following are defined to + describe certain values that might be sent. Implementations are free + to send none, any, or all of these. Strings are not case-sensitive. + Field strings MUST NOT be longer than 30 octets. Value strings MUST + NOT be longer than 1024 octets. Implementations MUST NOT send more + than 30 field-value pairs. + + name Name of the program + version Version number of the program + os Name of the operating system + os-version Version of the operating system + vendor Vendor of the client/server + support-url URL to contact for support + address Postal address of contact/vendor + date Date program was released, specified as a date-time + in IMAP4rev1 + command Command used to start the program + arguments Arguments supplied on the command line, if any + if any + environment Description of environment, i.e., UNIX environment + variables or Windows registry settings + + Implementations MUST NOT send the same field name more than once. + +An example plist would be '(\"name\" \"Gnus\" \"version\" gnus-version-number +\"os\" system-configuration \"vendor\" \"GNU\")." + :group 'nnimap + :type '(choice (const :tag "No information" nil) + (const :tag "Disable ID query" no) + (plist :key-type string :value-type string))) + (defcustom nnimap-debug nil "If non-nil, random debug spews are placed in *nnimap-debug* buffer." :group 'nnimap @@ -733,6 +769,7 @@ If EXAMINE is non-nil the group is selected read-only." (prog1 (push (list server nnimap-server-buffer) nnimap-server-buffer-alist) + (imap-id nnimap-id nnimap-server-buffer) (nnimap-possibly-change-server server)) (imap-close nnimap-server-buffer) (kill-buffer nnimap-server-buffer) @@ -794,8 +831,8 @@ Return nil if the server couldn't be closed for some reason." All buffers that have been created by that backend should be killed. (Not the nntp-server-buffer, though.) This function is generally only called when Gnus is shutting down." - (mapcar (lambda (server) (nnimap-close-server (car server))) - nnimap-server-buffer-alist) + (mapc (lambda (server) (nnimap-close-server (car server))) + nnimap-server-buffer-alist) (setq nnimap-server-buffer-alist nil)) (deffoo nnimap-status-message (&optional server) @@ -1181,11 +1218,11 @@ function is generally only called when Gnus is shutting down." (if (memq 'dormant cmdmarks) (setq cmdmarks (cons 'tick cmdmarks)))) ;; remove stuff we are forbidden to store - (mapcar (lambda (mark) - (if (imap-message-flag-permanent-p - (nnimap-mark-to-flag mark)) - (setq marks (cons mark marks)))) - cmdmarks) + (mapc (lambda (mark) + (if (imap-message-flag-permanent-p + (nnimap-mark-to-flag mark)) + (setq marks (cons mark marks)))) + cmdmarks) (when (and range marks) (cond ((eq what 'del) (imap-message-flags-del @@ -1514,21 +1551,21 @@ function is generally only called when Gnus is shutting down." (error "Your server does not support ACL editing")) (with-current-buffer nnimap-server-buffer ;; delete all removed identifiers - (mapcar (lambda (old-acl) - (unless (assoc (car old-acl) new-acls) - (or (imap-mailbox-acl-delete (car old-acl) mailbox) - (error "Can't delete ACL for %s" (car old-acl))))) - old-acls) + (mapc (lambda (old-acl) + (unless (assoc (car old-acl) new-acls) + (or (imap-mailbox-acl-delete (car old-acl) mailbox) + (error "Can't delete ACL for %s" (car old-acl))))) + old-acls) ;; set all changed acl's - (mapcar (lambda (new-acl) - (let ((new-rights (cdr new-acl)) - (old-rights (cdr (assoc (car new-acl) old-acls)))) - (unless (and old-rights new-rights - (string= old-rights new-rights)) - (or (imap-mailbox-acl-set (car new-acl) new-rights mailbox) - (error "Can't set ACL for %s to %s" (car new-acl) - new-rights))))) - new-acls) + (mapc (lambda (new-acl) + (let ((new-rights (cdr new-acl)) + (old-rights (cdr (assoc (car new-acl) old-acls)))) + (unless (and old-rights new-rights + (string= old-rights new-rights)) + (or (imap-mailbox-acl-set (car new-acl) new-rights mailbox) + (error "Can't set ACL for %s to %s" (car new-acl) + new-rights))))) + new-acls) t))) diff --git a/lisp/nnkiboze.el b/lisp/nnkiboze.el index 07aa565..6ab99dd 100644 --- a/lisp/nnkiboze.el +++ b/lisp/nnkiboze.el @@ -32,7 +32,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nntp) (require 'nnheader) @@ -150,8 +149,7 @@ ;; Remove NOV lines of articles that are marked as read. (when (and (file-exists-p (nnkiboze-nov-file-name)) nnkiboze-remove-read-articles) - (let ((coding-system-for-write nnkiboze-file-coding-system) - (output-coding-system nnkiboze-file-coding-system)) + (let ((coding-system-for-write nnkiboze-file-coding-system)) (with-temp-file (nnkiboze-nov-file-name) (let ((cur (current-buffer)) (nnheader-file-coding-system nnkiboze-file-coding-system)) @@ -229,7 +227,7 @@ Finds out what articles are to be part of the nnkiboze groups." "." gnus-score-file-suffix)))))) (defun nnkiboze-generate-group (group &optional inhibit-list-groups) - (let* ((info (nth 2 (gnus-gethash group gnus-newsrc-hashtb))) + (let* ((info (gnus-get-info group)) (newsrc-file (concat nnkiboze-directory (nnheader-translate-file-chars (concat group ".newsrc")))) @@ -255,8 +253,7 @@ Finds out what articles are to be part of the nnkiboze groups." (mm-with-unibyte (when (file-exists-p newsrc-file) (load newsrc-file)) - (let ((coding-system-for-write nnkiboze-file-coding-system) - (output-coding-system nnkiboze-file-coding-system)) + (let ((coding-system-for-write nnkiboze-file-coding-system)) (gnus-make-directory (file-name-directory nov-file)) (with-temp-file nov-file (when (file-exists-p nov-file) @@ -272,8 +269,7 @@ Finds out what articles are to be part of the nnkiboze groups." (numberp (car (symbol-value group))) ; It is active (or (> nnkiboze-level 7) (and (setq glevel - (nth 1 (nth 2 (gnus-gethash - gname gnus-newsrc-hashtb)))) + (gnus-info-level (gnus-get-info gname))) (>= nnkiboze-level glevel))) (not (string-match "^nnkiboze:" gname)) ; Exclude kibozes (push (cons gname (1- (car (symbol-value group)))) @@ -285,8 +281,7 @@ Finds out what articles are to be part of the nnkiboze groups." ;; number that has been kibozed in GROUP in this kiboze group. (setq newsrc nnkiboze-newsrc) (while newsrc - (if (not (setq active (gnus-gethash - (caar newsrc) gnus-active-hashtb))) + (if (not (setq active (gnus-active (caar newsrc)))) ;; This group isn't active after all, so we remove it from ;; the list of component groups. (setq nnkiboze-newsrc (delq (car newsrc) nnkiboze-newsrc)) @@ -297,8 +292,7 @@ Finds out what articles are to be part of the nnkiboze groups." (gnus-message 3 "nnkiboze: Checking %s..." (caar newsrc)) (setq ginfo (gnus-get-info (gnus-group-group-name)) orig-info (gnus-copy-sequence ginfo) - num-unread (car (gnus-gethash (caar newsrc) - gnus-newsrc-hashtb))) + num-unread (gnus-group-unread (caar newsrc))) (unwind-protect (progn ;; We set all list of article marks to nil. Since we operate @@ -341,8 +335,7 @@ Finds out what articles are to be part of the nnkiboze groups." ;; Restore the proper info. (when ginfo (setcdr ginfo (cdr orig-info))) - (setcar (gnus-gethash (caar newsrc) gnus-newsrc-hashtb) - num-unread))) + (setcar (gnus-group-entry (caar newsrc)) num-unread))) (setcdr (car newsrc) (cdr active)) (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc)) (setq newsrc (cdr newsrc))))) diff --git a/lisp/nnlistserv.el b/lisp/nnlistserv.el index 1008141..6391dd4 100644 --- a/lisp/nnlistserv.el +++ b/lisp/nnlistserv.el @@ -122,7 +122,7 @@ (mm-url-decode-entities) (while headers (goto-char (point-min)) - (re-search-forward (format "\n" + "\n" + " \n" + " mySubscriptions\n" + " " (format-time-string "%a, %d %b %Y %T %z") + "\n" + " " user-mail-address "\n" + " " (user-full-name) "\n" + " \n" + " \n")) + (mapc (lambda (sub) + (insert (concat + " \n"))) + nnrss-group-alist) + (insert (concat + " \n" + "\n"))) + (pop-to-buffer "*OPML Export*") + (when (fboundp 'sgml-mode) + (sgml-mode))) + (defun nnrss-generate-download-script () "Generate a download script in the current buffer. It is useful when `(setq nnrss-use-local t)'." @@ -553,51 +566,52 @@ It is useful when `(setq nnrss-use-local t)'." node)) (defun nnrss-find-el (tag data &optional found-list) - "Find the all matching elements in the data. Careful with this on -large documents!" - (if (listp data) - (mapcar (lambda (bit) - (if (car-safe bit) - (progn (if (equal tag (car bit)) - (setq found-list - (append found-list - (list bit)))) - (if (and (listp (car-safe (caddr bit))) - (not (stringp (caddr bit)))) - (setq found-list - (append found-list - (nnrss-find-el - tag (caddr bit)))) - (setq found-list - (append found-list - (nnrss-find-el - tag (cddr bit)))))))) - data)) + "Find the all matching elements in the data. +Careful with this on large documents!" + (when (listp data) + (mapc (lambda (bit) + (when (car-safe bit) + (when (equal tag (car bit)) + (setq found-list + (append found-list + (list bit)))) + (if (and (listp (car-safe (caddr bit))) + (not (stringp (caddr bit)))) + (setq found-list + (append found-list + (nnrss-find-el + tag (caddr bit)))) + (setq found-list + (append found-list + (nnrss-find-el + tag (cddr bit))))))) + data)) found-list) (defun nnrss-rsslink-p (el) "Test if the element we are handed is an RSS autodiscovery link." (and (eq (car-safe el) 'link) (string-equal (cdr (assoc 'rel (cadr el))) "alternate") - (or (string-equal (cdr (assoc 'type (cadr el))) + (or (string-equal (cdr (assoc 'type (cadr el))) "application/rss+xml") (string-equal (cdr (assoc 'type (cadr el))) "text/xml")))) (defun nnrss-get-rsslinks (data) "Extract the elements that are links to RSS from the parsed data." - (delq nil (mapcar + (delq nil (mapcar (lambda (el) (if (nnrss-rsslink-p el) el)) (nnrss-find-el 'link data)))) (defun nnrss-extract-hrefs (data) - "Recursively extract hrefs from a page's source. DATA should be -the output of xml-parse-region or w3-parse-buffer." + "Recursively extract hrefs from a page's source. +DATA should be the output of `xml-parse-region' or +`w3-parse-buffer'." (mapcar (lambda (ahref) (cdr (assoc 'href (cadr ahref)))) (nnrss-find-el 'a data))) -(defmacro nnrss-match-macro (base-uri item +(defmacro nnrss-match-macro (base-uri item onsite-list offsite-list) `(cond ((or (string-match (concat "^" ,base-uri) ,item) (not (string-match "://" ,item))) @@ -618,28 +632,28 @@ whether they are `offsite' or `onsite'." rss-onsite-in rdf-onsite-in xml-onsite-in rss-offsite-end rdf-offsite-end xml-offsite-end rss-offsite-in rdf-offsite-in xml-offsite-in) - (mapcar (lambda (href) - (if (not (null href)) - (cond ((string-match "\\.rss$" href) - (nnrss-match-macro - base-uri href rss-onsite-end rss-offsite-end)) - ((string-match "\\.rdf$" href) - (nnrss-match-macro - base-uri href rdf-onsite-end rdf-offsite-end)) - ((string-match "\\.xml$" href) - (nnrss-match-macro - base-uri href xml-onsite-end xml-offsite-end)) - ((string-match "rss" href) - (nnrss-match-macro - base-uri href rss-onsite-in rss-offsite-in)) - ((string-match "rdf" href) - (nnrss-match-macro - base-uri href rdf-onsite-in rdf-offsite-in)) - ((string-match "xml" href) - (nnrss-match-macro - base-uri href xml-onsite-in xml-offsite-in))))) - hrefs) - (append + (mapc (lambda (href) + (if (not (null href)) + (cond ((string-match "\\.rss$" href) + (nnrss-match-macro + base-uri href rss-onsite-end rss-offsite-end)) + ((string-match "\\.rdf$" href) + (nnrss-match-macro + base-uri href rdf-onsite-end rdf-offsite-end)) + ((string-match "\\.xml$" href) + (nnrss-match-macro + base-uri href xml-onsite-end xml-offsite-end)) + ((string-match "rss" href) + (nnrss-match-macro + base-uri href rss-onsite-in rss-offsite-in)) + ((string-match "rdf" href) + (nnrss-match-macro + base-uri href rdf-onsite-in rdf-offsite-in)) + ((string-match "xml" href) + (nnrss-match-macro + base-uri href xml-onsite-in xml-offsite-in))))) + hrefs) + (append rss-onsite-end rdf-onsite-end xml-onsite-end rss-onsite-in rdf-onsite-in xml-onsite-in rss-offsite-end rdf-offsite-end xml-offsite-end @@ -672,7 +686,7 @@ whether they are `offsite' or `onsite'." ;; - offsite links containing any of the above (let* ((base-uri (progn (string-match ".*://[^/]+/?" url) (match-string 0 url))) - (hrefs (nnrss-order-hrefs + (hrefs (nnrss-order-hrefs base-uri (nnrss-extract-hrefs parsed-page))) (rss-link nil)) (while (and (eq rss-link nil) (not (eq hrefs nil))) @@ -688,7 +702,7 @@ whether they are `offsite' or `onsite'." (nnrss-find-rss-via-syndic8 url)))))))) (defun nnrss-find-rss-via-syndic8 (url) - "query syndic8 for the rss feeds it has for the url." + "Query syndic8 for the rss feeds it has for URL." (if (not (locate-library "xml-rpc")) (progn (message "XML-RPC is not available... not checking Syndic8.") @@ -699,22 +713,22 @@ whether they are `offsite' or `onsite'." 'syndic8.FindSites url))) (when feedid - (let* ((feedinfo (xml-rpc-method-call + (let* ((feedinfo (xml-rpc-method-call "http://www.syndic8.com/xmlrpc.php" 'syndic8.GetFeedInfo feedid)) (urllist - (delq nil + (delq nil (mapcar (lambda (listinfo) - (if (string-equal + (if (string-equal (cdr (assoc "status" listinfo)) "Syndicated") (cons (cdr (assoc "sitename" listinfo)) (list (cons 'title - (cdr (assoc + (cdr (assoc "sitename" listinfo))) (cons 'href (cdr (assoc @@ -723,20 +737,20 @@ whether they are `offsite' or `onsite'." (if (not (> (length urllist) 1)) (cdar urllist) (let ((completion-ignore-case t) - (selection + (selection (mapcar (lambda (listinfo) - (cons (cdr (assoc "sitename" listinfo)) - (string-to-int + (cons (cdr (assoc "sitename" listinfo)) + (string-to-int (cdr (assoc "feedid" listinfo))))) feedinfo))) - (cdr (assoc + (cdr (assoc (completing-read "Multiple feeds found. Select one: " selection nil t) urllist))))))))) (defun nnrss-rss-p (data) - "Test if data is an RSS feed. Simply ensures that the first -element is rss or rdf." + "Test if DATA is an RSS feed. +Simply ensures that the first element is rss or rdf." (or (eq (caar data) 'rss) (eq (caar data) 'rdf:RDF))) @@ -757,13 +771,13 @@ element is rss or rdf." that gives the URI for which you want to retrieve the namespace prefix), return the prefix." (let* ((prefix (car (rassoc uri (cadar el)))) - (nslist (if prefix + (nslist (if prefix (split-string (symbol-name prefix) ":"))) (ns (cond ((eq (length nslist) 1) ; no prefix given "") ((eq (length nslist) 2) ; extract prefix (cadr nslist))))) - (if (and ns (not (eq ns ""))) + (if (and ns (not (string= ns ""))) (concat ns ":") ns))) diff --git a/lisp/nnslashdot.el b/lisp/nnslashdot.el index 57de225..614de21 100644 --- a/lisp/nnslashdot.el +++ b/lisp/nnslashdot.el @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnoo) (require 'message) diff --git a/lisp/nnspool.el b/lisp/nnspool.el index add0e7e..94fccc7 100644 --- a/lisp/nnspool.el +++ b/lisp/nnspool.el @@ -30,7 +30,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnheader) (require 'nntp) @@ -245,8 +244,7 @@ there.") ;; Yes, completely empty spool directories *are* possible. ;; Fix by Sudish Joseph (when (setq dir (directory-files pathname nil "^[0-9]+$" t)) - (setq dir - (sort (mapcar (lambda (name) (string-to-int name)) dir) '<))) + (setq dir (sort (mapcar 'string-to-int dir) '<))) (if dir (nnheader-insert "211 %d %d %d %s\n" (length dir) (car dir) diff --git a/lisp/nntp.el b/lisp/nntp.el index 784d7c0..cab628e 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -1,7 +1,7 @@ ;;; nntp.el --- nntp access for Gnus ;; Copyright (C) 1987, 1988, 1989, 1990, 1992, 1993, 1994, 1995, 1996, -;; 1997, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; 1997, 1998, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Katsumi Yamaoka @@ -28,7 +28,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnheader) (require 'nnoo) @@ -116,6 +115,7 @@ Direct connections: Indirect connections: - `nntp-open-via-rlogin-and-telnet', +- `nntp-open-via-rlogin-and-netcat', - `nntp-open-via-telnet-and-telnet'.") (defvoo nntp-pre-command nil @@ -124,20 +124,22 @@ This is where you would put \"runsocks\" or stuff like that.") (defvoo nntp-telnet-command "telnet" "*Telnet command used to connect to the nntp server. -This command is used by the various nntp-open-via-* methods.") +This command is used by the methods `nntp-open-telnet-stream', +`nntp-open-via-rlogin-and-telnet' and `nntp-open-via-telnet-and-telnet'.") (defvoo nntp-telnet-switches '("-8") "*Switches given to the telnet command `nntp-telnet-command'.") (defvoo nntp-end-of-line "\r\n" "*String to use on the end of lines when talking to the NNTP server. -This is \"\\r\\n\" by default, but should be \"\\n\" when -using and indirect connection method (nntp-open-via-*).") +This is \"\\r\\n\" by default, but should be \"\\n\" when using and +indirect telnet connection method (nntp-open-via-*-and-telnet).") (defvoo nntp-via-rlogin-command "rsh" "*Rlogin command used to connect to an intermediate host. -This command is used by the `nntp-open-via-rlogin-and-telnet' method. -The default is \"rsh\", but \"ssh\" is a popular alternative.") +This command is used by the methods `nntp-open-via-rlogin-and-telnet' +and `nntp-open-via-rlogin-and-netcat'. The default is \"rsh\", but \"ssh\" +is a popular alternative.") (defvoo nntp-via-rlogin-command-switches nil "*Switches given to the rlogin command `nntp-via-rlogin-command'. @@ -153,9 +155,16 @@ This command is used by the `nntp-open-via-telnet-and-telnet' method.") (defvoo nntp-via-telnet-switches '("-8") "*Switches given to the telnet command `nntp-via-telnet-command'.") +(defvoo nntp-via-netcat-command "nc" + "*Netcat command used to connect to the nntp server. +This command is used by the `nntp-open-via-rlogin-and-netcat' method.") + +(defvoo nntp-via-netcat-switches nil + "*Switches given to the netcat command `nntp-via-netcat-command'.") + (defvoo nntp-via-user-name nil "*User name to log in on an intermediate host with. -This variable is used by the `nntp-open-via-telnet-and-telnet' method.") +This variable is used by the various nntp-open-via-* methods.") (defvoo nntp-via-user-password nil "*Password to use to log in on an intermediate host with. @@ -163,8 +172,7 @@ This variable is used by the `nntp-open-via-telnet-and-telnet' method.") (defvoo nntp-via-address nil "*Address of an intermediate host to connect to. -This variable is used by the `nntp-open-via-rlogin-and-telnet' and -`nntp-open-via-telnet-and-telnet' methods.") +This variable is used by the various nntp-open-via-* methods.") (defvoo nntp-via-envuser nil "*Whether both telnet client and server support the ENVIRON option. @@ -387,6 +395,11 @@ be restored and the command retried." (kill-buffer buffer) (nnheader-init-server-buffer))) +(defun nntp-erase-buffer (buffer) + "Erase contents of BUFFER." + (with-current-buffer buffer + (erase-buffer))) + (defsubst nntp-find-connection (buffer) "Find the connection delivering to BUFFER." (let ((alist nntp-connection-alist) @@ -421,9 +434,7 @@ be restored and the command retried." (if process (progn (unless (or nntp-inhibit-erase nnheader-callback-function) - (save-excursion - (set-buffer (process-buffer process)) - (erase-buffer))) + (nntp-erase-buffer (process-buffer process))) (condition-case err (progn (when command @@ -450,9 +461,7 @@ be restored and the command retried." "Send STRINGS to server and wait until WAIT-FOR returns." (when (and (not nnheader-callback-function) (not nntp-inhibit-output)) - (save-excursion - (set-buffer nntp-server-buffer) - (erase-buffer))) + (nntp-erase-buffer nntp-server-buffer)) (let* ((command (mapconcat 'identity strings " ")) (process (nntp-find-connection nntp-server-buffer)) (buffer (and process (process-buffer process))) @@ -475,7 +484,7 @@ be restored and the command retried." (goto-char pos) (if (looking-at (regexp-quote command)) (delete-region pos (progn (forward-line 1) - (gnus-point-at-bol))))))) + (point-at-bol))))))) (nnheader-report 'nntp "Couldn't open connection to %s." nntp-address)))) @@ -499,7 +508,7 @@ be restored and the command retried." (goto-char pos) (if (looking-at (regexp-quote command)) (delete-region pos (progn (forward-line 1) - (gnus-point-at-bol)))) + (point-at-bol)))) ))) (nnheader-report 'nntp "Couldn't open connection to %s." nntp-address)))) @@ -508,9 +517,7 @@ be restored and the command retried." "Send STRINGS to server and wait until WAIT-FOR returns." (when (and (not nnheader-callback-function) (not nntp-inhibit-output)) - (save-excursion - (set-buffer nntp-server-buffer) - (erase-buffer))) + (nntp-erase-buffer nntp-server-buffer)) (let* ((command (mapconcat 'identity strings " ")) (process (nntp-find-connection nntp-server-buffer)) (buffer (and process (process-buffer process))) @@ -525,11 +532,11 @@ be restored and the command retried." (unless wait-for (nntp-accept-response) (save-excursion - (set-buffer buffer) - (goto-char pos) - (if (looking-at (regexp-quote command)) - (delete-region pos (progn (forward-line 1) (gnus-point-at-bol)))) - ))) + (set-buffer buffer) + (goto-char pos) + (if (looking-at (regexp-quote command)) + (delete-region pos (progn (forward-line 1) (point-at-bol)))) + ))) (nnheader-report 'nntp "Couldn't open connection to %s." nntp-address)))) @@ -537,15 +544,14 @@ be restored and the command retried." "Send the current buffer to server and wait until WAIT-FOR returns." (when (and (not nnheader-callback-function) (not nntp-inhibit-output)) - (save-excursion - (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) - (erase-buffer))) + (nntp-erase-buffer + (nntp-find-connection-buffer nntp-server-buffer))) (nntp-encode-text) (let ((multibyte (and (boundp 'enable-multibyte-characters) (symbol-value 'enable-multibyte-characters)))) (unwind-protect ;; Some encoded unicode text contains character 0x80-0x9f e.g. Euro. - (let (default-enable-multibyte-characters mc-flag) + (let (default-enable-multibyte-characters) ;; `set-buffer-multibyte' will be provided by APEL for all Emacsen. (set-buffer-multibyte nil) (process-send-region (nntp-find-connection nntp-server-buffer) @@ -607,7 +613,7 @@ command whose response triggered the error." (let ((timer (and nntp-connection-timeout - (nnheader-run-at-time + (run-at-time nntp-connection-timeout nil '(lambda () (let ((process (nntp-find-connection @@ -709,8 +715,7 @@ command whose response triggered the error." (catch 'done (save-excursion ;; Erase nntp-server-buffer before nntp-inhibit-erase. - (set-buffer nntp-server-buffer) - (erase-buffer) + (nntp-erase-buffer nntp-server-buffer) (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) ;; The first time this is run, this variable is `try'. So we ;; try. @@ -1130,7 +1135,7 @@ password contained in '~/.nntp-authinfo'." (nntp-send-command "^3.*\r?\n" "AUTHINFO USER" (user-login-name)) (nntp-send-command "^2.*\r?\n" "AUTHINFO PASS" - (buffer-substring (point) (gnus-point-at-eol)))))) + (buffer-substring (point) (point-at-eol)))))) ;;; Internal functions. @@ -1140,9 +1145,7 @@ password contained in '~/.nntp-authinfo'." (funcall nntp-authinfo-function) ;; We have to re-send the function that was interrupted by ;; the authinfo request. - (save-excursion - (set-buffer nntp-server-buffer) - (erase-buffer)) + (nntp-erase-buffer nntp-server-buffer) (nntp-send-string process last))) (defun nntp-make-process-buffer (buffer) @@ -1167,7 +1170,7 @@ password contained in '~/.nntp-authinfo'." (let* ((pbuffer (nntp-make-process-buffer buffer)) (timer (and nntp-connection-timeout - (nnheader-run-at-time + (run-at-time nntp-connection-timeout nil `(lambda () (nntp-kill-buffer ,pbuffer))))) @@ -1276,7 +1279,7 @@ password contained in '~/.nntp-authinfo'." ;; doesn't trigger after-change-functions. (unless nntp-async-timer (setq nntp-async-timer - (nnheader-run-at-time 1 1 'nntp-async-timer-handler))) + (run-at-time 1 1 'nntp-async-timer-handler))) (add-to-list 'nntp-async-process-list process)) (defun nntp-async-timer-handler () @@ -1404,9 +1407,7 @@ password contained in '~/.nntp-authinfo'." (nntp-send-command "^[245].*\n" "GROUP" group) (setcar (cddr entry) group) (erase-buffer) - (save-excursion - (set-buffer nntp-server-buffer) - (erase-buffer)))))))) + (nntp-erase-buffer nntp-server-buffer))))))) (defun nntp-decode-text (&optional cr-only) "Decode the text in the current buffer." @@ -1615,10 +1616,8 @@ password contained in '~/.nntp-authinfo'." (setq commands (cdr commands))) ;; If none of the commands worked, we disable XOVER. (when (eq nntp-server-xover 'try) - (save-excursion - (set-buffer nntp-server-buffer) - (erase-buffer) - (setq nntp-server-xover nil))) + (nntp-erase-buffer nntp-server-buffer) + (setq nntp-server-xover nil)) nntp-server-xover)))) (defun nntp-find-group-and-number (&optional group) @@ -1872,6 +1871,36 @@ Please refer to the following variables to customize the connection: (delete-region (point) (point-max))) proc)) +(defun nntp-open-via-rlogin-and-netcat (buffer) + "Open a connection to an nntp server through an intermediate host. +First rlogin to the remote host, and then connect to the real news +server from there using the netcat command. + +Please refer to the following variables to customize the connection: +- `nntp-pre-command', +- `nntp-via-rlogin-command', +- `nntp-via-rlogin-command-switches', +- `nntp-via-user-name', +- `nntp-via-address', +- `nntp-via-netcat-command', +- `nntp-via-netcat-switches', +- `nntp-address', +- `nntp-port-number', +- `nntp-end-of-line'." + (let ((command `(,@(when nntp-pre-command + (list nntp-pre-command)) + ,nntp-via-rlogin-command + ,@(when nntp-via-rlogin-command-switches + nntp-via-rlogin-command-switches) + ,@(when nntp-via-user-name + (list "-l" nntp-via-user-name)) + ,nntp-via-address + ,nntp-via-netcat-command + ,@nntp-via-netcat-switches + ,nntp-address + ,nntp-port-number))) + (apply 'start-process "nntpd" buffer command))) + (defun nntp-open-via-telnet-and-telnet (buffer) "Open a connection to an nntp server through an intermediate host. First telnet the remote host, and then telnet the real news server diff --git a/lisp/nnultimate.el b/lisp/nnultimate.el index 9730922..bab703b 100644 --- a/lisp/nnultimate.el +++ b/lisp/nnultimate.el @@ -30,7 +30,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnoo) (require 'message) diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index 76a4670..adb28ca 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -339,9 +339,9 @@ component group will show up when you enter the virtual group.") (let ((gnus-group-marked (copy-sequence nnvirtual-component-groups)) (gnus-expert-user t)) ;; Make sure all groups are activated. - (mapcar + (mapc (lambda (g) - (when (not (numberp (car (gnus-gethash g gnus-newsrc-hashtb)))) + (when (not (numberp (gnus-group-unread g))) (gnus-activate-group g))) nnvirtual-component-groups) (save-excursion @@ -401,7 +401,7 @@ component group will show up when you enter the virtual group.") (looking-at "[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t") (goto-char (match-end 0)) - (unless (search-forward "\t" (gnus-point-at-eol) 'move) + (unless (search-forward "\t" (point-at-eol) 'move) (insert "\t")) ;; Remove any spaces at the beginning of the Xref field. @@ -417,8 +417,8 @@ component group will show up when you enter the virtual group.") ;; component server prefix. (save-restriction (narrow-to-region (point) - (or (search-forward "\t" (gnus-point-at-eol) t) - (gnus-point-at-eol))) + (or (search-forward "\t" (point-at-eol) t) + (point-at-eol))) (goto-char (point-min)) (when (re-search-forward "Xref: *[^\n:0-9 ]+ *" nil t) (replace-match "" t t)) @@ -664,8 +664,7 @@ numbers has no corresponding component article, then it is left out of the result." (when (numberp (cdr-safe articles)) (setq articles (list articles))) - (let ((carticles (mapcar (lambda (g) (list g)) - nnvirtual-component-groups)) + (let ((carticles (mapcar 'list nnvirtual-component-groups)) a i j article entry) (while (setq a (pop articles)) (if (atom a) @@ -678,8 +677,8 @@ the result." (setq entry (assoc (car article) carticles)) (setcdr entry (cons (cdr article) (cdr entry)))) (setq i (1+ i)))) - (mapcar (lambda (x) (setcdr x (nreverse (cdr x)))) - carticles) + (mapc (lambda (x) (setcdr x (nreverse (cdr x)))) + carticles) carticles)) @@ -701,29 +700,29 @@ based on the marks on the component groups." ;; Into all-unreads we put (g unreads). ;; Into all-marks we put (g marks). ;; We also increment cnt and tot here, and compute M (max of sizes). - (mapcar (lambda (g) - (setq active (gnus-activate-group g) - min (car active) - max (cdr active)) - (when (and active (>= max min) (not (zerop max))) - ;; store active information - (push (list g (- max min -1) max) actives) - ;; collect unread/mark info for later - (setq unreads (gnus-list-of-unread-articles g)) - (setq marks (gnus-info-marks (gnus-get-info g))) - (when gnus-use-cache - (push (cons 'cache - (gnus-cache-articles-in-group g)) - marks)) - (push (cons g unreads) all-unreads) - (push (cons g marks) all-marks) - ;; count groups, total #articles, and max size - (setq size (- max min -1)) - (setq cnt (1+ cnt) - tot (+ tot size) - M (max M size)))) - nnvirtual-component-groups) - + (mapc (lambda (g) + (setq active (gnus-activate-group g) + min (car active) + max (cdr active)) + (when (and active (>= max min) (not (zerop max))) + ;; store active information + (push (list g (- max min -1) max) actives) + ;; collect unread/mark info for later + (setq unreads (gnus-list-of-unread-articles g)) + (setq marks (gnus-info-marks (gnus-get-info g))) + (when gnus-use-cache + (push (cons 'cache + (gnus-cache-articles-in-group g)) + marks)) + (push (cons g unreads) all-unreads) + (push (cons g marks) all-marks) + ;; count groups, total #articles, and max size + (setq size (- max min -1)) + (setq cnt (1+ cnt) + tot (+ tot size) + M (max M size)))) + nnvirtual-component-groups) + ;; Number of articles in the virtual group. (setq nnvirtual-mapping-len tot) diff --git a/lisp/nnweb.el b/lisp/nnweb.el index d71f595..c6d4d3f 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnoo) (require 'message) @@ -534,7 +533,7 @@ Valid types include `google', `dejanews', and `gmane'.") (nth 1 parse) " ")) (insert ">\n") - (mapcar 'nnweb-insert-html (nth 2 parse)) + (mapc 'nnweb-insert-html (nth 2 parse)) (insert "\n"))) (defun nnweb-parse-find (type parse &optional maxdepth) diff --git a/lisp/nnwfm.el b/lisp/nnwfm.el index 17f2656..7731e59 100644 --- a/lisp/nnwfm.el +++ b/lisp/nnwfm.el @@ -29,7 +29,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) (require 'nnoo) (require 'message) diff --git a/lisp/password.el b/lisp/password.el new file mode 100644 index 0000000..4683a9c --- /dev/null +++ b/lisp/password.el @@ -0,0 +1,111 @@ +;;; password.el --- Read passwords from user, possibly using a password cache. + +;; Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. + +;; Author: Simon Josefsson +;; Created: 2003-12-21 +;; Keywords: password cache passphrase key + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; Greatly influenced by pgg.el written by Daiki Ueno, with timer +;; fixes for XEmacs by Katsumi Yamaoka. In fact, this is mostly just +;; a rip-off. +;; +;; (password-read "Password? " "test") +;; ;; Minibuffer prompt for password. +;; => "foo" +;; +;; (password-cache-add "test" "foo") +;; => nil +;; +;; (password-read "Password? " "test") +;; ;; No minibuffer prompt +;; => "foo" +;; +;; (password-read "Password? " "test") +;; ;; No minibuffer prompt +;; => "foo" +;; +;; ;; Wait `password-cache-expiry' seconds. +;; +;; (password-read "Password? " "test") +;; ;; Minibuffer prompt for password is back. +;; => "foo" + +;;; Code: + +(when (featurep 'xemacs) + (require 'run-at-time)) + +(eval-when-compile + (require 'cl)) + +(defcustom password-cache t + "Whether to cache passwords." + :group 'password + :type 'boolean) + +(defcustom password-cache-expiry 16 + "How many seconds passwords are cached, or nil to disable expiring. +Whether passwords are cached at all is controlled by `password-cache'." + :group 'password + :type '(choice (const :tag "Never" nil) + (integer :tag "Seconds"))) + +(defvar password-data (make-vector 7 0)) + +(defun password-read (prompt &optional key) + "Read password, for use with KEY, from user, or from cache if wanted. +KEY indicate the purpose of the password, so the cache can +separate passwords. The cache is not used if KEY is nil. It is +typically a string. +The variable `password-cache' control whether the cache is used." + (or (and password-cache + key + (symbol-value (intern-soft key password-data))) + (read-passwd prompt))) + +(defun password-cache-remove (key) + "Remove password indexed by KEY from password cache. +This is typically run be a timer setup from `password-cache-add', +but can be invoked at any time to forcefully remove passwords +from the cache. This may be useful when it has been detected +that a password is invalid, so that `password-read' query the +user again." + (let ((password (symbol-value (intern-soft key password-data)))) + (when password + (fillarray password ?_) + (unintern key password-data)))) + +(defun password-cache-add (key password) + "Add password to cache. +The password is removed by a timer after `password-cache-expiry' +seconds." + (set (intern key password-data) password) + (when password-cache-expiry + (run-at-time password-cache-expiry nil + #'password-cache-remove + key)) + nil) + +(provide 'password) + +;;; password.el ends here diff --git a/lisp/pop3.el b/lisp/pop3.el index c47a2e4..9a184db 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -35,27 +35,49 @@ ;; This program was inspired by Kyle E. Jones's vm-pop program. -;; You have to set the variable `pop3-connection-type' to `ssl' or -;; `tls' expressly, if you would like to use this module with Gnus -;; (not T-gnus) for those connection types. For examples: +;;; Gnus: + +;; You can use this program for Gnus, without needing any modification. +;; There are two ways to do that; one is to replace Gnus' pop3.el with +;; it when installing Gnus; the other is to replace Gnus' pop3.el which +;; has been installed with this module and byte-compile it. + +;; Note: you should not modify the value for the `pop' section of the +;; `mail-source-keyword-map' variable. + +;; This program provides the following features in addition to Gnus: + +;; 1. You can use SSL or STARTTLS stream to connect to mail servers. +;; For example, specify the `:connection' keyword and the value pair +;; in a mail-source as follows: +;; +;;(setq mail-sources '((pop :server "pop3.mail.server" :port 995 +;; :connection ssl :authentication apop))) +;; +;; For STARTTLS stream, use `tls' isntead of `ssl'. The default +;; connection type is defined by `pop3-connection-type' which +;; defaults to nil. + +;; 2. You can fetch mails without deleting them in mail servers. To do +;; that, specify the `:leave' keyword with the value t as follows: ;; -;;(setq mail-sources '((pop :server "POPSERVER" :port 995 :connection ssl -;; :authentication apop))) -;;(setq pop3-connection-type 'ssl) +;;(setq mail-sources '((pop :server "pop3.mail.server" :leave t))) +;; +;; Already read mails are registered into the ~/.uidls-SERVER file +;; (which is the default, see `pop3-uidl-file-name'), and you will +;; never need to fetch them twice. The default value for the +;; `:leave' keyword is specified by the `pop3-leave-mail-on-server' +;; variable. You have no need to modify that value normally. + +;; 3. See the source code for some other miscellaneous extended features. ;;; Code: (eval-when-compile - (require 'cl) - ;; For compiling this module in Gnus with XEmacs -no-autoloads. - (require 'advice)) - -;; as-binary-process, open-network-stream-as-binary, write-region-as-binary -(require 'pces) -;; exec-installed-p -(require 'path-util) + (require 'cl)) (require 'mail-utils) +(require 'nnheader) (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil) "*POP3 maildrop.") @@ -107,7 +129,7 @@ Users don't have to set this value.") (autoload 'starttls-negotiate "starttls")) (defvar pop3-ssl-program-name - (if (exec-installed-p "openssl") + (if (executable-find "openssl") "openssl" "ssleay") "The program to run in a subprocess to open an SSL connection.") @@ -161,8 +183,10 @@ Users don't have to set this value.") (setq messages (cdr messages) n (1+ n))) (with-current-buffer crashbuf - (write-region-as-binary (point-min) (point-max) - crashbox 'append 'nomesg)) + (let ((coding-system-for-write 'binary) + jka-compr-compression-info-list jam-zcat-filename-list) + (write-region (point-min) (point-max) + crashbox 'append 'nomesg))) ;; mark messages as read (when pop3-leave-mail-on-server (pop3-save-uidls)) @@ -217,8 +241,9 @@ Argument PORT specifies connecting port." ((eq pop3-connection-type 'tls) (pop3-open-tls-stream "POP" (current-buffer) mailhost port)) (t - (open-network-stream-as-binary "POP" (current-buffer) - mailhost port)))) + (let ((coding-system-for-read 'binary) + (coding-system-for-write 'binary)) + (open-network-stream "POP" (current-buffer) mailhost port))))) (let ((response (pop3-read-response process t))) (setq pop3-timestamp (substring response (or (string-match "<" response) 0) @@ -254,17 +279,20 @@ Argument PORT specifies connecting port." "Open a SSL connection for a service to a host. Returns a subprocess-object to represent the connection. Args are NAME BUFFER HOST SERVICE." - (as-binary-process - (or (pop3-open-ssl-stream-1 name buffer host service "-ssl3") - (pop3-open-ssl-stream-1 name buffer host service "-ssl2")))) + (let (selective-display ;; Disable ^M to nl translation. + (coding-system-for-read 'binary) + (coding-system-for-write 'binary)) + (or (pop3-open-ssl-stream-1 name buffer host service "-ssl3") + (pop3-open-ssl-stream-1 name buffer host service "-ssl2")))) (defun pop3-open-tls-stream (name buffer host service) "Open a TLSv1 connection for a service to a host. Returns a subprocess-object to represent the connection. Args are NAME BUFFER HOST SERVICE." - (let ((process - (as-binary-process (starttls-open-stream - name buffer host service)))) + (let* (selective-display ;; Disable ^M to nl translation. + (coding-system-for-read 'binary) + (coding-system-for-write 'binary) + (process (starttls-open-stream name buffer host service))) (pop3-stls process) (starttls-negotiate process) process)) @@ -511,45 +539,6 @@ If NOW, use that time instead." (if (not (and response (string-match "+OK" response))) (pop3-quit process)))) -;; When this file is being compiled in the Gnus (not T-gnus) source -;; tree, `md5' might have been defined in w3/md5.el, ./lpath.el or one -;; of some other libraries and `md5' will accept only 3 arguments. We -;; will deceive the byte-compiler not to say warnings. -(eval-when-compile - (if (boundp 'byte-compile-function-environment) - (let ((def (assq 'md5 byte-compile-function-environment))) - (if def - (setcdr def '(lambda (object &optional start end - coding-system noerror))) - (setq byte-compile-function-environment - (cons '(md5 . (lambda (object &optional start end - coding-system noerror))) - byte-compile-function-environment)))))) - -;; Note that `pop3-md5' should never encode a given string to use for -;; the apop authentication. -(eval-and-compile - (if (fboundp 'md5) - (if (condition-case nil - (md5 "\ -Check whether the 4th argument CODING-SYSTEM is allowed" - nil nil 'binary) - (error nil)) - ;; Emacs 21 or XEmacs 21 - ;; (md5 OBJECT &optional START END CODING-SYSTEM NOERROR) - (defun pop3-md5 (string) - (md5 string nil nil 'binary)) - ;; The reason why the program reaches here: - ;; 1. XEmacs 20 is running and the built-in `md5' doesn't - ;; allow the 4th argument. - ;; 2. `md5' has been defined by one of some lisp libraries. - ;; 3. This file is being compiled in the Gnus source tree, - ;; and `md5' has been defined in lpath.el. - (defalias 'pop3-md5 'md5)) - ;; The lisp function will be provided by FLIM or other libraries. - (autoload 'md5 "md5") - (defalias 'pop3-md5 'md5))) - (defun pop3-apop (process user) "Send alternate authentication information to the server." (let ((pass pop3-password)) @@ -557,7 +546,9 @@ Check whether the 4th argument CODING-SYSTEM is allowed" (setq pass (read-passwd (format "Password for %s: " pop3-maildrop)))) (if pass - (let ((hash (pop3-md5 (concat pop3-timestamp pass)))) + ;; Note that `md5' should never encode a given string to use for + ;; the apop authentication, so we should specify `binary'. + (let ((hash (md5 (concat pop3-timestamp pass) nil nil 'binary))) (pop3-send-command process (format "APOP %s %s" user hash)) (let ((response (pop3-read-response process t))) (if (not (and response (string-match "+OK" response))) @@ -716,6 +707,23 @@ If msgno is invalid, return nil. Otherwise, return a string." (pop3-clean-region start end) (list start end))) +;;; Advise the mail-source function in order to use this module in Gnus. + +(eval-after-load "mail-source" + '(if (member '(:connection) + (assq 'pop (symbol-value 'mail-source-keyword-map))) + nil ;; T-gnus is running. + (defadvice mail-source-fetch-pop (around bind-t-gnus-keywords activate) + "Bind `pop3-connection-type' and `pop3-leave-mail-on-server' according +to `mail-sources' while fetching mails with Gnus." + (let ((pop3-connection-type (or (plist-get (cdr (ad-get-arg 0)) + :connection) + pop3-connection-type)) + (pop3-leave-mail-on-server (or (plist-get (cdr (ad-get-arg 0)) + :leave) + pop3-leave-mail-on-server))) + ad-do-it)))) + ;; Summary of POP3 (Post Office Protocol version 3) commands and responses diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el index 3453f7b..20c3033 100644 --- a/lisp/rfc2047.el +++ b/lisp/rfc2047.el @@ -29,24 +29,7 @@ (eval-when-compile (require 'cl) - (defvar message-posting-charset) - (unless (fboundp 'with-syntax-table) ; not in Emacs 20 - (defmacro with-syntax-table (table &rest body) - "Evaluate BODY with syntax table of current buffer set to TABLE. -The syntax table of the current buffer is saved, BODY is evaluated, and the -saved table is restored, even in case of an abnormal exit. -Value is what BODY returns." - (let ((old-table (make-symbol "table")) - (old-buffer (make-symbol "buffer"))) - `(let ((,old-table (syntax-table)) - (,old-buffer (current-buffer))) - (unwind-protect - (progn - (set-syntax-table ,table) - ,@body) - (save-current-buffer - (set-buffer ,old-buffer) - (set-syntax-table ,old-table)))))))) + (defvar message-posting-charset)) (require 'qp) (require 'mm-util) @@ -55,18 +38,6 @@ Value is what BODY returns." (require 'base64) (autoload 'mm-body-7-or-8 "mm-bodies") -(eval-and-compile - ;; Avoid gnus-util for mm- code. - (defalias 'rfc2047-point-at-bol - (if (fboundp 'point-at-bol) - 'point-at-bol - 'line-beginning-position)) - - (defalias 'rfc2047-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position))) - (defvar rfc2047-header-encoding-alist '(("Newsgroups" . nil) ("Followup-To" . nil) @@ -126,6 +97,25 @@ quoted-printable and base64 respectively.") ;;; Functions for encoding RFC2047 messages ;;; +(defun rfc2047-qp-or-base64 () + "Return the type with which to encode the buffer. +This is either `base64' or `quoted-printable'." + (save-excursion + (let ((limit (min (point-max) (+ 2000 (point-min)))) + (n8bit 0)) + (goto-char (point-min)) + (skip-chars-forward "\x20-\x7f\r\n\t" limit) + (while (< (point) limit) + (incf n8bit) + (forward-char 1) + (skip-chars-forward "\x20-\x7f\r\n\t" limit)) + (if (or (< (* 6 n8bit) (- limit (point-min))) + ;; Don't base64, say, a short line with a single + ;; non-ASCII char when splitting parts by charset. + (= n8bit 1)) + 'quoted-printable + 'base64)))) + (defun rfc2047-narrow-to-field () "Narrow the buffer to the header on the current line." (beginning-of-line) @@ -134,7 +124,7 @@ quoted-printable and base64 respectively.") (progn (forward-line 1) (if (re-search-forward "^[^ \n\t]" nil t) - (rfc2047-point-at-bol) + (point-at-bol) (point-max)))) (goto-char (point-min))) @@ -411,7 +401,7 @@ By default, the region is treated as containing addresses (see ;; encoding, choose the one that's shorter. (save-restriction (narrow-to-region b e) - (if (eq (mm-qp-or-base64) 'base64) + (if (eq (rfc2047-qp-or-base64) 'base64) 'B 'Q)))) (start (concat @@ -424,7 +414,7 @@ By default, the region is treated as containing addresses (see (t 8))) (pre (- b (save-restriction (widen) - (rfc2047-point-at-bol)))) + (point-at-bol)))) ;; encoded-words must not be longer than 75 characters, ;; including charset, encoding etc. This leaves us with ;; 75 - (length start) - 2 - 2 characters. The last 2 is for @@ -483,7 +473,7 @@ By default, the region is treated as containing addresses (see (first t) (bol (save-restriction (widen) - (rfc2047-point-at-bol)))) + (point-at-bol)))) (while (not (eobp)) (when (and (or break qword-break) (> (- (point) bol) 76)) @@ -554,18 +544,18 @@ By default, the region is treated as containing addresses (see (goto-char (point-min)) (let ((bol (save-restriction (widen) - (rfc2047-point-at-bol))) - (eol (rfc2047-point-at-eol))) + (point-at-bol))) + (eol (point-at-eol))) (forward-line 1) (while (not (eobp)) (if (and (looking-at "[ \t]") - (< (- (rfc2047-point-at-eol) bol) 76)) + (< (- (point-at-eol) bol) 76)) (delete-region eol (progn (goto-char eol) (skip-chars-forward "\r\n") (point))) - (setq bol (rfc2047-point-at-bol))) - (setq eol (rfc2047-point-at-eol)) + (setq bol (point-at-bol))) + (setq eol (point-at-eol)) (forward-line 1))))) (defun rfc2047-b-encode-region (b e) @@ -585,7 +575,7 @@ By default, the region is treated as containing addresses (see (narrow-to-region (goto-char b) e) (let ((bol (save-restriction (widen) - (rfc2047-point-at-bol)))) + (point-at-bol)))) (quoted-printable-encode-region b e nil ;; = (\075), _ (\137), ? (\077) are used in the encoded word. @@ -617,8 +607,8 @@ By default, the region is treated as containing addresses (see (eval-and-compile (defconst rfc2047-encoded-word-regexp - "=\\?\\([^][\000-\040()<>@,\;:\\\"/?.=]+\\)\\?\\(B\\|Q\\)\ -\\?\\([!->@-~ +]*\\)\\?=")) + "=\\?\\([^][\000-\040()<>@,\;:*\\\"/?.=]+\\)\\(?:\\*[^?]+\\)?\ +\\?\\(B\\|Q\\)\\?\\([!->@-~ ]*\\)\\?=")) ;; Fixme: This should decode in place, not cons intermediate strings. ;; Also check whether it needs to worry about delimiting fields like @@ -697,7 +687,20 @@ By default, the region is treated as containing addresses (see mail-parse-charset (not (eq mail-parse-charset 'us-ascii)) (not (eq mail-parse-charset 'gnus-decoded))) - (mm-decode-coding-string string mail-parse-charset) + ;; `decode-coding-string' in Emacs offers a third optional + ;; arg NOCOPY to avoid consing a new string if the decoding + ;; is "trivial". Unfortunately it currently doesn't + ;; consider anything else than a `nil' coding system + ;; trivial. + ;; `rfc2047-decode-string' is called multiple times for each + ;; article during summary buffer generation, and we really + ;; want to avoid unnecessary consing. So we bypass + ;; `decode-coding-string' if the string is purely ASCII. + (if (and (fboundp 'detect-coding-string) + ;; string is purely ASCII + (eq (detect-coding-string string t) 'undecided)) + string + (mm-decode-coding-string string mail-parse-charset)) (mm-string-as-multibyte string))))) (defun rfc2047-parse-and-decode (word) @@ -710,7 +713,7 @@ decodable." (condition-case nil (rfc2047-decode (match-string 1 word) - (upcase (match-string 2 word)) + (string-to-char (match-string 2 word)) (match-string 3 word)) (error word)) word))) ; un-decodable @@ -720,15 +723,19 @@ decodable." ;; Be more liberal to accept buggy base64 strings. If ;; base64-decode-string accepts buggy strings, this function could ;; be aliased to identity. - (case (mod (length string) 4) - (0 string) - (1 string) ;; Error, don't pad it. - (2 (concat string "==")) - (3 (concat string "=")))) + (if (= 0 (mod (length string) 4)) + string + (when (string-match "=+$" string) + (setq string (substring string 0 (match-beginning 0)))) + (case (mod (length string) 4) + (0 string) + (1 string) ;; Error, don't pad it. + (2 (concat string "==")) + (3 (concat string "="))))) (defun rfc2047-decode (charset encoding string) "Decode STRING from the given MIME CHARSET in the given ENCODING. -Valid ENCODINGs are \"B\" and \"Q\". +Valid ENCODINGs are the characters \"B\" and \"Q\". If your Emacs implementation can't decode CHARSET, return nil." (if (stringp charset) (setq charset (intern (downcase charset)))) @@ -748,13 +755,13 @@ If your Emacs implementation can't decode CHARSET, return nil." (setq cs mail-parse-charset)) (mm-decode-coding-string (cond - ((equal "B" encoding) + ((char-equal ?B encoding) (base64-decode-string (rfc2047-pad-base64 string))) - ((equal "Q" encoding) + ((char-equal ?Q encoding) (quoted-printable-decode-string - (mm-replace-chars-in-string string ?_ ? ))) - (t (error "Invalid encoding: %s" encoding))) + (mm-subst-char-in-string ?_ ? string t))) + (t (error "Invalid encoding: %c" encoding))) cs)))) (provide 'rfc2047) diff --git a/lisp/rfc2231.el b/lisp/rfc2231.el index bd88c71..7f3a014 100644 --- a/lisp/rfc2231.el +++ b/lisp/rfc2231.el @@ -25,9 +25,6 @@ ;;; Code: (eval-when-compile (require 'cl)) -(eval-when-compile (require 'gnus-clfns)) - -(eval-when-compile (require 'cl)) (require 'ietf-drums) (require 'rfc2047) (autoload 'mm-encode-body "mm-bodies") diff --git a/lisp/run-at-time.el b/lisp/run-at-time.el new file mode 100644 index 0000000..47298e9 --- /dev/null +++ b/lisp/run-at-time.el @@ -0,0 +1,96 @@ +;;; run-at-time.el --- A non-buggy version of the run-at-time function + +;; Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. + +;; Author: Katsumi Yamaoka + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; XEmacs has a buggy version of run-at-time. This file defines a +;; non-buggy version of the same. + +(defalias + 'run-at-time + (if (condition-case nil + (progn + (unless (or itimer-process itimer-timer) + (itimer-driver-start)) + ;; Check whether there is a bug to which the difference of + ;; the present time and the time when the itimer driver was + ;; woken up is subtracted from the initial itimer value. + (let* ((inhibit-quit t) + (ctime (current-time)) + (itimer-timer-last-wakeup + (prog1 + ctime + (setcar ctime (1- (car ctime))))) + (itimer-list nil) + (itimer (start-itimer "run-at-time" 'ignore 5))) + (sleep-for 0.1) ;; Accept the timeout interrupt. + (prog1 + (> (itimer-value itimer) 0) + (delete-itimer itimer)))) + (error nil)) + (lambda (time repeat function &rest args) + "Function emulating the function of the same name of Emacs. +TIME should be nil meaning now, or a number of seconds from now. +Return an itimer object which can be used in either `delete-itimer' +or `cancel-timer'." + (apply #'start-itimer "run-at-time" + function (if time (max time 1e-9) 1e-9) + repeat nil t args)) + (lambda (time repeat function &rest args) + "Function emulating the function of the same name of Emacs. +It works correctly for TIME even if there is a bug in the XEmacs core. +TIME should be nil meaning now, or a number of seconds from now. +Return an itimer object which can be used in either `delete-itimer' +or `cancel-timer'." + (let ((itimers (list nil))) + (setcar + itimers + (apply #'start-itimer "fixed-run-at-time" + (lambda (itimers repeat function &rest args) + (let ((itimer (car itimers))) + (if repeat + (progn + (set-itimer-function + itimer + (lambda (itimer repeat function &rest args) + (set-itimer-restart itimer repeat) + (set-itimer-function itimer function) + (set-itimer-function-arguments itimer args) + (apply function args))) + (set-itimer-function-arguments + itimer + (append (list itimer repeat function) args))) + (set-itimer-function + itimer + (lambda (itimer function &rest args) + (delete-itimer itimer) + (apply function args))) + (set-itimer-function-arguments + itimer + (append (list itimer function) args))))) + 1e-9 (if time (max time 1e-9) 1e-9) + nil t itimers repeat function args)))))) + +(provide 'run-at-time) + +;;; run-at-time.el ends here diff --git a/lisp/score-mode.el b/lisp/score-mode.el index 66ed642..0e63ef1 100644 --- a/lisp/score-mode.el +++ b/lisp/score-mode.el @@ -52,9 +52,7 @@ table) "Syntax table used in score-mode buffers.") -(defvar score-mode-coding-system (static-if (boundp 'MULE) - '*ctext* - 'ctext)) +(defvar score-mode-coding-system 'ctext) ;;;###autoload (defun gnus-score-mode () diff --git a/lisp/sha1-el.el b/lisp/sha1-el.el deleted file mode 100644 index ab5804d..0000000 --- a/lisp/sha1-el.el +++ /dev/null @@ -1,444 +0,0 @@ -;;; sha1-el.el --- SHA1 Secure Hash Algorithm in Emacs-Lisp. - -;; Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc. - -;; Author: Shuhei KOBAYASHI -;; Keywords: SHA1, FIPS 180-1 - -;; This file is part of FLIM (Faithful Library about Internet Message). - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This program is implemented from the definition of SHA-1 in FIPS PUB -;; 180-1 (Federal Information Processing Standards Publication 180-1), -;; "Announcing the Standard for SECURE HASH STANDARD". -;; -;; (EXCEPTION; two optimizations taken from GnuPG/cipher/sha1.c) -;; -;; Test cases from FIPS PUB 180-1. -;; -;; (sha1 "abc") -;; => a9993e364706816aba3e25717850c26c9cd0d89d -;; -;; (sha1 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") -;; => 84983e441c3bd26ebaae4aa1f95129e5e54670f1 -;; -;; (sha1 (make-string 1000000 ?a)) -;; => 34aa973cd4c4daa4f61eeb2bdbad27316534016f -;; -;; BUGS: -;; * It is assumed that length of input string is less than 2^29 bytes. -;; * It is caller's responsibility to make string (or region) unibyte. -;; -;; TODO: -;; * Rewrite from scratch! -;; This version is much faster than Keiichi Suzuki's another sha1.el, -;; but it is too dirty. - -;;; Code: - -(require 'hex-util) - -(autoload 'executable-find "executable") - -;;; -;;; external SHA1 function. -;;; - -(defgroup sha1 nil - "Elisp interface for SHA1 hash computation." - :group 'extensions) - -(defcustom sha1-maximum-internal-length 500 - "*Maximum length of message to use lisp version of SHA1 function. -If message is longer than this, `sha1-program' is used instead. - -If this variable is set to 0, use extarnal program only. -If this variable is set to nil, use internal function only." - :type 'integer - :group 'sha1) - -(defcustom sha1-program '("sha1sum") - "*Name of program to compute SHA1. -It must be a string \(program name\) or list of strings \(name and its args\)." - :type '(repeat string) - :group 'sha1) - -(defcustom sha1-use-external (condition-case () - (executable-find (car sha1-program)) - (error)) - "*Use external SHA1 program. -If this variable is set to nil, use internal function only." - :type 'boolean - :group 'sha1) - -(defun sha1-string-external (string) - ;; `with-temp-buffer' is new in v20, so we do not use it. - (save-excursion - (let (buffer) - (unwind-protect - (let (prog args) - (if (consp sha1-program) - (setq prog (car sha1-program) - args (cdr sha1-program)) - (setq prog sha1-program - args nil)) - (setq buffer (set-buffer - (generate-new-buffer " *sha1 external*"))) - (insert string) - (apply (function call-process-region) - (point-min)(point-max) - prog t t nil args) - ;; SHA1 is 40 bytes long in hexadecimal form. - (buffer-substring (point-min)(+ (point-min) 40))) - (and buffer - (buffer-name buffer) - (kill-buffer buffer)))))) - -(defun sha1-region-external (beg end) - (sha1-string-external (buffer-substring-no-properties beg end))) - -;;; -;;; internal SHA1 function. -;;; - -(eval-when-compile - ;; optional second arg of string-to-number is new in v20. - (defconst sha1-K0-high 23170) ; (string-to-number "5A82" 16) - (defconst sha1-K0-low 31129) ; (string-to-number "7999" 16) - (defconst sha1-K1-high 28377) ; (string-to-number "6ED9" 16) - (defconst sha1-K1-low 60321) ; (string-to-number "EBA1" 16) - (defconst sha1-K2-high 36635) ; (string-to-number "8F1B" 16) - (defconst sha1-K2-low 48348) ; (string-to-number "BCDC" 16) - (defconst sha1-K3-high 51810) ; (string-to-number "CA62" 16) - (defconst sha1-K3-low 49622) ; (string-to-number "C1D6" 16) - -;;; original definition of sha1-F0. -;;; (defmacro sha1-F0 (B C D) -;;; (` (logior (logand (, B) (, C)) -;;; (logand (lognot (, B)) (, D))))) -;;; a little optimization from GnuPG/cipher/sha1.c. - (defmacro sha1-F0 (B C D) - (` (logxor (, D) (logand (, B) (logxor (, C) (, D)))))) - (defmacro sha1-F1 (B C D) - (` (logxor (, B) (, C) (, D)))) -;;; original definition of sha1-F2. -;;; (defmacro sha1-F2 (B C D) -;;; (` (logior (logand (, B) (, C)) -;;; (logand (, B) (, D)) -;;; (logand (, C) (, D))))) -;;; a little optimization from GnuPG/cipher/sha1.c. - (defmacro sha1-F2 (B C D) - (` (logior (logand (, B) (, C)) - (logand (, D) (logior (, B) (, C)))))) - (defmacro sha1-F3 (B C D) - (` (logxor (, B) (, C) (, D)))) - - (defmacro sha1-S1 (W-high W-low) - (` (let ((W-high (, W-high)) - (W-low (, W-low))) - (setq S1W-high (+ (% (* W-high 2) 65536) - (/ W-low (, (/ 65536 2))))) - (setq S1W-low (+ (/ W-high (, (/ 65536 2))) - (% (* W-low 2) 65536)))))) - (defmacro sha1-S5 (A-high A-low) - (` (progn - (setq S5A-high (+ (% (* (, A-high) 32) 65536) - (/ (, A-low) (, (/ 65536 32))))) - (setq S5A-low (+ (/ (, A-high) (, (/ 65536 32))) - (% (* (, A-low) 32) 65536)))))) - (defmacro sha1-S30 (B-high B-low) - (` (progn - (setq S30B-high (+ (/ (, B-high) 4) - (* (% (, B-low) 4) (, (/ 65536 4))))) - (setq S30B-low (+ (/ (, B-low) 4) - (* (% (, B-high) 4) (, (/ 65536 4)))))))) - - (defmacro sha1-OP (round) - (` (progn - (sha1-S5 sha1-A-high sha1-A-low) - (sha1-S30 sha1-B-high sha1-B-low) - (setq sha1-A-low (+ ((, (intern (format "sha1-F%d" round))) - sha1-B-low sha1-C-low sha1-D-low) - sha1-E-low - (, (symbol-value - (intern (format "sha1-K%d-low" round)))) - (aref block-low idx) - (progn - (setq sha1-E-low sha1-D-low) - (setq sha1-D-low sha1-C-low) - (setq sha1-C-low S30B-low) - (setq sha1-B-low sha1-A-low) - S5A-low))) - (setq carry (/ sha1-A-low 65536)) - (setq sha1-A-low (% sha1-A-low 65536)) - (setq sha1-A-high (% (+ ((, (intern (format "sha1-F%d" round))) - sha1-B-high sha1-C-high sha1-D-high) - sha1-E-high - (, (symbol-value - (intern (format "sha1-K%d-high" round)))) - (aref block-high idx) - (progn - (setq sha1-E-high sha1-D-high) - (setq sha1-D-high sha1-C-high) - (setq sha1-C-high S30B-high) - (setq sha1-B-high sha1-A-high) - S5A-high) - carry) - 65536))))) - - (defmacro sha1-add-to-H (H X) - (` (progn - (setq (, (intern (format "sha1-%s-low" H))) - (+ (, (intern (format "sha1-%s-low" H))) - (, (intern (format "sha1-%s-low" X))))) - (setq carry (/ (, (intern (format "sha1-%s-low" H))) 65536)) - (setq (, (intern (format "sha1-%s-low" H))) - (% (, (intern (format "sha1-%s-low" H))) 65536)) - (setq (, (intern (format "sha1-%s-high" H))) - (% (+ (, (intern (format "sha1-%s-high" H))) - (, (intern (format "sha1-%s-high" X))) - carry) - 65536))))) - ) - -;;; buffers (H0 H1 H2 H3 H4). -(defvar sha1-H0-high) -(defvar sha1-H0-low) -(defvar sha1-H1-high) -(defvar sha1-H1-low) -(defvar sha1-H2-high) -(defvar sha1-H2-low) -(defvar sha1-H3-high) -(defvar sha1-H3-low) -(defvar sha1-H4-high) -(defvar sha1-H4-low) - -(defun sha1-block (block-high block-low) - (let (;; step (c) --- initialize buffers (A B C D E). - (sha1-A-high sha1-H0-high) (sha1-A-low sha1-H0-low) - (sha1-B-high sha1-H1-high) (sha1-B-low sha1-H1-low) - (sha1-C-high sha1-H2-high) (sha1-C-low sha1-H2-low) - (sha1-D-high sha1-H3-high) (sha1-D-low sha1-H3-low) - (sha1-E-high sha1-H4-high) (sha1-E-low sha1-H4-low) - (idx 16)) - ;; step (b). - (let (;; temporary variables used in sha1-S1 macro. - S1W-high S1W-low) - (while (< idx 80) - (sha1-S1 (logxor (aref block-high (- idx 3)) - (aref block-high (- idx 8)) - (aref block-high (- idx 14)) - (aref block-high (- idx 16))) - (logxor (aref block-low (- idx 3)) - (aref block-low (- idx 8)) - (aref block-low (- idx 14)) - (aref block-low (- idx 16)))) - (aset block-high idx S1W-high) - (aset block-low idx S1W-low) - (setq idx (1+ idx)))) - ;; step (d). - (setq idx 0) - (let (;; temporary variables used in sha1-OP macro. - S5A-high S5A-low S30B-high S30B-low carry) - (while (< idx 20) (sha1-OP 0) (setq idx (1+ idx))) - (while (< idx 40) (sha1-OP 1) (setq idx (1+ idx))) - (while (< idx 60) (sha1-OP 2) (setq idx (1+ idx))) - (while (< idx 80) (sha1-OP 3) (setq idx (1+ idx)))) - ;; step (e). - (let (;; temporary variables used in sha1-add-to-H macro. - carry) - (sha1-add-to-H H0 A) - (sha1-add-to-H H1 B) - (sha1-add-to-H H2 C) - (sha1-add-to-H H3 D) - (sha1-add-to-H H4 E)))) - -(defun sha1-binary (string) - "Return the SHA1 of STRING in binary form." - (let (;; prepare buffers for a block. byte-length of block is 64. - ;; input block is split into two vectors. - ;; - ;; input block: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ... - ;; block-high: +-0-+ +-1-+ +-2-+ +-3-+ - ;; block-low: +-0-+ +-1-+ +-2-+ +-3-+ - ;; - ;; length of each vector is 80, and elements of each vector are - ;; 16bit integers. elements 0x10-0x4F of each vector are - ;; assigned later in `sha1-block'. - (block-high (eval-when-compile (make-vector 80 nil))) - (block-low (eval-when-compile (make-vector 80 nil)))) - (unwind-protect - (let* (;; byte-length of input string. - (len (length string)) - (lim (* (/ len 64) 64)) - (rem (% len 4)) - (idx 0)(pos 0)) - ;; initialize buffers (H0 H1 H2 H3 H4). - (setq sha1-H0-high 26437 ; (string-to-number "6745" 16) - sha1-H0-low 8961 ; (string-to-number "2301" 16) - sha1-H1-high 61389 ; (string-to-number "EFCD" 16) - sha1-H1-low 43913 ; (string-to-number "AB89" 16) - sha1-H2-high 39098 ; (string-to-number "98BA" 16) - sha1-H2-low 56574 ; (string-to-number "DCFE" 16) - sha1-H3-high 4146 ; (string-to-number "1032" 16) - sha1-H3-low 21622 ; (string-to-number "5476" 16) - sha1-H4-high 50130 ; (string-to-number "C3D2" 16) - sha1-H4-low 57840) ; (string-to-number "E1F0" 16) - ;; loop for each 64 bytes block. - (while (< pos lim) - ;; step (a). - (setq idx 0) - (while (< idx 16) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (aset block-low idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (setq idx (1+ idx))) - (sha1-block block-high block-low)) - ;; last block. - (if (prog1 - (< (- len lim) 56) - (setq lim (- len rem)) - (setq idx 0) - (while (< pos lim) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (aset block-low idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (setq idx (1+ idx))) - ;; this is the last (at most) 32bit word. - (cond - ((= rem 3) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (aset block-low idx (+ (* (aref string pos) 256) - 128))) - ((= rem 2) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (aset block-low idx 32768)) - ((= rem 1) - (aset block-high idx (+ (* (aref string pos) 256) - 128)) - (aset block-low idx 0)) - (t ;; (= rem 0) - (aset block-high idx 32768) - (aset block-low idx 0))) - (setq idx (1+ idx)) - (while (< idx 16) - (aset block-high idx 0) - (aset block-low idx 0) - (setq idx (1+ idx)))) - ;; last block has enough room to write the length of string. - (progn - ;; write bit length of string to last 4 bytes of the block. - (aset block-low 15 (* (% len 8192) 8)) - (setq len (/ len 8192)) - (aset block-high 15 (% len 65536)) - ;; XXX: It is not practical to compute SHA1 of - ;; such a huge message on emacs. - ;; (setq len (/ len 65536)) ; for 64bit emacs. - ;; (aset block-low 14 (% len 65536)) - ;; (aset block-high 14 (/ len 65536)) - (sha1-block block-high block-low)) - ;; need one more block. - (sha1-block block-high block-low) - (fillarray block-high 0) - (fillarray block-low 0) - ;; write bit length of string to last 4 bytes of the block. - (aset block-low 15 (* (% len 8192) 8)) - (setq len (/ len 8192)) - (aset block-high 15 (% len 65536)) - ;; XXX: It is not practical to compute SHA1 of - ;; such a huge message on emacs. - ;; (setq len (/ len 65536)) ; for 64bit emacs. - ;; (aset block-low 14 (% len 65536)) - ;; (aset block-high 14 (/ len 65536)) - (sha1-block block-high block-low)) - ;; make output string (in binary form). - (let ((result (make-string 20 0))) - (aset result 0 (/ sha1-H0-high 256)) - (aset result 1 (% sha1-H0-high 256)) - (aset result 2 (/ sha1-H0-low 256)) - (aset result 3 (% sha1-H0-low 256)) - (aset result 4 (/ sha1-H1-high 256)) - (aset result 5 (% sha1-H1-high 256)) - (aset result 6 (/ sha1-H1-low 256)) - (aset result 7 (% sha1-H1-low 256)) - (aset result 8 (/ sha1-H2-high 256)) - (aset result 9 (% sha1-H2-high 256)) - (aset result 10 (/ sha1-H2-low 256)) - (aset result 11 (% sha1-H2-low 256)) - (aset result 12 (/ sha1-H3-high 256)) - (aset result 13 (% sha1-H3-high 256)) - (aset result 14 (/ sha1-H3-low 256)) - (aset result 15 (% sha1-H3-low 256)) - (aset result 16 (/ sha1-H4-high 256)) - (aset result 17 (% sha1-H4-high 256)) - (aset result 18 (/ sha1-H4-low 256)) - (aset result 19 (% sha1-H4-low 256)) - result)) - ;; do not leave a copy of input string. - (fillarray block-high nil) - (fillarray block-low nil)))) - -(defun sha1-string-internal (string) - (encode-hex-string (sha1-binary string))) - -(defun sha1-region-internal (beg end) - (sha1-string-internal (buffer-substring-no-properties beg end))) - -;;; -;;; application interface. -;;; - -(defun sha1-region (beg end) - (if (and sha1-use-external - sha1-maximum-internal-length - (> (abs (- end beg)) sha1-maximum-internal-length)) - (sha1-region-external beg end) - (sha1-region-internal beg end))) - -(defun sha1-string (string) - (if (and sha1-use-external - sha1-maximum-internal-length - (> (length string) sha1-maximum-internal-length)) - (sha1-string-external string) - (sha1-string-internal string))) - -;;;###autoload -(defun sha1 (object &optional beg end) - "Return the SHA1 (Secure Hash Algorithm) of an object. -OBJECT is either a string or a buffer. -Optional arguments BEG and END denote buffer positions for computing the -hash of a portion of OBJECT." - (if (stringp object) - (sha1-string object) - (save-excursion - (set-buffer object) - (sha1-region (or beg (point-min)) (or end (point-max)))))) - -(provide 'sha1-el) - -;;; sha1-el.el ends here diff --git a/lisp/sieve-manage.el b/lisp/sieve-manage.el index bda44dc..63588b8 100644 --- a/lisp/sieve-manage.el +++ b/lisp/sieve-manage.el @@ -1,5 +1,5 @@ ;;; sieve-manage.el --- Implementation of the managesive protocol in elisp -;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. ;; Author: Simon Josefsson @@ -25,7 +25,10 @@ ;; This library provides an elisp API for the managesieve network ;; protocol. ;; -;; Currently only the CRAM-MD5 authentication mechanism is supported. +;; It uses the SASL library for authentication, which means it +;; supports DIGEST-MD5, CRAM-MD5, SCRAM-MD5, NTLM, PLAIN and LOGIN +;; methods. STARTTLS is not well tested, but should be easy to get to +;; work if someone wants. ;; ;; The API should be fairly obvious for anyone familiar with the ;; managesieve protocol, interface functions include: @@ -67,15 +70,17 @@ ;; ;; 2001-10-31 Committed to Oort Gnus. ;; 2002-07-27 Added DELETESCRIPT. Suggested by Ned Ludd. +;; 2002-08-03 Use SASL library. ;;; Code: -(require 'rfc2104) -(or (fboundp 'md5) - (require 'md5)) +(require 'password) +(eval-when-compile + (require 'sasl) + (require 'starttls)) (eval-and-compile - (autoload 'starttls-open-stream "starttls") - (autoload 'starttls-negotiate "starttls")) + (autoload 'sasl-find-mechanism "sasl") + (autoload 'starttls-open-stream "starttls")) ;; User customizable variables: @@ -115,12 +120,21 @@ NAME names the stream, CHECK is a function returning non-nil if the server support the stream and OPEN is a function for opening the stream.") -(defcustom sieve-manage-authenticators '(cram-md5 plain) +(defcustom sieve-manage-authenticators '(digest-md5 + cram-md5 + scram-md5 + ntlm + plain + login) "Priority of authenticators to consider when authenticating to server.") (defcustom sieve-manage-authenticator-alist '((cram-md5 sieve-manage-cram-md5-p sieve-manage-cram-md5-auth) - (plain sieve-manage-plain-p sieve-manage-plain-auth)) + (digest-md5 sieve-manage-digest-md5-p sieve-manage-digest-md5-auth) + (scram-md5 sieve-manage-scram-md5-p sieve-manage-scram-md5-auth) + (ntlm sieve-manage-ntlm-p sieve-manage-ntlm-auth) + (plain sieve-manage-plain-p sieve-manage-plain-auth) + (login sieve-manage-login-p sieve-manage-login-auth)) "Definition of authenticators. \(NAME CHECK AUTHENTICATE) @@ -177,38 +191,45 @@ Returns t if login was successful, nil otherwise." (with-current-buffer buffer (make-variable-buffer-local 'sieve-manage-username) (make-variable-buffer-local 'sieve-manage-password) - (let (user passwd ret reason) - ;; (condition-case () - (while (or (not user) (not passwd)) - (setq user (or sieve-manage-username - (read-from-minibuffer - (concat "Managesieve username for " - sieve-manage-server ": ") - (or user sieve-manage-default-user)))) - (setq passwd (or sieve-manage-password - (read-passwd - (concat "Managesieve password for " user "@" - sieve-manage-server ": ")))) - (when (and user passwd) - (if (funcall loginfunc user passwd) - (progn - (setq ret t - sieve-manage-username user) - (if (and (not sieve-manage-password) - (y-or-n-p "Store password for this session? ")) - (setq sieve-manage-password passwd))) - (if reason - (message "Login failed (reason given: %s)..." reason) - (message "Login failed...")) - (setq reason nil) - (setq passwd nil) - (sit-for 1)))) - ;; (quit (with-current-buffer buffer - ;; (setq user nil - ;; passwd nil))) - ;; (error (with-current-buffer buffer - ;; (setq user nil - ;; passwd nil)))) + (let (user passwd ret reason passwd-key) + (condition-case () + (while (or (not user) (not passwd)) + (setq user (or sieve-manage-username + (read-from-minibuffer + (concat "Managesieve username for " + sieve-manage-server ": ") + (or user sieve-manage-default-user))) + passwd-key (concat "managesieve:" user "@" sieve-manage-server + ":" sieve-manage-port) + passwd (or sieve-manage-password + (password-read (concat "Managesieve password for " + user "@" sieve-manage-server + ": ") + passwd-key))) + (when (y-or-n-p "Store password for this session? ") + (password-cache-add passwd-key (copy-sequence passwd))) + (when (and user passwd) + (if (funcall loginfunc user passwd) + (setq ret t + sieve-manage-username user) + (if reason + (message "Login failed (reason given: %s)..." reason) + (message "Login failed...")) + (password-cache-remove passwd-key) + (setq sieve-manage-password nil) + (setq passwd nil) + (setq reason nil) + (sit-for 1)))) + (quit (with-current-buffer buffer + (password-cache-remove passwd-key) + (setq user nil + passwd nil + sieve-manage-password nil))) + (error (with-current-buffer buffer + (password-cache-remove passwd-key) + (setq user nil + passwd nil + sieve-manage-password nil)))) ret))) (defun sieve-manage-erase (&optional p buffer) @@ -293,60 +314,111 @@ Returns t if login was successful, nil otherwise." ;; Authenticators +(defun sieve-sasl-auth (buffer mech) + "Login to server using the SASL MECH method." + (message "sieve: Authenticating using %s..." mech) + (if (sieve-manage-interactive-login + buffer + (lambda (user passwd) + (let (client step tag data rsp) + (setq client (sasl-make-client (sasl-find-mechanism (list mech)) + user "sieve" sieve-manage-server)) + (setq sasl-read-passphrase (function (lambda (prompt) passwd))) + (setq step (sasl-next-step client nil)) + (setq tag + (sieve-manage-send + (concat + "AUTHENTICATE \"" + mech + "\"" + (and (sasl-step-data step) + (concat + " \"" + (base64-encode-string + (sasl-step-data step) + 'no-line-break) + "\""))))) + (catch 'done + (while t + (setq rsp nil) + (goto-char (point-min)) + (while (null (or (progn + (setq rsp (sieve-manage-is-string)) + (if (not (and rsp (looking-at + sieve-manage-server-eol))) + (setq rsp nil) + (goto-char (match-end 0)) + rsp)) + (setq rsp (sieve-manage-is-okno)))) + (accept-process-output sieve-manage-process 1) + (goto-char (point-min))) + (sieve-manage-erase) + (when (sieve-manage-ok-p rsp) + (when (string-match "^SASL \"\\([^\"]+\\)\"" (cadr rsp)) + (sasl-step-set-data + step (base64-decode-string (match-string 1 (cadr rsp))))) + (if (and (setq step (sasl-next-step client step)) + (setq data (sasl-step-data step))) + ;; We got data for server but it's finished + (error "Server not ready for SASL data: %s" data) + ;; The authentication process is finished. + (throw 'done t))) + (unless (stringp rsp) + (apply 'error "Server aborted SASL authentication: %s %s %s" + rsp)) + (sasl-step-set-data step (base64-decode-string rsp)) + (setq step (sasl-next-step client step)) + (sieve-manage-send + (if (sasl-step-data step) + (concat "\"" + (base64-encode-string (sasl-step-data step) + 'no-line-break) + "\"") + ""))))))) + (message "sieve: Authenticating using %s...done" mech) + (message "sieve: Authenticating using %s...failed" mech))) + +(defun sieve-manage-cram-md5-p (buffer) + (sieve-manage-capability "SASL" "CRAM-MD5" buffer)) + +(defun sieve-manage-cram-md5-auth (buffer) + "Login to managesieve server using the CRAM-MD5 SASL method." + (sieve-sasl-auth buffer "CRAM-MD5")) + +(defun sieve-manage-digest-md5-p (buffer) + (sieve-manage-capability "SASL" "DIGEST-MD5" buffer)) + +(defun sieve-manage-digest-md5-auth (buffer) + "Login to managesieve server using the DIGEST-MD5 SASL method." + (sieve-sasl-auth buffer "DIGEST-MD5")) + +(defun sieve-manage-scram-md5-p (buffer) + (sieve-manage-capability "SASL" "SCRAM-MD5" buffer)) + +(defun sieve-manage-scram-md5-auth (buffer) + "Login to managesieve server using the SCRAM-MD5 SASL method." + (sieve-sasl-auth buffer "SCRAM-MD5")) + +(defun sieve-manage-ntlm-p (buffer) + (sieve-manage-capability "SASL" "NTLM" buffer)) + +(defun sieve-manage-ntlm-auth (buffer) + "Login to managesieve server using the NTLM SASL method." + (sieve-sasl-auth buffer "NTLM")) + (defun sieve-manage-plain-p (buffer) (sieve-manage-capability "SASL" "PLAIN" buffer)) (defun sieve-manage-plain-auth (buffer) "Login to managesieve server using the PLAIN SASL method." - (let* ((done (sieve-manage-interactive-login - buffer - (lambda (user passwd) - (sieve-manage-send (concat "AUTHENTICATE \"PLAIN\" \"" - (base64-encode-string - (concat (char-to-string 0) - user - (char-to-string 0) - passwd)) - "\"")) - (let ((rsp (sieve-manage-parse-okno))) - (if (sieve-manage-ok-p rsp) - t - (setq reason (cdr-safe rsp)) - nil)))))) - (if done - (message "sieve: Authenticating using PLAIN...done") - (message "sieve: Authenticating using PLAIN...failed")))) + (sieve-sasl-auth buffer "PLAIN")) -(defun sieve-manage-cram-md5-p (buffer) - (sieve-manage-capability "SASL" "CRAM-MD5" buffer)) +(defun sieve-manage-login-p (buffer) + (sieve-manage-capability "SASL" "LOGIN" buffer)) -(defun sieve-manage-cram-md5-auth (buffer) - "Login to managesieve server using the CRAM-MD5 SASL method." - (message "sieve: Authenticating using CRAM-MD5...") - (let* ((done (sieve-manage-interactive-login - buffer - (lambda (user passwd) - (sieve-manage-send "AUTHENTICATE \"CRAM-MD5\"") - (sieve-manage-send - (concat - "\"" - (base64-encode-string - (concat - user " " - (rfc2104-hash 'md5 64 16 passwd - (base64-decode-string - (prog1 - (sieve-manage-parse-string) - (sieve-manage-erase)))))) - "\"")) - (let ((rsp (sieve-manage-parse-okno))) - (if (sieve-manage-ok-p rsp) - t - (setq reason (cdr-safe rsp)) - nil)))))) - (if done - (message "sieve: Authenticating using CRAM-MD5...done") - (message "sieve: Authenticating using CRAM-MD5...failed")))) +(defun sieve-manage-login-auth (buffer) + "Login to managesieve server using the LOGIN SASL method." + (sieve-sasl-auth buffer "LOGIN")) ;; Managesieve API @@ -361,7 +433,7 @@ Optional variable BUFFER is buffer (buffer, or string naming buffer) to work in." (setq buffer (or buffer (format " *sieve* %s:%d" server (or port 2000)))) (with-current-buffer (get-buffer-create buffer) - (mapcar 'make-variable-buffer-local sieve-manage-local-variables) + (mapc 'make-variable-buffer-local sieve-manage-local-variables) (sieve-manage-disable-multibyte) (buffer-disable-undo) (setq sieve-manage-server (or server sieve-manage-server)) diff --git a/lisp/sieve-mode.el b/lisp/sieve-mode.el index e4945c9..f105ced 100644 --- a/lisp/sieve-mode.el +++ b/lisp/sieve-mode.el @@ -1,5 +1,5 @@ ;;; sieve-mode.el --- Sieve code editing commands for Emacs -;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. ;; Author: Simon Josefsson @@ -49,7 +49,6 @@ (autoload 'sieve-manage "sieve") (autoload 'sieve-upload "sieve") -(autoload 'c-mode "cc-mode") (require 'easymenu) (eval-when-compile (require 'font-lock)) diff --git a/lisp/sieve.el b/lisp/sieve.el index 83dd4f3..2b044ad 100644 --- a/lisp/sieve.el +++ b/lisp/sieve.el @@ -173,7 +173,7 @@ require \"fileinto\"; (sieve-refresh-scriptlist) (if (sieve-manage-ok-p err) (message "Deactivating scripts...done") - (message "Deactivating scripts...failed" (nth 2 err))))) + (message "Deactivating scripts...failed: %s" (nth 2 err))))) (defalias 'sieve-deactivate 'sieve-deactivate-all) diff --git a/lisp/smime.el b/lisp/smime.el deleted file mode 100644 index 908e696..0000000 --- a/lisp/smime.el +++ /dev/null @@ -1,643 +0,0 @@ -;;; smime.el --- S/MIME support library -;; Copyright (c) 2000, 2001, 2003 Free Software Foundation, Inc. - -;; Author: Simon Josefsson -;; Keywords: SMIME X.509 PEM OpenSSL - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published -;; by the Free Software Foundation; either version 2, or (at your -;; option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; This library perform S/MIME operations from within Emacs. -;; -;; Functions for fetching certificates from public repositories are -;; provided, currently only from DNS. LDAP support (via EUDC) is planned. -;; -;; It uses OpenSSL (tested with version 0.9.5a and 0.9.6) for signing, -;; encryption and decryption. -;; -;; Some general knowledge of S/MIME, X.509, PKCS#12, PEM etc is -;; probably required to use this library in any useful way. -;; Especially, don't expect this library to buy security for you. If -;; you don't understand what you are doing, you're as likely to lose -;; security than gain any by using this library. -;; -;; This library is not intended to provide a "raw" API for S/MIME, -;; PKCSx or similar, it's intended to perform common operations -;; done on messages encoded in these formats. The terminology chosen -;; reflect this. -;; -;; The home of this file is in Gnus CVS, but also available from -;; http://josefsson.org/smime.html. - -;;; Quick introduction: - -;; Get your S/MIME certificate from VeriSign or someplace. I used -;; Netscape to generate the key and certificate request and stuff, and -;; Netscape can export the key into PKCS#12 format. -;; -;; Enter OpenSSL. To be able to use this library, it need to have the -;; SMIME key readable in PEM format. OpenSSL is used to convert the -;; key: -;; -;; $ openssl pkcs12 -in mykey.p12 -clcerts -nodes > mykey.pem -;; ... -;; -;; Now, use M-x customize-variable smime-keys and add mykey.pem as -;; a key. -;; -;; Now you should be able to sign messages! Create a buffer and write -;; something and run M-x smime-sign-buffer RET RET and you should see -;; your message MIME armoured and a signature. Encryption, M-x -;; smime-encrypt-buffer, should also work. -;; -;; To be able to verify messages you need to build up trust with -;; someone. Perhaps you trust the CA that issued your certificate, at -;; least I did, so I export it's certificates from my PKCS#12 -;; certificate with: -;; -;; $ openssl pkcs12 -in mykey.p12 -cacerts -nodes > cacert.pem -;; ... -;; -;; Now, use M-x customize-variable smime-CAs and add cacert.pem as a -;; CA certificate. -;; -;; You should now be able to sign messages, and even verify messages -;; sent by others that use the same CA as you. - -;; Bugs: -;; -;; Don't complain that this package doesn't do encrypted PEM files, -;; submit a patch instead. I store my keys in a safe place, so I -;; didn't need the encryption. Also, programming was made easier by -;; that decision. One might think that this even influenced were I -;; store my keys, and one would probably be right. :-) -;; -;; Update: Mathias Herberts sent the patch. However, it uses -;; environment variables to pass the password to OpenSSL, which is -;; slightly insecure. Hence a new todo: use a better -passin method. -;; -;; Cache password for e.g. 1h -;; -;; Suggestions and comments are appreciated, mail me at simon@josefsson.org. - -;; begin rant -;; -;; I would include pointers to introductory text on concepts used in -;; this library here, but the material I've read are so horrible I -;; don't want to recomend them. -;; -;; Why can't someone write a simple introduction to all this stuff? -;; Until then, much of this resemble security by obscurity. -;; -;; Also, I'm not going to mention anything about the wonders of -;; cryptopolitics. Oops, I just did. -;; -;; end rant - -;;; Revision history: - -;; 2000-06-05 initial version, committed to Gnus CVS contrib/ -;; 2000-10-28 retrieve certificates via DNS CERT RRs -;; 2001-10-14 posted to gnu.emacs.sources - -;;; Code: - -(require 'dig) -(eval-when-compile (require 'cl)) - -(defgroup smime nil - "S/MIME configuration.") - -(defcustom smime-keys nil - "*Map mail addresses to a file containing Certificate (and private key). -The file is assumed to be in PEM format. You can also associate additional -certificates to be sent with every message to each address." - :type '(repeat (list (string :tag "Mail address") - (file :tag "File name") - (repeat :tag "Additional certificate files" - (file :tag "File name")))) - :group 'smime) - -(defcustom smime-CA-directory nil - "*Directory containing certificates for CAs you trust. -Directory should contain files (in PEM format) named to the X.509 -hash of the certificate. This can be done using OpenSSL such as: - -$ ln -s ca.pem `openssl x509 -noout -hash -in ca.pem`.0 - -where `ca.pem' is the file containing a PEM encoded X.509 CA -certificate." - :type '(choice (const :tag "none" nil) - directory) - :group 'smime) - -(defcustom smime-CA-file nil - "*Files containing certificates for CAs you trust. -File should contain certificates in PEM format." - :type '(choice (const :tag "none" nil) - file) - :group 'smime) - -(defcustom smime-certificate-directory "~/Mail/certs/" - "*Directory containing other people's certificates. -It should contain files named to the X.509 hash of the certificate, -and the files themself should be in PEM format." -;The S/MIME library provide simple functionality for fetching -;certificates into this directory, so there is no need to populate it -;manually. - :type 'directory - :group 'smime) - -(defcustom smime-openssl-program - (and (condition-case () - (eq 0 (call-process "openssl" nil nil nil "version")) - (error nil)) - "openssl") - "*Name of OpenSSL binary." - :type 'string - :group 'smime) - -;; OpenSSL option to select the encryption cipher - -(defcustom smime-encrypt-cipher "-des3" - "*Cipher algorithm used for encryption." - :type '(choice (const :tag "Triple DES" "-des3") - (const :tag "DES" "-des") - (const :tag "RC2 40 bits" "-rc2-40") - (const :tag "RC2 64 bits" "-rc2-64") - (const :tag "RC2 128 bits" "-rc2-128")) - :group 'smime) - -(defcustom smime-crl-check nil - "*Check revocation status of signers certificate using CRLs. -Enabling this will have OpenSSL check the signers certificate -against a certificate revocation list (CRL). - -For this to work the CRL must be up-to-date and since they are -normally updated quite often (ie. several times a day) you -probably need some tool to keep them up-to-date. Unfortunately -Gnus cannot do this for you. - -The CRL should either be appended (in PEM format) to your -`smime-CA-file' or be located in a file (also in PEM format) in -your `smime-certificate-directory' named to the X.509 hash of the -certificate with .r0 as file name extension. - -At least OpenSSL version 0.9.7 is required for this to work." - :type '(choice (const :tag "No check" nil) - (const :tag "Check certificate" "-crl_check") - (const :tag "Check certificate chain" "-crl_check_all")) - :group 'smime) - -(defcustom smime-dns-server nil - "*DNS server to query certificates from. -If nil, use system defaults." - :type '(choice (const :tag "System defaults") - string) - :group 'smime) - -(defvar smime-details-buffer "*OpenSSL output*") - -;; Use mm-util? -(eval-and-compile - (defalias 'smime-make-temp-file - (if (fboundp 'make-temp-file) - 'make-temp-file - (lambda (prefix &optional dir-flag) ;; Simple implementation - (expand-file-name - (make-temp-name prefix) - (if (fboundp 'temp-directory) - (temp-directory) - temporary-file-directory)))))) - -;; Password dialog function - -(defun smime-ask-passphrase () - "Asks the passphrase to unlock the secret key." - (let ((passphrase - (read-passwd - "Passphrase for secret key (RET for no passphrase): "))) - (if (string= passphrase "") - nil - passphrase))) - -;; OpenSSL wrappers. - -(defun smime-call-openssl-region (b e buf &rest args) - (case (apply 'call-process-region b e smime-openssl-program nil buf nil args) - (0 t) - (1 (message "OpenSSL: An error occurred parsing the command options.") nil) - (2 (message "OpenSSL: One of the input files could not be read.") nil) - (3 (message "OpenSSL: An error occurred creating the PKCS#7 file or when reading the MIME message.") nil) - (4 (message "OpenSSL: An error occurred decrypting or verifying the message.") nil) - (t (error "Unknown OpenSSL exitcode") nil))) - -(defun smime-make-certfiles (certfiles) - (if certfiles - (append (list "-certfile" (expand-file-name (car certfiles))) - (smime-make-certfiles (cdr certfiles))))) - -;; Sign+encrypt region - -(defun smime-sign-region (b e keyfile) - "Sign region with certified key in KEYFILE. -If signing fails, the buffer is not modified. Region is assumed to -have proper MIME tags. KEYFILE is expected to contain a PEM encoded -private key and certificate as its car, and a list of additional -certificates to include in its caar. If no additional certificates is -included, KEYFILE may be the file containing the PEM encoded private -key and certificate itself." - (smime-new-details-buffer) - (let ((keyfile (or (car-safe keyfile) keyfile)) - (certfiles (and (cdr-safe keyfile) (cadr keyfile))) - (buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))) - (passphrase (smime-ask-passphrase)) - (tmpfile (smime-make-temp-file "smime"))) - (if passphrase - (setenv "GNUS_SMIME_PASSPHRASE" passphrase)) - (prog1 - (when (prog1 - (apply 'smime-call-openssl-region b e (list buffer tmpfile) - "smime" "-sign" "-signer" (expand-file-name keyfile) - (append - (smime-make-certfiles certfiles) - (if passphrase - (list "-passin" "env:GNUS_SMIME_PASSPHRASE")))) - (if passphrase - (setenv "GNUS_SMIME_PASSPHRASE" "" t)) - (with-current-buffer smime-details-buffer - (insert-file-contents tmpfile) - (delete-file tmpfile))) - (delete-region b e) - (insert-buffer-substring buffer) - (goto-char b) - (when (looking-at "^MIME-Version: 1.0$") - (delete-region (point) (progn (forward-line 1) (point)))) - t) - (with-current-buffer smime-details-buffer - (goto-char (point-max)) - (insert-buffer-substring buffer)) - (kill-buffer buffer)))) - -(defun smime-encrypt-region (b e certfiles) - "Encrypt region for recipients specified in CERTFILES. -If encryption fails, the buffer is not modified. Region is assumed to -have proper MIME tags. CERTFILES is a list of filenames, each file -is expected to contain of a PEM encoded certificate." - (smime-new-details-buffer) - (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))) - (tmpfile (smime-make-temp-file "smime"))) - (prog1 - (when (prog1 - (apply 'smime-call-openssl-region b e (list buffer tmpfile) - "smime" "-encrypt" smime-encrypt-cipher - (mapcar 'expand-file-name certfiles)) - (with-current-buffer smime-details-buffer - (insert-file-contents tmpfile) - (delete-file tmpfile))) - (delete-region b e) - (insert-buffer-substring buffer) - (goto-char b) - (when (looking-at "^MIME-Version: 1.0$") - (delete-region (point) (progn (forward-line 1) (point)))) - t) - (with-current-buffer smime-details-buffer - (goto-char (point-max)) - (insert-buffer-substring buffer)) - (kill-buffer buffer)))) - -;; Sign+encrypt buffer - -(defun smime-sign-buffer (&optional keyfile buffer) - "S/MIME sign BUFFER with key in KEYFILE. -KEYFILE should contain a PEM encoded key and certificate." - (interactive) - (with-current-buffer (or buffer (current-buffer)) - (smime-sign-region - (point-min) (point-max) - (if keyfile - keyfile - (smime-get-key-with-certs-by-email - (completing-read - (concat "Sign using which key? " - (if smime-keys (concat "(default " (caar smime-keys) ") ") - "")) - smime-keys nil nil (car-safe (car-safe smime-keys)))))))) - -(defun smime-encrypt-buffer (&optional certfiles buffer) - "S/MIME encrypt BUFFER for recipients specified in CERTFILES. -CERTFILES is a list of filenames, each file is expected to consist of -a PEM encoded key and certificate. Uses current buffer if BUFFER is -nil." - (interactive) - (with-current-buffer (or buffer (current-buffer)) - (smime-encrypt-region - (point-min) (point-max) - (or certfiles - (list (read-file-name "Recipient's S/MIME certificate: " - smime-certificate-directory nil)))))) - -;; Verify+decrypt region - -(defun smime-verify-region (b e) - "Verify S/MIME message in region between B and E. -Returns non-nil on success. -Any details (stdout and stderr) are left in the buffer specified by -`smime-details-buffer'." - (smime-new-details-buffer) - (let ((CAs (append (if smime-CA-file - (list "-CAfile" - (expand-file-name smime-CA-file))) - (if smime-CA-directory - (list "-CApath" - (expand-file-name smime-CA-directory)))))) - (unless CAs - (error "No CA configured")) - (if smime-crl-check - (add-to-list 'CAs smime-crl-check)) - (if (apply 'smime-call-openssl-region b e (list smime-details-buffer t) - "smime" "-verify" "-out" "/dev/null" CAs) - t - (insert-buffer-substring smime-details-buffer) - nil))) - -(defun smime-noverify-region (b e) - "Verify integrity of S/MIME message in region between B and E. -Returns non-nil on success. -Any details (stdout and stderr) are left in the buffer specified by -`smime-details-buffer'." - (smime-new-details-buffer) - (if (apply 'smime-call-openssl-region b e (list smime-details-buffer t) - "smime" "-verify" "-noverify" "-out" '("/dev/null")) - t - (insert-buffer-substring smime-details-buffer) - nil)) - -(eval-when-compile - (defvar from)) - -(defun smime-decrypt-region (b e keyfile) - "Decrypt S/MIME message in region between B and E with key in KEYFILE. -On success, replaces region with decrypted data and return non-nil. -Any details (stderr on success, stdout and stderr on error) are left -in the buffer specified by `smime-details-buffer'." - (smime-new-details-buffer) - (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))) - CAs (passphrase (smime-ask-passphrase)) - (tmpfile (smime-make-temp-file "smime"))) - (if passphrase - (setenv "GNUS_SMIME_PASSPHRASE" passphrase)) - (if (prog1 - (apply 'smime-call-openssl-region b e - (list buffer tmpfile) - "smime" "-decrypt" "-recip" (expand-file-name keyfile) - (if passphrase - (list "-passin" "env:GNUS_SMIME_PASSPHRASE"))) - (if passphrase - (setenv "GNUS_SMIME_PASSPHRASE" "" t)) - (with-current-buffer smime-details-buffer - (insert-file-contents tmpfile) - (delete-file tmpfile))) - (progn - (delete-region b e) - (when (boundp 'from) - ;; `from' is dynamically bound in mm-dissect. - (insert "From: " from "\n")) - (insert-buffer-substring buffer) - (kill-buffer buffer) - t) - (with-current-buffer smime-details-buffer - (insert-buffer-substring buffer)) - (kill-buffer buffer) - (delete-region b e) - (insert-buffer-substring smime-details-buffer) - nil))) - -;; Verify+Decrypt buffer - -(defun smime-verify-buffer (&optional buffer) - "Verify integrity of S/MIME message in BUFFER. -Uses current buffer if BUFFER is nil. Returns non-nil on success. -Any details (stdout and stderr) are left in the buffer specified by -`smime-details-buffer'." - (interactive) - (with-current-buffer (or buffer (current-buffer)) - (smime-verify-region (point-min) (point-max)))) - -(defun smime-noverify-buffer (&optional buffer) - "Verify integrity of S/MIME message in BUFFER. -Does NOT verify validity of certificate (only message integrity). -Uses current buffer if BUFFER is nil. Returns non-nil on success. -Any details (stdout and stderr) are left in the buffer specified by -`smime-details-buffer'." - (interactive) - (with-current-buffer (or buffer (current-buffer)) - (smime-noverify-region (point-min) (point-max)))) - -(defun smime-decrypt-buffer (&optional buffer keyfile) - "Decrypt S/MIME message in BUFFER using KEYFILE. -Uses current buffer if BUFFER is nil, and query user of KEYFILE if it's nil. -On success, replaces data in buffer and return non-nil. -Any details (stderr on success, stdout and stderr on error) are left -in the buffer specified by `smime-details-buffer'." - (interactive) - (with-current-buffer (or buffer (current-buffer)) - (smime-decrypt-region - (point-min) (point-max) - (expand-file-name - (or keyfile - (smime-get-key-by-email - (completing-read - (concat "Decipher using which key? " - (if smime-keys (concat "(default " (caar smime-keys) ") ") - "")) - smime-keys nil nil (car-safe (car-safe smime-keys))))))))) - -;; Various operations - -(defun smime-new-details-buffer () - (with-current-buffer (get-buffer-create smime-details-buffer) - (erase-buffer))) - -(defun smime-pkcs7-region (b e) - "Convert S/MIME message between points B and E into a PKCS7 message." - (smime-new-details-buffer) - (when (smime-call-openssl-region b e smime-details-buffer "smime" "-pk7out") - (delete-region b e) - (insert-buffer-substring smime-details-buffer) - t)) - -(defun smime-pkcs7-certificates-region (b e) - "Extract any certificates enclosed in PKCS7 message between points B and E." - (smime-new-details-buffer) - (when (smime-call-openssl-region - b e smime-details-buffer "pkcs7" "-print_certs" "-text") - (delete-region b e) - (insert-buffer-substring smime-details-buffer) - t)) - -(defun smime-pkcs7-email-region (b e) - "Get email addresses contained in certificate between points B and E. -A string or a list of strings is returned." - (smime-new-details-buffer) - (when (smime-call-openssl-region - b e smime-details-buffer "x509" "-email" "-noout") - (delete-region b e) - (insert-buffer-substring smime-details-buffer) - t)) - -;; Utility functions - -(defun smime-get-certfiles (keyfile keys) - (if keys - (let ((curkey (car keys)) - (otherkeys (cdr keys))) - (if (string= keyfile (cadr curkey)) - (caddr curkey) - (smime-get-certfiles keyfile otherkeys))))) - -;; Use mm-util? -(eval-and-compile - (defalias 'smime-point-at-eol - (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position))) - -(defun smime-buffer-as-string-region (b e) - "Return each line in region between B and E as a list of strings." - (save-excursion - (goto-char b) - (let (res) - (while (< (point) e) - (let ((str (buffer-substring (point) (smime-point-at-eol)))) - (unless (string= "" str) - (push str res))) - (forward-line)) - res))) - -;; Find certificates - -(defun smime-mail-to-domain (mailaddr) - (if (string-match "@" mailaddr) - (replace-match "." 'fixedcase 'literal mailaddr) - mailaddr)) - -(defun smime-cert-by-dns (mail) - (let* ((dig-dns-server smime-dns-server) - (digbuf (dig-invoke (smime-mail-to-domain mail) "cert" nil nil "+vc")) - (retbuf (generate-new-buffer (format "*certificate for %s*" mail))) - (certrr (with-current-buffer digbuf - (dig-extract-rr (smime-mail-to-domain mail) "cert"))) - (cert (and certrr (dig-rr-get-pkix-cert certrr)))) - (if cert - (with-current-buffer retbuf - (insert "-----BEGIN CERTIFICATE-----\n") - (let ((i 0) (len (length cert))) - (while (> (- len 64) i) - (insert (substring cert i (+ i 64)) "\n") - (setq i (+ i 64))) - (insert (substring cert i len) "\n")) - (insert "-----END CERTIFICATE-----\n")) - (kill-buffer retbuf) - (setq retbuf nil)) - (kill-buffer digbuf) - retbuf)) - -;; User interface. - -(defvar smime-buffer "*SMIME*") - -(defvar smime-mode-map nil) -(put 'smime-mode 'mode-class 'special) - -(unless smime-mode-map - (setq smime-mode-map (make-sparse-keymap)) - (suppress-keymap smime-mode-map) - - (define-key smime-mode-map "q" 'smime-exit) - (define-key smime-mode-map "f" 'smime-certificate-info)) - -(defun smime-mode () - "Major mode for browsing, viewing and fetching certificates. - -All normal editing commands are switched off. -\\ - -The following commands are available: - -\\{smime-mode-map}" - (interactive) - (kill-all-local-variables) - (setq major-mode 'smime-mode) - (setq mode-name "SMIME") - (setq mode-line-process nil) - (use-local-map smime-mode-map) - (buffer-disable-undo) - (setq truncate-lines t) - (setq buffer-read-only t)) - -(defun smime-certificate-info (certfile) - (interactive "fCertificate file: ") - (let ((buffer (get-buffer-create (format "*certificate %s*" certfile)))) - (switch-to-buffer buffer) - (erase-buffer) - (call-process smime-openssl-program nil buffer 'display - "x509" "-in" (expand-file-name certfile) "-text") - (fundamental-mode) - (set-buffer-modified-p nil) - (toggle-read-only t) - (goto-char (point-min)))) - -(defun smime-draw-buffer () - (with-current-buffer smime-buffer - (let (buffer-read-only) - (erase-buffer) - (insert "\nYour keys:\n") - (dolist (key smime-keys) - (insert - (format "\t\t%s: %s\n" (car key) (cadr key)))) - (insert "\nTrusted Certificate Authoritys:\n") - (insert "\nKnown Certificates:\n")))) - -(defun smime () - "Go to the SMIME buffer." - (interactive) - (unless (get-buffer smime-buffer) - (save-excursion - (set-buffer (get-buffer-create smime-buffer)) - (smime-mode))) - (smime-draw-buffer) - (switch-to-buffer smime-buffer)) - -(defun smime-exit () - "Quit the S/MIME buffer." - (interactive) - (kill-buffer (current-buffer))) - -;; Other functions - -(defun smime-get-key-by-email (email) - (cadr (assoc email smime-keys))) - -(defun smime-get-key-with-certs-by-email (email) - (cdr (assoc email smime-keys))) - -(provide 'smime) - -;;; smime.el ends here diff --git a/lisp/spam-report.el b/lisp/spam-report.el index efd6778..6527817 100644 --- a/lisp/spam-report.el +++ b/lisp/spam-report.el @@ -59,14 +59,32 @@ instead." (defcustom spam-report-url-ping-function 'spam-report-url-ping-plain - "Function to use for url ping spam reporting." + "Function to use for url ping spam reporting. +The function must accept the arguments `host' and `report'." :type '(choice (const :tag "Connect directly" spam-report-url-ping-plain) (const :tag "Use the external program specified in `mm-url-program'" - spam-report-url-ping-mm-url)) + spam-report-url-ping-mm-url) + (const :tag "Store request URLs in `spam-report-requests-file'" + spam-report-url-to-file) + (function :tag "User defined function" nil)) :group 'spam-report) +(defcustom spam-report-requests-file + (nnheader-concat gnus-directory "spam/" "spam-report-requests.url") + ;; Is there a convention for the extension of such a file? + ;; Should we use `spam-directory'? + "File where spam report request are stored." + :type 'file + :group 'spam-report) + +(defvar spam-report-url-ping-temp-agent-function nil + "Internal variable for `spam-report-agentize' and `spam-report-deagentize'. +This variable will store the value of `spam-report-url-ping-function' from +before `spam-report-agentize' was run, so that `spam-report-deagentize' can +undo that change.") + (defun spam-report-gmane (&rest articles) "Report an article as spam through Gmane" (dolist (article articles) @@ -113,14 +131,113 @@ the function specified by `spam-report-url-ping-function'." (format "GET %s HTTP/1.1\nUser-Agent: %s (spam-report.el)\nHost: %s\n\n" report (gnus-emacs-version) host))))) +;;;###autoload +(defun spam-report-process-queue (&optional file keep) + "Report all queued requests from `spam-report-requests-file'. + +If FILE is given, use it instead of `spam-report-requests-file'. +If KEEP is t, leave old requests in the file. If KEEP is the +symbol `ask', query before flushing the queue file." + (interactive + (list (read-file-name + "File: " + (file-name-directory spam-report-requests-file) + spam-report-requests-file + nil + (file-name-nondirectory spam-report-requests-file)) + current-prefix-arg)) + (if (eq spam-report-url-ping-function 'spam-report-url-to-file) + (error (concat "Cannot process requests when " + "`spam-report-url-ping-function' is " + "`spam-report-url-to-file'.")) + (gnus-message 7 "Processing requests using `%s'." + spam-report-url-ping-function)) + (or file (setq file spam-report-requests-file)) + (save-excursion + (set-buffer (find-file-noselect file)) + (goto-char (point-min)) + (while (and (not (eobp)) + (re-search-forward + "http://\\([^/]+\\)\\(/.*\\) *$" (point-at-eol) t)) + (funcall spam-report-url-ping-function (match-string 1) (match-string 2)) + (forward-line 1)) + (if (or (eq keep nil) + (and (eq keep 'ask) + (y-or-n-p + (format + "Flush requests from `%s'? " (current-buffer))))) + (progn + (gnus-message 7 "Flushing request file `%s'" + spam-report-requests-file) + (erase-buffer) + (save-buffer) + (kill-buffer (current-buffer))) + (gnus-message 7 "Keeping requests in `%s'" spam-report-requests-file)))) + +;;;###autoload (defun spam-report-url-ping-mm-url (host report) "Ping a host through HTTP, addressing a specific GET resource. Use the external program specified in `mm-url-program' to connect to server." (with-temp-buffer - (let ((url (concat "http://" host "/" report))) + (let ((url (concat "http://" host report))) (mm-url-insert url t)))) +;;;###autoload +(defun spam-report-url-to-file (host report) + "Collect spam report requests in `spam-report-requests-file'. +Customize `spam-report-url-ping-function' to use this function." + (let ((url (concat "http://" host report)) + (file spam-report-requests-file)) + (gnus-make-directory (file-name-directory file)) + (gnus-message 9 "Writing URL `%s' to file `%s'" url file) + (with-temp-buffer + (insert url) + (newline) + (append-to-file (point-min) (point-max) file)))) + +;;;###autoload +(defun spam-report-agentize () + "Add spam-report support to the Agent. +Spam reports will be queued with \\[spam-report-url-to-file] when +the Agent is unplugged, and will be submitted in a batch when the +Agent is plugged." + (interactive) + (add-hook 'gnus-agent-plugged-hook 'spam-report-plug-agent) + (add-hook 'gnus-agent-unplugged-hook 'spam-report-unplug-agent)) + +;;;###autoload +(defun spam-report-deagentize () + "Remove spam-report support from the Agent. +Spam reports will be queued with the method used when +\\[spam-report-agentize] was run." + (interactive) + (remove-hook 'gnus-agent-plugged-hook 'spam-report-plug-agent) + (remove-hook 'gnus-agent-unplugged-hook 'spam-report-unplug-agent)) + +(defun spam-report-plug-agent () + "Adjust spam report settings for plugged state. +Process queued spam reports." + ;; Process the queue, unless the user only wanted to report to a file + ;; anyway. + (unless (equal spam-report-url-ping-temp-agent-function + 'spam-report-url-to-file) + (spam-report-process-queue)) + ;; Set the reporting function, if we have memorized something otherwise, + ;; stick with plain URL reporting. + (setq spam-report-url-ping-function + (or spam-report-url-ping-temp-agent-function + 'spam-report-url-ping-plain))) + +(defun spam-report-unplug-agent () + "Restore spam report settings for unplugged state." + ;; save the old value + (setq spam-report-url-ping-temp-agent-function + spam-report-url-ping-function) + ;; store all reports to file + (setq spam-report-url-ping-function + 'spam-report-url-to-file)) + (provide 'spam-report) ;;; spam-report.el ends here. diff --git a/lisp/spam-stat.el b/lisp/spam-stat.el index e85e057..0038731 100644 --- a/lisp/spam-stat.el +++ b/lisp/spam-stat.el @@ -1,6 +1,6 @@ ;;; spam-stat.el --- detecting spam based on statistics -;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Keywords: network @@ -122,6 +122,7 @@ ;;; Code: +(require 'mail-parse) (defgroup spam-stat nil "Statistical spam detection for Emacs. @@ -160,17 +161,30 @@ This variable says how many characters this will be." :group 'spam-stat) (defcustom spam-stat-split-fancy-spam-group "mail.spam" - "Name of the group where spam should be stored, if -`spam-stat-split-fancy' is used in fancy splitting rules. Has no -effect when spam-stat is invoked through spam.el." + "Name of the group where spam should be stored. +If `spam-stat-split-fancy' is used in fancy splitting rules. Has +no effect when spam-stat is invoked through spam.el." :type 'string :group 'spam-stat) (defcustom spam-stat-split-fancy-spam-threshhold 0.9 - "Spam score threshhold in spam-stat-split-fancy." + "Spam score threshold in spam-stat-split-fancy." :type 'number :group 'spam-stat) +(defcustom spam-stat-washing-hook nil + "Hook applied to each message before analysis." + :type 'hook + :group 'spam-stat) + +(defcustom spam-stat-process-directory-age 90 + "Max. age of files to be processed in directory, in days. +When using `spam-stat-process-spam-directory' or +`spam-stat-process-non-spam-directory', only files that have +been touched in this many days will be considered. Without +this filter, re-training spam-stat with several thousand messages +will start to take a very long time.") + (defvar spam-stat-syntax-table (let ((table (copy-syntax-table text-mode-syntax-table))) (modify-syntax-entry ?- "w" table) @@ -193,52 +207,24 @@ This is set by hooking into Gnus.") (defvar spam-stat-buffer-name " *spam stat buffer*" "Name of the `spam-stat-buffer'.") -;; Functions missing in Emacs 20 - -(when (memq nil (mapcar 'fboundp - '(gethash hash-table-count make-hash-table - mapc puthash))) - (require 'cl) - (unless (fboundp 'puthash) - ;; alias puthash is missing from Emacs 20 cl-extra.el - (defalias 'puthash 'cl-puthash))) - -(eval-when-compile - (unless (fboundp 'with-syntax-table) - ;; Imported from Emacs 21.2 - (defmacro with-syntax-table (table &rest body) "\ -Evaluate BODY with syntax table of current buffer set to a copy of TABLE. -The syntax table of the current buffer is saved, BODY is evaluated, and the -saved table is restored, even in case of an abnormal exit. -Value is what BODY returns." - (let ((old-table (make-symbol "table")) - (old-buffer (make-symbol "buffer"))) - `(let ((,old-table (syntax-table)) - (,old-buffer (current-buffer))) - (unwind-protect - (progn - (set-syntax-table (copy-syntax-table ,table)) - ,@body) - (save-current-buffer - (set-buffer ,old-buffer) - (set-syntax-table ,old-table)))))))) +(defvar spam-stat-coding-system + (if (mm-coding-system-p 'emacs-mule) 'emacs-mule 'raw-text) + "Coding system used for `spam-stat-file'.") ;; Hooking into Gnus (defun spam-stat-store-current-buffer () "Store a copy of the current buffer in `spam-stat-buffer'." - (save-excursion - (let ((str (buffer-string))) - (set-buffer (get-buffer-create spam-stat-buffer-name)) + (let ((buf (current-buffer))) + (with-current-buffer (get-buffer-create spam-stat-buffer-name) (erase-buffer) - (insert str) + (insert-buffer-substring buf) (setq spam-stat-buffer (current-buffer))))) (defun spam-stat-store-gnus-article-buffer () "Store a copy of the current article in `spam-stat-buffer'. This uses `gnus-article-buffer'." - (save-excursion - (set-buffer gnus-original-article-buffer) + (with-current-buffer gnus-original-article-buffer (spam-stat-store-current-buffer))) ;; Data -- not using defstruct in order to save space and time @@ -310,7 +296,7 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', ;; Parsing (defmacro with-spam-stat-max-buffer-size (&rest body) - "Narrows the buffer down to the first 4k characters, then evaluates BODY." + "Narrow the buffer down to the first 4k characters, then evaluate BODY." `(save-restriction (when (> (- (point-max) (point-min)) @@ -320,7 +306,8 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', ,@body)) (defun spam-stat-buffer-words () - "Return a hash table of words and number of occurences in the buffer." + "Return a hash table of words and number of occurrences in the buffer." + (run-hooks 'spam-stat-washing-hook) (with-spam-stat-max-buffer-size (with-syntax-table spam-stat-syntax-table (goto-char (point-min)) @@ -369,7 +356,7 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', (lambda (word count) (let ((entry (gethash word spam-stat))) (if (not entry) - (error "This buffer has unknown words in it.") + (gnus-message 8 "This buffer has unknown words in it") (spam-stat-set-good entry (- (spam-stat-good entry) count)) (spam-stat-set-bad entry (+ (spam-stat-bad entry) count)) (spam-stat-set-score entry (spam-stat-compute-score entry)) @@ -385,7 +372,7 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', (lambda (word count) (let ((entry (gethash word spam-stat))) (if (not entry) - (error "This buffer has unknown words in it.") + (gnus-message 8 "This buffer has unknown words in it") (spam-stat-set-good entry (+ (spam-stat-good entry) count)) (spam-stat-set-bad entry (- (spam-stat-bad entry) count)) (spam-stat-set-score entry (spam-stat-compute-score entry)) @@ -396,30 +383,30 @@ Use `spam-stat-ngood', `spam-stat-nbad', `spam-stat-good', ;; Saving and Loading (defun spam-stat-save (&optional force) - "Save the `spam-stat' hash table as lisp file." - (interactive) + "Save the `spam-stat' hash table as Lisp file. +With a prefix argument save unconditionally." + (interactive "P") (when (or force spam-stat-dirty) - (with-temp-buffer - (let ((standard-output (current-buffer)) - (font-lock-maximum-size 0)) - (insert "(setq spam-stat-ngood " - (number-to-string spam-stat-ngood) - " spam-stat-nbad " - (number-to-string spam-stat-nbad) - " spam-stat (spam-stat-to-hash-table '(") - (maphash (lambda (word entry) - (prin1 (list word - (spam-stat-good entry) - (spam-stat-bad entry)))) - spam-stat) - (insert ")))") - (write-file spam-stat-file))) - (setq spam-stat-dirty nil))) + (let ((coding-system-for-write spam-stat-coding-system)) + (with-temp-file spam-stat-file + (let ((standard-output (current-buffer)) + (font-lock-maximum-size 0)) + (insert (format ";-*- coding: %s; -*-\n" spam-stat-coding-system)) + (insert (format "(setq spam-stat-ngood %d spam-stat-nbad %d +spam-stat (spam-stat-to-hash-table '(" spam-stat-ngood spam-stat-nbad)) + (maphash (lambda (word entry) + (prin1 (list word + (spam-stat-good entry) + (spam-stat-bad entry)))) + spam-stat) + (insert ")))")))) + (setq spam-stat-dirty nil))) (defun spam-stat-load () "Read the `spam-stat' hash table from disk." ;; TODO: maybe we should warn the user if spam-stat-dirty is t? - (load-file spam-stat-file) + (let ((coding-system-for-read spam-stat-coding-system)) + (load-file spam-stat-file)) (setq spam-stat-dirty nil)) (defun spam-stat-to-hash-table (entries) @@ -429,7 +416,8 @@ the word string, NGOOD is the number of good mails it has appeared in, NBAD is the number of bad mails it has appeared in, GOOD is the number of times it appeared in good mails, and BAD is the number of times it has appeared in bad mails." - (let ((table (make-hash-table :test 'equal))) + (let ((table (make-hash-table :size (length entries) + :test 'equal))) (mapc (lambda (l) (puthash (car l) (spam-stat-make-entry (nth 1 l) (nth 2 l)) @@ -462,22 +450,20 @@ The default score for unknown words is stored in These are the words whose spam-stat differs the most from 0.5. The list returned contains elements of the form \(WORD SCORE DIFF), where DIFF is the difference between SCORE and 0.5." - (with-spam-stat-max-buffer-size - (with-syntax-table spam-stat-syntax-table - (let (result word score) - (maphash (lambda (word ignore) - (setq score (spam-stat-score-word word) - result (cons (list word score (abs (- score 0.5))) - result))) - (spam-stat-buffer-words)) - (setq result (sort result (lambda (a b) (< (nth 2 b) (nth 2 a))))) - (setcdr (nthcdr 14 result) nil) - result)))) + (let (result word score) + (maphash (lambda (word ignore) + (setq score (spam-stat-score-word word) + result (cons (list word score (abs (- score 0.5))) + result))) + (spam-stat-buffer-words)) + (setq result (sort result (lambda (a b) (< (nth 2 b) (nth 2 a))))) + (setcdr (nthcdr 14 result) nil) + result)) (defun spam-stat-score-buffer () "Return a score describing the spam-probability for this buffer." (setq spam-stat-score-data (spam-stat-buffer-words-with-scores)) - (let* ((probs (mapcar (lambda (e) (cadr e)) spam-stat-score-data)) + (let* ((probs (mapcar 'cadr spam-stat-score-data)) (prod (apply #'* probs))) (/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x)) probs)))))) @@ -502,6 +488,13 @@ check the variable `spam-stat-score-data'." ;; Testing +(defun spam-stat-strip-xref () + "Strip the the Xref header." + (save-restriction + (mail-narrow-to-head) + (when (re-search-forward "^Xref:.*\n" nil t) + (delete-region (match-beginning 0) (match-end 0))))) + (defun spam-stat-process-directory (dir func) "Process all the regular files in directory DIR using function FUNC." (let* ((files (directory-files dir t "^[^.]")) @@ -511,10 +504,13 @@ check the variable `spam-stat-score-data'." (dolist (f files) (when (and (file-readable-p f) (file-regular-p f) - (> (nth 7 (file-attributes f)) 0)) + (> (nth 7 (file-attributes f)) 0) + (< (time-to-number-of-days (time-since (nth 5 (file-attributes f)))) + spam-stat-process-directory-age)) (setq count (1+ count)) (message "Reading %s: %.2f%%" dir (/ count max)) - (insert-file-contents f) + (insert-file-contents-literally f) + (spam-stat-strip-xref) (funcall func) (erase-buffer)))))) @@ -533,13 +529,19 @@ check the variable `spam-stat-score-data'." (interactive) (hash-table-count spam-stat)) -(defun spam-stat-test-directory (dir) +(defun spam-stat-test-directory (dir &optional verbose) "Test all the regular files in directory DIR for spam. If the result is 1.0, then all files are considered spam. If the result is 0.0, non of the files is considered spam. -You can use this to determine error rates." - (interactive "D") +You can use this to determine error rates. + +If VERBOSE is non-nil display names of files detected as spam or +non-spam in a temporary buffer. If it is the symbol `ham', +display non-spam files; otherwise display spam files." + (interactive "DDirectory: ") (let* ((files (directory-files dir t "^[^.]")) + display-files + buffer-score (total (length files)) (score 0.0); float (max (/ total 100.0)); float @@ -550,12 +552,22 @@ You can use this to determine error rates." (file-regular-p f) (> (nth 7 (file-attributes f)) 0)) (setq count (1+ count)) - (message "Reading %.2f%%, score %.2f%%" - (/ count max) (/ score count)) - (insert-file-contents f) - (when (> (spam-stat-score-buffer) 0.9) + (message "Reading %.2f%%, score %.2f" + (/ count max) (/ score count)) + (insert-file-contents-literally f) + (setq buffer-score (spam-stat-score-buffer)) + (when (> buffer-score 0.9) (setq score (1+ score))) + (when verbose + (if (> buffer-score 0.9) + (unless (eq verbose 'ham) (push f display-files)) + (when (eq verbose 'ham) (push f display-files)))) (erase-buffer)))) + (when display-files + (with-output-to-temp-buffer "*spam-stat results*" + (dolist (file display-files) + (princ file) + (terpri)))) (message "Final score: %d / %d = %f" score total (/ score total)))) ;; Shrinking the dictionary @@ -571,10 +583,11 @@ COUNT defaults to 5" (spam-stat-bad entry)) count) (remhash key spam-stat))) - spam-stat)) + spam-stat) + (setq spam-stat-dirty t)) (defun spam-stat-install-hooks-function () - "Install the spam-stat function hooks" + "Install the spam-stat function hooks." (interactive) (add-hook 'nnmail-prepare-incoming-message-hook 'spam-stat-store-current-buffer) @@ -585,7 +598,7 @@ COUNT defaults to 5" (spam-stat-install-hooks-function)) (defun spam-stat-unload-hook () - "Uninstall the spam-stat function hooks" + "Uninstall the spam-stat function hooks." (interactive) (remove-hook 'nnmail-prepare-incoming-message-hook 'spam-stat-store-current-buffer) diff --git a/lisp/spam-wash.el b/lisp/spam-wash.el new file mode 100644 index 0000000..be91cdf --- /dev/null +++ b/lisp/spam-wash.el @@ -0,0 +1,74 @@ +;;; spam-wash.el --- wash spam before analysis + +;; Copyright (C) 2004 Free Software Foundation, Inc. + +;; Author: Andrew Cohen +;; Keywords: mail + +;; This file is part of GNU Emacs. + +;; This is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +;; License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; This library decodes MIME encodings such as base64 and +;; quoted-printable to allow for better spam analysis. +;; +;; `spam-wash' should be called in a buffer containing the message. + +;;; Code: + +(require 'gnus-art) + +(defun spam-wash () + "Treat the current buffer prior to spam analysis." + (interactive) + (run-hooks 'gnus-article-decode-hook) + (save-excursion + (save-restriction + (let* ((buffer-read-only nil) + (gnus-inhibit-treatment t) + (gnus-article-buffer (current-buffer)) + (handles (or (mm-dissect-buffer nil gnus-article-loose-mime) + (and gnus-article-emulate-mime + (mm-uu-dissect)))) + handle) + (when gnus-article-mime-handles + (mm-destroy-parts gnus-article-mime-handles) + (setq gnus-article-mime-handle-alist nil)) + (setq gnus-article-mime-handles handles) + (when (and handles + (or (not (stringp (car handles))) + (cdr handles))) + (article-goto-body) + (delete-region (point) (point-max)) + (spam-treat-parts handles)))))) + +(defun spam-treat-parts (handle) + (if (stringp (car handle)) + (mapcar 'spam-treat-parts (cdr handle)) + (if (bufferp (car handle)) + (save-restriction + (narrow-to-region (point) (point)) + (when (let ((case-fold-search t)) + (string-match "text" (car (mm-handle-type handle)))) + (mm-insert-part handle)) + (goto-char (point-max))) + (mapcar 'spam-treat-parts handle)))) + +(provide 'spam-wash) + +;;; spam-wash.el ends here diff --git a/lisp/spam.el b/lisp/spam.el index 008f8e9..25521b4 100644 --- a/lisp/spam.el +++ b/lisp/spam.el @@ -37,12 +37,10 @@ ;;; Code: -(require 'path-util) - (eval-when-compile (require 'cl)) +(require 'path-util) (require 'gnus-sum) - (require 'gnus-uu) ; because of key prefix issues ;;; for the definitions of group content classification and spam processors (require 'gnus) @@ -75,7 +73,7 @@ (defgroup spam nil "Spam configuration.") -(defcustom spam-directory "~/News/spam/" +(defcustom spam-directory (nnheader-concat gnus-directory "spam/") "Directory for spam whitelists and blacklists." :type 'directory :group 'spam) @@ -132,9 +130,9 @@ Competition." :group 'spam) (defcustom spam-disable-spam-split-during-ham-respool nil - "Whether `spam-split' should be ignored while resplitting ham in a process -destination. This is useful to prevent ham from ending up in the same spam -group after the resplit. Don't set this to t if you have spam-split as the + "Whether `spam-split' should be ignored while resplitting ham. +This is useful to prevent ham from ending up in the same spam +group after the resplit. Don't set this to t if you have `spam-split' as the last rule in your split configuration." :type 'boolean :group 'spam) @@ -164,6 +162,11 @@ The regular expression is matched against the address." :type 'boolean :group 'spam) +(defcustom spam-use-gmane-xref nil + "Whether the Gmane spam xref should be used by `spam-split'." + :type 'boolean + :group 'spam) + (defcustom spam-use-blacklist nil "Whether the blacklist should be used by `spam-split'." :type 'boolean @@ -220,6 +223,18 @@ Enable this if you want Gnus to invoke Bogofilter on new messages." :type 'boolean :group 'spam) +(defcustom spam-use-bsfilter-headers nil + "Whether bsfilter headers should be used by `spam-split'. +Enable this if you pre-process messages with Bsfilter BEFORE Gnus sees them." + :type 'boolean + :group 'spam) + +(defcustom spam-use-bsfilter nil + "Whether bsfilter should be invoked by `spam-split'. +Enable this if you want Gnus to invoke Bsfilter on new messages." + :type 'boolean + :group 'spam) + (defcustom spam-use-BBDB nil "Whether BBDB should be used by `spam-split'." :type 'boolean @@ -247,8 +262,22 @@ considered spam." :type 'boolean :group 'spam) +(defcustom spam-use-spamassassin nil + "Whether spamassassin should be invoked by `spam-split'. +Enable this if you want Gnus to invoke SpamAssassin on new messages." + :type 'boolean + :group 'spam) + +(defcustom spam-use-spamassassin-headers nil + "Whether spamassassin headers should be checked by `spam-split'. +Enable this if you pre-process messages with SpamAssassin BEFORE Gnus sees +them." + :type 'boolean + :group 'spam) + (defcustom spam-install-hooks (or spam-use-dig + spam-use-gmane-xref spam-use-blacklist spam-use-whitelist spam-use-whitelist-exclusive @@ -256,8 +285,12 @@ considered spam." spam-use-hashcash spam-use-regex-headers spam-use-regex-body - spam-use-bogofilter-headers spam-use-bogofilter + spam-use-bogofilter-headers + spam-use-spamassassin + spam-use-spamassassin-headers + spam-use-bsfilter + spam-use-bsfilter-headers spam-use-BBDB spam-use-BBDB-exclusive spam-use-ifile @@ -283,14 +316,23 @@ All unmarked article in such group receive the spam mark on group entry." :type '(repeat (string :tag "Group")) :group 'spam) + +(defcustom spam-gmane-xref-spam-group "gmane.spam.detected" + "The group where spam xrefs can be found on Gmane. +Only meaningful if you enable `spam-use-gmane-xref'." + :type 'string + :group 'spam) + (defcustom spam-blackhole-servers '("bl.spamcop.net" "relays.ordb.org" "dev.null.dk" "relays.visi.com") - "List of blackhole servers." + "List of blackhole servers. +Only meaningful if you enable `spam-use-blackholes'." :type '(repeat (string :tag "Server")) :group 'spam) (defcustom spam-blackhole-good-server-regex nil - "String matching IP addresses that should not be checked in the blackholes." + "String matching IP addresses that should not be checked in the blackholes. +Only meaningful if you enable `spam-use-blackholes'." :type '(radio (const nil) (regexp :format "%t: %v\n" :size 0)) :group 'spam) @@ -301,22 +343,26 @@ All unmarked article in such group receive the spam mark on group entry." :group 'spam) (defcustom spam-regex-headers-spam '("^X-Spam-Flag: YES") - "Regular expression for positive header spam matches." + "Regular expression for positive header spam matches. +Only meaningful if you enable `spam-use-regex-headers'." :type '(repeat (regexp :tag "Regular expression to match spam header")) :group 'spam) (defcustom spam-regex-headers-ham '("^X-Spam-Flag: NO") - "Regular expression for positive header ham matches." + "Regular expression for positive header ham matches. +Only meaningful if you enable `spam-use-regex-headers'." :type '(repeat (regexp :tag "Regular expression to match ham header")) :group 'spam) (defcustom spam-regex-body-spam '() - "Regular expression for positive body spam matches." + "Regular expression for positive body spam matches. +Only meaningful if you enable `spam-use-regex-body'." :type '(repeat (regexp :tag "Regular expression to match spam body")) :group 'spam) (defcustom spam-regex-body-ham '() - "Regular expression for positive body ham matches." + "Regular expression for positive body ham matches. +Only meaningful if you enable `spam-use-regex-body'." :type '(repeat (regexp :tag "Regular expression to match ham body")) :group 'spam) @@ -402,13 +448,60 @@ your main source of newsgroup names." (const :tag "Use the default")) :group 'spam-bogofilter) +(defgroup spam-bsfilter nil + "Spam bsfilter configuration." + :group 'spam) + +(defcustom spam-bsfilter-path (executable-find "bsfilter") + "File path of the Bsfilter executable program." + :type '(choice (file :tag "Location of bsfilter") + (const :tag "Bsfilter is not installed")) + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-header "X-Spam-Flag" + "The header inserted by Bsfilter to flag spam." + :type 'string + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-probability-header "X-Spam-Probability" + "The header that Bsfilter inserts in messages." + :type 'string + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-spam-switch "--add-spam" + "The switch that Bsfilter uses to register spam messages." + :type 'string + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-ham-switch "--add-ham" + "The switch that Bsfilter uses to register ham messages." + :type 'string + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-spam-strong-switch "--sub-spam" + "The switch that Bsfilter uses to unregister ham messages." + :type 'string + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-ham-strong-switch "--sub-clean" + "The switch that Bsfilter uses to unregister spam messages." + :type 'string + :group 'spam-bsfilter) + +(defcustom spam-bsfilter-database-directory nil + "Directory path of the Bsfilter databases." + :type '(choice (directory + :tag "Location of the Bsfilter database directory") + (const :tag "Use the default")) + :group 'spam-bsfilter) + (defgroup spam-spamoracle nil "Spam spamoracle configuration." :group 'spam) (defcustom spam-spamoracle-database nil - "Location of spamoracle database file. When nil, use the default -spamoracle database." + "Location of spamoracle database file. +When nil, use the default spamoracle database." :type '(choice (directory :tag "Location of spamoracle database file.") (const :tag "Use the default")) :group 'spam-spamoracle) @@ -419,15 +512,87 @@ spamoracle database." (const :tag "Use the default")) :group 'spam-spamoracle) +(defgroup spam-spamassassin nil + "Spam SpamAssassin configuration." + :group 'spam) + +(defcustom spam-spamassassin-path (executable-find "spamassassin") + "File path of the spamassassin executable program. +Hint: set this to \"spamc\" if you have spamd running. See the spamc and +spamd man pages for more information on these programs." + :type '(choice (file :tag "Location of spamc") + (const :tag "spamassassin is not installed")) + :group 'spam-spamassassin) + +(defcustom spam-spamassassin-arguments () + "Arguments to pass to the spamassassin executable. +This must be a list. For example, `(\"-C\" \"configfile\")'." + :type '(restricted-sexp :match-alternatives (listp)) + :group 'spam-spamassassin) + +(defcustom spam-spamassassin-spam-flag-header "X-Spam-Flag" + "The header inserted by SpamAssassin to flag spam." + :type 'string + :group 'spam-spamassassin) + +(defcustom spam-spamassassin-positive-spam-flag-header "YES" + "The regex on `spam-spamassassin-spam-flag-header' for positive spam +identification" + :type 'string + :group 'spam-spamassassin) + +(defcustom spam-spamassassin-spam-status-header "X-Spam-Status" + "The header inserted by SpamAssassin, giving extended scoring information" + :type 'string + :group 'spam-spamassassin) + +(defcustom spam-sa-learn-path (executable-find "sa-learn") + "File path of the sa-learn executable program." + :type '(choice (file :tag "Location of spamassassin") + (const :tag "spamassassin is not installed")) + :group 'spam-spamassassin) + +(defcustom spam-sa-learn-rebuild t + "Whether sa-learn should rebuild the database every time it is called +Enable this if you want sa-learn to rebuild the database automatically. Doing +this will slightly increase the running time of the spam registration process. +If you choose not to do this, you will have to run \"sa-learn --rebuild\" in +order for SpamAssassin to recognize the new registered spam." + :type 'boolean + :group 'spam-spamassassin) + +(defcustom spam-sa-learn-spam-switch "--spam" + "The switch that sa-learn uses to register spam messages" + :type 'string + :group 'spam-spamassassin) + +(defcustom spam-sa-learn-ham-switch "--ham" + "The switch that sa-learn uses to register ham messages" + :type 'string + :group 'spam-spamassassin) + +(defcustom spam-sa-learn-unregister-switch "--forget" + "The switch that sa-learn uses to unregister messages messages" + :type 'string + :group 'spam-spamassassin) + ;;; Key bindings for spam control. (gnus-define-keys gnus-summary-mode-map - "St" spam-bogofilter-score + "St" spam-generic-score "Sx" gnus-summary-mark-as-spam - "Mst" spam-bogofilter-score + "Mst" spam-generic-score "Msx" gnus-summary-mark-as-spam "\M-d" gnus-summary-mark-as-spam) +(defvar spam-cache-lookups t + "Whether spam.el will try to cache lookups using `spam-caches'.") + +(defvar spam-caches (make-hash-table + :size 10 + :test 'equal) + "Cache of spam detection entries.") + (defvar spam-old-ham-articles nil "List of old ham articles, generated when a group is entered.") @@ -438,15 +603,21 @@ spamoracle database." "If non-nil, `spam-split' is disabled, and always returns nil.") (defvar spam-split-last-successful-check nil - "`spam-split' will set this to nil or a spam-use-XYZ check if it - finds ham or spam.") + "Internal variable. +`spam-split' will set this to nil or a spam-use-XYZ check if it +finds ham or spam.") ;; convenience functions +(defun spam-clear-cache (symbol) + "Clear the spam-caches entry for a check." + (remhash symbol spam-caches)) + (defun spam-xor (a b) - "Logical exclusive `or'." + "Logical A xor B." (and (or a b) (not (and a b)))) (defun spam-group-ham-mark-p (group mark &optional spam) + "Checks if MARK is considered a ham mark in GROUP." (when (stringp group) (let* ((marks (spam-group-ham-marks group spam)) (marks (if (symbolp mark) @@ -455,9 +626,11 @@ spamoracle database." (memq mark marks)))) (defun spam-group-spam-mark-p (group mark) + "Checks if MARK is considered a spam mark in GROUP." (spam-group-ham-mark-p group mark t)) (defun spam-group-ham-marks (group &optional spam) + "In GROUP, get all the ham marks." (when (stringp group) (let* ((marks (if spam (gnus-parameter-spam-marks group) @@ -467,9 +640,11 @@ spamoracle database." marks))) (defun spam-group-spam-marks (group) + "In GROUP, get all the spam marks." (spam-group-ham-marks group t)) (defun spam-group-spam-contents-p (group) + "Is GROUP a spam group?" (if (stringp group) (or (member group spam-junk-mailgroups) (memq 'gnus-group-spam-classification-spam @@ -477,6 +652,7 @@ spamoracle database." nil)) (defun spam-group-ham-contents-p (group) + "Is GROUP a ham group?" (if (stringp group) (memq 'gnus-group-spam-classification-ham (gnus-parameter-spam-contents group)) @@ -485,20 +661,24 @@ spamoracle database." (defvar spam-list-of-processors '((gnus-group-spam-exit-processor-report-gmane spam spam-use-gmane) (gnus-group-spam-exit-processor-bogofilter spam spam-use-bogofilter) + (gnus-group-spam-exit-processor-bsfilter spam spam-use-bsfilter) (gnus-group-spam-exit-processor-blacklist spam spam-use-blacklist) (gnus-group-spam-exit-processor-ifile spam spam-use-ifile) (gnus-group-spam-exit-processor-stat spam spam-use-stat) (gnus-group-spam-exit-processor-spamoracle spam spam-use-spamoracle) + (gnus-group-spam-exit-processor-spamassassin spam spam-use-spamassassin) (gnus-group-ham-exit-processor-ifile ham spam-use-ifile) (gnus-group-ham-exit-processor-bogofilter ham spam-use-bogofilter) + (gnus-group-ham-exit-processor-bsfilter ham spam-use-bsfilter) (gnus-group-ham-exit-processor-stat ham spam-use-stat) (gnus-group-ham-exit-processor-whitelist ham spam-use-whitelist) (gnus-group-ham-exit-processor-BBDB ham spam-use-BBDB) (gnus-group-ham-exit-processor-copy ham spam-use-ham-copy) + (gnus-group-ham-exit-processor-spamassassin ham spam-use-spamassassin) (gnus-group-ham-exit-processor-spamoracle ham spam-use-spamoracle)) - "The spam-list-of-processors list contains pairs associating a -ham/spam exit processor variable with a classification and a -spam-use-* variable.") + "The `spam-list-of-processors' list. +This list contains pairs associating a ham/spam exit processor +variable with a classification and a spam-use-* variable.") (defun spam-group-processor-p (group processor) (if (and (stringp group) @@ -561,6 +741,74 @@ spam-use-* variable.") (defun spam-group-ham-processor-spamoracle-p (group) (spam-group-processor-p group 'gnus-group-ham-exit-processor-spamoracle)) +(defun spam-report-articles-gmane (n) + "Report the current message as spam. +Respects the process/prefix convention." + (interactive "P") + (dolist (article (gnus-summary-work-articles n)) + (gnus-summary-remove-process-mark article) + (spam-report-gmane article))) + +(defun spam-necessary-extra-headers () + "Return the extra headers spam.el thinks are necessary." + (let (list) + (when (or spam-use-spamassassin + spam-use-spamassassin-headers + spam-use-regex-headers) + (push 'X-Spam-Status list)) + list)) + +(defun spam-user-format-function-S (headers) + (when headers + (spam-summary-score headers))) + +(defun spam-article-sort-by-spam-status (h1 h2) + "Sort articles by score." + (let (result) + (dolist (header (spam-necessary-extra-headers)) + (let ((s1 (spam-summary-score h1 header)) + (s2 (spam-summary-score h2 header))) + (unless (= s1 s2) + (setq result (< s1 s2)) + (return)))) + result)) + +(defun spam-extra-header-to-number (header headers) + "Transform an extra header to a number." + (if (gnus-extra-header header headers) + (cond + ((eq header 'X-Spam-Status) + (string-to-number (gnus-replace-in-string + (gnus-extra-header header headers) + ".*hits=" ""))) + (t nil)) + nil)) + +(defun spam-summary-score (headers &optional specific-header) + "Score an article for the summary buffer, as fast as possible. +With SPECIFIC-HEADER, returns only that header's score. +Will not return a nil score." + (let (score) + (dolist (header + (if specific-header + (list specific-header) + (spam-necessary-extra-headers))) + (setq score + (spam-extra-header-to-number header headers)) + (when score + (return))) + (or score 0))) + +(defun spam-generic-score (&optional recheck) + "Invoke whatever scoring method we can." + (interactive "P") + (cond + ((or spam-use-spamassassin spam-use-spamassassin-headers) + (spam-spamassassin-score recheck)) + ((or spam-use-bsfilter spam-use-bsfilter-headers) + (spam-bsfilter-score recheck)) + (t (spam-bogofilter-score recheck)))) + ;;; Summary entry and exit processing. (defun spam-summary-prepare () @@ -584,7 +832,7 @@ spam-use-* variable.") (new-articles (spam-list-articles gnus-newsgroup-articles classification)) - (changed-articles (gnus-set-difference old-articles new-articles))) + (changed-articles (spam-set-difference new-articles old-articles))) ;; now that we have the changed articles, we go through the processors (dolist (processor-param spam-list-of-processors) (let ((processor (nth 0 processor-param)) @@ -599,7 +847,8 @@ spam-use-* variable.") ;; call spam-register-routine with specific articles to unregister, ;; when there are articles to unregister and the check is enabled (when (and unregister-list (symbol-value check)) - (spam-register-routine classification check t unregister-list)))))) + (spam-register-routine + classification check t unregister-list)))))) ;; find all the spam processors applicable to this group (dolist (processor-param spam-list-of-processors) @@ -610,18 +859,17 @@ spam-use-* variable.") (spam-group-processor-p gnus-newsgroup-name processor)) (spam-register-routine classification check)))) - (if spam-move-spam-nonspam-groups-only - (when (not (spam-group-spam-contents-p gnus-newsgroup-name)) - (spam-mark-spam-as-expired-and-move-routine - (gnus-parameter-spam-process-destination gnus-newsgroup-name))) - (gnus-message 5 "Marking spam as expired and moving it to %s" - gnus-newsgroup-name) + (unless (and spam-move-spam-nonspam-groups-only + (spam-group-spam-contents-p gnus-newsgroup-name)) + (gnus-message 6 "Marking spam as expired and moving it to %s" + (gnus-parameter-spam-process-destination + gnus-newsgroup-name)) (spam-mark-spam-as-expired-and-move-routine (gnus-parameter-spam-process-destination gnus-newsgroup-name))) ;; now we redo spam-mark-spam-as-expired-and-move-routine to only ;; expire spam, in case the above did not expire them - (gnus-message 5 "Marking spam as expired without moving it") + (gnus-message 6 "Marking spam as expired without moving it") (spam-mark-spam-as-expired-and-move-routine nil) (when (or (spam-group-ham-contents-p gnus-newsgroup-name) @@ -638,24 +886,38 @@ spam-use-* variable.") (spam-register-routine classification check))))) (when (spam-group-ham-processor-copy-p gnus-newsgroup-name) - (gnus-message 5 "Copying ham") + (gnus-message 6 "Copying ham") (spam-ham-copy-routine (gnus-parameter-ham-process-destination gnus-newsgroup-name))) ;; now move all ham articles out of spam groups (when (spam-group-spam-contents-p gnus-newsgroup-name) - (gnus-message 5 "Moving ham messages from spam group") + (gnus-message 6 "Moving ham messages from spam group") (spam-ham-move-routine (gnus-parameter-ham-process-destination gnus-newsgroup-name)))) (setq spam-old-ham-articles nil) (setq spam-old-spam-articles nil)) +(defun spam-set-difference (list1 list2) + "Return a set difference of LIST1 and LIST2. +When either list is nil, the other is returned." + (if (and list1 list2) + ;; we have two non-nil lists + (progn + (dolist (item (append list1 list2)) + (when (and (memq item list1) (memq item list2)) + (setq list1 (delq item list1)) + (setq list2 (delq item list2)))) + (append list1 list2)) + ;; if either of the lists was nil, return the other one + (if list1 list1 list2))) + (defun spam-mark-junk-as-spam-routine () ;; check the global list of group names spam-junk-mailgroups and the ;; group parameters (when (spam-group-spam-contents-p gnus-newsgroup-name) - (gnus-message 5 "Marking %s articles as spam" + (gnus-message 6 "Marking %s articles as spam" (if spam-mark-only-unseen-as-spam "unseen" "unread")) @@ -760,28 +1022,13 @@ spam-use-* variable.") (apply 'spam-ham-move-routine (car groups)) (spam-ham-copy-or-move-routine nil groups))) -(eval-and-compile - (defalias 'spam-point-at-eol (if (fboundp 'point-at-eol) - 'point-at-eol - 'line-end-position))) - (defun spam-get-article-as-string (article) - (let ((article-buffer (spam-get-article-as-buffer article)) - article-string) - (when article-buffer - (save-window-excursion - (set-buffer article-buffer) - (setq article-string (buffer-string)))) - article-string)) - -(defun spam-get-article-as-buffer (article) - (let ((article-buffer)) - (when (numberp article) - (save-window-excursion - (gnus-summary-goto-subject article) - (gnus-summary-show-article t) - (setq article-buffer (get-buffer gnus-article-buffer)))) - article-buffer)) + (when (numberp article) + (with-temp-buffer + (gnus-request-article-this-buffer + article + gnus-newsgroup-name) + (buffer-string)))) ;; disabled for now ;; (defun spam-get-article-as-filename (article) @@ -795,48 +1042,88 @@ spam-use-* variable.") ;; article-filename ;; nil))) -(defun spam-fetch-field-from-fast (article) - "Fetch the `from' field quickly, using the internal gnus-data-list function" - (if (and (numberp article) - (assoc article (gnus-data-list nil))) - (mail-header-from - (gnus-data-header (assoc article (gnus-data-list nil)))) - nil)) - -(defun spam-fetch-field-subject-fast (article) - "Fetch the `subject' field quickly, using the internal - gnus-data-list function" - (if (and (numberp article) - (assoc article (gnus-data-list nil))) - (mail-header-subject - (gnus-data-header (assoc article (gnus-data-list nil)))) - nil)) - -(defun spam-fetch-field-message-id-fast (article) - "Fetch the `Message-ID' field quickly, using the internal - gnus-data-list function" - (if (and (numberp article) - (assoc article (gnus-data-list nil))) - (mail-header-message-id - (gnus-data-header (assoc article (gnus-data-list nil)))) - nil)) +(defun spam-fetch-field-fast (article field &optional prepared-data-header) + "Fetch a field quickly, using the internal gnus-data-list function" + (when (numberp article) + (let* ((data-header (or prepared-data-header + (spam-fetch-article-header article)))) + (if (arrayp data-header) + (cond + ((equal field 'from) + (mail-header-from data-header)) + ((equal field 'message-id) + (mail-header-message-id data-header)) + ((equal field 'subject) + (mail-header-subject data-header)) + ((equal field 'references) + (mail-header-references data-header)) + ((equal field 'date) + (mail-header-date data-header)) + ((equal field 'xref) + (mail-header-xref data-header)) + ((equal field 'extra) + (mail-header-extra data-header)) + (t + nil)) + (gnus-message 6 "Article %d has a nil data header" article))))) + +(defun spam-fetch-field-from-fast (article &optional prepared-data-header) + (spam-fetch-field-fast article 'from prepared-data-header)) + +(defun spam-fetch-field-subject-fast (article &optional prepared-data-header) + (spam-fetch-field-fast article 'subject prepared-data-header)) + +(defun spam-fetch-field-message-id-fast (article &optional prepared-data-header) + (spam-fetch-field-fast article 'message-id prepared-data-header)) + +(defun spam-generate-fake-headers (article) + (let ((dh (spam-fetch-article-header article))) + (if dh + (concat + (format + (concat "From: %s\nSubject: %s\nMessage-ID: %s\n" + "Date: %s\nReferences: %s\nXref: %s\n") + (spam-fetch-field-fast article 'from dh) + (spam-fetch-field-fast article 'subject dh) + (spam-fetch-field-fast article 'message-id dh) + (spam-fetch-field-fast article 'date dh) + (spam-fetch-field-fast article 'references dh) + (spam-fetch-field-fast article 'xref dh)) + (when (spam-fetch-field-fast article 'extra dh) + (format "%s\n" (spam-fetch-field-fast article 'extra dh)))) + (gnus-message + 5 + "spam-generate-fake-headers: article %d didn't have a valid header" + article)))) + +(defun spam-fetch-article-header (article) + (save-excursion + (set-buffer gnus-summary-buffer) + (gnus-read-header article) + (nth 3 (assq article gnus-newsgroup-data)))) ;;;; Spam determination. (defvar spam-list-of-checks - '((spam-use-blacklist . spam-check-blacklist) - (spam-use-regex-headers . spam-check-regex-headers) - (spam-use-regex-body . spam-check-regex-body) - (spam-use-whitelist . spam-check-whitelist) - (spam-use-BBDB . spam-check-BBDB) - (spam-use-ifile . spam-check-ifile) - (spam-use-spamoracle . spam-check-spamoracle) - (spam-use-stat . spam-check-stat) - (spam-use-blackholes . spam-check-blackholes) - (spam-use-hashcash . spam-check-hashcash) - (spam-use-bogofilter-headers . spam-check-bogofilter-headers) - (spam-use-bogofilter . spam-check-bogofilter)) + '((spam-use-blacklist . spam-check-blacklist) + (spam-use-regex-headers . spam-check-regex-headers) + (spam-use-gmane-xref . spam-check-gmane-xref) + (spam-use-regex-body . spam-check-regex-body) + (spam-use-whitelist . spam-check-whitelist) + (spam-use-BBDB . spam-check-BBDB) + (spam-use-BBDB-exclusive . spam-check-BBDB) + (spam-use-ifile . spam-check-ifile) + (spam-use-spamoracle . spam-check-spamoracle) + (spam-use-stat . spam-check-stat) + (spam-use-blackholes . spam-check-blackholes) + (spam-use-hashcash . spam-check-hashcash) + (spam-use-spamassassin-headers . spam-check-spamassassin-headers) + (spam-use-spamassassin . spam-check-spamassassin) + (spam-use-bogofilter-headers . spam-check-bogofilter-headers) + (spam-use-bogofilter . spam-check-bogofilter) + (spam-use-bsfilter-headers . spam-check-bsfilter-headers) + (spam-use-bsfilter . spam-check-bsfilter)) "The spam-list-of-checks list contains pairs associating a parameter variable with a spam checking function. If the parameter variable is true, then the checking function is called, @@ -856,11 +1143,15 @@ definitely a spam.") spam-use-regex-body spam-use-stat spam-use-bogofilter + spam-use-bsfilter + spam-use-blackholes + spam-use-spamassassin spam-use-spamoracle) "The spam-list-of-statistical-checks list contains all the mail -splitters that need to have the full message body available.") +splitters that need to have the full message body available. +Note that you should fetch extra headers if you don't like this, +e.g. fetch the 'Received' header for spam-use-blackholes.") -;;;TODO: modify to invoke self with each check if invoked without specifics (defun spam-split (&rest specific-checks) "Split this message into the `spam' group if it is spam. This function can be used as an entry in the variable `nnmail-split-fancy', @@ -882,7 +1173,9 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (save-excursion (save-restriction (dolist (check spam-list-of-statistical-checks) - (when (and (symbolp check) (symbol-value check)) + (when (and (symbolp check) + (or (symbol-value check) + (memq check specific-checks))) (widen) (gnus-message 8 "spam-split: widening the buffer (%s requires it)" (symbol-name check)) @@ -892,10 +1185,12 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." decision) (while (and list-of-checks (not decision)) (let ((pair (pop list-of-checks))) - (when (and (symbol-value (car pair)) - (or (null specific-checks) - (memq (car pair) specific-checks))) - (gnus-message 5 "spam-split: calling the %s function" + (when (or + ;; either, given specific checks, this is one of them + (and specific-checks (memq (car pair) specific-checks)) + ;; or, given no specific checks, spam-use-CHECK is set + (and (null specific-checks) (symbol-value (car pair)))) + (gnus-message 6 "spam-split: calling the %s function" (symbol-name (cdr pair))) (setq decision (funcall (cdr pair))) ;; if we got a decision at all, save the current check @@ -903,8 +1198,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (setq spam-split-last-successful-check (car pair))) (when (eq decision 'spam) - (if spam-split-symbolic-return - (setq decision spam-split-group) + (unless spam-split-symbolic-return (gnus-error 5 (format "spam-split got %s but %s is nil" @@ -921,44 +1215,73 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (let* ((group gnus-newsgroup-name) (autodetect (gnus-parameter-spam-autodetect group)) (methods (gnus-parameter-spam-autodetect-methods group)) - (first-method (nth 0 methods))) - (when (and autodetect - (not (equal first-method 'none))) + (first-method (nth 0 methods)) + (articles (if spam-autodetect-recheck-messages + gnus-newsgroup-articles + gnus-newsgroup-unseen)) + article-cannot-be-faked) + + (dolist (check spam-list-of-statistical-checks) + (when (and (symbolp check) + (memq check methods)) + (setq article-cannot-be-faked t) + (return))) + + (when (memq 'default methods) + (setq article-cannot-be-faked t)) + + (when (and autodetect + (not (equal first-method 'none))) (mapcar (lambda (article) (let ((id (spam-fetch-field-message-id-fast article)) (subject (spam-fetch-field-subject-fast article)) - (sender (spam-fetch-field-from-fast article))) - (unless (and spam-log-to-registry - (spam-log-registered-p id 'incoming)) - (let* ((spam-split-symbolic-return t) - (spam-split-symbolic-return-positive t) - (split-return - (with-temp-buffer - (gnus-request-article-this-buffer - article - group) - (if (or (null first-method) - (equal first-method 'default)) - (spam-split) - (apply 'spam-split methods))))) - (if (equal split-return 'spam) - (gnus-summary-mark-article article gnus-spam-mark)) - - (when (and split-return spam-log-to-registry) - (when (zerop (gnus-registry-group-count id)) - (gnus-registry-add-group - id group subject sender)) - + (sender (spam-fetch-field-from-fast article)) + registry-lookup) + + (unless id + (gnus-message 6 "Article %d has no message ID!" article)) + + (when (and id spam-log-to-registry) + (setq registry-lookup (spam-log-registration-type id 'incoming)) + (when registry-lookup + (gnus-message + 9 + "spam-find-spam: message %s was already registered incoming" + id))) + + (let* ((spam-split-symbolic-return t) + (spam-split-symbolic-return-positive t) + (fake-headers (spam-generate-fake-headers article)) + (split-return + (or registry-lookup + (with-temp-buffer + (if article-cannot-be-faked + (gnus-request-article-this-buffer + article + group) + ;; else, we fake the article + (when fake-headers (insert fake-headers))) + (if (or (null first-method) + (equal first-method 'default)) + (spam-split) + (apply 'spam-split methods)))))) + (if (equal split-return 'spam) + (gnus-summary-mark-article article gnus-spam-mark)) + + (when (and id split-return spam-log-to-registry) + (when (zerop (gnus-registry-group-count id)) + (gnus-registry-add-group + id group subject sender)) + + (unless registry-lookup (spam-log-processing-to-registry id 'incoming split-return spam-split-last-successful-check group)))))) - (if spam-autodetect-recheck-messages - gnus-newsgroup-articles - gnus-newsgroup-unseen))))) + articles)))) (defvar spam-registration-functions ;; first the ham register, second the spam register function @@ -971,6 +1294,10 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." nil spam-whitelist-unregister-routine nil) + (spam-use-ham-copy nil + nil + nil + nil) (spam-use-BBDB spam-BBDB-register-routine nil spam-BBDB-unregister-routine @@ -993,10 +1320,18 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." ;; does Gmane support unregistration? nil nil) + (spam-use-spamassassin spam-spamassassin-register-ham-routine + spam-spamassassin-register-spam-routine + spam-spamassassin-unregister-ham-routine + spam-spamassassin-unregister-spam-routine) (spam-use-bogofilter spam-bogofilter-register-ham-routine spam-bogofilter-register-spam-routine spam-bogofilter-unregister-ham-routine - spam-bogofilter-unregister-spam-routine)) + spam-bogofilter-unregister-spam-routine) + (spam-use-bsfilter spam-bsfilter-register-ham-routine + spam-bsfilter-register-spam-routine + spam-bsfilter-unregister-ham-routine + spam-bsfilter-unregister-spam-routine)) "The spam-registration-functions list contains pairs associating a parameter variable with the ham and spam registration functions, and the ham and spam unregistration @@ -1032,21 +1367,19 @@ functions") (let ((mark-check (if (eq classification 'spam) 'spam-group-spam-mark-p 'spam-group-ham-mark-p)) - list mark-cache-yes mark-cache-no) + alist mark-cache-yes mark-cache-no) (dolist (article articles) (let ((mark (gnus-summary-article-mark article))) - (unless (memq mark mark-cache-no) - (if (memq mark mark-cache-yes) - (push article list) - ;; else, we have to actually check the mark - (if (funcall mark-check - gnus-newsgroup-name - mark) - (progn - (push article list) - (push mark mark-cache-yes)) - (push mark mark-cache-no)))))) - list)) + (unless (or (memq mark mark-cache-yes) + (memq mark mark-cache-no)) + (if (funcall mark-check + gnus-newsgroup-name + mark) + (push mark mark-cache-yes) + (push mark mark-cache-no))) + (when (memq mark mark-cache-yes) + (push article alist)))) + alist)) (defun spam-register-routine (classification check @@ -1073,7 +1406,7 @@ functions") gnus-newsgroup-articles classification))) ;; process them - (gnus-message 5 "%s %d %s articles with classification %s, check %s" + (gnus-message 5 "%s %d %s articles as %s using backend %s" (if unregister "Unregistering" "Registering") (length articles) (if specific-articles "specific" "") @@ -1105,8 +1438,10 @@ functions") type cell-list)) - (gnus-message 5 (format "%s called with bad ID, type, classification, check, or group" - "spam-log-processing-to-registry"))))) + (gnus-message + 5 + (format "%s call with bad ID, type, classification, spam-check, or group" + "spam-log-processing-to-registry"))))) ;;; check if a ham- or spam-processor registration has been done (defun spam-log-registered-p (id type) @@ -1115,10 +1450,29 @@ functions") (spam-process-type-valid-p type)) (cdr-safe (gnus-registry-fetch-extra id type)) (progn - (gnus-message 5 (format "%s called with bad ID, type, classification, or check" - "spam-log-registered-p")) + (gnus-message + 5 + (format "%s called with bad ID, type, classification, or spam-check" + "spam-log-registered-p")) nil)))) +;;; check what a ham- or spam-processor registration says +;;; returns nil if conflicting registrations are found +(defun spam-log-registration-type (id type) + (let ((count 0) + decision) + (dolist (reg (spam-log-registered-p id type)) + (let ((classification (nth 0 reg))) + (when (spam-classification-valid-p classification) + (when (and decision + (not (eq classification decision))) + (setq count (+ 1 count))) + (setq decision classification)))) + (if (< 0 count) + nil + decision))) + + ;;; check if a ham- or spam-processor registration needs to be undone (defun spam-log-unregistration-needed-p (id type classification check) (when spam-log-to-registry @@ -1135,8 +1489,10 @@ functions") (setq found t)))) found) (progn - (gnus-message 5 (format "%s called with bad ID, type, classification, or check" - "spam-log-unregistration-needed-p")) + (gnus-message + 5 + (format "%s called with bad ID, type, classification, or spam-check" + "spam-log-unregistration-needed-p")) nil)))) @@ -1159,7 +1515,7 @@ functions") type new-cell-list)) (progn - (gnus-message 5 (format "%s called with bad ID, type, check, or group" + (gnus-message 6 (format "%s call with bad ID, type, spam-check, or group" "spam-log-undo-registration")) nil)))) @@ -1170,6 +1526,20 @@ functions") (setq nnimap-split-download-body-default t)))) +;;;; Gmane xrefs +(defun spam-check-gmane-xref () + (let ((header (or + (message-fetch-field "Xref") + (message-fetch-field "Newsgroups"))) + (spam-split-group (if spam-split-symbolic-return + 'spam + spam-split-group))) + (when header ; return nil when no header + (when (string-match spam-gmane-xref-spam-group + header) + spam-split-group)))) + + ;;;; Regex body (defun spam-check-regex-body () @@ -1212,7 +1582,7 @@ functions") (defun spam-check-blackholes () "Check the Received headers for blackholed relays." - (let ((headers (nnmail-fetch-field "received")) + (let ((headers (message-fetch-field "received")) (spam-split-group (if spam-split-symbolic-return 'spam spam-split-group)) @@ -1221,7 +1591,7 @@ functions") (with-temp-buffer (insert headers) (goto-char (point-min)) - (gnus-message 5 "Checking headers for relay addresses") + (gnus-message 6 "Checking headers for relay addresses") (while (re-search-forward "\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t) (gnus-message 9 "Blackhole search found host IP %s." (match-string 1)) @@ -1239,13 +1609,13 @@ functions") (if spam-use-dig (let ((query-result (query-dig query-string))) (when query-result - (gnus-message 5 "(DIG): positive blackhole check '%s'" + (gnus-message 6 "(DIG): positive blackhole check '%s'" query-result) (push (list ip server query-result) matches))) ;; else, if not using dig.el (when (query-dns query-string) - (gnus-message 5 "positive blackhole check") + (gnus-message 6 "positive blackhole check") (push (list ip server (query-dns query-string 'TXT)) matches))))))))) (when matches @@ -1277,6 +1647,12 @@ functions") (require 'bbdb) (require 'bbdb-com) + ;; when the BBDB changes, we want to clear out our cache + (defun spam-clear-cache-BBDB (&rest immaterial) + (spam-clear-cache 'spam-use-BBDB)) + + (add-hook 'bbdb-change-hook 'spam-clear-cache-BBDB) + (defun spam-enter-ham-BBDB (addresses &optional remove) "Enter an address into the BBDB; implies ham (non-spam) sender" (dolist (from addresses) @@ -1290,7 +1666,7 @@ functions") (record (and net-address (bbdb-search-simple nil net-address)))) (when net-address - (gnus-message 5 "%s address %s %s BBDB" + (gnus-message 6 "%s address %s %s BBDB" (if remove "Deleting" "Adding") from (if remove "from" "to")) @@ -1312,13 +1688,30 @@ functions") (defun spam-check-BBDB () "Mail from people in the BBDB is classified as ham or non-spam" - (let ((who (nnmail-fetch-field "from")) + (let ((who (message-fetch-field "from")) (spam-split-group (if spam-split-symbolic-return 'spam - spam-split-group))) + spam-split-group)) + bbdb-cache bbdb-hashtable) + (when spam-cache-lookups + (setq bbdb-cache (gethash 'spam-use-BBDB spam-caches)) + (unless bbdb-cache + (setq bbdb-cache + ;; this is the expanded (bbdb-hashtable) macro + ;; without the debugging support + (with-current-buffer (bbdb-buffer) + (save-excursion + (save-window-excursion + (bbdb-records nil t) + bbdb-hashtable)))) + (puthash 'spam-use-BBDB bbdb-cache spam-caches))) (when who (setq who (nth 1 (gnus-extract-address-components who))) - (if (bbdb-search-simple nil who) + (if + (if spam-cache-lookups + (symbol-value + (intern-soft who bbdb-cache)) + (bbdb-search-simple nil who)) t (if spam-use-BBDB-exclusive spam-split-group @@ -1326,6 +1719,8 @@ functions") (file-error (progn (defalias 'bbdb-search-simple 'ignore) + (defalias 'bbdb-records 'ignore) + (defalias 'bbdb-buffer 'ignore) (defalias 'spam-check-BBDB 'ignore) (defalias 'spam-BBDB-register-routine 'ignore) (defalias 'spam-enter-ham-BBDB 'ignore) @@ -1365,7 +1760,7 @@ functions") ;; check the return now (we're back in the temp buffer) (goto-char (point-min)) (if (not (eobp)) - (setq category (buffer-substring (point) (spam-point-at-eol)))) + (setq category (buffer-substring (point) (point-at-eol)))) (when (not (zerop (length category))) ; we need a category here (if spam-ifile-all-categories (setq return category) @@ -1486,7 +1881,8 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." With a non-nil REMOVE, remove them." (interactive "sAddress: ") (spam-enter-list address spam-whitelist remove) - (setq spam-whitelist-cache nil)) + (setq spam-whitelist-cache nil) + (spam-clear-cache 'spam-use-whitelist)) ;;; address can be a list, too (defun spam-enter-blacklist (address &optional remove) @@ -1494,7 +1890,8 @@ With a non-nil REMOVE, remove them." With a non-nil REMOVE, remove them." (interactive "sAddress: ") (spam-enter-list address spam-blacklist remove) - (setq spam-blacklist-cache nil)) + (setq spam-blacklist-cache nil) + (spam-clear-cache 'spam-use-whitelist)) (defun spam-enter-list (addresses file &optional remove) "Enter ADDRESSES into the given FILE. @@ -1523,6 +1920,32 @@ REMOVE not nil, remove the ADDRESSES." (insert a "\n"))))) (save-buffer)))) +(defun spam-filelist-build-cache (type) + (let ((cache (if (eq type 'spam-use-blacklist) + spam-blacklist-cache + spam-whitelist-cache)) + parsed-cache) + (unless (gethash type spam-caches) + (while cache + (let ((address (pop cache))) + (unless (zerop (length address)) ; 0 for a nil address too + (setq address (regexp-quote address)) + ;; fix regexp-quote's treatment of user-intended regexes + (while (string-match "\\\\\\*" address) + (setq address (replace-match ".*" t t address)))) + (push address parsed-cache))) + (puthash type parsed-cache spam-caches)))) + +(defun spam-filelist-check-cache (type from) + (when (stringp from) + (spam-filelist-build-cache type) + (let (found) + (dolist (address (gethash type spam-caches)) + (when (and address (string-match address from)) + (setq found t) + (return))) + found))) + ;;; returns t if the sender is in the whitelist, nil or ;;; spam-split-group otherwise (defun spam-check-whitelist () @@ -1532,7 +1955,7 @@ REMOVE not nil, remove the ADDRESSES." spam-split-group))) (unless spam-whitelist-cache (setq spam-whitelist-cache (spam-parse-list spam-whitelist))) - (if (spam-from-listed-p spam-whitelist-cache) + (if (spam-from-listed-p 'spam-use-whitelist) t (if spam-use-whitelist-exclusive spam-split-group @@ -1545,7 +1968,7 @@ REMOVE not nil, remove the ADDRESSES." spam-split-group))) (unless spam-blacklist-cache (setq spam-blacklist-cache (spam-parse-list spam-blacklist))) - (and (spam-from-listed-p spam-blacklist-cache) spam-split-group))) + (and (spam-from-listed-p 'spam-use-blacklist) spam-split-group))) (defun spam-parse-list (file) (when (file-readable-p file) @@ -1553,7 +1976,7 @@ REMOVE not nil, remove the ADDRESSES." (with-temp-buffer (insert-file-contents file) (while (not (eobp)) - (setq address (buffer-substring (point) (spam-point-at-eol))) + (setq address (buffer-substring (point) (point-at-eol))) (forward-line 1) ;; insert the e-mail address if detected, otherwise the raw data (unless (zerop (length address)) @@ -1561,20 +1984,10 @@ REMOVE not nil, remove the ADDRESSES." (push (or pure-address address) contents))))) (nreverse contents)))) -(defun spam-from-listed-p (cache) - (let ((from (nnmail-fetch-field "from")) +(defun spam-from-listed-p (type) + (let ((from (message-fetch-field "from")) found) - (while cache - (let ((address (pop cache))) - (unless (zerop (length address)) ; 0 for a nil address too - (setq address (regexp-quote address)) - ;; fix regexp-quote's treatment of user-intended regexes - (while (string-match "\\\\\\*" address) - (setq address (replace-match ".*" t t address)))) - (when (and address (string-match address from)) - (setq found t - cache nil)))) - found)) + (spam-filelist-check-cache type from))) (defun spam-filelist-register-routine (articles blacklist &optional unregister) (let ((de-symbol (if blacklist 'spam-use-whitelist 'spam-use-blacklist)) @@ -1583,7 +1996,7 @@ REMOVE not nil, remove the ADDRESSES." (if blacklist 'spam-enter-blacklist 'spam-enter-whitelist)) (remove-function (if blacklist 'spam-enter-whitelist 'spam-enter-blacklist)) - from addresses unregister-list) + from addresses unregister-list article-unregister-list) (dolist (article articles) (let ((from (spam-fetch-field-from-fast article)) (id (spam-fetch-field-message-id-fast article)) @@ -1599,6 +2012,7 @@ REMOVE not nil, remove the ADDRESSES." (null unregister) (spam-log-unregistration-needed-p id 'process declassification de-symbol)) + (push article article-unregister-list) (push from unregister-list)) (unless sender-ignored (push from addresses))))) @@ -1607,7 +2021,7 @@ REMOVE not nil, remove the ADDRESSES." (funcall enter-function addresses t) ; unregister all these addresses ;; else, register normally and unregister what we need to (funcall remove-function unregister-list t) - (dolist (article unregister-list) + (dolist (article article-unregister-list) (spam-log-undo-registration (spam-fetch-field-message-id-fast article) 'process @@ -1636,7 +2050,7 @@ REMOVE not nil, remove the ADDRESSES." ;;;; Bogofilter (defun spam-check-bogofilter-headers (&optional score) - (let ((header (nnmail-fetch-field spam-bogofilter-header)) + (let ((header (message-fetch-field spam-bogofilter-header)) (spam-split-group (if spam-split-symbolic-return 'spam spam-split-group))) @@ -1651,17 +2065,18 @@ REMOVE not nil, remove the ADDRESSES." spam-split-group))))) ;; return something sensible if the score can't be determined -(defun spam-bogofilter-score () +(defun spam-bogofilter-score (&optional recheck) "Get the Bogofilter spamicity score" - (interactive) + (interactive "P") (save-window-excursion (gnus-summary-show-article t) (set-buffer gnus-article-buffer) - (let ((score (or (spam-check-bogofilter-headers t) + (let ((score (or (unless recheck + (spam-check-bogofilter-headers t)) (spam-check-bogofilter t)))) + (gnus-summary-show-article) (message "Spamicity score %s" score) - (or score "0")) - (gnus-summary-show-article))) + (or score "0")))) (defun spam-check-bogofilter (&optional score) "Check the Bogofilter backend for the classification of this message" @@ -1743,7 +2158,7 @@ REMOVE not nil, remove the ADDRESSES." (goto-char (point-min)) (when (re-search-forward "^X-Spam: yes;" nil t) spam-split-group)) - (error "Error running spamoracle" status)))))))) + (error "Error running spamoracle: %s" status)))))))) (defun spam-spamoracle-learn (articles article-is-spam-p &optional unregister) "Run spamoracle in training mode." @@ -1765,8 +2180,8 @@ REMOVE not nil, remove the ADDRESSES." `("-f" ,spam-spamoracle-database "add" ,arg) `("add" ,arg))))) - (when (not (eq 0 status)) - (error "Error running spamoracle" status))))))) + (unless (eq 0 status) + (error "Error running spamoracle: %s" status))))))) (defun spam-spamoracle-learn-ham (articles &optional unregister) (spam-spamoracle-learn articles nil unregister)) @@ -1781,12 +2196,202 @@ REMOVE not nil, remove the ADDRESSES." (spam-spamoracle-learn-spam articles t)) +;;;; SpamAssassin +;;; based mostly on the bogofilter code +(defun spam-check-spamassassin-headers (&optional score) + "Check the SpamAssassin headers for the classification of this message." + (if score ; scoring mode + (let ((header (message-fetch-field spam-spamassassin-spam-status-header))) + (when header + (if (string-match "hits=\\(-?[0-9.]+\\)" header) + (match-string 1 header) + "0"))) + ;; spam detection mode + (let ((header (message-fetch-field spam-spamassassin-spam-flag-header)) + (spam-split-group (if spam-split-symbolic-return + 'spam + spam-split-group))) + (when header ; return nil when no header + (when (string-match spam-spamassassin-positive-spam-flag-header + header) + spam-split-group))))) + +(defun spam-check-spamassassin (&optional score) + "Check the SpamAssassin backend for the classification of this message." + (let ((article-buffer-name (buffer-name))) + (with-temp-buffer + (let ((temp-buffer-name (buffer-name))) + (save-excursion + (set-buffer article-buffer-name) + (apply 'call-process-region + (point-min) (point-max) spam-spamassassin-path + nil temp-buffer-name nil spam-spamassassin-arguments)) + ;; check the return now (we're back in the temp buffer) + (goto-char (point-min)) + (spam-check-spamassassin-headers score))))) + +;; return something sensible if the score can't be determined +(defun spam-spamassassin-score (&optional recheck) + "Get the SpamAssassin score" + (interactive "P") + (save-window-excursion + (gnus-summary-show-article t) + (set-buffer gnus-article-buffer) + (let ((score (or (unless recheck + (spam-check-spamassassin-headers t)) + (spam-check-spamassassin t)))) + (gnus-summary-show-article) + (message "SpamAssassin score %s" score) + (or score "0")))) + +(defun spam-spamassassin-register-with-sa-learn (articles spam + &optional unregister) + "Register articles with spamassassin's sa-learn as spam or non-spam." + (if articles + (let ((action (if unregister spam-sa-learn-unregister-switch + (if spam spam-sa-learn-spam-switch + spam-sa-learn-ham-switch))) + (summary-buffer-name (buffer-name))) + (with-temp-buffer + ;; group the articles into mbox format + (dolist (article articles) + (let (article-string) + (save-excursion + (set-buffer summary-buffer-name) + (setq article-string (spam-get-article-as-string article))) + (when (stringp article-string) + (insert "From \n") ; mbox separator (sa-learn only checks the + ; first five chars, so we can get away with + ; a bogus line)) + (insert article-string) + (insert "\n")))) + ;; call sa-learn on all messages at the same time + (apply 'call-process-region + (point-min) (point-max) + spam-sa-learn-path + nil nil nil "--mbox" + (if spam-sa-learn-rebuild + (list action) + `("--no-rebuild" ,action))))))) + +(defun spam-spamassassin-register-spam-routine (articles &optional unregister) + (spam-spamassassin-register-with-sa-learn articles t unregister)) + +(defun spam-spamassassin-register-ham-routine (articles &optional unregister) + (spam-spamassassin-register-with-sa-learn articles nil unregister)) + +(defun spam-spamassassin-unregister-spam-routine (articles) + (spam-spamassassin-register-with-sa-learn articles t t)) + +(defun spam-spamassassin-unregister-ham-routine (articles) + (spam-spamassassin-register-with-sa-learn articles nil t)) + + +;;;; Bsfilter +;;; based mostly on the bogofilter code +(defun spam-check-bsfilter-headers (&optional score) + (if score + (or (nnmail-fetch-field spam-bsfilter-probability-header) + "0") + (let ((header (nnmail-fetch-field spam-bsfilter-header)) + (spam-split-group (if spam-split-symbolic-return + 'spam + spam-split-group))) + (when header ; return nil when no header + (when (string-match "YES" header) + spam-split-group))))) + +;; return something sensible if the score can't be determined +(defun spam-bsfilter-score (&optional recheck) + "Get the Bsfilter spamicity score" + (interactive "P") + (save-window-excursion + (gnus-summary-show-article t) + (set-buffer gnus-article-buffer) + (let ((score (or (unless recheck + (spam-check-bsfilter-headers t)) + (spam-check-bsfilter t)))) + (gnus-summary-show-article) + (message "Spamicity score %s" score) + (or score "0")))) + +(defun spam-check-bsfilter (&optional score) + "Check the Bsfilter backend for the classification of this message" + (let ((article-buffer-name (buffer-name)) + (dir spam-bsfilter-database-directory) + return) + (with-temp-buffer + (let ((temp-buffer-name (buffer-name))) + (save-excursion + (set-buffer article-buffer-name) + (apply 'call-process-region + (point-min) (point-max) + spam-bsfilter-path + nil temp-buffer-name nil + "--pipe" + "--insert-flag" + "--insert-probability" + (when dir + (list "--homedir" dir)))) + (setq return (spam-check-bsfilter-headers score)))) + return)) + +(defun spam-bsfilter-register-with-bsfilter (articles + spam + &optional unregister) + "Register an article, given as a string, as spam or non-spam." + (dolist (article articles) + (let ((article-string (spam-get-article-as-string article)) + (switch (if unregister + (if spam + spam-bsfilter-spam-strong-switch + spam-bsfilter-ham-strong-switch) + (if spam + spam-bsfilter-spam-switch + spam-bsfilter-ham-switch)))) + (when (stringp article-string) + (with-temp-buffer + (insert article-string) + (apply 'call-process-region + (point-min) (point-max) + spam-bsfilter-path + nil nil nil switch + "--update" + (when spam-bsfilter-database-directory + (list "--homedir" + spam-bsfilter-database-directory)))))))) + +(defun spam-bsfilter-register-spam-routine (articles &optional unregister) + (spam-bsfilter-register-with-bsfilter articles t unregister)) + +(defun spam-bsfilter-unregister-spam-routine (articles) + (spam-bsfilter-register-spam-routine articles t)) + +(defun spam-bsfilter-register-ham-routine (articles &optional unregister) + (spam-bsfilter-register-with-bsfilter articles nil unregister)) + +(defun spam-bsfilter-unregister-ham-routine (articles) + (spam-bsfilter-register-ham-routine articles t)) + + ;;;; Hooks ;;;###autoload -(defun spam-initialize () - "Install the spam.el hooks and do other initialization" +(defun spam-initialize (&rest symbols) + "Install the spam.el hooks and do other initialization. +When SYMBOLS is given, set those variables to t. This is so you +can call spam-initialize before you set spam-use-* variables on +explicitly, and matters only if you need the extra headers +installed through spam-necessary-extra-headers." (interactive) + + (dolist (var symbols) + (set var t)) + + (dolist (header (spam-necessary-extra-headers)) + (add-to-list 'nnmail-extra-headers header) + (add-to-list 'gnus-extra-headers header)) + (setq spam-install-hooks t) ;; TODO: How do we redo this every time spam-face is customized? (push '((eq mark gnus-spam-mark) . spam-face) @@ -1798,7 +2403,7 @@ REMOVE not nil, remove the ADDRESSES." (add-hook 'gnus-summary-prepare-exit-hook 'spam-summary-prepare-exit) (add-hook 'gnus-summary-prepare-hook 'spam-summary-prepare) (add-hook 'gnus-get-new-news-hook 'spam-setup-widening) - (add-hook 'gnus-summary-prepare-hook 'spam-find-spam)) + (add-hook 'gnus-summary-prepared-hook 'spam-find-spam)) (defun spam-unload-hook () "Uninstall the spam.el hooks" @@ -1816,8 +2421,4 @@ REMOVE not nil, remove the ADDRESSES." (provide 'spam) -;;; spam.el ends here. - -(provide 'spam) - ;;; spam.el ends here diff --git a/lisp/uudecode.el b/lisp/uudecode.el index ffb2eee..0a0b673 100644 --- a/lisp/uudecode.el +++ b/lisp/uudecode.el @@ -1,6 +1,7 @@ ;;; uudecode.el -- elisp native uudecode -;; Copyright (c) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. +;; Copyright (c) 1998, 1999, 2000, 2001, 2003, 2004 +;; Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: uudecode news diff --git a/make.bat b/make.bat index ddd22a3..dae69a8 100755 --- a/make.bat +++ b/make.bat @@ -1,6 +1,6 @@ @echo off -rem Written by Frank Schmitt +rem Written by Frank Schmitt (ich@frank-schmitt.net) rem based on the work by David Charlap (shamino@writeme.com) rem . rem Clear PWD so emacs doesn't get confused @@ -38,8 +38,8 @@ goto emacs :emacs if not "%2" == "/copy" goto emacsnocopy -if not exist %1\..\site-lisp mkdir %1\..\site-lisp -if not exist %1\..\site-lisp\gnus mkdir %1\..\site-lisp\gnus +if not exist %1\..\site-lisp\nul mkdir %1\..\site-lisp +if not exist %1\..\site-lisp\gnus\nul mkdir %1\..\site-lisp\gnus if not exist %1\..\site-lisp\subdirs.el set subdirwarning=yes :emacsnocopy set EMACS_ARGS=-batch -q -no-site-file @@ -51,10 +51,10 @@ goto lisp :xemacs set EMACS=xemacs.exe if not "%2" == "/copy" goto xemacsnocopy -if not exist %1\..\..\site-packages\ mkdir %1\..\..\site-packages\ -if not exist %1\..\..\site-packages\info mkdir %1\..\..\site-packages\info -if not exist %1\..\..\site-packages\lisp mkdir %1\..\..\site-packages\lisp -if not exist %1\..\..\site-packages\etc mkdir %1\..\..\site-packages\etc +if not exist %1\..\..\site-packages\nul mkdir %1\..\..\site-packages\ +if not exist %1\..\..\site-packages\info\nul mkdir %1\..\..\site-packages\info +if not exist %1\..\..\site-packages\lisp\nul mkdir %1\..\..\site-packages\lisp +if not exist %1\..\..\site-packages\etc\nul mkdir %1\..\..\site-packages\etc :xemacsnocopy set EMACS_ARGS=-batch -no-autoloads set GNUS_INFO_DIR=%1\..\..\site-packages\info @@ -70,6 +70,7 @@ goto lisp :lisp set EMACSBATCH=call %1\%EMACS% %EMACS_ARGS% cd lisp +attrib -r gnus-load.el if exist gnus-load.el del gnus-load.el echo. echo Stand by while generating autoloads. @@ -90,14 +91,16 @@ if not "%2" == "/copy" goto infotest echo. echo Stand by while copying lisp files. echo. -if not exist %GNUS_LISP_DIR% mkdir %GNUS_LISP_DIR% +if not exist %GNUS_LISP_DIR%\nul mkdir %GNUS_LISP_DIR% xcopy /R /Q /Y *.el* %GNUS_LISP_DIR% if ErrorLevel 1 set ERROR=%ERROR%,copy-lisp goto infotest :infotest cd ..\texi +attrib -r sieve if exist sieve del sieve + makeinfo sieve.texi if exist sieve goto minfo REM It seems that makeinfo isn't available @@ -134,7 +137,7 @@ if ErrorLevel 1 set ERROR=%ERROR%,pgg.texi if ErrorLevel 1 set ERROR=%ERROR%,message.texi if not "%2" == "/copy" goto nocopy -if not exist %GNUS_INFO_DIR% mkdir %GNUS_INFO_DIR% +if not exist %GNUS_INFO_DIR%\nul mkdir %GNUS_INFO_DIR% echo. echo Stand by while copying info files. @@ -172,13 +175,13 @@ cd ..\etc echo. echo Stand by while copying etc files. echo. -if not exist %GNUS_ETC_DIR% mkdir %GNUS_ETC_DIR% +if not exist %GNUS_ETC_DIR%\nul mkdir %GNUS_ETC_DIR% xcopy /R /Q /Y gnus-tut.txt %GNUS_ETC_DIR% if ErrorLevel 1 set ERROR=%ERROR%,copy-etc-gnus-tut-txt -if not exist %GNUS_ETC_DIR%\gnus mkdir %GNUS_ETC_DIR%\gnus +if not exist %GNUS_ETC_DIR%\gnus\nul mkdir %GNUS_ETC_DIR%\gnus xcopy /R /Q /Y .\gnus\* %GNUS_ETC_DIR%\gnus\ if ErrorLevel 1 set ERROR=%ERROR%,copy-etc-gnus-* -if not exist %GNUS_ETC_DIR%\smilies mkdir %GNUS_ETC_DIR%\smilies +if not exist %GNUS_ETC_DIR%\smilies\nul mkdir %GNUS_ETC_DIR%\smilies xcopy /R /Q /Y .\smilies\* %GNUS_ETC_DIR%\smilies\ if ErrorLevel 1 set ERROR=%ERROR%,copy-etc-smilies-* goto warnings @@ -192,7 +195,7 @@ echo * echo * (add-to-list 'load-path "/Path/to/gnus/lisp") echo * (if (featurep 'xemacs) echo * (add-to-list 'Info-directory-list "c:/Path/to/gnus/texi/") -echo * (add-to-list 'Info-default-directory-list "c:/Path/to/gnus/texi/") +echo * (add-to-list 'Info-default-directory-list "c:/Path/to/gnus/texi/")) echo * (require 'gnus-load) echo * echo * Replace c:/Path/to/gnus with the Path where your new Gnus is (that's here diff --git a/sample.lpath.el b/sample.lpath.el deleted file mode 100644 index 95e40cc..0000000 --- a/sample.lpath.el +++ /dev/null @@ -1,42 +0,0 @@ -;; This is a sample of `~/.lpath.el' file. -;; -;; This file will be loaded from dgnushack.el at the compile time. It -;; is supposed to be used for telling old Emacsen where EMU, APEL or -;; CUSTOM packages have already installed. -;; -;; For instance, if you would like to build T-gnus with Mule 2.3 based -;; on Emacs 19.34, copy this file to `~/.lpath.el' and edit it suitably -;; for your environment. - -(if (boundp 'MULE) - (let ((additional-load-path - (list - ;; Where is EMU packege? - "/usr/local/share/mule/19.34/site-lisp/" - ;; Where is APEL package? - "/usr/local/share/mule/site-lisp/apel/" - ;; Where is CUSTOM package? - "/usr/local/share/mule/site-lisp/custom/" - - ;; Note that you have no need to specify paths of FLIM and - ;; SEMI if they are installed under the directory which is - ;; same as the parent directory of APEL. - - ;; If you have installed Emacs/W3 package, - ;; uncomment and edit the following line appropriately. - ;; "/usr/local/share/mule/site-lisp/w3/" - ))) - ;; No user serviceable parts beyond this point. - - (let ((i (length additional-load-path)) - p) - (while (> i 0) - (setq i (1- i) - p (nth i additional-load-path)) - (if (file-directory-p p) - (progn - (if (string-match "/apel/?$" p) - (setq load-path - (cons (substring p 0 (1+ (match-beginning 0))) - load-path))) - (setq load-path (cons p load-path)))))))) diff --git a/texi/ChangeLog b/texi/ChangeLog index 8c0289a..ce2d608 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,255 @@ +2004-04-19 Katsumi Yamaoka + + * gnus.texi (SpamAssassin backend): Add it to the detailmenu. + +2004-04-16 Florian Weimer + + * gnus.texi (Charsets): Point to relevant section in emacs-mime. + +2004-04-14 Kevin Greiner + + * gnus.texi (Agent Visuals): Referenced new F(etched) group line + format. + (Group Line Specification): Added F(etched) group line format. + +2004-04-12 Katsumi Yamaoka + + * gnus.texi (Indirect Functions): Add + nntp-open-via-rlogin-and-netcat. + +2004-04-11 Jesper Harder + + * gnus-news.texi: Add OPML. + + * gnus.texi (RSS): do. + +2004-04-10 Jesper Harder + + * emacs-mime.texi (Flowed text): Markup fix. + +2004-04-07 Teodor Zlatanov + + * gnus.texi (Blacklists and Whitelists, BBDB Whitelists) + (Bogofilter, spam-stat spam filtering, SpamOracle): old incorrect + warning about ham processors in spam groups removed + +2004-04-02 Teodor Zlatanov + From Hubert Chan + + * gnus.texi (SpamAssassin backend): added new node about SpamAssassin + +2004-03-29 Teodor Zlatanov + + * gnus.texi (Spam ELisp Package Sequence of Events): some clarifications + (Spam ELisp Package Global Variables) + (Spam ELisp Package Global Variables): more clarifications + +2004-03-18 Helmut Waitzmann (tiny change) + + * gnus.texi (Various Summary Stuff): Fix the documentation for + gnus-newsgroup-variables. + +2004-03-18 Raymond Scholz (tiny change) + + * gnus.texi (Misc Article): Refer to `Summary Buffer Mode Line' in + the gnus-article-mode-line-format section. + +2004-03-18 Jesper Harder + + * gnus-news.texi: Addition. + +2004-03-08 Jesper Harder + + * gnus.texi (Category Syntax): Markup fix. + +2004-03-08 Katsumi Yamaoka + + * gnus.texi (POP before SMTP): Addition. + +2004-03-05 Jesper Harder + + * gnus.texi (Spam ELisp Package Sequence of Events): Index. + (Mailing List): Typo. + (Customizing Articles): Add gnus-treat-ansi-sequences. + (Article Washing): Index. + + * message.texi: Use m-dash consistently. + + * emacs-mime.texi: do. + +2004-03-05 Katsumi Yamaoka + + * gnus.texi (POP before SMTP): New node. + +2004-03-04 Katsumi Yamaoka + + * gnus.texi (X-Face, Face): Add gnus-x-face and + gnus-face-properties-alist. + +2004-03-04 Jesper Harder + + * texi2latex.el (latexi-translate-file): Support accents. + + * gnus.texi: Don't use 8bit chars (except ,A,(B). + + * emacs-mime.texi: do. + + * Makefile.in (.texi, makeinfo): Use --enable-encoding. + + * gnus.texi: Move @documentencoding back, and change to latin-1. + + * emacs-mime.texi: do. + + * infohack.el (infohack): Support @documentencoding in Emacs 21.3. + +2004-03-03 Jesper Harder + + * Makefile.in: Add gnus-news. + + * texi2latex.el (latexi-translate): Add gnus-news. + (latexi-translate-file): Add @documentencoding. + +2004-03-03 Katsumi Yamaoka + + * gnus.texi: Enclose the iflatex section with iftex. + (Gnus Unplugged): Use pxref instead of xref. + + * emacs-mime.texi: Enclose the iflatex section with iftex. + +2004-03-02 Kevin Greiner + + * emacs-mime.texi: Wrapped documentencoding inside of iflatex as + documentencoding is not supported by infohack. + + * gnus.texi: Wrapped documentencoding inside of iflatex as + documentencoding is not supported by infohack. + Changed file's character coding to utf-8 as the file contains + characters that can not be encoded using iso-8859-1. + (Gnus Unplugged): Reference gnus-agent variable. + (Agent Variables): Added gnus-agent. + + +2004-02-17 Katsumi Yamaoka + + * gnus.texi (X-Face): Add uncompface-use-external. + (Slow Machine): Ditto. + +2004-02-06 Jesper Harder + + * gnus-news.texi: dnd attachments. + + * message.texi (MIME): do. + +2004-02-03 Reiner Steib + + * gnus.texi (Batching Agents): Fixed typo in example. Reported + by Hiroshi Fujishima . + +2004-01-30 Jesper Harder + + * gnus.texi: Set documentencoding. + + * emacs-mime.texi: do. + +2004-01-27 Simon Josefsson + + * emacs-mime.texi (Flowed text): Add. + +2004-01-23 Teodor Zlatanov + + * gnus.texi (Spam ELisp Package Filtering of Incoming Mail): + mention spam-split does not modify incoming mail + +2004-01-23 Jesper Harder + + * gnus.texi (GroupLens): Remove. + +2004-01-22 Teodor Zlatanov + + * gnus.texi (Spam ELisp Package Sequence of Events): fix typo + +2004-01-21 Kevin Greiner + + * gnus.texi (Outgoing Messages, Agent Variables): Add + gnus-agent-queue-mail and gnus-agent-prompt-send-queue. + Suggested by Gaute Strokkenes + + * gnus.texi (agent-disable-undownloaded-faces): Replaced with + agent-enable-undownloaded-faces + +2004-01-17 Jesper Harder + + * sieve.texi (Manage Sieve API): nil -> @code{nil}. + + * pgg.texi (User Commands, Backend methods): do. + + * gnus.texi (Debugging IMAP): Fix. + (Thwarting Email Spam): Avoid overfull hboxes in printed + version. Markup fixes. + +2004-01-12 Teodor Zlatanov + + * gnus.texi (The problem of spam): fixed so many countries and + continents are used as examples of why blocking by country blocks + is a bad idea. + +2004-01-11 Simon Josefsson + + * gnus.texi (The problem of spam): Fix, reported by Cheng Gao + and suggested by Richard Hoskins + (tiny change). + +2004-01-07 Jesper Harder + + * dir: Add SASL. + + * sasl.texi: Markup fixes. + + * gnus.texi (Fancy Mail Splitting, SpamAssassin) + (Spam ELisp Package Sequence of Events) + (Spam ELisp Package Global Variables) + (Spam ELisp Package Configuration Examples): do. + +2004-01-07 Lars Magne Ingebrigtsen + + * gnus.texi (Summary Mail Commands): S D e. + +2004-01-07 Jesper Harder + + * gnus.texi (Limiting): Add gnus-summary-limit-to-replied. + + * gnusref.tex: do. + +2004-01-06 Reiner Steib + + * gnus.texi (SpamOracle): Fixed typo. + (Article Washing): Add `gnus-article-treat-ansi-sequences'. + + * gnus-news.texi, gnus-news.el: New files. + + * Makefile.in: Use `gnus-news.*' to create GNUS-NEWS. + + * gnus.texi (No Gnus): New node. Includes `gnus-news.texi'. + +2004-01-05 Lars Magne Ingebrigtsen + + * gnus.texi: Fix the last commit. + +2004-01-05 Simon Josefsson + + * gnus.texi (Top): Add SASL. + * texi2latex.el (latexi-translate): Do sasl. + + * pgg.texi (Caching passphrase): Fix PGG passphrase caching + section. + + * sasl.texi: New file. + * Makefile.in: Add sasl.texi. + +2004-01-05 Lars Magne Ingebrigtsen + + * gnus.texi (Emacsen): Bump numbers. + 2004-01-04 Reiner Steib * gnus.texi (Spam ELisp Package Configuration Examples): Markup fixes. diff --git a/texi/Makefile.in b/texi/Makefile.in index 430c1b9..6174220 100644 --- a/texi/Makefile.in +++ b/texi/Makefile.in @@ -56,8 +56,8 @@ most: texi2latex.elc latex latexps rm -f $@; \ $(EMACSINFO) $< t; \ else \ - echo "$(MAKEINFO) -I $(srcdir) -o $@ $<"; \ - $(MAKEINFO) -I $(srcdir) -o $@ $<; \ + echo "$(MAKEINFO) -I $(srcdir) --enable-encoding -o $@ $<"; \ + $(MAKEINFO) -I $(srcdir) --enable-encoding -o $@ $<; \ fi .SUFFIXES: .texi .dvi .ps .pdf .latexi .dvi-x .pdf-x @@ -70,10 +70,18 @@ most: texi2latex.elc latex latexps rm -f $@; \ $(EMACSINFO) $<; \ else \ - echo "$(MAKEINFO) -I $(srcdir) -o $* $<"; \ - $(MAKEINFO) -I $(srcdir) -o $* $<; \ + echo "$(MAKEINFO) -I $(srcdir) --enable-encoding -o $* $<"; \ + $(MAKEINFO) -I $(srcdir) --enable-encoding -o $* $<; \ fi +# Files included in gnus.texi +gnus.texi: gnus-faq.texi gnus-news.texi + +# FIXME: Target should be in parent directory. A cvs commit script could +# automatically create it. +GNUS-NEWS: gnus-news.texi + $(EMACSCOMP) -l $(srcdir)/gnus-news.el -f batch-gnus-news $< $@ + dvi: gnus.dvi message.dvi refcard.dvi emacs-mime.dvi sieve.dvi pdf: gnus.pdf message.pdf refcard.pdf emacs-mime.pdf sieve.pdf @@ -128,15 +136,15 @@ clean: thumbdta.tex xface.tex *.tpt gnus-manual-*.pdf gnus-manual-*.ps.gz makeinfo: - makeinfo -o gnus gnus.texi - makeinfo -o message message.texi + makeinfo --enable-encoding -o gnus gnus.texi + makeinfo --enable-encoding -o message message.texi texi2latex.elc: texi2latex.el srcdir=$(srcdir)/../lisp $(EMACSCOMP) -l $(srcdir)/../lisp/dgnushack.el --eval '(byte-compile-file "$(srcdir)/texi2latex.el")' -latex: gnus.latexi gnus-faq.latexi message.latexi emacs-mime.latexi sieve.latexi +latex: gnus.latexi gnus-faq.latexi message.latexi emacs-mime.latexi sieve.latexi gnus-news.latexi -gnus.latexi gnus-faq.latexi message.latexi emacs-mime.latexi sieve.latexi: $(srcdir)/gnus.texi $(srcdir)/gnus-faq.texi $(srcdir)/message.texi $(srcdir)/emacs-mime.texi $(srcdir)/sieve.texi texi2latex.elc +gnus.latexi gnus-faq.latexi message.latexi emacs-mime.latexi sieve.latexi gnus-news.latexi: $(srcdir)/gnus.texi $(srcdir)/gnus-faq.texi $(srcdir)/message.texi $(srcdir)/emacs-mime.texi $(srcdir)/sieve.texi $(srcdir)/gnus-news.texi texi2latex.elc srcdir=$(srcdir) $(EMACSCOMP) -l ./texi2latex.elc -f latexi-translate .latexi.dvi-x: diff --git a/texi/dir b/texi/dir index 57e9dec..9f24d00 100644 --- a/texi/dir +++ b/texi/dir @@ -17,7 +17,10 @@ File: dir Node: Top This is the Gnus Info tree * Menu: * Gnus: (gnus). The news reader Gnus. +* Gnus: (gnus-ja). The news reader Gnus (Japanese). * Message: (message). The Message sending thingamabob. +* Message: (message-ja). The Message sending thingamabob (Japanese). * Emacs MIME: (emacs-mime). Libraries for handling MIME. * Sieve: (sieve). Managing Sieve scripts in Emacs. * PGG: (pgg). Emacs interface to various PGP implementations. +* SASL: (sasl). The Emacs SASL library. diff --git a/texi/emacs-mime.texi b/texi/emacs-mime.texi index 8c51bde..3de34ae 100644 --- a/texi/emacs-mime.texi +++ b/texi/emacs-mime.texi @@ -9,6 +9,7 @@ @direntry * Emacs MIME: (emacs-mime). The MIME de/composition library. @end direntry +@documentencoding ISO-8859-1 @iftex @finalout @end iftex @@ -18,7 +19,7 @@ This file documents the Emacs MIME interface functionality. -Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 +Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -409,15 +410,15 @@ The program used to start an external terminal. @item mm-enable-external @vindex mm-enable-external -Indicate whether external MIME handlers should be used. +Indicate whether external @acronym{MIME} handlers should be used. -If @code{t}, all defined external MIME handlers are used. If +If @code{t}, all defined external @acronym{MIME} handlers are used. If @code{nil}, files are saved to disk (@code{mailcap-save-binary-file}). If it is the symbol @code{ask}, you are prompted before the external @acronym{MIME} handler is invoked. When you launch an attachment through mailcap (@pxref{mailcap}) an -attempt is made to use a safe viewer with the safest options--this isn't +attempt is made to use a safe viewer with the safest options---this isn't the case if you save it to disk and launch it in a different way (command line or double-clicking). Anyhow, if you want to be sure not to launch any external programs, set this variable to @code{nil} or @@ -972,7 +973,11 @@ together and wrapped after the column decided by @code{fill-flowed-display-column}. The default is to wrap after @code{fill-column}. - +@table @code +@item mm-fill-flowed +@vindex mm-fill-flowed +If non-@code{nil} a format=flowed article will be displayed flowed. +@end table @node Interface Functions @@ -1135,7 +1140,7 @@ Return the value of the field under point. @item mail-encode-encoded-word-region @findex mail-encode-encoded-word-region Encode the non-@acronym{ASCII} words in the region. For instance, -@samp{Naïve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}. +@samp{Na@"{@dotless{i}}ve} is encoded as @samp{=?iso-8859-1?q?Na=EFve?=}. @item mail-encode-encoded-word-buffer @findex mail-encode-encoded-word-buffer @@ -1148,7 +1153,7 @@ Encode the words that need encoding in a string, and return the result. @example (mail-encode-encoded-word-string - "This is naïve, baby") + "This is na@"{@dotless{i}}ve, baby") @result{} "This is =?iso-8859-1?q?na=EFve,?= baby" @end example @@ -1163,7 +1168,7 @@ Decode the encoded words in the string and return the result. @example (mail-decode-encoded-word-string "This is =?iso-8859-1?q?na=EFve,?= baby") -@result{} "This is naïve, baby" +@result{} "This is na@"{@dotless{i}}ve, baby" @end example @end table diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 135fca4..d62d626 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -349,7 +349,7 @@ This file documents gnus, the GNU Emacs newsreader. $B$3$N%U%!%$%k$O(B GNU Emacs $B$N%K%e!<%9%j!<%@$G$"$k(B gnus $B$K4X$9$k@bL@=q$G$9!#(B -Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -398,7 +398,7 @@ license to the document, as described in section 6 of the license. @vskip 0pt plus 1filll Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003 +2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -509,6 +509,7 @@ Other related manuals * Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts. * Sieve:(sieve). Managing Sieve scripts in Emacs. * PGG:(pgg). @acronym{PGP/MIME} with Gnus. +* SASL:(sasl). @acronym{SASL} authentication in Emacs. @detailmenu --- The Detailed Node Listing --- @@ -705,6 +706,7 @@ Composing Messages * Mail:: $B%a!<%k$HJVEz(B * Posting Server:: $B$I$N%5!<%P!<$rDL$7$F%K%e!<%9$rEj9F$^$?$O%a!<%k$rAw?.$9$k$Y$-$+(B? +* POP before SMTP:: $B%a!<%k$rFI$^$J$$$H%a!<%k$rAw?.$G$-$J$$(B * Mail and Post:: $BF1;~$K%a!<%k$r=P$7JVEz$9$k(B * Archived Messages:: $BAw$C$?%a%C%;!<%8$r(B gnus $B$,Cy$a$F$*$/$H$3$m(B * Posting Styles:: $B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!(B @@ -864,17 +866,9 @@ Scoring * Global Score Files:: $BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k(B * Kill Files:: $B$=$l$i$O$^$@$3$3$K$"$k$,!"L5;k$9$k;v$,$G$-$k(B * Converting Kill Files:: $B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k(B -* GroupLens:: $B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k(B * Advanced Scoring:: $B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&(B * Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k(B -GroupLens - -* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&$K$9$k$+(B -* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN$i$;$k(B -* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k(B -* GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k(B - Advanced Scoring * Advanced Scoring Syntax:: $BDj5A(B @@ -945,6 +939,7 @@ Filtering Spam Using The Spam ELisp Package * Blackholes:: * Regular Expressions Header Matching:: * Bogofilter:: +* SpamAssassin backend:: * ifile spam filtering:: * spam-stat spam filtering:: * SpamOracle:: @@ -988,6 +983,7 @@ New Features * Quassia Gnus:: 2 $B$+$1$k(B 2 $B$O(B 4$B!"$b$7$/$O(B Gnus 5.6/5.7 * Pterodactyl Gnus:: $B8^HVL\!"(BP $B$G;O$^$k!"$b$7$/$O(B Gnus 5.8/5.9 $B$H$7$FCN$i$l$F$$$k$b$N(B * Oort Gnus:: $B5pBg$J!#1s$/MZ$+$J!#(BGnus 5.10$B!#(B +* No Gnus:: Lars $B$5$s!"D>$7$F(B! Customization @@ -1946,6 +1942,12 @@ gnus $B$,$3$N?dDj$r;H$&$N$O!"(B@acronym{NNTP} $B%W%m%H%3%k$OG=N($NNI(B @item d $B:G8e$K$$$D$3$N%0%k!<%W$rFI$s$@$+$r<($9J8;zNs(B (@pxref{Group Timestamp})$B!#(B +@item F +$B%-%c%C%7%e$H%(!<%8%'%s%H$NN>J}$K$h$C$F.$K$9$k$?$a$K!"<+F0E*$K%P%$%H(B(B)$B!"%-%m%P%$%H(B(K)$B!"%a(B +$B%,%P%$%H(B(M)$B!"$^$?$O%.%,%P%$%H(B(G) $B$K%9%1!<%k$5$l$^$9!#8GDjI}%+%i%`MQ$K(B +$B$O(B %7F $B$N7A<0$GB-$j$^$9!#(B + @item u $BMxMQ$$$^$9(B (@pxref{Process/Prefix})$B!#(B +@item S D e +@kindex S D e ($B35N,(B) +@findex gnus-summary-resend-message-edit +$B0l$DA0$N%3%^%s%I$K;w$F$$$^$9$,!":FAw$9$kA0$K$"$?$+$b?7$7$$%a%C%;!<%8$N$h(B +$B$&$KJT=8$9$k$3$H$,$G$-$^$9!#(B + @item S O m @kindex S O m ($B35N,(B) @findex gnus-summary-digest-mail-forward @@ -6202,6 +6210,13 @@ gnus $B%(!<%8%'%s%H(B (@pxref{Agent Basics}) $B$O$$$/$D$+$N5-;v$r<+F0E*$K%@%& $B@)8B$7$^$9(B (@code{gnus-summary-limit-to-display-predicate})$B!#$3$N=R8l$K(B $B4X$9$k>\:Y$O(B @ref{Group Parameters} $B$r;2>H$7$F2<$5$$!#(B +@item / r +@kindex / r ($B35N,(B) +@findex gnus-summary-limit-to-replied +$B35N,%P%C%U%!$rJV?.$7$?5-;v$@$1$K@)8B$7$^(B +$B$9(B (@code{gnus-summary-limit-to-replied})$B!#@\F,<-$,M?$($i$l$?>l9g$O!"JV(B +$B?.$7$?5-;v0J30$N5-;v$K@)8B$7$^$9!#(B + @item / E @itemx M S @kindex M S ($B35N,(B) @@ -8302,6 +8317,14 @@ HZ $B$^$?$O(B HZP $B$r=hM}$7$^$9!#(BHZ ($B$^$?$O(B HZP) $B$OCf9q8l$N5-;v$ $B$K;H$o$l$k0lHLE*$JId9f$G$9!#$3$l$O(B @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}} $B$N(B $B$h$&$JE57?E*$JJ8;zNs$r:n$j$^$9!#(B +@item W A +@kindex W A ($B35N,(B) +@findex gnus-article-treat-ansi-sequences +@cindex @acronym{ANSI} control sequences +@acronym{ANSI} SGR $B%7!<%1%s%9$r(B overlay $B$^$?$O(B extent $B$KJQ49$7$^(B +$B$9(B (@code{gnus-article-treat-ansi-sequences})$B!#(B@acronym{ANSI} $B%7!<%1%s%9(B +$B$OCf9q8l$N%K%e!<%9%0%k!<%W$G6/D4I=<($K;H$o$l$F$$$^$9!#(B + @item W u @kindex W u ($B35N,(B) @findex gnus-article-unsplit-urls @@ -9540,11 +9563,18 @@ Gnus $B$,F1$8(B @code{Message-ID} $B$r;}$DFs$D$N5-;v$rH/8+$7$?$H$-$O!"2?$+;W$ @vindex gnus-newsgroup-variables @item gnus-newsgroup-variables $B%K%e!<%9%0%k!<%W(B ($B$=$N35N,%P%C%U%!$N(B) $B$N%m!<%+%kJQ?t!"$^$?$OJQ?t$H$=$l$i(B -$B$N%G%#%U%)%k%HCM(B ($B%G%#%U%)%k%HCM$,(B @code{nil} $B$G$J$$>l9g(B) $B$N(B cons $B%;%k$N(B -$B%j%9%H$G!"$=$N35N,%P%C%U%!$,3h$-$F$$$k4V$O%0%m!<%P%kJQ?t$K$J$j$^$9!#$3$l(B -$B$i$NJQ?t$O!"JL$N%P%C%U%!$G$=$l$i(B ($B%0%k!<%W%Q%i%a!<%?(B) $B$N8z2L$,JQ99$5$l$F(B -$B$$$F$b!"(B($B$=$N%0%k!<%W$N(B) $B%0%k!<%W%Q%i%a!<%?$NJQ?t$r@_Dj$9$k$?$a$K;H$&$3(B -$B$H$,$G$-$^$9!#Nc$G$9(B: +$B$NI>2A$5$l$k%G%#%U%)%k%H$NI=8=(B ($B%G%#%U%)%k%HCM$,(B @code{nil} $B$G$J$$>l(B +$B9g(B) $B$N(B cons $B%;%k$N%j%9%H$G!"$=$N35N,%P%C%U%!$,3h$-$F$$$k4V$O%0%m!<%P%kJQ(B +$B?t$K$J$j$^$9!#(B + +$BCm(B: $B%G%#%U%)%k%H$NI=8=$OC1$K%m!<%+%kJQ?t$K@_Dj$5$l$k$N$G$O$J$/!"$=$NA0(B +$B$K(B (@code{eval} $B4X?t$r;H$C$F(B) $BI>2A$5$l$^$9!#%G%#%U%)%k%H$NI=8=(B +$B$,(B @code{global} $B$H$$$&%7%s%\%k$@$C$?>l9g$OI>2A$5$l$:!"Be$o$j$K$=$N%m!<(B +$B%+%kJQ?t$N%0%m!<%P%kCM$,;H$o$l$^$9!#(B + +$B$3$l$i%0%k!<%W%Q%i%a!<%?$NCM$,B>$N%P%C%U%!!<$G9T$J$o$l$k=hM}$K1F6A$9$k$h(B +$B$&$K$J$C$F$$$F$b!"(B($BLuCm(B: $B$=$N35N,%P%C%U%!$N(B) $B%0%k!<%W%Q%i%a!<%?$r@_Dj$9(B +$B$k$?$a$K;H$&$3$H$,$G$-$^$9!#Nc$G$9(B: @lisp (setq gnus-newsgroup-variables @@ -9552,6 +9582,8 @@ Gnus $B$,F1$8(B @code{Message-ID} $B$r;}$DFs$D$N5-;v$rH/8+$7$?$H$-$O!"2?$+;W$ (gnus-visible-headers . "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:"))) @end lisp + +@pxref{Group Parameters} $B$b;2>H$7$F2<$5$$!#(B @end table @node Summary Group Information @@ -10073,7 +10105,7 @@ List-Owner $B%U%#!<%k%I$,$"$C$?$i!"%a!<%j%s%0%j%9%H$N4IM}$C$?MM<0J8;z(B -$BNs$G$9(B (@pxref{Mode Line Formatting})$B!#$3$l$O0J2<$NFs$D$N3HD%$r=|$$$F!"(B -$B$=$NJQ?t$HF1$8MM<0;XDj$ro$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B $B$3$l$H;w$?$b$N$K(B @code{message-smtpmail-send-it} $B$,$"$j$^$9!#(B ISP $B$,(B @acronym{POP}-before-@acronym{SMTP} $B$NG'>Z$rMW5a$7$F$$$k>l9g$KM-(B -$BMQ$G$9!#4X?t(B @code{mail-source-touch-pop} $B$N@bL@J8$r8+$F$/$@$5$$!#(B +$BMQ$G$9!#(B@xref{POP before SMTP}. $BB>$N2DG=$J(B @code{message-send-mail-function} $B$NA*Br;h(B $B$O(B @code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail} $B$*$h$S(B @code{feedmail-send-it} $B$r4^(B $B$_$^$9!#(B +@node POP before SMTP +@section POP before SMTP +@cindex pop before smtp +@findex message-smtpmail-send-it +@findex mail-source-touch-pop + +$B$"$J$?$N(B @acronym{ISP} $B$O(B @acronym{POP}-before-@acronym{SMTP} $BG'>Z$rMW5a(B +$B$7$^$9$+(B? $B$=$l$O!"%a!<%k$rAw?.$9$kA0$N0lDj;~4V0JFb$K(B @acronym{POP} $B%a!<(B +$B%k%5!<%P!<$K@\B3$7$J$1$l$P$J$i$J$$$+$I$&$+$G$9!#$b$7$=$&$J$i$P!"JXMx$JA0$K!"%a!<%k$r$C$F(B @acronym{POP} $BG'>Z$@$1$r9T$J$$$^(B +$B$9!#(B@code{smtpmail-send-it} $B$G$O$J$/$F!"(B@code{message-send-mail-hook} $B$r(B +$Be$N(B @acronym{POP} $B%a!<%k%5!<%P!<$r@_Dj(B +$B$7$F$$$k$J$i$P!"$=$l$i$N0l$D$r(B @acronym{POP}-before-@acronym{SMTP} $BG'>Z(B +$B$K;H$o$l$k(B @acronym{POP} $B%a!<%k%5!<%P!<$H$7(B +$B$F(B @code{mail-source-primary-source} $B$K@_Dj$9$kI,MW$,$"$k$G$7$g$&!#$=$l(B +$B$,Bh0l(B @acronym{POP} $B%a!<%k%5!<%P!<$J$i$P(B ($B$9$J$o$A!"Z$r9T$J$&$H$-$@$1!"(B +$B$=$l$r0J2<$N$h$&$KF0E*$KB+G{$7$F2<$5$$(B: + +@lisp +(add-hook 'message-send-mail-hook + (lambda () + (let ((mail-source-primary-source + '(pop :server "pop3.mail.server" + :password "secret"))) + (mail-source-touch-pop)))) +@end lisp + @node Mail and Post @section $B%a!<%k$HEj9F(B @@ -12060,7 +12147,7 @@ LIST $B%3%^%s%I$N%*%W%7%g%s$K;H$C$F!"(B($B%5!<%P!<$N(B) $B%j%9%H=PNO$r@_Dj$ @end lisp Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B -$B$O!"NI$$0F$G$O$"$j$^$;$s!#(B +$B$O!"NI$$9M$($G$O$"$j$^$;$s!#(B @end table @node Indirect Functions @@ -12099,9 +12186,42 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B $B$F2<$5$$!#(B @end table +@code{nntp-end-of-line} $B$NCM$r(B @samp{\n} $B$KJQ99$9$kI,MW$,$"$k$G$"$m$&$3(B +$B$H$KCm0U$7$F2<$5$$(B (@pxref{Common Variables})$B!#(B + +@item nntp-open-via-rlogin-and-netcat +@findex nntp-open-via-rlogin-and-netcat +$BK\$N%3(B +$B%^%s%I$r;H$&$3$H$b$G$-$^$9!#(B + +@item nntp-via-netcat-switches +@vindex nntp-via-netcat-switches +@code{nntp-via-netcat-command} $B$N%3%^%s%I$N%9%$%C%A$H$7$F;H$o$l$kJ8;zNs(B +$B$N%j%9%H$G$9!#%G%#%U%)%k%H$O(B @code{nil} $B$G$9!#(B + +@item nntp-via-rlogin-command +$BCf4V$N%[%9%H$K%m%0%$%s$9$k$?$a$K;H$o$l$k%3%^%s%I$G$9!#%G%#%U%)%k%H(B +$B$O(B @samp{rsh} $B$G$9$,!"(B@samp{ssh} $B$,?M5$$N$"$kBeBX *\r?} $B$G$9!#(B @end table + +@code{nntp-end-of-line} $B$NCM$r(B @samp{\n} $B$KJQ99$9$kI,MW$,$"$k$G$"$m$&$3(B +$B$H$KCm0U$7$F2<$5$$(B (@pxref{Common Variables})$B!#(B @end table $B$3$l$i$O>e5-$N4X?t$,;2>H$9$kIU2CE*$JJQ?t$G$9(B: @@ -12178,7 +12301,7 @@ Emacs $B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N(B @vindex nntp-end-of-line @acronym{NNTP} $B%5!<%P!<$H$*OC$r$7$F$$$k$H$-$K9T$N=*$o$j$N0u$H$7$F;H$o$l(B $B$kJ8;zNs$G$9!#$3$l$O%G%#%U%)%k%H$G(B @samp{\r\n} $B$G$9$,!"AG$G$O$J$$@\B3MQ(B -$B$N4X?t$r;H$C$F$$$k$H$-$O(B @samp{\n} $B$G$"$k$Y$-$G$9!#(B +$B$N(B telnet $B4X?t$r;H$C$F$$$k$H$-$O(B @samp{\n} $B$G$"$k$Y$-$G$9!#(B @item nntp-telnet-command @vindex nntp-telnet-command @@ -13153,7 +13276,7 @@ UNDELETED} $B$O$*$=$i$/$?$$$F$$$N?M$K$O:GNI$NA*Br$G$7$g$&$,!"$H$-$I(B ;; @r{$B%(%i!<$G$J$$%a%C%;!<%8$OA4$F$N4XO"$7$?%0%k!<%W$KAj8_Ej9F$5$l$^(B} ;; @r{$B$9$,!"(B(ding) $B%j%9%H$HB>$N(B (ding) $B4XO"$N%a!<%k$N$?$a$N%0%k!<%W$K(B} ;; @r{$B$OAj8_Ej9F$7$^$;$s!#(B} - (& (| (any "ding@@ifi\\.uio\\.no" "ding.list" "ding.list") + (& (| (any "ding@@ifi\\.uio\\.no" "ding.list") ("subject "ding" "ding.misc")) ;; @r{$BB>$N%a!<%j%s%0%j%9%H(B@dots{}} (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") @@ -13223,8 +13346,9 @@ UNDELETED} $B$O$*$=$i$/$?$$$F$$$N?M$K$O:GNI$NA*Br$G$7$g$&$,!"$H$-$I(B $B$9!#$=$l$,>e5-$NNc$G(B @code{save-excursion} $B$H(B @code{save-restriction} $B$N(B $B8e$G(B @code{(widen)} $B$,8F$P$l$kI,MW$,$"$kM}M3$G$9!#$5$i$K(B nnimap $B%P%C%/%((B $B%s%I$N>l9g!"%G%#%U%)%k%H$G$O5-;v$N%\%G%#$,%@%&%s%m!<%I$5$l$J$$$3$H$KCm0U(B -$B$7$F2<$5$$!#$=$l$r$9$k$?$a$K$O(B @code{nnimap-split-download-body} $B$r(B t $B$K(B -$B@_Dj$9$kI,MW$,$"$j$^$9(B (@pxref{Splitting in IMAP})$B!#(B +$B$7$F2<$5$$!#$=$l$r$9$k$?$a$K(B +$B$O(B @code{nnimap-split-download-body} $B$r(B @code{t} $B$K@_Dj$9$kI,MW$,$"$j$^(B +$B$9(B (@pxref{Splitting in IMAP})$B!#(B @item (! @var{func} @var{split}) $BJ,3d$,%j%9%H$G!":G=i$NMWAG$,(B @code{!} $B$G$"$k$H(B @var{split} $B$,/$7Hw$($D$D$"$j(B $B$b$78!:w%(%s%8%s$N=PNO7A<0$,JQ99$5$l$k$H!"(B@code{nnweb} $B$O$=$l$r$&$^$/2r(B $B%s!&%G!<%H%k(B} ($BB8:_M}M3(B) $B$G$"$j!"'$(!"$=$7$F%0%k!<%W$r9VFI$9$k$3$H$G$9!#(B +@cindex OPML +$B$"$J$?$N9VFIL\O?$r(B @acronym{OPML} $B%U%)!<%^%C%H(B (Outline Processor Markup +Language) $B$G%m!<%I(B/$B%;!<%V$9$k$?$a$K!"0J2<$N%3%^%s%I$r;H$&$3$H$b$G$-$^$9!#(B + +@defun nnrss-opml-import file +@acronym{OPML} $B%U%!%$%k$NF~NO$rB%$7!"$=$N%U%!%$%k$K$"$k$=$l$>$l(B +$B$N(B feed $B$r9VFI$7$^$9!#(B +@end defun + +@defun nnrss-opml-export +$B8=:_$N(B @acronym{RSS} $B9VFIL\O?$r(B @acronym{OPML} $B%U%)!<%^%C%H$G%P%C%U%!$K(B +$B=q$-=P$7$^$9!#(B +@end defun + $B0J2<$N(B @code{nnrss} $BJQ?t$,JQ992DG=$G$9(B: @table @code @@ -16668,7 +16807,8 @@ gnus-namazu-update-all-indices} $B$H$9$kI,MW$,$"$k$+$b$7$l$^$;$s!#(B $B$KG$$;$k$h$&$K$9$k$3$H$OM}$K$+$J$C$F$$$^$9!#(B Gnus $B$r(B ``$B%*%U%i%$%s(B'' $B$N%K%e!<%9%j!<%@!<$H$7$F;EN)$F$k$N$O6K$a$F4JC1$G(B -$B$9!#A0!#(B -@item gnus-agent-cat-groups +@item agent-groups $B$3$NJ,N`$K$"$k%0%k!<%W$N%j%9%H!#(B -@item gnus-agent-cat-predicate +@item agent-predicate ($BDL>o(B) $B$I$N5-;v$r%@%&%s%m!<%I$9$k$N$,E,Ev$+$H$$$&Bg$^$+$JNX3T$rM?$($k=R(B $B8l!#$=$7$F(B -@item gnus-agent-cat-score-file +@item agent-score-file ($BDL>o(B) $B$I$N5-;v$r%@%&%s%m!<%I$9$k$+$r7h$a$k$H$-$N$h$j$-$a$N:Y$+$$%9%3%"(B $B5,B'!#(B($B$3$N%@%&%s%m!<%I%9%3%"(B (@dfn{download score}) $B$ODL>o$N%9%3%"$H$O(B $BI,$:$7$b4X78$,L5$$$3$H$KCm0U$7$F$/$@$5$$!#(B) -@item gnus-agent-cat-enable-expiration +@item agent-enable-expiration $B$3$N%0%k!<%W$N8E$$5-;v$r%(!<%8%'%s%H$,4|8B@Z$l>C5n$9$Y$-$+$I$&$+$r<($9(B $B%V!<%kJQ?t!#BgDq$N%0%k!<%W$O%G%#%9%/6u4V$rO2Hq$7$J$$$?$a$K4|8B@Z$l>C5n$5(B $B$l$k$Y$-$G$9!#$$$d!"C5n$5$l$k$Y$-$G$O$J(B $B$$%0%k!<%W$@$1$r4^$s$G$$$k$H8@$C$F$b!"$?$V$s:9$7;Y$($"$j$^$;$s!#(B -@item gnus-agent-cat-days-until-old +@item agent-days-until-old $B4{FI$N5-;v$r4|8B@Z$l>C5n$7$F$b:9$7;Y$($J$$$3$H$rH=CG$9$kA0$K!"%(!<%8%'%s(B $B%H$,BT$C$F$$$k$Y$-F|?t$r<($9@0?t!#(B -@item gnus-agent-cat-low-score +@item agent-low-score @code{gnus-agent-low-score} $B$r>e=q$-$9$k@0?t!#(B -@item gnus-agent-cat-high-score +@item agent-high-score @code{gnus-agent-high-score} $B$r>e=q$-$9$k@0?t!#(B -@item gnus-agent-cat-length-when-short +@item agent-length-when-short @code{gnus-agent-short-article} $B$r>e=q$-$9$k@0?t!#(B -@item gnus-agent-cat-length-when-long +@item agent-length-when-long @code{gnus-agent-long-article} $B$r>e=q$-$9$k@0?t!#(B -@c @item gnus-agent-cat-disable-undownloaded-faces -@c $B%@%&%s%m!<%I$5$l$F$$$J$$5-;v$r(B gnus-summary-*-undownloaded-face $B$r;H$C$F(B -@c $B35N,%P%C%U%!$KI=<($9$Y$-(B @emph{$B$G$O$J$$(B} $B$3$H$r<($9%7%s%\%k!#CM(B -@c $B$,(B @code{nil} $B$@$H!"B>$N%7%s%\%k$,$=$l$i$rM^@)$7$F$$$F$b!"%@%&%s%m!<%I$5(B -@c $B$l$F$$$J$$5-;vMQ$N%U%'!<%9$r;H$($k$h$&$K$J$j$^$9!#(B - -@item gnus-agent-cat-enable-undownloaded-faces -$B%@%&%s%m!<%I$5$l$F$$$J$$5-;v$r(B gnus-summary-*-undownloaded-face $B$r;H$C$F(B -$B35N,%P%C%U%!$KI=<($9$Y$-$G$"$k$3$H$r<($9%7%s%\%k!#CM$,(B @code{nil} $B$@$H!"(B -$BB>$N%7%s%\%k$,$=$l$i$rM-8z$K$7$F$$$F$b!"%@%&%s%m!<%I$5$l$F$$$J$$5-;vMQ$N(B -$B%U%'!<%9$r;H$o$J$$$h$&$K$J$j$^$9!#(B +@item agent-enable-undownloaded-faces +$B%@%&%s%m!<%I$5$l$F$$$J$$5-;v(B +$B$r(B @code{gnus-summary-*-undownloaded-face} $B$r;H$C$F35N,%P%C%U%!$KI=<($9(B +$B$Y$-$+$I$&$+$r<($9%7%s%\%k!#(B@code{nil} $B0J30$J$i$I$s$J%7%s%\%k$G$b!"%@%&(B +$B%s%m!<%I$5$l$F$$$J$$5-;vMQ$N%U%'!<%9$r;H$&$h$&$K$J$j$^$9!#(B @end table $B$$$C$?$sJ,N`$,:n$i$l$?$i!"J,N`$NL>A0$rJQ$($k$3$H$O$G$-$^$;$s!#(B @@ -17443,22 +17577,29 @@ parameters at one time (@code{gnus-category-customize-category}). $B;~4V$r:G>.$K$9$k$?$a$K(B) $B%(!<%8%'%s%H$r%-%c%C%7%e$H$7$F;H$&>l9g$O!"%@%&%s(B $B%m!<%I$5$l$F$$$J$$5-;v$N%U%'!<%9$O$*$=$i$/NI$$9M$($N$h$&$K;W$($k$G$7$g$&!#(B $B%@%&%s%m!<%I$5$l$?5-;v$KBP$7$F$9$Y$F$N;E;v(B ($B0u$rIU$1$k!"FI$`!":o=|$9(B -$B$k(B) $B$r9T$J$($P!"$$$D$bDL>o$N%U%'!<%9$,8=$l$k$+$i$G$9!#(B - -$B$H$-$?$^%(!<%8%'%s%H$r;H$&%f!<%6$K$H$C$F$O!"%@%&%s%m!<%I$5$l$F$$$J$$5-;v(B -$B$N%U%'!<%9$O!"$I$&$7$h$&$b$J$/$R$I$$9M$($G$"$k$h$&$K;W$($k$+$b$7$l$^$;$s!#(B -$BO@E@$O!"H`$i$NBgDq$N5-;v$O%(!<%8%'%s%H$Ko$N%U%'!<%9$,!"%@%&%s%m!<%I$5$l$F$$$J$$5-;v$N%U%'!<%9$N1"$K2b$s$G$7$^$&(B -$B$3$H$G$9!#$3$l$,$"$J$?$N6-6x$J$i$P!"$"$J$?$K$OFs$D$NA*Br;h$,$"$j$^$9!#Bh(B -$B0l$K!"(B@code{gnus-summary-*-undownloaded-face} $B$N%U%'!<%972$K4X$o$k;0$D$N(B -$B%3%s%9%;%k$r>C5n$9$k$?$a$K(B @code{gnus-summary-highlight} $B$r%+%9%?%^%$%:(B -$B$9$k$3$H$K$h$C$F!"%@%&%s%m!<%I$5$l$F$$$J$$5-;v$N%U%'!<%9$r40A4$KM^@)$9$k(B -$B$3$H$,$G$-$^$9!#BhFs$K!"$b$C$H@vN}$5$l$?%"%W%m!<%A$,9%$_$J$i$P!"(B -@code{agent-disable-undownloaded-faces} $B%0%k!<%W%Q%i%a!<%?$r(B t $B$K@_Dj$7(B -$B$F$bNI$$$G$7$g$&!#$3$N%Q%i%a!<%?$OB>$N$9$Y$F$N%(!<%8%'%s%H%Q%i%a!<%?$HF1(B -$BMM$K!"%(!<%8%'%s%HJ,N`(B (@pxref{Agent Categories})$B!"%0%k!<%W%H%T%C(B -$B%/(B (@pxref{Topic Parameters})$B!"$"$k$$$O8D!9$N%0%k!<%W(B (@pxref{Group -Parameters}) $B$KBP$7$F@_Dj$9$k$3$H$,$G$-$^$9!#(B +$B$k(B) $B$r9T$J$($P!"$$$D$bDL>o$N%U%'!<%9$,8=$l$k$+$i$G$9!#(B@acronym{NOV} $B$r(B +$B%-%c%C%7%e$9$k$3$H$K$h$C$F%*%s%i%$%s@-G=$r2~A1$9$k$?$a$K%(!<%8%'%s%H$r;H$C(B +$B$F$$$k%f!<%6$K$H$C$F!"%@%&%s%m!<%I$5$l$F$$$J$$5-;v$N%U%'!<%9$,8+$($k$+$b(B +$B$7$l$J$$$3$H$O!"$^$C$?$/$>$C$H$9$k$[$I$$$d$J$3$H$G$7$g$&!#$=$l$i$N$I$N5-(B +$B;v$b%(!<%8%'%s%H$Kl9g$O!"(B +@code{agent-enable-undownloaded-faces} $B%0%k!<%W%Q%i%a!<%?$r(B @code{t} $B$K(B +$B@_Dj$7$F!"%@%&%s%m!<%I$5$l$F$$$J$$5-;v$N%U%'!<%9$rM-8z$K$7$J$1$l$P$J$j$^(B +$B$;$s!#$3$N%Q%i%a!<%?$OB>$N$9$Y$F$N%(!<%8%'%s%H%Q%i%a!<%?$HF1MM$K!"%(!<%8%'(B +$B%s%HJ,N`(B (@pxref{Agent Categories})$B!"%0%k!<%W%H%T%C%/(B (@pxref{Topic +Parameters})$B!"$"$k$$$O8D!9$N%0%k!<%W(B (@pxref{Group Parameters}) $B$KBP$7$F(B +$B@_Dj$9$k$3$H$,$G$-$^$9!#(B + +$B%(!<%8%'%s%H$r;H$&$9$Y$F$N%f!<%6$K6&DL$7$?0l$D$NLdBj$O!"$=$l$,%G%#%9%/$N(B +$BMFNL$r$$$+$KB.$/;H$$?T$/$9$3$H$,$G$-$k$+$G$9!#$"$J$?$,B?$/$N%0%k!<%W$G%(!<(B +$B%8%'%s%H$r;HMQ$7$F$$$k>l9g!";ve%G%#%9%/MFNL$r2sI|$9$k$3$H$O$5$i$K:$Fq(B +$B$G$9!#0l$D$N2r$O(B @code{gnus-group-line-format} $B$K$"$k(B @samp{%F} $B7A<0$G$9!#(B +$B$3$N7A<0$O!"%(!<%8%'%s%H$H%-%c%C%7%e$NN>J}$GC5n!W$9$k>l9g$K!"$I(B +$B$3$KEXNO$r=8Cf$9$k$Y$-$+$,$o$+$j$^$9!#(B @node Agent as Cache @subsection $B%-%c%C%7%e$H$7$F$N%(!<%8%'%s%H(B @@ -17610,18 +17751,41 @@ gnus $B$O%(!<%8%'%s%H$N85$G(B nnimap $B%0%k!<%W$rFI$`$H$-!"%U%i%0$NJQ2=$K@d$( @node Outgoing Messages @subsection $B:9=PMQ%a%C%;!<%8(B -Gnus $B$,@Z$jN%$5$l$F$$$k$H$-!"A4$F$N:9=PMQ%a%C%;!<%8(B ($B%a!<%k$H%K%e!<%9$N(B -$BN>J}(B) $B$O2<=q$-%0%k!<%W(B ``queue'' (@pxref{Drafts}) $B$K3JG<$5$l$^$9!#Ej9F$7(B -$B$?8e$G$b!"$3$3$G$=$N%a%C%;!<%8$r8+$?$jJT=8$9$k$N$O0U$N$^$^$G$9!#(B +$B%G%#%U%)%k%H$G!"(BGnus $B$,@Z$jN%$5$l$F$$$k$H$-!"A4$F$N:9=PMQ%a%C%;!<%8(B ($B%a!<(B +$B%k$H%K%e!<%9$NN>J}(B) $B$O2<=q$-%0%k!<%W(B ``queue'' (@pxref{Drafts}) $B$K3JG<$5(B +$B$l$^$9!#Ej9F$7$?8e$G$b!"$3$3$G$=$N%a%C%;!<%8$r8+$?$jJT=8$9$k$N$O0U$N$^$^(B +$B$G$9!#(B + +$BAw=P$9$k%a!<%k$,(B queue $B$5$l$k(B ($B=gHVBT$A$K$J$k(B) $B>u67$r@)8f$9$k$3$H$O2DG=(B +$B$G$9(B (@code{gnus-agent-queue-mail}, @pxref{Agent Variables} $B;2>H(B)$B!#(B +Gnus $B$,@Z$jN%$5$l$F$$$k>l9g!"%K%e!<%9$O>o$K(B queue $B$5$l$k$@$1$G$9!#(B -Gnus $B$,:F$S:9$79~$^$l$?$H$-!"%a%C%;!<%8$rAw?.$9$k$?$a$K!"FCJL$JL?Na$r;H$C(B -$B$F2<=q$-%0%k!<%W$+$iAw$k$3$H$b!"%0%k!<%W%P%C%U%!Fb$G(B @kbd{J S} $B$r;H$C$F!"(B -$B2<=q$-%0%k!<%WFb$NA4$F$NAw?.2DG=%a%C%;!<%8Aw?.$9$k$3$H$b$G$-$^$9!#(B +$B%a%C%;!<%8$rAw?.$9$k$?$a$K!"2<=q$-%0%k!<%W$+$i!"$=$3$G;H$($kFCJL$JL?Na$r(B +$B;H$C$FAw$k$3$H$b!"%0%k!<%W%P%C%U%!Fb$G(B @kbd{J S} $B$r;H$C$F!"2<=q$-%0%k!<(B +$B%WFb$N$9$Y$F$NAw?.2DG=$J%a%C%;!<%8Aw?.$9$k$3$H$b$G$-$^$9!#%K%e!<%9$NEj9F(B +$B$O(B Gnus $B$,:9$79~$^$l$F$$$k$H$-$@$1$G$-$^$9$,!"%a!<%k$O$$$D$G$bAw?.$9$k$3(B +$B$H$,$G$-$^$9!#(B + +$B@Z$jN%$5$l$F$$$k$H$-$K%a!<%k$NAw?.$,$G$-$:!"$+$D@Z$jN%$5$l$F$$$k$H$-$K$&$C(B +$B$+$j(B @kbd{J S} $B$rC!$$$F$7$^$&$3$H$,?4G[$J$i$P!"(BGnus $B$K$"$J$?$N9TF0$r3NG'(B +$B$5$;$k$3$H$,$G$-$^$9(B (@code{gnus-agent-prompt-send-queue}, @pxref{Agent +Variables} $B;2>H(B)$B!#(B @node Agent Variables @subsection $B%(!<%8%'%s%HJQ?t(B @table @code +@item gnus-agent +@vindex gnus-agent +$B%(!<%8%'%s%H$,M-8z$K$J$C$F$$$k$+$I$&$+!#%G%#%U%)%k%H$O(B @code{t} $B$G$9!#(B +$B:G=i$KM-8z$K$5$l$k$H!"$$$/$D$+$N%P%C%/%(%s%I$r%(!<%8%'%s%H2=$9$k$?$a$K!"(B +$B%(!<%8%'%s%H$O(B @code{gnus-agent-auto-agentize-methods} $B$r;H$$$^$9!#%5!<(B +$B%P!<%P%C%U%!$G%(!<%8%'%s%H$N%3%^%s%I$r;H$&$3$H$K$h$C$F!"$I$N%P%C%/%(%s(B +$B%I$r%(!<%8%'%s%H2=$9$k$+$rJQ99$9$k$3$H$,$G$-$^$9!#(B + +$B%5!<%P!<%P%C%U%!$KF~$k$K$O!"%0%k!<%W%P%C%U%!(B +$B$G(B @kbd{^} (@code{gnus-group-enter-server-mode}) $B$r;H$C$F2<$5$$!#(B + @item gnus-agent-directory @vindex gnus-agent-directory Gnus $B%(!<%8%'%s%H$,%U%!%$%k$r3JG<$9$k>l=j!#=i4|@_DjCM(B @@ -17714,6 +17878,31 @@ gnus $B$,%5!<%P!<$K@\B3$G$-$J$H$-$K2?$,5/$-$?$+$rJ*8l$j$^$9!#%(!<%8%'%s%H(B $B5-;v$r>o$KL5;k$9$k$3$H(B)$B!"(B@code{unfetched} ($BA`:n$O%X%C%@!<$,o$K(B queue ($B=gHVBT$A(B) $B$KF~$l$^$9!#(B +@code{t} $B$@$C$?$i(B Gnus $B$O@Z$jN%$5$l$F$$$k$H$-$@$1%a!<%k$r(B queue $B$KF~$l$^(B +$B$9!#(B@code{nil} $B$@$C$?$i(B queue $B$KF~$l$^$;$s!#%G%#%U%)%k%H$O(B @code{t} $B$G$9!#(B + +@item gnus-agent-prompt-send-queue +@vindex gnus-agent-prompt-send-queue +@code{gnus-agent-prompt-send-queue} $B$,Hs(B-@code{nil} $B$@$C$?$i!"@Z$jN%$5$l(B +$B$F$$$k$N$K$b$+$+$o$i$:(B @kbd{J S} $B$rC!$$$?>l9g$K!"(BGnus $B$OK\Ev$K$=$l$r9T$J$C(B +$B$F$bNI$$$+$I$&$+$r3NG'$7$^$9!#%G%#%U%)%k%H$O(B @code{nil} $B$G$9!#(B + +@item gnus-agent-auto-agentize-methods +@vindex gnus-agent-auto-agentize-methods +$B$"$J$?$,0JA0$K%(!<%8%'%s%H$r;H$C$?$3$H$,L5$$(B ($B$b$C$H5;=QE*$K$O!"(B +@file{~/News/agent/lib/servers} $B$,L5$$>l9g(B)$B!"(BGnus $B$O$[$s$N>/?t$N%5!<%P!<(B +$B$r<+F0E*$K%(!<%8%'%s%H2=$7$^$9!#$3$NJQ?t$O$I$N%P%C%/%(%s%I$r<+F0$G%(!<%8%'(B +$B%s%H2=$9$Y$-$+$r@)8f$7$^$9!#0lHL$K!"%(!<%8%'%s%H2=$O1s3V%P%C%/%(%s%I$@$1(B +$B$KM-MQ$G$9!#<+F0$N%(!<%8%'%s%H2=$O!"%5!<%P!<$KBP$7$F(B @kbd{J a} $B$r/dev/null 2>&1 +emacs -batch -l ~/.emacs -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1 @end example @node Control Agents @@ -17929,7 +18118,6 @@ Gnus $B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s(B * Global Score Files:: $BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k(B * Kill Files:: $B$=$l$i$O$^$@$3$3$K$"$k$,!"L5;k$9$k;v$,$G$-$k(B * Converting Kill Files:: $B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k(B -* GroupLens:: $B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k(B * Advanced Scoring:: $B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&(B * Score Decays:: $B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k(B @end menu @@ -18190,6 +18378,13 @@ File Editing})$B!#(B $B;DG0$J$,$i!"$^$@$?$/$5$s$O$"$j$^$;$s!#(B @table @kbd +@item W e +@kindex W e ($B%0%k!<%W(B) +@findex gnus-score-edit-all-score +$B$9$Y$F$N%0%k!<%W$KE,MQ$5$l$k(B all.SCORE $B%U%!%$%k$rJT=8$7$^$9!#%]%C%W%"%C(B +$B%W$9$k(B @code{gnus-score-mode} $B$N%P%C%U%!$KF~$j$^$9(B (@pxref{Score File +Editing})$B!#(B + @item W f @kindex W f ($B%0%k!<%W(B) @findex gnus-score-flush-cache @@ -19277,183 +19472,6 @@ Gnus $B$O$^$@!"$"$N$&$6$C$?$$8E$$>C5n%U%!%$%k$r%5%]!<%H$7$F$$$^$9!#C(B $BJQ49$7$J$1$l$P$J$j$^$;$s!#$"$k$$$OC1$K$=$l$i$r!"$=$N$^$^$K$7$F$*$$$F$/$@(B $B$5$$!#(BGnus $B$O0JA0F1MM$K$=$l$i$r;H$C$F$/$l$k$G$7$g$&!#(B -@node GroupLens -@section GroupLens -@cindex GroupLens - -@sc{$BCm0U(B:} $B;DG0$J$3$H$K(B GroupLens $B5!9=$OJD:?$5$l$F$$$k$h$&$J$N$G!"$3$N9`(B -$B$O$N?M$H6&$K8+$D$1$k$N$r=u(B -$B$1$k$?$a$N6&F1A*JL5!9=$G$9!#(B - -$B$3$l$rC#@.$9$k$?$a$K!"(BGroupLens $B5!9=$O$"$J$?$,4{$KFI$s$@5-;v$KBP$9$k0U8+(B -$B$r!"F1$8$h$&$J;v$r$7$?B>$N?M$N0U8+$H7k9g$7$F!"$=$l$>$l$NL$FI%K%e!<%95-;v(B -$B$K8D?M2=$5$l$?M=8@$rM?$($^$9!#(BGroupLens $B$rCg?M$N$h$&$J$b$N$@$H8+$J$7$F$/(B -$B$@$5$$!#(BGroupLens $B$O$"$J$?$,$I$N$h$&$K5-;v$N2ACM$rIU$1$k$+$r8+$F!"F1$8$h(B -$B$&$K5-;v$N2ACM$rIU$1$k?M$rC5$7$^$9!#0lEY$"$J$?$N0U8+$H0lCW$9$k?M$rH/8+$9(B -$B$l$P!"M=8@$N7A$G!"$=$l$i$N?M$,5-;v$r$I$&;W$&$+$r$"$J$?$K9p$2$^$9!#$"$J$?(B -$B$O$3$NM=8@$r5-;v$rFI$_$?$$$+$I$&$+$r7hDj$9$k$N$KLrN)$F$k;v$,$G$-$^$9!#(B - -@menu -* Using GroupLens:: $B$I$N$h$&$K(B gnus $B$K(B GroupLens $B$r;H$o$;$k$h$&$K$9$k$+(B -* Rating Articles:: GropLens $B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN$i$;$k(B -* Displaying Predictions:: GropuLens $B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k(B -* GroupLens Variables:: GoupLens $B$r%+%9%?%^%$%:$9$k(B -@end menu - -@node Using GroupLens -@subsection GroupLens $B$r;H$&(B - -GroupLens $B$r;H$&$?$a$K$O!"8=:_$A$^$?$KB8:_$9$kM#0l$N(B better bit $B$G$"(B -$B$k(B @uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html, Better Bit -Bureau (BBB)} $B$KI.L>(B (pseudonym) $B$rEPO?$7$J$1$l$P$J$j$^$;$s!#(B - -$BEPO?$7$?8e$G!"$$$/$D$+$NJQ?t$r@_Dj$9$kI,MW$,$"$j$^$9!#(B - -@table @code -@item gnus-use-grouplens -@vindex gnus-use-grouplens -$B$3$NJQ?t$r(B @code{nil} $B$G$J$$CM$K@_Dj$9$k$H!"(BGnus $B$,A4$F$N(B GroupLens $B4XO"(B -$B4X?t$r%U%C%/$9$k$h$&$K$J$j$^$9!#(B - -@item grouplens-pseudonym -@vindex grouplens-pseudonym -$B$3$NJQ?t$O(B Better Bit Bureau $B$KEPO?$7$?$H$-$K$b$i$C$?I.L>$K@_Dj$5$l$k$Y(B -$B$-$G$9!#(B - -@item grouplens-newsgroups -@vindex grouplens-newsgroups -GroupLens $B$NM=8@$rF@$?$$$H;W$&%0%k!<%W$N%j%9%H$G$9!#(B -@end table - -$B$3$l$,5/$->e$,$C$F(B GroupLens $B$r$N?M$,9M$($kJ?6Q$K4p$E$$$?%9%3%"$r$"(B -$B$J$?$KDs6!$9$k$3$H$r;O$a$^$9!#$7$+$7!"(BGroupLens $B$NK\Ev$NMx1W$ro$KLr$KN)$A$^(B -$B$9!#(B -@end table - -$Be=q$-$9$k$+$rA*$V;v$,$G$-$^$9!#>e(B -$B=q$-$,=i4|@_Dj$G$9!#$7$+$7!"(Bgnus $B$N%9%3%"$r(B grouplens $B$N%9%3%"$KB-$9$N$r(B -$B9%$`?M$b$$$^$9!#J,N%%9%3%"$N?6$kIq$$$rF@$k$?$a$K$O!"(B -@code{gnus-grouplens-override-scoring} $B$r(B @code{'separate} $B$K@_Dj$9$kI,(B -$BMW$,$"$j$^$9!#(BGroupLens $B$NM=8@$H(B grouplens $B%9%3%"$r7k9g$9$k$?$a$K$O$=$l(B -$B$r(B @code{'override} $B$K@_Dj$7!"%9%3%"$r7k9g$9$k$?$a$K(B -$B$O(B @code{gnus-grouplens-override-scoring} $B$r(B @code{'combine} $B$K@_Dj$7$^(B -$B$9!#7k9gIU2C5!G=$rMQ$$$k$H$-$O!"(B -@code{grouplens-prediction-offset} $B$*$h(B -$B$S(B @code{grouplens-score-scale-factor} $B$NCM$r@_Dj$7$?$$$H;W$&$G$7$g$&!#(B - -@vindex grouplens-prediction-display -$B$I$A$i$N>l9g$G$b!"(BGroupLens $B$OFs!";0$NM=8@$,$I$N$h$&I=<($5$l$?$$$+$NA*Br(B -$B$rM?$($^$9!#M=8@$NI=<($OJQ?t(B @code{grouplens-prediction-display} $B$K$h$C(B -$B$F@)8f$5$l$^$9!#(B - -$B0J2<$N$b$N$,$=$NJQ?t$GM-8z$JCM$G$9!#(B - -@table @code -@item prediction-spot -$BM=8@$,9b$$$[$I!"1&$NJ}$K(B @samp{*} $B$,I=<($5$l$^$9!#(B - -@item confidence-interval -$B?t;z$N3N?.(B (confidence) $B4V3V$G$9!#(B - -@item prediction-bar -$BM=8@$,9b$$$[$I!"K@$,D9$/$J$j$^$9!#(B - -@item confidence-bar -$B?t;z3N?.$G$9!#(B - -@item confidence-spot -$B3N?.$,9b$$$[$IE@$,Bg$-$/$J$j$^$9!#(B - -@item prediction-num -$BIaDL$N@N$J$,$i$N?tCM$G$9!#(B - -@item confidence-plus-minus -$BM=8@$N(B +/- $B3N?.$G$9!#(B -@end table - -@node GroupLens Variables -@subsection GroupLens $BJQ?t(B - -@table @code -@item gnus-summary-grouplens-line-format -GropuLens $B3HD%$N35N,%P%C%U%!$G;H$o$l$k35N,9TMM<0$G$9!#IaDL$N35N,9TMM<0$,(B -$Be5i%9%3%"IU$1(B @@ -19683,6 +19701,10 @@ Gnus $B$O0lF|$K0l2s%9%3%"$rIeGT$5$;$h$&$H$7$^$9!#Nc$($P!"$b$7(B gnus $B$r;MF| @include message-ja.texi @chapter Sieve @include sieve.texi +@c @chapter PGG +@c @include pgg.texi +@c @chapter SASL +@c @include sasl.texi @end iflatex @end iftex @@ -20953,7 +20975,32 @@ gnus $B$O$3$l$rMxMQ$9$k$3$H$K$7$^$9!#(B @end iftex @c @anchor{X-Face} -@code{X-Face} $B%X%C%@!<$NI|9f$K$O!"(BEmacs $B$,(B @samp{compface} $B$r%5%]!<(B +$B:#$d(B Gnus $B$O(B @code{X-Face} $B%X%C%@!<$r%G%3!<%I$9$k$?$a$K!"DL>o(B Emacs $B$G(B +$B$O(B ELisp $B$G=q$+$l$?FbIt(B @code{uncompface} $B%W%m%0%i%`$r;H$$$^$9!#$=$l$O$I(B +$B$s$J30It%W%m%0%i%`$bI,MW$H$7$J$$0lJ}!"CY$$%^%7%s$r;H$C$F$$$k>l9g$O$=$l$r(B +$BCY$/46$8$k$+$b$7$l$^$;$s!#$=$s$J>l9g$O!"0J2<$NJQ?t$rJQ99$9$k$3$H$,$G$-$^(B +$B$9(B: + +@table @code +@item uncompface-use-external +@vindex uncompface-use-external +$BFbIt%G%3!<%@$H30It%G%3!<%@$N$I$A$i$,;H$o$l$k$Y$-$+$r;XDj$7$^$9!#(B +@code{nil} $B$O(B ELisp $B$G=q$+$l$?FbIt(B @code{uncompface} $B%W%m%0%i%`$r;H$&$3(B +$B$H$r0UL#$7!"(B@code{t} $B$O30It%G%3!<%@$r;H$&$3$H$r0UL#$7$^$9!#%G%#%U%)%k%H(B +$BCM$O%[%9%H%^%7%s$,CY$$$+$I$&$+$r8!::$7$F$=$l$r7h$a$k$3$H$r0UL#$9(B +$B$k(B @code{undecided} $B$G!"(B@code{uncompface-use-external-threshold} ($B$=$l$r(B +$B;2>H(B) $B$K$h$C$F@)8f$5$l$^$9!#(B + +@item uncompface-use-external-threshold +@vindex uncompface-use-external-threshold +$B%[%9%H%^%7%s$,CY$$$+$I$&$+$r8!::$9$k$?$a$NIC?t$G$9!#(BELisp $B$G=q$+$l$?Fb(B +$BIt(B @code{uncompface} $B%W%m%0%i%`$r;H$C$F(B @code{X-Face} $B$r%G%3!<%I$9$k$N$K(B +$B$+$+$k;~4V$,$3$NCM$h$jBg$-$$>l9g$O!"30It%G%3!<%@$N;HMQ$KJQ99$5$l$^$9!#%G%#(B +$B%U%)%k%H$O(B 0.1 $BIC$G$9!#(B +@end table + +$BFbIt%G%3!<%@$,L58z$K$5$l$k>l9g!"$"$k$$$O(B XEmacs $B$r;H$C$F$$$k>l9g$O!"(B +@code{X-Face} $B%X%C%@!<$N%G%3!<%I$K$O!"(BEmacs $B$,(B @samp{compface} $B$r%5%]!<(B $B%H(B (XEmacs $B$N$[$H$s$I$,%5%]!<%H(B) $B$7$F$$$k$+!"$"$J$?$N%7%9%F%`(B $B$K(B @samp{compface} $B$,%$%s%9%H!<%k$5$l$F$$$kI,MW$,$"$j$^$9!#$b$7$I$A$i$+(B $B$,??$J$i$P!"(Bgnus $B$O%G%#%U%)%k%H$G(B @code{X-Face} $B%X%C%@!<$rI=<($7$^$9!#(B @@ -20980,6 +21027,41 @@ GNU/Linux $B%7%9%F%`$G$O(B @code{netpbm}$B!"(B@code{libgr-progs} $B$^$?(B ($BCm(B: $BJQ?t(B/$B4X?tL>$K$O(B @code{xface} $B$G$O$J$/(B @code{x-face} $B$,;H$o$l$^$9!#(B) +$B%U%'!<%9$HJQ?t(B: + +@table @code +@item gnus-x-face +@vindex gnus-x-face +X-Face $B$rI=<($9$k$?$a$N%U%'!<%9!#$3$N%U%'!<%9$N?'$,I=<($5$l$k(B X-Face $B$N(B +$BA07J?'$HGX7J?'$H$7$F;H$o$l$^$9!#%G%#%U%)%k%H$N?'$OGr$H9u$G$9!#(B + +@item gnus-face-properties-alist +@vindex gnus-face-properties-alist +Face (@pxref{Face}) $B$H(B X-Face $B2hA|$KE,MQ$5$l$k!"2hA|$N7A<0$H%W%m%Q%F%#$N(B +$BO"A[%j%9%H$G$9!#%G%#%U%)%k%HCM$O(B Emacs $BMQ$N(B @code{((pbm . (:face +gnus-x-face)) (png . nil))} $B$^$?$O(B XEmacs $BMQ$N(B @code{((xface . (:face +gnus-x-face)))} $B$G$9!#Nc$r5s$2$^$7$g$&(B: + +@lisp +;; From $B%X%C%@!<$K$*$1$k(B Face $B$H(B X-Face $B$N9b$5$r;XDj$7$^$9!#(B +(setq gnus-face-properties-alist + '((pbm . (:face gnus-x-face :ascent 80)) + (png . (:ascent 80)))) + +;; Face $B$H(B X-Face $B$r1z$s$@%\%?%s$N$h$&$KI=<($7$^$9!#(B +(setq gnus-face-properties-alist + '((pbm . (:face gnus-x-face :relief -2)) + (png . (:relief -2)))) +@end lisp + +$B$$$m$$$m$J2hA|$N7A<0$GMxMQ2DG=$J%W%m%Q%F%#$K$D$$$F$O(B @pxref{Image +Descriptors, ,Image Descriptors, elisp, The Emacs Lisp Reference +Manual} $B$r;2>H$7$F2<$5$$!#:#$N$H$3$m(B Emacs $B$G$O(B @code{pbm} $B$,(B X-Face $B2h(B +$BA|$K;H$o$l!"(B @code{png} $B$,(B Face $B2hA|$K;H$o$l$^$9!#(BXEmacs $B$G$O!"$=$l(B +$B$,(B @samp{libcompface} $B%i%$%V%i%j$H$H$b$K9=C[$5$l$F$$$l$P!"(B +@code{xface} $B2hA|7A<0$K(B @code{:face} $B%W%m%Q%F%#$@$1$,8z2L$r5Z$\$7$^$9!#(B +@end table + gnus $B$O!"30$K=P$9%a%C%;!<%8$K(B X-Face $B%X%C%@!<$r4JC1$KA^F~$9$k$?$a$N!"JX(B $BMx$J4X?t$HJQ?t$r>/$7$P$+$jDs6!$7$^$9!#(B @@ -21037,6 +21119,9 @@ gnus $B$O!"30$K=P$9%a%C%;!<%8$K(B X-Face $B%X%C%@!<$r4JC1$KA^F~$9$k$?$a$N!"JX $B$l$P$J$j$^$;$s!#@53N$J;EMM$K$D$$$F!"(B @uref{http://quimby.gnus.org/circus/face/} $B$r;2>H$7$F2<$5$$!#(B +$BJQ?t(B @code{gnus-face-properties-alist} $B$OI=<($5$l$k(B Face $B2hA|$N304Q$K1F(B +$B6A$7$^$9!#(B@xref{X-Face}. + $BAw?.$9$k%a%C%;!<%8$K4JC1$K(B Face $B%X%C%@!<$rA^F~$G$-$k$h$&$K$9$k$?$a$K!"(B Gnus $B$O(B 2$B!A(B3 $B$N4X?t$HJQ?t$rDs6!$7$^$9!#(B @@ -21327,16 +21412,19 @@ Spam $B$N=|5n(B (filtering) $B$X$N:G$bC1=c$J@\$N(B -$B_I2a$OM-1W$K$J$jF@$^$9!#(B +$B$b$&0l$D$NNc$H$7$F!"$H$F$b<(:6$KIY$s$GM-1W$J(B RISKS $B%@%$%8%'%9%H$O!"$=$l(B +$B$,(B spam $B%a%C%;!<%8$H6&DL$N8l$r(B @strong{$B4^$s$G(B} $B$$$k$?$a$K!"G.?4$9$.$k%a!<(B +$B%k_I2a4o$K$h$C$FAK;_$5$l$F$7$^$$$^$9!#$=$l$G$b$J$*8IN)$7$?4D6-$G$O!"Cm0U(B +$B?<$/;H$&$3$H$K$h$C$FD>@\$N_I2a$OM-1W$K$J$jF@$^$9!#(B $B$b$&0l$D$NEE;R%a!<%k_I2a$X$Nl9g!"%G%#%U%)%k%H$G$O5-;v$N%\%G%#$,%@%&%s%m!<(B $B%I$5$l$J$$$3$H$KCm0U$7$F2<$5$$!#$=$l$r$9$k$?$a$K$O!"(B -@code{nnimap-split-download-body} $B$r(B t $B$K@_Dj$9$kI,MW$,$"$j$^(B +@code{nnimap-split-download-body} $B$r(B @code{t} $B$K@_Dj$9$kI,MW$,$"$j$^(B $B$9(B (@pxref{Splitting in IMAP})$B!#(B $B0J>e$,$3$l$K4X$9$k$3$H$G$9!#$$$/$D$+$N(B spam $B$O$I$&$7$F$bAGDL$j$7$F$7$^$&(B @@ -21675,6 +21763,7 @@ Spam $B5-;v$r8+$?$H$-$O$$$D$G$b!"%0%k!<%W$rH4$1$kA0$KI,$:(B @kbd{M-d} $B$G$=$ * Blackholes:: * Regular Expressions Header Matching:: * Bogofilter:: +* SpamAssassin backend:: * ifile spam filtering:: * spam-stat spam filtering:: * SpamOracle:: @@ -21687,81 +21776,86 @@ Spam $B5-;v$r8+$?$H$-$O$$$D$G$b!"%0%k!<%W$rH4$1$kA0$KI,$:(B @kbd{M-d} $B$G$=$ @cindex spam filtering sequence of events @cindex spam -$BI,$:$3$N9`$rFI$s$G2<$5$$!#(B@code{spam.el} $B$NF0:n$rM}2r$9$k$?$a$K!#FI$_Ht(B -$B$P$7!"B.FI!"$NItJ,$N4V$KFs$D$N@\E@(B -$B$,$"$j$^$9(B: spam $B$N$?$a$N?7Ce%a!<%k$N8!::!"$*$h$S%0%k!<%W$rH4$1$k>l9g$G(B -$B$9!#(B +@code{spam.el} $B$H(B Gnus $B$N4V$K$O!"Fs$D$N(B @emph{$B@\E@(B} $B$,$"$k$H9M$($i$l$^$9!#(B +Spam $B$N$?$a$K?7Ce%a!<%k$r8!::$9$k$H$-!"$*$h$S%0%k!<%W$rH4$1$k$H$-$G$9!#(B -$B?7Ce%a!<%k$NH$7$F2<$5$$!#(B +$B?7Ce%a!<%k$NJ,3d$O!"(B@code{nnml} $B$d(B @code{nnimap} $B$N$h$&$K!"?7$7$$%a!<%k(B +$B$,(B @dfn{Spool File} $B$H8F$P$l$k0l$D$N%U%!%$%k$K$J$k%P%C%/%(%s%I$K!"$h$jE,(B +$B$7$F$$$^$9!#(B@xref{Spam ELisp Package Filtering of Incoming Mail} $B$r;2>H(B +$B$7$F2<$5$$!#(B -@code{nntp} $B$N$h$&$J%P%C%/%(%s%I$K$O$d$C$FMh$k%a!<%k$N%9%W!<%k$,L5$$$N$G!"(B -$BBe$o$j$N5!9=$r;H$o$J$1$l$P$J$j$^$;$s!#$3$l$O!"%5!<%P!<$,$d$C$FMh$?%a!<%k(B -$B$NJ,3d$rC4Ev$7$F$$$F!"(BGnus $B$,$5$i$KJ,3d$r9T$J$o$J$$%P%C%/%(%s%I$G$b5/$-(B -$B$k$+$b$7$l$^$;$s!#%0%k!<%W%Q%i%a!<(B +@vindex gnus-spam-autodetect +@vindex gnus-spam-autodetect-methods +@code{nntp} $B$N$h$&$J%P%C%/%(%s%I$K$O?7Ce%a!<%k$N%9%W!<%k$,L5$$$N$G!"Be$o(B +$B$j$N5!9=$r;H$o$J$1$l$P$J$j$^$;$s!#$3$l$O!"%5!<%P!<$,?7Ce%a!<%k$NJ,3d$rC4(B +$BEv$7$F$$$F!"(BGnus $B$,$5$i$K$^$?J,3d$r9T$J$o$J$$%P%C%/%(%s%I$G$b!"(B($BBe$o$j$N(B +$B5!9=$,(B) $BI,MW$K$J$k$+$b$7$l$^$;$s!#%0%k!<%W%Q%i%a!<(B $B%?(B @code{spam-autodetect} $B$H(B @code{spam-autodetect-methods} ($BIaDL(B @kbd{G -c} and @kbd{G p} $B$GA`:n2D(B)$B!"$=$7$FBP1~$9$kJQ(B -$B?t(B @code{gnus-spam-autodetect-methods} $B$*$h(B +c} and @kbd{G p} $B$GA`:n2D(B)$B!"$=$7$F$=$l$i$KBP1~$9$kJQ(B +$B?t(B @code{gnus-spam-autodetect} $B$*$h(B $B$S(B @code{gnus-spam-autodetect-methods} (@kbd{M-x customize-variable} $B$G(B -$BA`:n2D(B) $B$G$9!#(B - -@code{spam-autodetect} $B$,;H$o$l$k>l9g!"$=$l$O%0%k!<%W$KF~$k=hM}$K0z$C$+(B -$B$1$i$l$^$9!#$7$?$,$C$F!"$^$@FI$^$l$?$3$H$,L5$$!"$^$?$OL$FI$N5-;v$,$"$k%0(B -$B%k!<%W$KF~$k$3$H$O!"$d$C$FMh$?%a!<%k$N8!::$NBe$o$j$K$J$j$^$9!#$^$@FI$^$l(B -$B$?$3$H$,L5$$5-;v!"$^$?$O$9$Y$F$NL$FI$N5-;v$,=hM}$5$l$k$+$I$&$+$O!"(B -@code{spam-autodetect-recheck-messages} $B$K$h$C$F7h$^$j$^$9!#(Bt $B$K@_Dj$5$l(B -$B$k$H!"L$FI$N%a%C%;!<%8$,:F8!::$5$l$^$9!#(B - -@code{spam-autodetect} $B$O!"%f!<%6$K(B spam $B_I2a$NB?>/$N4IM}$rB(9oG'$a$^$9!#(B -$B%f!<%6$O3F%0%k!<%W$N(B spam $B$No$N(B spam $B$H$7$F(B -$B=hM}$5$l$^$9!#H`$,(B @code{spam-split} $B$G9T$J$C$F$bNI$$$h$&$K!"%f!<%6$O8!(B -$B::$N(B @emph{sequence} $B$r$h$j>/$J$/4IM}$7$^$9!#(B +$BA`:n2D(B) $B$,LrN)$A$^$9!#(B + +@code{spam-autodetect} $B$,;H$o$l$k>l9g(B ($B$=$l$O%0%k!<%W(B/$B%H%T%C%/$K$D$$$F!"(B +$B$"$k$$$OI,MW$K1~$8$F==GD$R$H$+$i$2$K(B ON $B$K$G$-$^$9(B)$B!"$=$l$O%0%k!<%W$KF~(B +$B$k(B ($B$=$N%0%k!<%W$N35N,%P%C%U%!$K0\F0$9$k(B) $B=hM}$K$*$$$F/$J$j$H$b(B spam $B_I2a$N4IM}$r%f!<%6$K5v2D$7(B +$B$^$9!#%f!<%6$O3F%0%k!<%W$N(B spam $B8!=P$No(B +$B$N(B spam $B$H$7$F=hM}$5$l$^$9!#H`$,(B @code{spam-split} $B$G9T$J$C$F$bNI$$$h$&(B +$B$K!"%f!<%6$O8!::$N(B @emph{sequence} $B$r$h$j>/$J$/4IM}$7$^$9!#(B $B?7$?$KJ,3d$5$l$?%a!<%k$,%0%k!<%W$KF~$C$?!"$^$?$O%a%C%;!<%8$,(B ham $B$^$?(B -$B$O(B spam $B$H$7$F<+F08!CN$5$l$?>l9g!"8e$K(B spam $B=hM}$r9T$J$o$;$k$?$a$K!"$=$l(B +$B$O(B spam $B$H$7$F<+F08!=P$5$l$?>l9g!"8e$K(B spam $B=hM}$r9T$J$o$;$k$?$a$K!"$=$l(B $B$i$N%0%k!<%W$r(B ($BI,MW$J$iF~$C$?8e$G(B) $BH4$1=P$J$/$F$O$J$j$^$;$s!#%0%k!<%W$,(B $B$=$N(B @code{spam-content} $B%Q%i%a!<%?(B (@pxref{Spam ELisp Package Global Variables}) $B$K4p$E$$$F(B ham $B$^$?$O(B spam $B%0%k!<%W$H9M$($i$l$k$+!"L$J,N`$+(B $B$I$&$+$O=EMW$G$9!#(BSpam $B%0%k!<%W$O!"$=$3$KF~$k$H!"$^$@FI$^$l$?$3$H$,L5$$!"(B $B$^$?$OL$FI$N5-;v$K(B spam $B$N0u$,IU$1$i$l$k(B ($BJQ(B -$B?t(B @code{spam-mark-only-unseen-as-spam} $B$K0MB8(B) $B$H$$$&DI2C$NFC@-$r;}$A$^(B -$B$9!#$3$N$h$&$K!"J,3d$5$l$F(B spam $B%0%k!<%W$KF~$l$i$l$?5-;v$K$O!"$"$J$?$,$=(B -$B$N%0%k!<%W$KF~$C$?$H$-$K<+F0E*$K(B spam $B$N0u$,IU$1$i$l$^$9!#(B +$B?t(B @code{spam-mark-only-unseen-as-spam} $B$K0MB8(B) $B$H$$$&IU2CE*$JFC@-$r;}$A(B +$B$^$9!#$3$N$h$&$K!"J,3d$5$l$F(B spam $B%0%k!<%W$KF~$l$i$l$?5-;v$K$O!"$"$J$?$,(B +$B$=$N%0%k!<%W$KF~$C$?$H$-$K<+F0E*$K(B spam $B$N0u$,IU$1$i$l$^$9!#(B -$B$7$?$,$C$F!"%0%k!<%W$rH4$1$k$H(B @code{spam-processors} $B$,(B ($B2?$G$"$l@_Dj$5(B -$B$l$F$$$l$P(B) $BE,MQ$5$l!"=hM}$5$l$?%a!<%k$O5-;v$NJ,N`$K4p$E$$(B +$B$7$?$,$C$F!"%0%k!<%W(B ($B$N35N,%P%C%U%!(B) $B$rH4$1$k(B +$B$H(B @code{spam-processors} $B$,(B ($B2?$G$"$l@_Dj$5$l$F$$$l$P(B) $BE,MQ$5$l!"=hM}$5(B +$B$l$?%a!<%k$O5-;v$NJ,N`$K4p$E$$(B $B$F(B @code{ham-process-destination} $B$+(B @code{spam-process-destination} $B$K(B $B0\F0$5$;$i$l$^$9!#(B@code{ham-process-destination} $B$^$?(B -$B$O(B @code{spam-process-destination} $B$N$I$A$i$+$,(B ($BLuCp(B: $B0\F0@h$H$7$F(B) $BE,(B -$B@Z$G!"$=$l$i$,(B nil $B$@$C$?>l9g!"$=$N5-;v$O8=:_$N%0%k!<%W$K;D$5$l$^$9!#(B +$B$O(B @code{spam-process-destination} $B$N$I$A$i$+$,(B ($BLuCp(B: $B0\F0@h$H$7$F(B) $B$U(B +$B$5$o$7$$>l9g$G$b!"$=$l$i$,(B @code{nil} $B$@$C$?>l9g!"$=$N5-;v$O8=:_$N%0%k!<(B +$B%W$K;D$5$l$^$9!#(B $B$I$l$+$N%0%k!<%W$G(B spam $B$,8+$D$+$C$?$i(B ($BHs(B-spam $B%0%k!<%W$K8B$C(B -$B$F(B @code{spam-move-spam-nonspam-groups-only} $B$GJQ992D(B)$B!"%0%k!<%W$rH4$1$k(B -$B$H$-$K3h$-$F$$$k(B @code{spam-processors} (@pxref{Spam ELisp Package +$B$F$O(B @code{spam-move-spam-nonspam-groups-only} $B$GJQ992D(B)$B!"%0%k!<%W$rH4$1(B +$B$k$H$-$K3h$-$F$$$k(B @code{spam-processors} (@pxref{Spam ELisp Package Global Variables}) $B$G=hM}$5$l$^$9!#$5$i$K!"8e$G%H%l!<%K%s%0$^$?$O:o=|$9(B $B$k$?$a$K!"(Bspam $B$O(B @code{spam-process-destination} (@pxref{Spam ELisp Package Global Variables}) $B$K0\F0$5$;$i$l$^$9!#(BSpam $B$,:F;0=hM}$5$l$k$3$H(B $B$rK>$^$J$$$J$i$P!"(B@file{gnus-registry.el} $B%Q%C%1!<%8$rFI$_9~$_!"(B @code{spam-log-to-registry} $BJQ?t$rM-8z$K$7$J$1$l$P$J$j$^$;$s!#$3$N$h$&(B -$B$K(B spam $B$O$I$3$G$b8!CN$5$l=hM}$5$l$^$9!#$=$l$O$[$H$s$I$N?M!9$,K>$`$b$N$G(B -$B$9!#(B@code{spam-process-destination} $B$,(B nil $B$@$C$?>l9g!"(Bspam $B$K$O4|8B@Z$l(B -$B>C5n$N0u$,IU$1$i$l$^$9!#IaDL$=$l$O@5$7$$9T$J$$$G$9!#(B +$B$K(B spam $B$O$I$3$G$b8!=P$5$l=hM}$5$l$^$9!#$=$l$O$[$H$s$I$N?M!9$,!"$=$&$7$?(B +$B$$$H;W$&$3$H$G$9!#(B@code{spam-process-destination} $B$,(B @code{nil} $B$@$C$?>l(B +$B9g!"(Bspam $B$K$O4|8B@Z$l>C5n$N0u$,IU$1$i$l$^$9!#IaDL$=$l$O@5$7$$9T$J$$$G$9!#(B -Spam $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(%s%I$N(B -$B$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B +Spam $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B @acronym{NNTP} $B$N$h$&$JFI$_9~$_@lMQ%P%C(B +$B%/%(%s%I$G$"$k$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B Ham $B%0%k!<%W$G(B @code{ham-marks} $B%Q%i%a!<%?$G7hDj$5$l$k(B ham $B%a!<%k$,8+$D(B $B$+$C$?$i!"%0%k!<%W$rH4$1$k$H$-$K3h$-$F$$$k(B ham @code{spam-processor} $B$G(B @@ -21770,18 +21864,18 @@ Ham $B%0%k!<%W$G(B @code{ham-marks} $B%Q%i%a!<%?$G7hDj$5$l$k(B ham $B%a!<%k $B$?(B ham $B$G$b=hM}$G$-$k$h$&$KF0:n$rJQ99$9$k$3$H$,$G$-$^$9!#(BHam $B$,:F;0=hM}(B $B$5$l$k$3$H$rK>$^$J$$$J$i$P!"(B@file{gnus-registry.el} $B%Q%C%1!<%8$rFI$_9~$_!"(B @code{spam-log-to-registry} $BJQ?t$rM-8z$K$7$J$1$l$P$J$j$^$;$s!#$3$N$h$&(B -$B$K(B ham $B$OI,MW$J>l9g$@$18!CN$5$l=hM}$5$l$^$9!#$=$l$O$[$H$s$I$N?M!9$,K>$`(B -$B$b$N$G$9!#$3$l$K4X$9$k>\:Y$O(B @xref{Spam ELisp Package Configuration -Examples}. +$B$K(B ham $B$OI,MW$J>l9g$@$18!=P$5$l=hM}$5$l$^$9!#$=$l$O$[$H$s$I$N?M!9$,!"$=(B +$B$&$7$?$$$H;W$&$3$H$G$9!#$3$l$K4X$9$k>\:Y$O(B @xref{Spam ELisp Package +Configuration Examples}. -Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(%s%I$N$?(B -$B$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B +Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B @acronym{NNTP} $B$N$h$&$JFI$_9~$_@lMQ%P%C%/(B +$B%(%s%I$G$"$k$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B -$B$3$l$i$9$Y$F$,$o$1$,$o$+$i$J$/$F$b!"?4G[$OL5MQ$G$9(B ($BLuCm(B: $B$G$bLuJ8$,@53N(B -$B$G$O$J$$$+$b$7$l$J$$$N$G!"JQ$@$H;W$C$?$i86J8$r;2>H$N$3$H(B :-p)$B!#$9$0$K$=(B -$B$l$O?@7P%$%s%?!<%U%'!<%9>e$K(B Lisp $B<0$r%?%$%W$9$k$h$&$K<+A3$J$3$H$K$J$j$^(B -$B$9(B... $B$(!+$4$a$s!"$=$l$K$O$^$@(B 50$BG/Aa$$$G$9$M!#$?$@;d$?$A$r?.Mj$7$F2<$5(B -$B$$!#$=$l$Oe$K(B Lisp $B$G>.OC$r=q$/$h$&$K<+A3$J$3$H$K$J$j$^(B +$B$9(B@dots{} $B$(!+$4$a$s!"$=$l$K$O$^$@(B 50$BG/Aa$$$G$9$M!#$?$@;d$?$A$r?.Mj$7$F(B +$B2<$5$$!#$=$l$Ol9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(% $B;H$C$F$$$k$+$K1~$8$F!"(B@code{nnmail-split-fancy} $B$^$?(B $B$O(B @code{nnimap-split-fancy} $B$+$i8F$P$l$k$3$H$KCm0U$7$F2<$5$$!#(B +$B$5$i$K!"(B@code{spam-split} $B$O$$$+$J$kJ}K!$K$h$C$F$b?7Ce%a!<%k$r2~JQ$7$^$;(B +$B$s!#(B + @code{spam-split} $B4X?t$OF~$C$F$/$k%a!<%k$r=hM}$7!"(Bspam $B$H;W$o$l$k%a!<%k(B $B$rJQ?t(B @code{spam-split-group} $B$GM?$($i$l$kL>A0$N%0%k!<%W$KAw$j$^$9!#%G%#(B $B%U%)%k%H$G$O$=$N%0%k!<%WL>$O(B @samp{spam} $B$G$9$,!"(B @@ -21814,7 +21911,7 @@ Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(% $B$F42MF$+$I$&$+$K0MB8$9$k$G$7$g$&!#(B $B$^$?!"(B@code{spam-split} $B$K%Q%i%a!<%?!"Nc$((B -$B$P(B @samp{spam-use-regex-headers} $B$^$?$O(B @samp{"maybe-spam"} $B$rM?$($k$3$H(B +$B$P(B @code{spam-use-regex-headers} $B$^$?$O(B @code{"maybe-spam"} $B$rM?$($k$3$H(B $B$b$G$-$^$9!#$J$<$3$l$,M-MQ$J$N$G$7$g$&$+(B? $B$3$l$i$N(B (@code{spam-use-regex-headers} $B$H(B @code{spam-use-blackholes} $B$N(B @@ -21824,7 +21921,7 @@ Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(% nnimap-split-fancy '(| (any "ding" "ding") (: spam-split) - ;; default mailbox + ;; @r{$B%G%#%U%)%k%H$N%a!<%k%\%C%/%9!#(B} "mail") @end example @@ -21841,12 +21938,12 @@ SpamAssassin $B%X%C%@!<$K(B ding $B$N5,B'$rCV$-49$($5$;$k$3$H$O$G$-$^$9$,!"B> @example nnimap-split-fancy '(| -;;; spam-use-regex-headers $B$G8!=P$5$l$?$9$Y$F$N(B spam $B$O(B "regex-spam" $B$X!#(B +;;; @r{@code{spam-use-regex-headers} $B$G8!=P$5$l$?$9$Y$F$N(B spam $B$O(B @samp{regex-spam} $B$X!#(B} (: spam-split "regex-spam" 'spam-use-regex-headers) (any "ding" "ding") -;;; spam-split $B$G8!=P$5$l$?B>$N$9$Y$F$N(B spam $B$O(B spam-split-group $B$X!#(B +;;; @r{spam-split $B$G8!=P$5$l$?B>$N$9$Y$F$N(B spam $B$O(B @code{spam-split-group} $B$X!#(B} (: spam-split) - ;; default mailbox + ;; @r{$B%G%#%U%)%k%H$N%a!<%k%\%C%/%9!#(B} "mail") @end example @@ -21899,8 +21996,8 @@ ham $B%W%m%;%C%5!<$OHs(B spam (@emph{ham}) $B$G$"$k$3$H$,$o$+$C$F$$$k%a!<%k$r $B$F=hM}$7$^$9!#(B Spam $B$^$?$O(B ham $B%W%m%;%C%5!<$r;XDj$9$k7A<0$r!"$+$D$F$O%7%s%\%k$GI=$7$F$$(B -$B$?$N$G$9$,!"8=:_$O(B cons $B%;%k$K$J$C$F$$$^$9!#>\$7$/$O8D!9$N(B spam $B%W%m%;%C(B -$B%5!<$N9`$r;2>H$7$F2<$5$$!#(B +$B$?$N$G$9$,!"8=:_$O(B @sc{cons} $B%;%k$K$J$C$F$$$^$9!#>\$7$/$O8D!9$N(B spam $B%W(B +$B%m%;%C%5!<$N9`$r;2>H$7$F2<$5$$!#(B @vindex gnus-spam-newsgroup-contents gnus $B$O$"$J$?$,e$N(B spam $B%0(B @@ -21977,18 +22074,17 @@ Ham $B0u$N%j%9%H$K2D;k(B (tick) $B0u$r4^$a$k$3$H$,LrN)$D$3$H$b$"$j$^$9!#L$FI0 @code{ham-process-destination} $B%0%k!<%W%Q%i%a!<%?(B $B$+(B @code{gnus-ham-process-destinations} $BJQ?t$N$I$A$i$+$K9gCW$9$k>l=j$K0\(B $B$5$l$^$9!#$=$l$i$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$N%j%9%H$G(B -$B$9(B (@code{customize-variable gnus-ham-process-destinations} $B$K$h$C$F$3$N(B -$BJQ?t$r%+%9%?%^%$%:$9$k$N$,:G$b4JC1$G$9(B)$B!#JQ?t$r$l$N(B -$B%K%e!<%9%0%k!<%W$N;EMM@_Dj$O(B @code{(REGEXP PROCESSOR)} $B$N7A<0$NCM$r;}$A(B -$B$^$9!#:G=*E*$J>l=j$O(B ($BC1?t$^$?$OJ#?t$N(B) $B%0%k!<%WL>$G$9!#(B +$B$9(B (@kbd{M-x customize-variable @key{RET} +gnus-ham-process-destinations} $B$K$h$C$F$3$NJQ?t$r%+%9%?%^%$%:$9$k$N$,:G(B +$B$b4JC1$G$9(B)$B!#JQ?t$r$l$N%0%k!<%WL>$N%j%9%H$OIaDL$N(B Lisp $B$N(B list $B$G$9!#(B @code{ham-process-destination} $B%Q%i%a!<%?$,@_Dj$5$l$F$$$J$$$H!"(Bham $B5-;v(B $B$O$=$3$KN1$aCV$+$l$^$9!#(B @code{spam-mark-ham-unread-before-move-from-spam-group} $B%Q%i%a!<%?$,@_Dj(B $B$5$l$F$$$k$H!"(Bham $B5-;v$O0\F0$5$;$i$l$kA0$KL$FI$N0u$,IU$1$i$l$^$9!#(B -Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(%s%I$N$?(B -$B$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B +Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B @acronym{NNTP} $B$N$h$&$JFI$_9~$_@lMQ%P%C%/(B +$B%(%s%I$G$"$k$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B $B%0%k!<%W$^$?$O@55,I=8=$4$H$KJ#?t$N0\F0@h$r;XDj$G$-$k$3$H$KCmL\$7$F2<$5$$(B! $B$3$l$K$h$C$F(B ham $B5-;v$r@55,$N%a!<%k%0%k!<%W$H(B @emph{ham $B%H%l!<%K%s%0(B} $B%0(B @@ -22016,18 +22112,18 @@ Ham $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(% $B$N(B @strong{spam} $B5-;v$O!"(B@code{spam-process-destination} $B%0%k!<%W%Q%i%a!<(B $B%?$+(B @code{gnus-spam-process-destinations} $BJQ?t$N$I$A$i$+$K9gCW$9$k>l=j(B $B$K0\$5$l$^$9!#$=$l$i$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$N%j%9%H$G(B -$B$9(B (@code{customize-variable gnus-spam-process-destinations} $B$K$h$C$F$3(B -$B$NJQ?t$r%+%9%?%^%$%:$9$k$N$,:G$b4JC1$G$9(B)$B!#JQ?t$r$l(B -$B$N%K%e!<%9%0%k!<%W$N;EMM@_Dj$O(B @code{(REGEXP GROUP)} $B$N7A<0$NCM$r;}$A$^(B -$B$9!#:G=*E*$J>l=j$O(B ($BC1?t$^$?$OJ#?t$N(B) $B%0%k!<%WL>$G$9!#(B -@code{spam-process-destination} $B%Q%i%a!<%?$,@_Dj$5$l$F$$$J$$$H!"(Bspam $B5-(B -$B;v$OC1$K4|8B@Z$l>C5n$5$l$^$9!#%0%k!<%WL>$O40A47A$G$"$k$3$H!"$9$J$o$A%0%k!<(B -$B%W%P%C%U%!$G%0%k!<%WL>$NA0$K(B @samp{nntp:servername} $B$N$h$&$J$b$N$,8+$($k(B -$B>l9g$O!"$3$3$G$b$=$l$r;H$&I,MW$,$"$j$^$9!#(B - -Spam $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B NNTP $B$N$h$&$JFI$_9~$_@lMQ%P%C%/%(%s%I$N(B -$B$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B +$B$9(B (@kbd{M-x customize-variable @key{RET} +gnus-spam-process-destinations} $B$K$h$C$F$3$NJQ?t$r%+%9%?%^%$%:$9$k$N$,:G(B +$B$b4JC1$G$9(B)$B!#JQ?t$r$l$N%0%k!<%WL>$N%j%9%H$OIaDL$N(B Lisp $B$N(B list $B$G$9!#(B +@code{spam-process-destination} $B%Q(B +$B%i%a!<%?$,@_Dj$5$l$F$$$J$$$H!"(Bspam $B5-;v$OC1$K4|8B@Z$l>C5n$5$l$^$9!#%0%k!<(B +$B%WL>$O40A47A$G$"$k$3$H!"$9$J$o$A%0%k!<%W%P%C%U%!$G%0%k!<%WL>$NA0(B +$B$K(B @samp{nntp:servername} $B$N$h$&$J$b$N$,8+$($k>l9g$O!"$3$3$G$b$=$l$r;H$&(B +$BI,MW$,$"$j$^$9!#(B + +Spam $B$,0\F0$G$-$J$$>l9g(B ($BNc$($P(B @acronym{NNTP} $B$N$h$&$JFI$_9~$_@lMQ%P%C(B +$B%/%(%s%I$G$"$k$?$a$K(B)$B!"$=$l$O%3%T!<$5$l$^$9!#(B $B%0%k!<%W$^$?$O@55,I=8=$4$H$KJ#?t$N0\F0@h$r;XDj$G$-$k$3$H$KCmL\$7$F2<$5$$(B! $B$3$l$K$h$C$F(B spam $B5-;v$r@55,$N%a!<%k%0%k!<%W(B @@ -22043,16 +22139,16 @@ Ham $B$H(B spam $B$K4X$9$kLdBj$O!"(BGnus $B$,%G%#%U%)%k%H$G$O$3$N=hM}$rDI@W @vindex spam-mark-only-unseen-as-spam Spam $B%0%k!<%W$K$"$k!"$^$@FI$^$l$?$3$H$,L5$$5-;v$@$1$K(B spam $B$N0u$rIU$1$?(B $B$$>l9g$O!"$3$NJQ?t$r%;%C%H$7$F2<$5$$!#%G%#%U%)%k%H$G$O%;%C%H$5$l$F$$$^$9!#(B -$B$3$l$r(B nil $B$K$9$k$H!"L$FI$N5-;v$K$b(B spam $B0u$,IU$1$i$l$^$9!#(B +$B$3$l$r(B @code{nil} $B$K$9$k$H!"L$FI$N5-;v$K$b(B spam $B0u$,IU$1$i$l$^$9!#(B @vindex spam-mark-ham-unread-before-move-from-spam-group Ham $B$,(B spam $B%0%k!<%W$+$i0\F0$5$l$kA0$K0u$r>C$7$?$$>l9g$O!"$3$NJQ?t$r%;%C(B $B%H$7$F2<$5$$!#$3$l$O(B ham $B$K0u$rIU$1$k$?$a$K2D;k(B (tick) $B0u$N$h$&$J$b$N$r(B $B;H$&>l9g$K!"$H$F$bLr$KN)$A$^$9!#5-;v$O$"$?$+$b$=$l$,%a!<%k%5!<%P$r=P$?$P(B -$B$+$j$N$h$&$K!"L50u$G(B ham $B=hM}>l$KCV$+$l$k$G$7$g$&!#(B +$B$+$j$N$h$&$K!"L50u$G(B @code{ham-process-destination} $B$KCV$+$l$k$G$7$g$&!#(B @vindex spam-autodetect-recheck-messages -$B$3$NJQ?t$O(B @code{spam.el} $B$,(B spam $B$N<+F08!CN$r9T$J$&>l9g$K!"$^$@FI$^$l$?(B +$B$3$NJQ?t$O(B @code{spam.el} $B$,(B spam $B$N<+F08!=P$r9T$J$&>l9g$K!"$^$@FI$^$l$?(B $B$3$H$,L5$$5-;v$@$1!"$^$?$O$9$Y$F$NL$FI5-;v$N(B spam $B8!::$r9T$J$&$+$I$&$+$r(B $B;X<($7$^$9!#$3$l$O$=$N$^$^$K$7$F$*$/$3$H$r4+$a$^$9!#(B @@ -22063,105 +22159,107 @@ Ham $B$,(B spam $B%0%k!<%W$+$i0\F0$5$l$kA0$K0u$r>C$7$?$$>l9g$O!"$3$NJQ?t$r%;% @cindex spam configuration examples @cindex spam -@subsubheading Ted's setup +@subsubheading Ted $B$N@_Dj(B From Ted Zlatanov . @example -;; for gnus-registry-split-fancy-with-parent and spam autodetection -;; see gnus-registry.el for more information +;; @r{@code{gnus-registry-split-fancy-with-parent} $B$H(B spam $B$N<+F08!=P$N$?$a!#(B} +;; @r{$B>\:Y$O(B @file{gnus-registry.el} $B$r;2>H!#(B} (gnus-registry-initialize) (spam-initialize) -;; I like control-S for marking spam +;; @r{$B;d$O(B spam $B0u$rIU$1$k$N$K(B @kbd{C-s} $B$r9%$`!#(B} (define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam) (setq - spam-log-to-registry t ;; for spam autodetection + spam-log-to-registry t ;; @r{Spam $B$N<+F08!=P$N$?$a!#(B} spam-use-BBDB t - spam-use-regex-headers t ; catch X-Spam-Flag (SpamAssassin) - ;; all groups with "spam" in the name contain spam + spam-use-regex-headers t ;; @r{X-Spam-Flag (SpamAssassin) $B$r$D$+$^$($k!#(B} + ;; @r{$BL>A0$K(B @samp{spam} $B$r4^$`$9$Y$F$N%0%k!<%W$K$O(B spam $B5-;v$,$"$k!#(B} gnus-spam-newsgroup-contents '(("spam" gnus-group-spam-classification-spam)) - ;; see documentation for these + ;; @r{$B$3$l$i$N(B docstring $B$r;2>H!#(B} spam-move-spam-nonspam-groups-only nil spam-mark-only-unseen-as-spam t spam-mark-ham-unread-before-move-from-spam-group t nnimap-split-rule 'nnimap-split-fancy - ;; understand what this does before you copy it to your own setup! + ;; @{$B$"$J$?$N@_Dj$KDI2C$9$kA0$K!"$3$l$,2?$r$9$k$+M}2r$;$h(B!} nnimap-split-fancy '(| - ;; trace references to parents and put in their group + ;; @r{References $B$r?F$^$GC)$C$F$=$l$i$N%0%k!<%W$rF~$l$k!#(B} (: gnus-registry-split-fancy-with-parent) - ;; this will catch server-side SpamAssassin tags + ;; @r{$B$3$l$O%5!<%P!e$G!";d$O(B SpamAssassin $B$,(B spam $B$rG'<1$9$k(B} +;; @r{$B%H%l!<%K%s%0$N$?$a$K(B @samp{train} $B%0%k!<%W$r!"(Bham $B$rG'<1$9$k%H%l!<(B} +;; @r{$B%K%s%0$N$?$a$K(B @samp{trainham} $B%0%k!<%W$r;H$$$^$9!#$G$b(B Gnus $B$O$=$&(B} +;; @r{$B$$$&$3$H$O$d$C$F$/$l$^$;$s!#(B} @end example -@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server - +@subsubheading $B%5!<%P!<>e$N(B IMAP $B%5!<%P!<$G!"E}7WE*$J_I2a4o$H(B @file{spam.el} $B$r;H$&(B From Reiner Steib . -My provider has set up bogofilter (in combination with @acronym{DCC}) on -the mail server (@acronym{IMAP}). Recognized spam goes to -@samp{spam.detected}, the rest goes through the normal filter rules, -i.e. to @samp{some.folder} or to @samp{INBOX}. Training on false -positives or negatives is done by copying or moving the article to -@samp{training.ham} or @samp{training.spam} respectively. A cron job on -the server feeds those to bogofilter with the suitable ham or spam -options and deletes them from the @samp{training.ham} and -@samp{training.spam} folders. +$B;d$N%W%m%P%$%@$O(B (@acronym{IMAP}) $B%a!<%k%5!<%P!<>e$G(B (@acronym{DCC} $B$HO"(B +$B78$7$?(B) bogofilter $B$r2TF/$5$;$F$$$^$9!#G'<1$5$l(B +$B$?(B spam $B$O(B @samp{spam.detected} $B$X9T$-!";D$j$K$ODL>o$N_I2a5,B'$,E,MQ$5$l(B +$B$k!"(B $B$9$J$o$A(B @samp{some.folder} $B$+(B @samp{INBOX} $B$K9T$-$^$9!#9NDj$N<:GT(B +$B$"$k$$$OH]Dj$N%H%l!<%K%s%0$O!"(B@samp{training.ham} $B$^$?(B +$B$O(B @samp{training.spam} $B$=$l$>$l$K5-;v$r%3%T!<$9$k$+0\F0$5$;$k$3$H$K$h$C(B +$B$F9T$J$o$l$^$9!#%5!<%P!<>e$N(B cron $B%8%g%V$,!"$=$l$i$rE,@Z$J(B ham $B$^$?(B +$B$O(B spam $B%*%W%7%g%s$H$H$b$K(B bogofilter $B$KM?$(!"(B@samp{training.ham} $B$*$h(B +$B$S(B @samp{training.spam} $B%U%)%k%@$+$i$=$l$i$r:o=|$7$^$9!#(B -With the following entries in @code{gnus-parameters}, @code{spam.el} -does most of the job for me: +$B0J2<$N(B @code{gnus-parameters} $B$N9`$K$h$C$F!"(B@code{spam.el} $B$O$[$H$s$I$N(B +$B;E;v$r;d$N$?$a$K$3$J$7$^$9(B: @lisp ("nnimap:spam\\.detected" @@ -22173,55 +22271,56 @@ does most of the job for me: (spam-contents gnus-group-spam-classification-ham)) @end lisp -@itemize +@itemize @item @b{The Spam folder:} -In the folder @samp{spam.detected}, I have to check for false positives -(i.e. legitimate mails, that were wrongly judged as spam by -bogofilter or DCC). - -Because of the @code{gnus-group-spam-classification-spam} entry, all -messages are marked as spam (with @code{$}). When I find a false -positive, I mark the message with some other ham mark (@code{ham-marks}, -@ref{Spam ELisp Package Global Variables}). On group exit, those -messages are copied to both groups, @samp{INBOX} (were I want to have -the article) and @samp{training.ham} (for training bogofilter) and -deleted from the @samp{spam.detected} folder. - -The @code{gnus-article-sort-by-chars} entry simplifies detection of -false positives for me. I receive lots of worms (sweN, @dots{}), that all -have a similar size. Grouping them by size (i.e. chars) makes finding -other false positives easier. (Of course worms aren't @i{spam} -(@acronym{UCE}, @acronym{UBE}) strictly speaking. Anyhow, bogofilter is -an excellent tool for filtering those unwanted mails for me.) +@samp{spam.detected} $B%U%)%k%@$K$*$$$F!";d$O9NDj$N<:GT(B ($B$9$J$o$A!"(B +bogofilter $B$+(B DCC $B$,(B spam $B$G$"$k$H8m$C$FH=Dj$7$?@5Ev$J%a!<%k(B) $B$N%A%'%C%/(B +$B$r$7$J$1$l$P$J$j$^$;$s!#(B + +@code{gnus-group-spam-classification-spam} $B$N9`$N$?$a$K!"$9$Y$F$N%a%C%;!<(B +$B%8$K$O(B spam $B$N0u(B (@code{$}) $B$,IU$1$i$l$^$9!#9NDj$K<:GT$7$?$b$N$r8+$D$1$?(B +$B$i!";d$O5-;v$K$$$/$D$+$NB>$N(B ham $B0u(B (@code{ham-marks}, @ref{Spam ELisp +Package Global Variables}) $B$rIU$1$^$9!#%0%k!<%W$r=P$k$H$-!"$=$l$i$N5-;v(B +$B$O(B @samp{INBOX} ($B;d$,5-;v$rCV$$$F$*$-$?$$$H$3(B +$B$m(B) $B$H(B @samp{training.ham} (bogofilter $B$N%H%l!<%K%s%0MQ(B) $B$NN>J}$N%0%k!<(B +$B%W$K%3%T!<$5$l!"(B@samp{spam.detected} $B%U%)%k%@$+$i:o=|$5$l$^$9!#(B + +@code{gnus-article-sort-by-chars} $B$N9`$O!";d$N<:GT$7$?9NDj$N8!=P$rC1=c$K(B +$B$7$^$9!#;d$O!"$9$Y$F;w$?%5%$%:$N!"$?$/$5$s$N%o!<%`(B (sweN, @dots{}) $B$r$N4V0c$C$?9NDj(B +$B$r8+$D$1$d$9$/$J$k$N$G$9!#(B($B$b$A$m$s87L)$K$O%o!<%`$O(B @i{spam} +(@acronym{UCE}, @acronym{UBE}) $B$G$O$"$j$^$;$s!#$H$b$"$l!"$=$l$i$NMW$i$J(B +$B$$%a!<%k$r_I2a$9$k$N$K(B bogofilter $B$O;d$K$H$C$FM%=($JF;6q$G$9!#(B) @item @b{Ham folders:} -In my ham folders, I just hit @kbd{S x} -(@code{gnus-summary-mark-as-spam}) whenever I see an unrecognized spam -mail (false negative). On group exit, those messages are moved to -@samp{training.ham}. +$B;d$N(B ham $B%U%)%k%@$G!"G'<1$5$l$J$+$C$?(B spam $B%a!<%k(B ($BH]Dj$N<:GT(B) $B$r8+$?$H(B +$B$-$O$$$D$G$b!";d$OC1$K(B @kbd{S x} (@code{gnus-summary-mark-as-spam}) $B$rC!(B +$B$-$^$9!#%0%k!<%W$r=P$k$H$-!"$=$l$i$N%a%C%;!<%8$O(B @samp{training.ham} $B$K(B +$B0\$5$l$^$9!#(B @end itemize -@subsubheading Reporting spam articles in Gmane groups with @code{spam-report.el} +@subsubheading @code{spam-report.el} $B$G(B Gmane $B%0%k!<%W$N(B spam $B$rJs9p$9$k(B From Reiner Steib . -With following entry in @code{gnus-parameters}, @kbd{S x} -(@code{gnus-summary-mark-as-spam}) marks articles in @code{gmane.*} -groups as spam and reports the to Gmane at group exit: +$B0J2<$N(B @code{gnus-parameters} $B$KG<$a$?9`L\$K$h$C$F!"(B@kbd{S x} +(@code{gnus-summary-mark-as-spam}) $B$G(B @code{gmane.*} $B%0%k!<%W$N(B spam $B5-(B +$B;v$K0u$rIU$1!"%0%k!<%W$r=P$k$H$-$K(B Gmane $B$KJs9p$7$^$9(B: @lisp ("^gmane\\." (spam-process (gnus-group-spam-exit-processor-report-gmane))) @end lisp -Additionally, I use `(setq spam-report-gmane-use-article-number nil)' -because I don't read the groups directly from news.gmane.org, but -through my local news server (leafnode). I.e. the article numbers are -not the same as on news.gmane.org, thus @code{spam-report.el} has to check -the @code{X-Report-Spam} header to find the correct number. +$B2C$($F!";d$O(B news.gmane.org $B$+$i$G$O$J$/%m!<%+%k%K%e!<%9%5!<(B +$B%P!<(B (leafnode) $B$rDL$7$F5-;v$rFI$s$G$$$k$N$G!"(B +@code{(setq spam-report-gmane-use-article-number nil)} $B$r;H$C$F$$$^$9!#(B +$B$D$^$j!"5-;vHV9f$,(B news.gmane.org $B$K$*$1$k$b$N$H0[$J$k$N$G!"@5$7$$5-;vHV(B +$B9f$r8+$D$1$k$?$a$K(B @code{spam-report.el} $B$K(B @code{X-Report-Spam} $B%X%C%@!<(B +$B$r8!::$5$;$J$1$l$P$J$j$^$;$s!#(B @node Blacklists and Whitelists @subsubsection $B%V%i%C%/%j%9%H$H%[%o%$%H%j%9%H(B @@ -22279,9 +22378,7 @@ the @code{X-Report-Spam} header to find the correct number. $B$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($k$+!"$^$?(B $B$O(B @code{gnus-spam-process-newsgroups} $BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k(B $B$,%0%k!<%W$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($i$l$k$H!"(Bham $B0u$,IU$$(B -$B$?(B @emph{ham} $B%0%k!<%W$N5-;v$NAw?.l9g!"(BBogofilter $B$N $B$O(B @code{gnus-spam-process-newsgroups} $BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k(B $B$,%0%k!<%W$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($i$l$k$H!"(Bham $B0u$,IU$$(B $B$?(B @emph{ham} $B%0%k!<%W$N5-;v$,Hs(B-spam $B5-;vMQ$N(B Bogofilter $B%G!<%?%Y!<%9$K(B -$BDI2C$5$l$^$9!#$3$N(B ham $B%W%m%;%C%5!<$O(B @emph{spam} $B$+(B @emph{$BL$J,N`(B} $B%0%k!<(B -$B%W$K$O8z2L$r5Z$\$5$J$$$3$H$KCm0U$7$F2<$5$$!#(B +$BDI2C$5$l$^$9!#(B @emph{$B7Y9p(B} @@ -22577,6 +22671,59 @@ Bogofilter $B$N%a!<%kJ,N`4o$O!"0U?^$HL\E*$NE@$G(B @command{ifile} $B$K;w$F$$$ $B$S(B @code{spam-use-bogofilter-headers} $BJQ?t$,Ds6!$5$l$^$9!#$3$N5!G=$r8!::(B $B$9$k$?$a$K(B Bogofilter $B$N%P!<%8%g%s(B 0.9.2.1 $B$,;H$o$l$^$7$?!#(B +@node SpamAssassin backend +@subsubsection SpamAssassin backend +@cindex spam filtering +@cindex spamassassin, spam filtering +@cindex spam + +@defvar spam-use-spamassassin + +@code{spam-split} $B$K(B SpamAssassin $B$r;H$$$?$$>l9g$O!"$3$NJQ?t$r%;%C%H$7$F(B +$B2<$5$$!#(B + +SpamAssassin $B$O!"%Y%$%8%"%s%U%#%k%?$rFbJq$9$k5,B'$HJ,@O$N%;%C%H$K4p$E$$(B +$B$F!"$=$l$>$l$N5-;v$N%9%3%"$r:[Dj$7$^$9!#%Y%$%8%"%s%U%#%k%?$O!"(Bspam $B5-;v(B +$B$N(B @samp{$} $B0u$r4XO"$5$;$k$3$H$K$h$j71N}$9$k$3$H$,$G$-$^$9!#(BSpam $B$N%9%3(B +$B%"$O!"35N,%b!<%I$G(B @kbd{S t} $B%3%^%s%I$r;H$&$3$H$K$h$C$F8+$k$3$H$,$G$-$^(B +$B$9!#(B + +$B$3$NJQ?t$r%;%C%H$9$k$H!"$=$l$>$l$N5-;v$O(B @code{spam-split} $B$,8F$P$l$k$H(B +$B$-$K(B SpamAssassin $B$K$h$C$F=hM}$5$l$^$9!#%a!<%k$,(B SpamAssassin $B$G=hM}$5$l(B +$B$k$h$&$K$J$C$F$$$k>l9g$K!"C1$K(B SpamAssassin $B%X%C%@!<$r;H$$$?$$$N$J$i$P!"(B +$BBe$o$j$K(B @code{spam-use-spamassassin-headers} $B$r%;%C%H$7$F2<$5$$!#(B + +@code{spam-use-spamassassin-headers} $B$r;H$&>l9g!"$3$l$rM-8z$K$7$F$O$$$1(B +$B$^$;$s!#(B + +@end defvar + +@defvar spam-use-spamassassin-headers + +$B%a!<%k$,(B SpamAssassin $B$G=hM}$5$l$k$h$&$K$J$C$F$$$k>l9g$K!"(B +SpamAssassin $B%X%C%@!<$K4p$E$$$F(B @code{spam-split} $B$KJ,3d$r9T$J$o$;$?$$$N(B +$B$J$i$P!"$3$NJQ?t$r%;%C%H$7$F2<$5$$!#(B + +@code{spam-use-spamassassin} $B$r;H$&>l9g!"$3$l$rM-8z$K$7$F$O$$$1$^$;$s!#(B + +@end defvar + +@defvar spam-spamassassin-path + +$B$3$NJQ?t$O(B SpamAssassin $B$NpJs$O!"(B +SpamAssassin $B$N%I%-%e%a%s%H$r8+$F2<$5$$!#(B + +@end defvar + +SpamAssassin $B$O!"(Bspam $B$rF1Dj$9$k$?$a$K9-HO$JJ,@O$r9T$J$&!"6/NO$GM;DL@-$N(B +$B$"$k(B spam $B_I2a4o$G$9!#(BSpamAssassin $B$,Ds6!$9$k(B ham $B$H(B spam $B$N%W%m%;%C%5!<(B +$B$r;H$&$+!"$"$k$$$O4{$K$=$l$i$,5-;v$KE,MQ:Q$_$+$I$&$+$r!"(B +@code{spam-use-spamassassin} $B$H(B @code{spam-use-spamassassin-headers} $BJQ(B +$B?t$G(B @code{spam-split} $B$K;X<($7$^$9!#$3$N5!G=$r8!::$9$k$?$a(B +$B$K(B SpamAssassin $B$N%P!<%8%g%s(B 2.63 $B$,;H$o$l$^$7$?!#(B + @node ifile spam filtering @subsubsection ifile $B$K$h$k(B spam $B$N_I2a(B @cindex spam filtering @@ -22655,8 +22802,7 @@ Emacs Lisp $B$K$h$kE}7WJ,@O4o$G$"$k(B spam-stat.el $B$r(B @code{spam-split} $B$O(B @code{gnus-spam-process-newsgroups} $BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k(B $B$,%0%k!<%W$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($i$l$k$H!"(Bham $B0u$,IU$$(B $B$?(B @emph{ham} $B%0%k!<%W$N5-;v$,Hs(B-spam $B5-;vMQ$N(B spam-stat $B%G!<%?%Y!<%9$K(B -$BDI2C$5$l$^$9!#$3$N(B ham $B%W%m%;%C%5!<$O(B @emph{spam} $B$+(B @emph{$BL$J,N`(B} $B%0%k!<(B -$B%W$K$O8z2L$r5Z$\$5$J$$$3$H$KCm0U$7$F2<$5$$!#(B +$BDI2C$5$l$^$9!#(B @emph{$B7Y9p(B} @@ -22761,9 +22907,7 @@ Package}. $B$O(B @code{gnus-spam-process-newsgroups} $BJQ?t$K2C$($F2<$5$$!#$3$N%7%s%\%k(B $B$,%0%k!<%W$N(B @code{spam-process} $B%Q%i%a!<%?$K2C$($i$l$k$H!"(B@emph{ham} $B%0(B $B%k!<%W$K$"$k(B ham $B0u$,IU$$$?5-;v$,(B ham $B$N5-;v$N%5%s%W%k$H$7(B -$B$F(B SpamOracle $B$KAw$i$l$^$9!#$3$N(B ham $B%W%m%;%C%5!<(B -$B$O(B @emph{spam} $B$+(B @emph{$BL$J,N`(B} $B%0%k!<%W$K$O8z2L$r5Z$\$5$J$$$3$H$KCm0U$7(B -$B$F2<$5$$!#(B +$B$F(B SpamOracle $B$KAw$i$l$^$9!#(B @emph{$B7Y9p(B} @@ -22809,25 +22953,25 @@ Package}. @code{spam-list-of-checks} $B$K(B -@example - (spam-use-blackbox . spam-check-blackbox) -@end example +@lisp +(spam-use-blackbox . spam-check-blackbox) +@end lisp $B$rDI2C!#(B@code{spam-list-of-processors} $B$K(B -@example - (gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) - (gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) -@end example +@lisp +(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) +(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) +@end lisp $B$rDI2C!#(B@code{spam-registration-functions} $B$K(B -@example - (spam-use-blackbox spam-blackbox-register-routine - nil - spam-blackbox-unregister-routine - nil) -@end example +@lisp +(spam-use-blackbox spam-blackbox-register-routine + nil + spam-blackbox-unregister-routine + nil) +@end lisp $B$rDI2C!#(B @@ -22881,19 +23025,19 @@ Gnus $B$N%Q%i%a!<%?(B @code{gnus.el} $B$K$"$k%0%k!<%W%Q%i%a!<%?(B @code{spam-process} $B$K(B -@example - (const :tag "Spam: Blackbox" (spam spam-use-blackbox)) - (const :tag "Ham: Blackbox" (ham spam-use-blackbox)) -@end example +@lisp +(const :tag "Spam: Blackbox" (spam spam-use-blackbox)) +(const :tag "Ham: Blackbox" (ham spam-use-blackbox)) +@end lisp $B$r2C$($F2<$5$$!#$=$l$r%Q%i%a!<%?$HJQ?t$N%+%9%?%^%$%:$NFs2s$K$D$$$F9T$J$&(B $B$3$H$r3N$+$a$F2<$5$$!#(B @code{gnus.el} $B$N%0%k!<%W%Q%i%a!<%?(B @code{spam-autodetect-methods} $B$K(B -@example - (variable-item spam-use-blackbox) -@end example +@lisp +(variable-item spam-use-blackbox) +@end lisp $B$r2C$($F2<$5$$!#(B @@ -23668,10 +23812,10 @@ T-gnus $B$O0J2<$N$b$N$GF0:n$7$^$9(B: @itemize @bullet @item -Emacs 19.34 $B$H$=$l0J>e$N(B Mule $B5!G=IU$-!#(B +Emacs 21.1 $B$H$=$l0J>e!#(B @item -XEmacs 21.1.1 $B0J>e$N(B Mule $B5!G=IU$-(B +XEmacs 21.4 $B0J>e$N(B Mule $B5!G=IU$-(B @item Meadow 1.00 $B0J>e!#(B(Mule for Windows $B$G$OF0$-$^$;$s!#(B) @@ -23773,8 +23917,7 @@ Wes Hardaker---@file{gnus-picon.el} $B$H(B @dfn{picon} $B$NItJ,$N%^%K%e%"(B Kim-Minh Kaplan---picon $B%3!<%I$KCV$1$k99$J$k:n6H!#(B @item -Brad Miller---@file{gnus-gl.el} $B$H(B Grouplens $B$NItJ,$N%^%K%e%"(B -$B%k(B (@pxref{GroupLens})$B!#(B +Brad Miller---@file{gnus-gl.el} $B$H(B Grouplens $B$NItJ,$N%^%K%e%"%k!#(B @item Sudish Joseph---$B?t$(@Z$l$J$$$[$I$N%P%0$N=$@5!#(B @@ -23806,7 +23949,7 @@ Hallvard B Furuseth---$B$$$m$$$m$J>.$5$JJ*$dItJ,!"FC$K(B .newsrc $B%U%!%$%k$r $B07$&ItJ,!#(B @item -Brian Edmonds---@file{gnus-bbdbb.el}$B!#(B +Brian Edmonds---@file{gnus-bbdb.el}$B!#(B @item David Moore--@file{nnvirtual.el} $B$N2~D{$HB?$/$NB>$N;v!#(B @@ -24061,6 +24204,7 @@ Lloyd Zusman. * Quassia Gnus:: 2 $B$+$1$k(B 2 $B$O(B 4$B!"$b$7$/$O(B Gnus 5.6/5.7 * Pterodactyl Gnus:: $B8^HVL\!"(BP $B$G;O$^$k!"$b$7$/$O(B Gnus 5.8/5.9 $B$H$7$FCN$i$l$F$$$k$b$N(B * Oort Gnus:: $B5pBg$J!#1s$/MZ$+$J!#(BGnus 5.10$B!#(B +* No Gnus:: Lars $B$5$s!"D>$7$F(B! @end menu $B$3$N%j%9%H$O!"$b$A$m$s!"(B@emph{$B$?$$$F$$$N(B} $B=EMW$J?7$7$$5!G=$K4X$9(B @@ -24215,8 +24359,7 @@ Gnus $B$O(B @dfn{$B$^$P$i(B} $B%9%l%C%I$r:n@.$9$k;v$,$G$-$k$h$&$K$J$j$^$7$? $B5-;v$,;2>H$5$l$?$H$-$K!"%9%l%C%I$NItJ,:n@.$,5/$3$k$h$&$K$J$j$^$7$?!#(B @item -Gnus $B$O(B GroupLens $B$NM=8@$r;H$&;v$,$G$-$k$h$&$K$J$j$^$7(B -$B$?(B (@pxref{GroupLens})$B!#(B +Gnus $B$O(B GroupLens $B$NM=8@$r;H$&;v$,$G$-$k$h$&$K$J$j$^$7$?!#(B @item Picons (personal icons) ($B8D?M%"%$%3%s(B) $B$,(B XEmacs $B$GI=<($G$-$k$h$&$K$J$j(B @@ -25364,6 +25507,15 @@ C-m} $B$KJQ$o$j$^$7$?!#(B $B$k$H$-$O(B @acronym{MML} $B$O;H$o$l$^$;$s!#(B @end itemize +@node No Gnus +@subsubsection No Gnus +@cindex No Gnus + +No Gnus $B$N?7$7$$5!G=(B: +@c FIXME: Gnus 5.12? + +@include gnus-news.texi + @iftex @page @@ -25774,6 +25926,11 @@ Gnus $B$,>o$K35N,%P%C%U%!$rCf?4:F@_Dj$r$9$k$3$H$r6X;_$9$k$?$a$K$3$l(B $B$K(B @code{gnus-show-threads} $B$H(B @code{gnus-use-cross-reference}$B!"$=$l(B $B$K(B @code{gnus-nov-is-evil} $B$r(B @code{nil} $B$K@_Dj$7$F2<$5$$!#(B +Gnus $B$O(B @code{X-Face} $B%X%C%@!<$r%G%3!<%I$9$k$?$a$K!"DL>o(B Emacs $B$G(B +$B$O(B ELisp $B$G=q$+$l$?FbIt(B @code{uncompface} $B%W%m%0%i%`$r;H$$$^$9!#$=$l$,CY(B +$B$/46$8$k>l9g$O!"(B@code{uncompface-use-external} $B$r(B @code{t} $B$K@_Dj$7$F2<(B +$B$5$$!#(B@xref{X-Face}. + @page @node Troubleshooting @section $BLdBj2r7h(B diff --git a/texi/gnus-news.el b/texi/gnus-news.el new file mode 100644 index 0000000..67c101f --- /dev/null +++ b/texi/gnus-news.el @@ -0,0 +1,109 @@ +;;; gnus-news.el --- a hack to create GNUS-NEWS from texinfo source +;; Copyright (C) 2004 Free Software Foundation, Inc. + +;; Author: Reiner Steib +;; Keywords: tools + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;;; Code: + +(defvar gnus-news-header-disclaimer +"GNUS NEWS -- history of user-visible changes. +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +See the end for copying conditions. + +Please send Gnus bug reports to bugs\@gnus.org. + + +* Changes in No Gnus + +") + +(defvar gnus-news-trailer +" +* For older news, see Gnus info node \"New Features\". + +---------------------------------------------------------------------- +Copyright information: + +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim copies + of this document as received, in any medium, provided that the + copyright notice and this permission notice are preserved, + thus giving the recipient permission to redistribute in turn. + + Permission is granted to distribute modified versions + of this document, or of portions of it, + under the above conditions, provided also that they + carry prominent notices stating who last changed them. + \nLocal variables:\nmode: outline +paragraph-separate: \"[ ]*$\"\nend:\n") + +(defvar gnus-news-makeinfo-command "makeinfo") + +(defvar gnus-news-fill-column 72) + +(defvar gnus-news-makeinfo-switches + (concat " --no-headers --paragraph-indent=0" + " --fill-column=" (number-to-string + (+ 3 ;; will strip leading spaces later + (or gnus-news-fill-column 80))))) + +(defun batch-gnus-news () + "Make GNUS-NEWS in batch mode." + (let (infile outfile) + (setq infile (car command-line-args-left) + command-line-args-left (cdr command-line-args-left) + outfile (car command-line-args-left) + command-line-args-left nil) + (if (and infile outfile) + (message "Creating `%s' from `%s'..." outfile infile) + (error "Not enough files given.")) + (gnus-news-translate-file infile outfile))) + +(defun gnus-news-translate-file (infile outfile) + "Translate INFILE (texinfo) to OUTFILE (GNUS-NEWS)." + (let* ((dir (concat (or (getenv "srcdir") ".") "/")) + (infile (concat dir infile)) + (buffer (find-file-noselect (concat dir outfile)))) + (with-temp-buffer + ;; Could be done using `texinfmt' stuff as in `infohack.el'. + (insert + (shell-command-to-string + (concat gnus-news-makeinfo-command " " + gnus-news-makeinfo-switches " " infile))) + (goto-char (point-max)) + (delete-char -1) + (goto-char (point-min)) + (save-excursion + (while (re-search-forward "^ \\* " nil t) + (replace-match "** "))) + (save-excursion + (while (re-search-forward "^ " nil t) + (replace-match ""))) + (goto-char (point-min)) + (insert gnus-news-header-disclaimer) + (goto-char (point-max)) + (insert gnus-news-trailer) + (write-region (point-min) (point-max) outfile)))) + +;;; gnus-news.el ends here diff --git a/texi/gnus-news.texi b/texi/gnus-news.texi new file mode 100644 index 0000000..ccb8191 --- /dev/null +++ b/texi/gnus-news.texi @@ -0,0 +1,71 @@ +@c -*-texinfo-*- + +@c Copyright (C) 2004 Free Software Foundation, Inc. + +@c Permission is granted to anyone to make or distribute verbatim copies +@c of this document as received, in any medium, provided that the +@c copyright notice and this permission notice are preserved, +@c thus giving the recipient permission to redistribute in turn. + +@c Permission is granted to distribute modified versions +@c of this document, or of portions of it, +@c under the above conditions, provided also that they +@c carry prominent notices stating who last changed them. + +This file contains a list of news features Gnus. It is supposed to be +included in `gnus.texi'. `GNUS-NEWS' is automatically generated from +this file (see `gnus-news.el'). + +@itemize @bullet + +@item +You can import and export your @acronym{RSS} subscriptions from +@acronym{OPML} files. @xref{RSS}. + +@item +The option @code{mm-fill-flowed} can be used to disable treatment of +format=flowed messages. Also, flowed text is disabled when sending +inline @acronym{PGP} signed messages. + +@item You can now drag and drop attachments to the Message buffer. + +@item @kbd{/ r} limits the summary buffer to replied articles. + +@item @acronym{ANSI} @acronym{SGR} control sequences can be transformed +using @kbd{W A}. + +@acronym{ANSI} sequences are used in some Chinese hierarchies for +highlighting articles (@code{gnus-article-treat-ansi-sequences}). + +@item Gnus includes an Emacs Lisp @acronym{SASL} library. + +This provide a clean @acronym{API} to @acronym{SASL} mechanisms from +within Emacs. The user visible aspects of this, compared to the earlier +situation, include support for @acronym{DIGEST}-@acronym{MD5} and +@acronym{NTLM}. + +@item ManageSieve connections uses the @acronym{SASL} library by default. + +The primary change this brings is support for @acronym{DIGEST-MD5} and +@acronym{NTLM}, when the server support it. + +@item Gnus include a password cache mechanism in password.el. + +It is enabled by default (see @code{password-cache}), with a short +timeout of 16 seconds (see @code{password-cache-expiry}). If +@acronym{PGG} is used as the @acronym{PGP} backend, the @acronym{PGP} +passphrase is managed by this mechanism. Passwords for ManageSieve +connections are managed by this mechanism, after quering the user about +whether to do so. + +@item @acronym{IMAP} identity (@acronym{RFC} 2971) is supported. + +By default, Gnus do not send any information about itself, but you can +customize it using @code{nnimap-id}. + +@item The @file{all.SCORE} file can now be edited from the group buffer +using @kbd{W e}. + +@end itemize + +@c gnus-news.texi ends here. diff --git a/texi/gnus.texi b/texi/gnus.texi index 47e77bb..3574a13 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -9,6 +9,7 @@ @direntry * Gnus: (gnus). The newsreader Gnus. @end direntry +@documentencoding ISO-8859-1 @iftex @finalout @end iftex @@ -330,7 +331,7 @@ license to the document, as described in section 6 of the license. This file documents gnus, the GNU Emacs newsreader. -Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -361,7 +362,7 @@ license to the document, as described in section 6 of the license. @vskip 0pt plus 1filll Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003 +2002, 2003, 2004 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -455,6 +456,7 @@ Other related manuals * Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts. * Sieve:(sieve). Managing Sieve scripts in Emacs. * PGG:(pgg). @acronym{PGP/MIME} with Gnus. +* SASL:(sasl). @acronym{SASL} authentication in Emacs. @detailmenu --- The Detailed Node Listing --- @@ -652,6 +654,7 @@ Composing Messages * Mail:: Mailing and replying. * Posting Server:: What server should you post and mail via? +* POP before SMTP:: You cannot send a mail unless you read a mail. * Mail and Post:: Mailing and posting at the same time. * Archived Messages:: Where Gnus stores the messages you've sent. * Posting Styles:: An easier way to specify who you are. @@ -809,17 +812,9 @@ Scoring * 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. -GroupLens - -* Using GroupLens:: How to make Gnus use GroupLens. -* Rating Articles:: Letting GroupLens know how you rate articles. -* Displaying Predictions:: Displaying predictions given by GroupLens. -* GroupLens Variables:: Customizing GroupLens. - Advanced Scoring * Advanced Scoring Syntax:: A definition. @@ -890,6 +885,7 @@ Filtering Spam Using The Spam ELisp Package * Blackholes:: * Regular Expressions Header Matching:: * Bogofilter:: +* SpamAssassin backend:: * ifile spam filtering:: * spam-stat spam filtering:: * SpamOracle:: @@ -933,6 +929,7 @@ New Features * Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. * Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. * Oort Gnus:: It's big. It's far out. Gnus 5.10. +* No Gnus:: Lars, FIXME! Customization @@ -1907,6 +1904,12 @@ the group lately. A string that says when you last read the group (@pxref{Group Timestamp}). +@item F +The disk space used by the articles fetched by both the cache and +agent. The value is automatically scaled to bytes(B), kilobytes(K), +megabytes(M), or gigabytes(G) to minimize the column width. A format +of %7F is sufficient for a fixed-width column. + @item u User defined specifier. The next character in the format string should be a letter. Gnus will call the function @@ -5406,6 +5409,13 @@ to the @code{root} account, you may want to resend it to This command understands the process/prefix convention (@pxref{Process/Prefix}). +@item S D e +@kindex S D e (Summary) +@findex gnus-summary-resend-message-edit + +Like the previous command, but will allow you to edit the message as +if it were a new message before resending. + @item S O m @kindex S O m (Summary) @findex gnus-summary-digest-mail-forward @@ -6345,6 +6355,13 @@ group parameter predicate (@code{gnus-summary-limit-to-display-predicate}). @xref{Group Parameters}, for more on this predicate. +@item / r +@kindex / r (Summary) +@findex gnus-summary-limit-to-replied +Limit the summary buffer to replied articles +(@code{gnus-summary-limit-to-replied}). If given a prefix, exclude +replied articles. + @item / E @itemx M S @kindex M S (Summary) @@ -8544,9 +8561,9 @@ CRs into LF (this takes care of Mac line endings) Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). Quoted-Printable is one common @acronym{MIME} encoding employed when sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically -makes strings like @samp{déjà vu} look like @samp{d=E9j=E0 vu}, which -doesn't look very readable to me. Note that this is usually done -automatically by Gnus if the message in question has a +makes strings like @samp{d@'ej@`a vu} look like @samp{d=E9j=E0 vu}, +which doesn't look very readable to me. Note that this is usually +done automatically by Gnus if the message in question has a @code{Content-Transfer-Encoding} header that says that this encoding has been done. If a prefix is given, a charset will be asked for. @@ -8567,6 +8584,14 @@ Treat HZ or HZP (@code{gnus-article-decode-HZ}). HZ (or HZP) is one common encoding employed when sending Chinese articles. It typically makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}. +@item W A +@kindex W A (Summary) +@findex gnus-article-treat-ansi-sequences +@cindex @acronym{ANSI} control sequences +Translate @acronym{ANSI} SGR control sequences into overlays or +extents (@code{gnus-article-treat-ansi-sequences}). @acronym{ANSI} +sequences are used in some Chinese hierarchies for highlighting. + @item W u @kindex W u (Summary) @findex gnus-article-unsplit-urls @@ -9456,6 +9481,10 @@ encode using quoted-printable) or @code{t} (always use 8bit). @cindex coding system aliases @cindex preferred charset +@xref{Encoding Customization, , Encoding Customization, emacs-mime, +The Emacs MIME Manual}, for additional variables that control which +MIME charsets are used when sending messages. + Other charset tricks that may be useful, although not Gnus-specific: If there are several @acronym{MIME} charsets that encode the same Emacs @@ -10168,11 +10197,19 @@ the list in one particular group: @vindex gnus-newsgroup-variables @item gnus-newsgroup-variables A list of newsgroup (summary buffer) local variables, or cons of -variables and their default values (when the default values are not -@code{nil}), that should be made global while the summary buffer is -active. These variables can be used to set variables in the group -parameters while still allowing them to affect operations done in -other buffers. For example: +variables and their default expressions to be evalled (when the default +values are not @code{nil}), that should be made global while the summary +buffer is active. + +Note: The default expressions will be evaluated (using function +@code{eval}) before assignment to the local variable rather than just +assigned to it. If the default expression is the symbol @code{global}, +that symbol will not be evaluated but the global value of the local +variable will be used instead. + +These variables can be used to set variables in the group parameters +while still allowing them to affect operations done in other +buffers. For example: @lisp (setq gnus-newsgroup-variables @@ -10181,6 +10218,7 @@ other buffers. For example: "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:"))) @end lisp +Also @pxref{Group Parameters}. @end table @@ -10716,7 +10754,7 @@ Send a message to the mailing list owner, if List-Owner field exists. @item C-c C-n a @kindex C-c C-n a (Summary) -@findex gnus-mailing-list-owner +@findex gnus-mailing-list-archive Browse the mailing list archive, if List-Archive field exists. @end table @@ -11066,6 +11104,7 @@ is controlled by @code{gnus-body-boundary-delimiter}. @item gnus-treat-play-sounds @item gnus-treat-translate +@item gnus-treat-ansi-sequences (t) @item gnus-treat-x-pgp-sig (head) @item gnus-treat-unfold-headers (head) @@ -11208,9 +11247,9 @@ no more new text to scroll in. The default is @code{nil}. @vindex gnus-article-mode-line-format @item gnus-article-mode-line-format This variable is a format string along the same lines as -@code{gnus-summary-mode-line-format} (@pxref{Mode Line Formatting}). It -accepts the same format specifications as that variable, with two -extensions: +@code{gnus-summary-mode-line-format} (@pxref{Summary Buffer Mode +Line}). It accepts the same format specifications as that variable, +with two extensions: @table @samp @@ -11297,6 +11336,7 @@ on your setup (@pxref{Posting Server}). @menu * Mail:: Mailing and replying. * Posting Server:: What server should you post and mail via? +* POP before SMTP:: You cannot send a mail unless you read a mail. * Mail and Post:: Mailing and posting at the same time. * Archived Messages:: Where Gnus stores the messages you've sent. * Posting Styles:: An easier way to specify who you are. @@ -11403,14 +11443,67 @@ package correctly. An example: @end lisp To the thing similar to this, there is -@code{message-smtpmail-send-it}. It is useful if your ISP requires -the @acronym{POP}-before-@acronym{SMTP} authentication. See the -documentation for the function @code{mail-source-touch-pop}. +@code{message-smtpmail-send-it}. It is useful if your @acronym{ISP} +requires the @acronym{POP}-before-@acronym{SMTP} authentication. +@xref{POP before SMTP}. Other possible choices for @code{message-send-mail-function} includes @code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail}, and @code{feedmail-send-it}. +@node POP before SMTP +@section POP before SMTP +@cindex pop before smtp +@findex message-smtpmail-send-it +@findex mail-source-touch-pop + +Does your @acronym{ISP} require the @acronym{POP}-before-@acronym{SMTP} +authentication? It is whether you need to connect to the @acronym{POP} +mail server within a certain time before sending mails. If so, there is +a convenient way. To do that, put the following lines in your +@file{~/.gnus.el} file: + +@lisp +(setq message-send-mail-function 'message-smtpmail-send-it) +(add-hook 'message-send-mail-hook 'mail-source-touch-pop) +@end lisp + +@noindent +It means to let Gnus connect to the @acronym{POP} mail server in advance +whenever you send a mail. The @code{mail-source-touch-pop} function +does only a @acronym{POP} authentication according to the value of +@code{mail-sources} without fetching mails, just before sending a mail. +Note that you have to use @code{message-smtpmail-send-it} which runs +@code{message-send-mail-hook} rather than @code{smtpmail-send-it} and +set the value of @code{mail-sources} for a @acronym{POP} connection +correctly. @xref{Mail Sources}. + +If you have two or more @acronym{POP} mail servers set in +@code{mail-sources}, you may want to specify one of them to +@code{mail-source-primary-source} as the @acronym{POP} mail server to be +used for the @acronym{POP}-before-@acronym{SMTP} authentication. If it +is your primary @acronym{POP} mail server (i.e., you are fetching mails +mainly from that server), you can set it permanently as follows: + +@lisp +(setq mail-source-primary-source + '(pop :server "pop3.mail.server" + :password "secret")) +@end lisp + +@noindent +Otherwise, bind it dynamically only when performing the +@acronym{POP}-before-@acronym{SMTP} authentication as follows: + +@lisp +(add-hook 'message-send-mail-hook + (lambda () + (let ((mail-source-primary-source + '(pop :server "pop3.mail.server" + :password "secret"))) + (mail-source-touch-pop)))) +@end lisp + @node Mail and Post @section Mail and Post @@ -12804,9 +12897,42 @@ the telnet command requires a pseudo-tty allocation on an intermediate host. @end table +Note that you may want to change the value for @code{nntp-end-of-line} +to @samp{\n} (@pxref{Common Variables}). + +@item nntp-open-via-rlogin-and-netcat +@findex nntp-open-via-rlogin-and-netcat +Does essentially the same, but uses @samp{netcat} +(@uref{http://netcat.sourceforge.net/}) instead of @samp{telnet} to +connect to the real @acronym{NNTP} server from the intermediate host. + +@code{nntp-open-via-rlogin-and-netcat}-specific variables: + +@table @code +@item nntp-via-netcat-command +@vindex nntp-via-netcat-command +Command used to connect to the real @acronym{NNTP} server from the +intermediate host. The default is @samp{nc}. You can also use other +programs like @samp{connect} +(@uref{http://www.imasy.or.jp/~gotoh/ssh/connect.html}) instead. + +@item nntp-via-netcat-switches +@vindex nntp-via-netcat-switches +List of strings to be used as the switches to the +@code{nntp-via-telnet-command} command. The default is @code{nil}. + +@item nntp-via-rlogin-command +Command used to log in on the intermediate host. The default is +@samp{rsh}, but @samp{ssh} is a popular alternative. + +@item nntp-via-rlogin-command-switches +List of strings to be used as the switches to +@code{nntp-via-rlogin-command}. The default is @code{nil}. +@end table + @item nntp-open-via-telnet-and-telnet @findex nntp-open-via-telnet-and-telnet -Does essentially the same, but uses @samp{telnet} instead of +Does essentially also the same, but uses @samp{telnet} instead of @samp{rlogin} to connect to the intermediate host. @code{nntp-open-via-telnet-and-telnet}-specific variables: @@ -12839,6 +12965,8 @@ is @samp{bash\\|\$ *\r?$\\|> *\r?}. @end table +Note that you may want to change the value for @code{nntp-end-of-line} +to @samp{\n} (@pxref{Common Variables}). @end table @@ -12891,7 +13019,7 @@ not work with named ports. @vindex nntp-end-of-line String to use as end-of-line marker when talking to the @acronym{NNTP} server. This is @samp{\r\n} by default, but should be @samp{\n} when -using a non native connection function. +using a non native telnet connection function. @item nntp-telnet-command @vindex nntp-telnet-command @@ -13977,8 +14105,8 @@ is run. That's why @code{(widen)} needs to be called after @code{save-excursion} and @code{save-restriction} in the example above. Also note that with the nnimap backend, message bodies will not be downloaded by default. You need to set -@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in -IMAP}). +@code{nnimap-split-download-body} to @code{t} to do that +(@pxref{Splitting in IMAP}). @item (! @var{func} @var{split}) If the split is a list, and the first element is @code{!}, then @@ -15560,7 +15688,7 @@ group as read. If the search engine changes its output substantially, @code{nnweb} won't be able to parse it and will fail. One could hardly fault the Web -providers if they were to do this---their @emph{raison d'être} is to +providers if they were to do this---their @emph{raison d'@^etre} is to make money off of advertisements, not to provide services to the community. Since @code{nnweb} washes the ads off all the articles, one might think that the providers might be somewhat miffed. We'll see. @@ -15789,6 +15917,21 @@ An easy way to get started with @code{nnrss} is to say something like the following in the group buffer: @kbd{B nnrss RET y}, then subscribe to groups. +@cindex OPML +You can also use the following commands to import and export your +subscriptions from a file in @acronym{OPML} format (Outline Processor +Markup Language). + +@defun nnrss-opml-import file +Prompt for an @acronym{OPML} file, and subscribe to each feed in the +file. +@end defun + +@defun nnrss-opml-export +Write your current @acronym{RSS} subscriptions to a buffer in +@acronym{OPML} format. +@end defun + The following @code{nnrss} variables can be altered: @table @code @@ -16519,7 +16662,7 @@ follows: This instructs the @code{imap.el} package to log any exchanges with the server. The log is stored in the buffer @samp{*imap-log*}. Look for error messages, which sometimes are tagged with the keyword -@code{BAD} - but when submitting a bug, make sure to include all the +@code{BAD}---but when submitting a bug, make sure to include all the data. @node Other Sources @@ -17416,7 +17559,8 @@ functionality up to the newsreader makes sense if you're the only person reading news on a machine. Setting up Gnus as an ``offline'' newsreader is quite simple. In -fact, you don't even have to configure anything. +fact, you don't have to configure anything as the agent is now enabled +by default (@pxref{Agent Variables, gnus-agent}). Of course, to use it as such, you have to learn a few new commands. @@ -17592,55 +17736,49 @@ listed below. @cindex Agent Parameters @table @code -@item gnus-agent-cat-name +@item agent-cat-name The name of the category. -@item gnus-agent-cat-groups +@item agent-groups The list of groups that are in this category. -@item gnus-agent-cat-predicate +@item agent-predicate A predicate which (generally) gives a rough outline of which articles are eligible for downloading; and -@item gnus-agent-cat-score-file +@item agent-score-file a score rule which (generally) gives you a finer granularity when deciding what articles to download. (Note that this @dfn{download score} is not necessarily related to normal scores.) -@item gnus-agent-cat-enable-expiration +@item agent-enable-expiration a boolean indicating whether the agent should expire old articles in this group. Most groups should be expired to conserve disk space. In fact, its probably safe to say that the gnus.* hierarchy contains the only groups that should not be expired. -@item gnus-agent-cat-days-until-old +@item agent-days-until-old an integer indicating the number of days that the agent should wait before deciding that a read article is safe to expire. -@item gnus-agent-cat-low-score +@item agent-low-score an integer that overrides the value of @code{gnus-agent-low-score}. -@item gnus-agent-cat-high-score +@item agent-high-score an integer that overrides the value of @code{gnus-agent-high-score}. -@item gnus-agent-cat-length-when-short +@item agent-length-when-short an integer that overrides the value of @code{gnus-agent-short-article}. -@item gnus-agent-cat-length-when-long +@item agent-length-when-long an integer that overrides the value of @code{gnus-agent-long-article}. -@c @item gnus-agent-cat-disable-undownloaded-faces -@c a symbol indicating whether the summary buffer should @emph{not} display -@c undownloaded articles using the gnus-summary-*-undownloaded-face -@c faces. The symbol nil will enable the use of undownloaded faces while -@c all other symbols disable them. - -@item gnus-agent-cat-enable-undownloaded-faces +@item agent-enable-undownloaded-faces a symbol indicating whether the summary buffer should display -undownloaded articles using the gnus-summary-*-undownloaded-face -faces. The symbol nil will disable the use of undownloaded faces while -all other symbols enable them. +undownloaded articles using the @code{gnus-summary-*-undownloaded-face} +faces. Any symbol other than @code{nil} will enable the use of +undownloaded faces. @end table The name of a category can not be changed once the category has been @@ -18223,21 +18361,28 @@ If you use the Agent as a cache (to avoid downloading the same article each time you visit it or to minimize your connection time), the undownloaded face will probably seem like a good idea. The reason being that you do all of our work (marking, reading, deleting) with -downloaded articles so the normal faces always appear. - -For occasional Agent users, the undownloaded faces may appear to be an -absolutely horrible idea. The issue being that, since most of their -articles have not been fetched into the Agent, most of the normal -faces will be obscured by the undownloaded faces. If this is your -situation, you have two choices available. First, you can completely -disable the undownload faces by customizing -@code{gnus-summary-highlight} to delete the three cons-cells that -refer to the @code{gnus-summary-*-undownloaded-face} faces. Second, if -you prefer to take a more fine-grained approach, you may set the -@code{agent-disable-undownloaded-faces} group parameter to t. This -parameter, like all other agent parameters, may be set on an Agent -Category (@pxref{Agent Categories}), a Group Topic (@pxref{Topic -Parameters}), or an individual group (@pxref{Group Parameters}). +downloaded articles so the normal faces always appear. For those +users using the agent to improve online performance by caching the NOV +database (most users since 5.10.2), the undownloaded faces may appear +to be an absolutely horrible idea. The issue being that, since none +of their articles have been fetched into the Agent, all of the +normal faces will be obscured by the undownloaded faces. + +If you would like to use the undownloaded faces, you must enable the +undownloaded faces by setting the @code{agent-enable-undownloaded-faces} +group parameter to t. This parameter, like all other agent +parameters, may be set on an Agent Category (@pxref{Agent +Categories}), a Group Topic (@pxref{Topic Parameters}), or an +individual group (@pxref{Group Parameters}). + +The one problem common to all users using the agent is how quickly it +can consume disk space. If you using the agent on many groups, it is +even more difficult to effectively recover disk space. One solution +is the @samp{%F} format available in @code{gnus-group-line-format}. +This format will display the actual disk space used by articles +fetched into both the agent and cache. By knowing which groups use +the most space, users know where to focus their efforts when ``agent +expiring'' articles. @node Agent as Cache @subsection Agent as Cache @@ -18389,21 +18534,40 @@ directory. It's emptied when you synchronize flags. @node Outgoing Messages @subsection Outgoing Messages -When Gnus is unplugged, all outgoing messages (both mail and news) are -stored in the draft group ``queue'' (@pxref{Drafts}). You can view -them there after posting, and edit them at will. +By default, when Gnus is unplugged, all outgoing messages (both mail +and news) are stored in the draft group ``queue'' (@pxref{Drafts}). +You can view them there after posting, and edit them at will. -When Gnus is plugged again, you can send the messages either from the -draft group with the special commands available there, or you can use -the @kbd{J S} command in the group buffer to send all the sendable -messages in the draft group. +You can control the circumstances under which outgoing mail is queued +(see @code{gnus-agent-queue-mail}, @pxref{Agent Variables}). Outgoing +news is always queued when Gnus is unplugged, and never otherwise. +You can send the messages either from the draft group with the special +commands available there, or you can use the @kbd{J S} command in the +group buffer to send all the sendable messages in the draft group. +Posting news will only work when Gnus is plugged, but you can send +mail at any time. +If sending mail while unplugged does not work for you and you worry +about hitting @kbd{J S} by accident when unplugged, you can have Gnus +ask you to confirm your action (see +@code{gnus-agent-prompt-send-queue}, @pxref{Agent Variables}). @node Agent Variables @subsection Agent Variables @table @code +@item gnus-agent +@vindex gnus-agent +Is the agent enabled? The default is @code{t}. When first enabled, +the agent will use @code{gnus-agent-auto-agentize-methods} to +automatically mark some backends as agentized. You may change which +backends are agentized using the agent commands in the server buffer. + +To enter the server buffer, use the @kbd{^} +(@code{gnus-group-enter-server-mode}) command in the group buffer. + + @item gnus-agent-directory @vindex gnus-agent-directory Where the Gnus Agent will store its files. The default is @@ -18498,6 +18662,19 @@ have not been fetched), @code{always-undownloaded} (maneuvering always ignores articles that have not been fetched), @code{unfetched} (maneuvering ignores articles whose headers have not been fetched). +@item gnus-agent-queue-mail +@vindex gnus-agent-queue-mail +When @code{gnus-agent-queue-mail} is @code{always}, Gnus will always +queue mail rather than sending it straight away. When @code{t}, Gnus +will queue mail when unplugged only. When @code{nil}, never queue +mail. The default is @code{t}. + +@item gnus-agent-prompt-send-queue +@vindex gnus-agent-prompt-send-queue +When @code{gnus-agent-prompt-send-queue} is non-@code{nil} Gnus will +prompt you to confirm that you really wish to proceed if you hit +@kbd{J S} while unplugged. The default is @code{nil}. + @item gnus-agent-auto-agentize-methods @vindex gnus-agent-auto-agentize-methods If you have never used the Agent before (or more technically, if @@ -18572,7 +18749,7 @@ following incantation: @example #!/bin/sh -emacs -batch -l ~/.emacs -f -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1 +emacs -batch -l ~/.emacs -l ~/.gnus.el gnus-agent-batch >/dev/null 2>&1 @end example @@ -18644,7 +18821,6 @@ silently to help keep the sizes of the score files down. * 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. @end menu @@ -18915,6 +19091,12 @@ There aren't many of these as yet, I'm afraid. @table @kbd +@item W e +@kindex W e (Group) +@findex gnus-score-edit-all-score +Edit the apply-to-all-groups all.SCORE file. You will be popped into +a @code{gnus-score-mode} buffer (@pxref{Score File Editing}). + @item W f @kindex W f (Group) @findex gnus-score-flush-cache @@ -20032,205 +20214,6 @@ hand. Or just let them be as they are. Gnus will still use them as before. -@node GroupLens -@section GroupLens -@cindex GroupLens - -@sc{Note:} Unfortunately the GroupLens system seems to have shut down, -so this section is mostly of historical interest. - -@uref{http://www.cs.umn.edu/Research/GroupLens/, GroupLens} is a -collaborative filtering system that helps you work together with other -people to find the quality news articles out of the huge volume of -news articles generated every day. - -To accomplish this the GroupLens system combines your opinions about -articles you have already read with the opinions of others who have done -likewise and gives you a personalized prediction for each unread news -article. Think of GroupLens as a matchmaker. GroupLens watches how you -rate articles, and finds other people that rate articles the same way. -Once it has found some people you agree with it tells you, in the form -of a prediction, what they thought of the article. You can use this -prediction to help you decide whether or not you want to read the -article. - -@menu -* Using GroupLens:: How to make Gnus use GroupLens. -* Rating Articles:: Letting GroupLens know how you rate articles. -* Displaying Predictions:: Displaying predictions given by GroupLens. -* GroupLens Variables:: Customizing GroupLens. -@end menu - - -@node Using GroupLens -@subsection Using GroupLens - -To use GroupLens you must register a pseudonym with your local -@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html, Better Bit -Bureau (BBB)} is the only better bit in town at the moment. - -Once you have registered you'll need to set a couple of variables. - -@table @code - -@item gnus-use-grouplens -@vindex gnus-use-grouplens -Setting this variable to a non-@code{nil} value will make Gnus hook into -all the relevant GroupLens functions. - -@item grouplens-pseudonym -@vindex grouplens-pseudonym -This variable should be set to the pseudonym you got when registering -with the Better Bit Bureau. - -@item grouplens-newsgroups -@vindex grouplens-newsgroups -A list of groups that you want to get GroupLens predictions for. - -@end table - -That's the minimum of what you need to get up and running with GroupLens. -Once you've registered, GroupLens will start giving you scores for -articles based on the average of what other people think. But, to get -the real benefit of GroupLens you need to start rating articles -yourself. Then the scores GroupLens gives you will be personalized for -you, based on how the people you usually agree with have already rated. - - -@node Rating Articles -@subsection Rating Articles - -In GroupLens, an article is rated on a scale from 1 to 5, inclusive. -Where 1 means something like this article is a waste of bandwidth and 5 -means that the article was really good. The basic question to ask -yourself is, ``on a scale from 1 to 5 would I like to see more articles -like this one?'' - -There are four ways to enter a rating for an article in GroupLens. - -@table @kbd - -@item r -@kindex r (GroupLens) -@findex bbb-summary-rate-article -This function will prompt you for a rating on a scale of one to five. - -@item k -@kindex k (GroupLens) -@findex grouplens-score-thread -This function will prompt you for a rating, and rate all the articles in -the thread. This is really useful for some of those long running giant -threads in rec.humor. - -@end table - -The next two commands, @kbd{n} and @kbd{,} take a numerical prefix to be -the score of the article you're reading. - -@table @kbd - -@item 1-5 n -@kindex n (GroupLens) -@findex grouplens-next-unread-article -Rate the article and go to the next unread article. - -@item 1-5 , -@kindex , (GroupLens) -@findex grouplens-best-unread-article -Rate the article and go to the next unread article with the highest score. - -@end table - -If you want to give the current article a score of 4 and then go to the -next article, just type @kbd{4 n}. - - -@node Displaying Predictions -@subsection Displaying Predictions - -GroupLens makes a prediction for you about how much you will like a -news article. The predictions from GroupLens are on a scale from 1 to -5, where 1 is the worst and 5 is the best. You can use the predictions -from GroupLens in one of three ways controlled by the variable -@code{gnus-grouplens-override-scoring}. - -@vindex gnus-grouplens-override-scoring -There are three ways to display predictions in grouplens. You may -choose to have the GroupLens scores contribute to, or override the -regular Gnus scoring mechanism. override is the default; however, some -people prefer to see the Gnus scores plus the grouplens scores. To get -the separate scoring behavior you need to set -@code{gnus-grouplens-override-scoring} to @code{'separate}. To have the -GroupLens predictions combined with the grouplens scores set it to -@code{'override} and to combine the scores set -@code{gnus-grouplens-override-scoring} to @code{'combine}. When you use -the combine option you will also want to set the values for -@code{grouplens-prediction-offset} and -@code{grouplens-score-scale-factor}. - -@vindex grouplens-prediction-display -In either case, GroupLens gives you a few choices for how you would like -to see your predictions displayed. The display of predictions is -controlled by the @code{grouplens-prediction-display} variable. - -The following are valid values for that variable. - -@table @code -@item prediction-spot -The higher the prediction, the further to the right an @samp{*} is -displayed. - -@item confidence-interval -A numeric confidence interval. - -@item prediction-bar -The higher the prediction, the longer the bar. - -@item confidence-bar -Numerical confidence. - -@item confidence-spot -The spot gets bigger with more confidence. - -@item prediction-num -Plain-old numeric value. - -@item confidence-plus-minus -Prediction +/- confidence. - -@end table - - -@node GroupLens Variables -@subsection GroupLens Variables - -@table @code - -@item gnus-summary-grouplens-line-format -The summary line format used in GroupLens-enhanced summary buffers. It -accepts the same specs as the normal summary line format (@pxref{Summary -Buffer Lines}). The default is @samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%) -%s\n}. - -@item grouplens-bbb-host -Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the -default. - -@item grouplens-bbb-port -Port of the host running the bbbd server. The default is 9000. - -@item grouplens-score-offset -Offset the prediction by this value. In other words, subtract the -prediction value by this number to arrive at the effective score. The -default is 0. - -@item grouplens-score-scale-factor -This variable allows the user to magnify the effect of GroupLens scores. -The scale factor is applied after the offset. The default is 1. - -@end table - - @node Advanced Scoring @section Advanced Scoring @@ -20477,6 +20460,8 @@ four days, Gnus will decay the scores four times, for instance. @include sieve.texi @c @chapter PGG @c @include pgg.texi +@c @chapter SASL +@c @include sasl.texi @end iflatex @end iftex @@ -21817,7 +21802,32 @@ readers. @end iftex @c @anchor{X-Face} -Decoding an @code{X-Face} header either requires an Emacs that has +Gnus now uses the internal ELisp-based @code{uncompface} program for +decoding an @code{X-Face} header normally in Emacs. While it doesn't +require any other external program, you may feel it is slow if you are +using a slow machine. In such a case, you can modify the following +variables: + +@table @code +@item uncompface-use-external +@vindex uncompface-use-external +Specify which of the internal or the external decoder should be used. +@code{nil} means to use the internal ELisp-based @code{uncompface} +program. @code{t} means to use the external decoder. The default value +is normally @code{undecided} which means to determine it by checking +whether the host machine is slow, being controlled by +@code{uncompface-use-external-threshold} (which see). + +@item uncompface-use-external-threshold +@vindex uncompface-use-external-threshold +A number of seconds to check whether the host machine is slow. If the +host takes time larger than this value for decoding an @code{X-Face} +using the internal ELisp-based @code{uncompface} program, it will be +changed to using the external decoder. The default is 0.1 seconds. +@end table + +If the internal decoder is invalidated or if you are using XEmacs, +decoding an @code{X-Face} header either requires an Emacs that has @samp{compface} support (which most XEmacs versions has), or that you have @samp{compface} installed on your system. If either is true, Gnus will default to displaying @code{X-Face} headers. @@ -21847,6 +21857,43 @@ like @code{netpbm}, @code{libgr-progs} and @code{compface}.}) (Note: @code{x-face} is used in the variable/function names, not @code{xface}). +@noindent +Face and variable: + +@table @code +@item gnus-x-face +@vindex gnus-x-face +Face to show X-Face. The colors from this face are used as the +foreground and background colors of the displayed X-Faces. The +default colors are black and white. + +@item gnus-face-properties-alist +@vindex gnus-face-properties-alist +Alist of image types and properties applied to Face (@pxref{Face}) and +X-Face images. The default value is @code{((pbm . (:face gnus-x-face)) +(png . nil))} for Emacs or @code{((xface . (:face gnus-x-face)))} for +XEmacs. Here are examples: + +@lisp +;; Specify the altitude of Face and X-Face images in the From header. +(setq gnus-face-properties-alist + '((pbm . (:face gnus-x-face :ascent 80)) + (png . (:ascent 80)))) + +;; Show Face and X-Face images as pressed buttons. +(setq gnus-face-properties-alist + '((pbm . (:face gnus-x-face :relief -2)) + (png . (:relief -2)))) +@end lisp + +@pxref{Image Descriptors, ,Image Descriptors, elisp, The Emacs Lisp +Reference Manual} for the valid properties for various image types. +Currently, @code{pbm} is used for X-Face images and @code{png} is used +for Face images in Emacs. Only the @code{:face} property is effective +on the @code{xface} image type in XEmacs if it is built with the +@samp{libcompface} library. +@end table + Gnus provides a few convenience functions and variables to allow easier insertion of X-Face headers in outgoing messages. @@ -21907,6 +21954,9 @@ The contents of a @code{Face} header must be a base64 encoded PNG image. See @uref{http://quimby.gnus.org/circus/face/} for the precise specifications. +The @code{gnus-face-properties-alist} variable affects the appearance of +displayed Face images. @xref{X-Face}. + Gnus provides a few convenience functions and variables to allow easier insertion of Face headers in outgoing messages. @@ -22207,16 +22257,18 @@ server or when you sort through incoming mail. If you get 200 spam messages per day from @samp{random-address@@vmadmin.com}, you block @samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you discard all messages with @samp{VIAGRA} in the message. If you get -lots of spam from China, for example, you try to filter all mail from -Chinese IPs. +lots of spam from Bulgaria, for example, you try to filter all mail +from Bulgarian IPs. + +This, unfortunately, is a great way to discard legitimate e-mail. The +risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, +etc.) or even a continent (Asia, Africa, Europe, etc.) from contacting +you should be obvious, so don't do it if you have the choice. -This, unfortunately, is a great way to discard legitimate e-mail. For -instance, the very informative and useful RISKS digest has been -blocked by overzealous mail filters because it @strong{contained} -words that were common in spam messages. The risks of blocking a -whole country from contacting you should also be obvious, so don't do -it if you have the choice. Nevertheless, in isolated cases, with -great care, direct filtering of mail can be useful. +In another instance, the very informative and useful RISKS digest has +been blocked by overzealous mail filters because it @strong{contained} +words that were common in spam messages. Nevertheless, in isolated +cases, with great care, direct filtering of mail can be useful. Another approach to filtering e-mail is the distributed spam processing, for instance DCC implements such a system. In essence, @@ -22393,8 +22445,8 @@ call the external tools during splitting. Example fancy split method: Note that with the nnimap backend, message bodies will not be downloaded by default. You need to set -@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in -IMAP}). +@code{nnimap-split-download-body} to @code{t} to do that +(@pxref{Splitting in IMAP}). That is about it. As some spam is likely to get through anyway, you might want to have a nifty function to call when you happen to read @@ -22559,6 +22611,7 @@ group. * Blackholes:: * Regular Expressions Header Matching:: * Bogofilter:: +* SpamAssassin backend:: * ifile spam filtering:: * spam-stat spam filtering:: * SpamOracle:: @@ -22587,22 +22640,24 @@ Splitting incoming mail is better suited to mail backends such as called a @dfn{Spool File}. See @xref{Spam ELisp Package Filtering of Incoming Mail}. +@vindex gnus-spam-autodetect +@vindex gnus-spam-autodetect-methods For backends such as @code{nntp} there is no incoming mail spool, so an alternate mechanism must be used. This may also happen for backends where the server is in charge of splitting incoming mail, and Gnus does not do further splitting. The @code{spam-autodetect} and @code{spam-autodetect-methods} group parameters (accessible with @kbd{G c} and @kbd{G p} as usual), and the corresponding variables -@code{gnus-spam-autodetect-methods} and -@code{gnus-spam-autodetect-methods} (accessible with @kbd{M-x -customize-variable} as usual). +@code{gnus-spam-autodetect} and @code{gnus-spam-autodetect-methods} +(accessible with @kbd{M-x customize-variable} as usual) can help. -When @code{spam-autodetect} is used, it hooks into the process of -entering a group. Thus, entering a group with unseen or unread -articles becomes the substitute for checking incoming mail. Whether -only unseen articles or all unread articles will be processed is -determined by the @code{spam-autodetect-recheck-messages}. When set -to t, unread messages will be rechecked. +When @code{spam-autodetect} is used (you can turn it on for a +group/topic or wholesale by regex, as needed), it hooks into the +process of entering a group. Thus, entering a group with unseen or +unread articles becomes the substitute for checking incoming mail. +Whether only unseen articles or all unread articles will be processed +is determined by the @code{spam-autodetect-recheck-messages}. When +set to @code{t}, unread messages will be rechecked. @code{spam-autodetect} grants the user at once more and less control of spam filtering. The user will have more control over each group's @@ -22630,8 +22685,8 @@ any are set, and the processed mail is moved to the @code{ham-process-destination} or the @code{spam-process-destination} depending on the article's classification. If the @code{ham-process-destination} or the @code{spam-process-destination}, -whichever is appropriate, are nil, the article is left in the current -group. +whichever is appropriate, are @code{nil}, the article is left in the +current group. If a spam is found in any group (this can be changed to only non-spam groups with @code{spam-move-spam-nonspam-groups-only}), it is @@ -22643,11 +22698,11 @@ You have to load the @code{gnus-registry.el} package and enable the @code{spam-log-to-registry} variable if you want spam to be processed no more than once. Thus, spam is detected and processed everywhere, which is what most people want. If the -@code{spam-process-destination} is nil, the spam is marked as +@code{spam-process-destination} is @code{nil}, the spam is marked as expired, which is usually the right thing to do. -If spam can not be moved - because of a read-only backend such as NNTP, -for example, it will be copied. +If spam can not be moved---because of a read-only backend such as +@acronym{NNTP}, for example, it will be copied. If a ham mail is found in a ham group, as determined by the @code{ham-marks} parameter, it is processed as ham by the active ham @@ -22661,11 +22716,11 @@ no more than once. Thus, ham is detected and processed only when necessary, which is what most people want. More on this in @xref{Spam ELisp Package Configuration Examples}. -If ham can not be moved - because of a read-only backend such as NNTP, -for example, it will be copied. +If ham can not be moved---because of a read-only backend such as +@acronym{NNTP}, for example, it will be copied. If all this seems confusing, don't worry. Soon it will be as natural -as typing Lisp one-liners on a neural interface... err, sorry, that's +as typing Lisp one-liners on a neural interface@dots{} err, sorry, that's 50 years in the future yet. Just trust us, it's not so bad. @node Spam ELisp Package Filtering of Incoming Mail @@ -22686,6 +22741,8 @@ Note that the fancy split may be called @code{nnmail-split-fancy} or @code{nnimap-split-fancy}, depending on whether you use the nnmail or nnimap back ends to retrieve your mail. +Also, @code{spam-split} will not modify incoming mail in any way. + The @code{spam-split} function will process incoming mail and send the mail considered to be spam into the group name given by the variable @code{spam-split-group}. By default that group name is @samp{spam}, @@ -22699,7 +22756,7 @@ actually give you the group work depending on your server's tolerance for strange group names. You can also give @code{spam-split} a parameter, -e.g. @samp{'spam-use-regex-headers} or @samp{"maybe-spam"}. Why is +e.g. @code{spam-use-regex-headers} or @code{"maybe-spam"}. Why is this useful? Take these split rules (with @code{spam-use-regex-headers} and @@ -22709,7 +22766,7 @@ Take these split rules (with @code{spam-use-regex-headers} and nnimap-split-fancy '(| (any "ding" "ding") (: spam-split) - ;; default mailbox + ;; @r{default mailbox} "mail") @end example @@ -22725,14 +22782,15 @@ You can let SpamAssassin headers supersede ding rules, but all other regex-headers check) will be after the ding rule: @example - nnimap-split-fancy '(| -;;; all spam detected by spam-use-regex-headers goes to "regex-spam" - (: spam-split "regex-spam" 'spam-use-regex-headers) - (any "ding" "ding") -;;; all other spam detected by spam-split goes to spam-split-group - (: spam-split) - ;; default mailbox - "mail") +nnimap-split-fancy + '(| + ;; @r{all spam detected by @code{spam-use-regex-headers} goes to @samp{regex-spam}} + (: spam-split "regex-spam" 'spam-use-regex-headers) + (any "ding" "ding") + ;; @r{all other spam detected by spam-split goes to @code{spam-split-group}} + (: spam-split) + ;; @r{default mailbox} + "mail") @end example This lets you invoke specific @code{spam-split} checks depending on @@ -22785,7 +22843,7 @@ processors take mail known to be spam and process it so similar spam will be detected later. The format of the spam or ham processor entry used to be a symbol, -but now it is a cons cell. See the individual spam processor entries +but now it is a @sc{cons} cell. See the individual spam processor entries for more information. @vindex gnus-spam-newsgroup-contents @@ -22863,18 +22921,16 @@ not done for @emph{unclassified} or @emph{ham} groups. Also, any determined by either the @code{ham-process-destination} group parameter or a match in the @code{gnus-ham-process-destinations} variable, which is a list of regular expressions matched with group -names (it's easiest to customize this variable with -@code{customize-variable gnus-ham-process-destinations}). Each -newsgroup specification has the format (REGEXP PROCESSOR) in a -standard Lisp list, if you prefer to customize the variable manually. -The ultimate location is a group name or names. If the -@code{ham-process-destination} parameter is not set, ham articles are -left in place. If the +names (it's easiest to customize this variable with @kbd{M-x +customize-variable @key{RET} gnus-ham-process-destinations}). Each +group name list is a standard Lisp list, if you prefer to customize +the variable manually. If the @code{ham-process-destination} +parameter is not set, ham articles are left in place. If the @code{spam-mark-ham-unread-before-move-from-spam-group} parameter is -set, the ham articles are marked as unread before being moved. +set, the ham articles are marked as unread before being moved. -If ham can not be moved - because of a read-only backend such as NNTP, -for example, it will be copied. +If ham can not be moved---because of a read-only backend such as +@acronym{NNTP}, for example, it will be copied. Note that you can use multiples destinations per group or regular expression! This enables you to send your ham to a regular mail @@ -22902,18 +22958,16 @@ When you leave a @emph{ham} or @emph{unclassified} group, all the @code{spam-process-destination} group parameter or a match in the @code{gnus-spam-process-destinations} variable, which is a list of regular expressions matched with group names (it's easiest to -customize this variable with @code{customize-variable -gnus-spam-process-destinations}). Each newsgroup specification has -the repeated format (REGEXP GROUP) and they are all in a standard Lisp -list, if you prefer to customize the variable manually. The ultimate -location is a group name or names. If the +customize this variable with @kbd{M-x customize-variable @key{RET} +gnus-spam-process-destinations}). Each group name list is a standard +Lisp list, if you prefer to customize the variable manually. If the @code{spam-process-destination} parameter is not set, the spam articles are only expired. The group name is fully qualified, meaning that if you see @samp{nntp:servername} before the group name in the -group buffer then you need it here as well. +group buffer then you need it here as well. -If spam can not be moved - because of a read-only backend such as NNTP, -for example, it will be copied. +If spam can not be moved---because of a read-only backend such as +@acronym{NNTP}, for example, it will be copied. Note that you can use multiples destinations per group or regular expression! This enables you to send your spam to multiple @emph{spam @@ -22929,15 +22983,15 @@ entries, this won't work as well as it does without a limit. @vindex spam-mark-only-unseen-as-spam Set this variable if you want only unseen articles in spam groups to -be marked as spam. By default, it is set. If you set it to nil, -unread articles will also be marked as spam. +be marked as spam. By default, it is set. If you set it to +@code{nil}, unread articles will also be marked as spam. @vindex spam-mark-ham-unread-before-move-from-spam-group Set this variable if you want ham to be unmarked before it is moved out of the spam group. This is very useful when you use something -like the tick mark @samp{!} to mark ham - the article will be placed -in your ham-process-destination, unmarked as if it came fresh from -the mail server. +like the tick mark @samp{!} to mark ham---the article will be placed +in your @code{ham-process-destination}, unmarked as if it came fresh +from the mail server. @vindex spam-autodetect-recheck-messages When autodetecting spam, this variable tells @code{spam.el} whether @@ -22955,87 +23009,86 @@ spam. It is recommended that you leave it off. From Ted Zlatanov . @example - -;; for gnus-registry-split-fancy-with-parent and spam autodetection -;; see gnus-registry.el for more information +;; @r{for @code{gnus-registry-split-fancy-with-parent} and spam autodetection} +;; @r{see @file{gnus-registry.el} for more information} (gnus-registry-initialize) (spam-initialize) -;; I like control-S for marking spam +;; @r{I like @kbd{C-s} for marking spam} (define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam) (setq - spam-log-to-registry t ;; for spam autodetection + spam-log-to-registry t ; @r{for spam autodetection} spam-use-BBDB t - spam-use-regex-headers t ; catch X-Spam-Flag (SpamAssassin) - ;; all groups with "spam" in the name contain spam - gnus-spam-newsgroup-contents '(("spam" gnus-group-spam-classification-spam)) - ;; see documentation for these + spam-use-regex-headers t ; @r{catch X-Spam-Flag (SpamAssassin)} + ;; @r{all groups with @samp{spam} in the name contain spam} + gnus-spam-newsgroup-contents + '(("spam" gnus-group-spam-classification-spam)) + ;; @r{see documentation for these} spam-move-spam-nonspam-groups-only nil spam-mark-only-unseen-as-spam t spam-mark-ham-unread-before-move-from-spam-group t nnimap-split-rule 'nnimap-split-fancy - ;; understand what this does before you copy it to your own setup! + ;; @r{understand what this does before you copy it to your own setup!} nnimap-split-fancy '(| - ;; trace references to parents and put in their group + ;; @r{trace references to parents and put in their group} (: gnus-registry-split-fancy-with-parent) - ;; this will catch server-side SpamAssassin tags + ;; @r{this will catch server-side SpamAssassin tags} (: spam-split 'spam-use-regex-headers) (any "ding" "ding") - ;; note that spam by default will go to "spam" + ;; @r{note that spam by default will go to @samp{spam}} (: spam-split) - ;; default mailbox + ;; @r{default mailbox} "mail")) -;; my parameters, set with `G p' +;; @r{my parameters, set with @kbd{G p}} -;; all nnml groups, and all nnimap groups except -;; "nnimap+mail.lifelogs.com:train" and -;; "nnimap+mail.lifelogs.com:spam": any spam goes to nnimap training, -;; because it must have been detected manually +;; @r{all nnml groups, and all nnimap groups except} +;; @r{@samp{nnimap+mail.lifelogs.com:train} and} +;; @r{@samp{nnimap+mail.lifelogs.com:spam}: any spam goes to nnimap training,} +;; @r{because it must have been detected manually} ((spam-process-destination . "nnimap+mail.lifelogs.com:train")) -;; all NNTP groups -;; autodetect spam with the blacklist and ham with the BBDB +;; @r{all @acronym{NNTP} groups} +;; @r{autodetect spam with the blacklist and ham with the BBDB} ((spam-autodetect-methods spam-use-blacklist spam-use-BBDB) -;; send all spam to the training group +;; @r{send all spam to the training group} (spam-process-destination . "nnimap+mail.lifelogs.com:train")) -;; only some NNTP groups, where I want to autodetect spam +;; @r{only some @acronym{NNTP} groups, where I want to autodetect spam} ((spam-autodetect . t)) -;; my nnimap "nnimap+mail.lifelogs.com:spam" group +;; @r{my nnimap @samp{nnimap+mail.lifelogs.com:spam} group} -;; this is a spam group +;; @r{this is a spam group} ((spam-contents gnus-group-spam-classification-spam) - ;; any spam (which happens when I enter for all unseen messages, - ;; because of the gnus-spam-newsgroup-contents setting above), goes to - ;; "nnimap+mail.lifelogs.com:train" unless I mark it as ham + ;; @r{any spam (which happens when I enter for all unseen messages,} + ;; @r{because of the @code{gnus-spam-newsgroup-contents} setting above), goes to} + ;; @r{@samp{nnimap+mail.lifelogs.com:train} unless I mark it as ham} (spam-process-destination "nnimap+mail.lifelogs.com:train") - ;; any ham goes to my "nnimap+mail.lifelogs.com:mail" folder, but - ;; also to my "nnimap+mail.lifelogs.com:trainham" folder for training + ;; @r{any ham goes to my @samp{nnimap+mail.lifelogs.com:mail} folder, but} + ;; @r{also to my @samp{nnimap+mail.lifelogs.com:trainham} folder for training} (ham-process-destination "nnimap+mail.lifelogs.com:mail" "nnimap+mail.lifelogs.com:trainham") - ;; in this group, only '!' marks are ham + ;; @r{in this group, only @samp{!} marks are ham} (ham-marks (gnus-ticked-mark)) - ;; remembers senders in the blacklist on the way out - this is - ;; definitely not needed, it just makes me feel better + ;; @r{remembers senders in the blacklist on the way out---this is} + ;; @r{definitely not needed, it just makes me feel better} (spam-process (gnus-group-spam-exit-processor-blacklist))) -;; Later, on the IMAP server I use the "train" group for training -;; SpamAssassin to recognize spam, and the "trainham" group for -;; recognizing ham - but Gnus has nothing to do with it. +;; @r{Later, on the @acronym{IMAP} server I use the @samp{train} group for training} +;; @r{SpamAssassin to recognize spam, and the @samp{trainham} group fora} +;; @r{recognizing ham---but Gnus has nothing to do with it.} @end example @subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server - From Reiner Steib . My provider has set up bogofilter (in combination with @acronym{DCC}) on @@ -23073,7 +23126,7 @@ Because of the @code{gnus-group-spam-classification-spam} entry, all messages are marked as spam (with @code{$}). When I find a false positive, I mark the message with some other ham mark (@code{ham-marks}, @ref{Spam ELisp Package Global Variables}). On group exit, those -messages are copied to both groups, @samp{INBOX} (were I want to have +messages are copied to both groups, @samp{INBOX} (where I want to have the article) and @samp{training.ham} (for training bogofilter) and deleted from the @samp{spam.detected} folder. @@ -23105,7 +23158,7 @@ groups as spam and reports the to Gmane at group exit: (spam-process (gnus-group-spam-exit-processor-report-gmane))) @end lisp -Additionally, I use `(setq spam-report-gmane-use-article-number nil)' +Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)} because I don't read the groups directly from news.gmane.org, but through my local news server (leafnode). I.e. the article numbers are not the same as on news.gmane.org, thus @code{spam-report.el} has to check @@ -23170,8 +23223,7 @@ customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added to a group's @code{spam-process} parameter, the senders of ham-marked articles in @emph{ham} groups will be added to the -whitelist. Note that this ham processor has no effect in @emph{spam} -or @emph{unclassified} groups. +whitelist. @emph{WARNING} @@ -23236,8 +23288,7 @@ customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added to a group's @code{spam-process} parameter, the senders of ham-marked articles in @emph{ham} groups will be added to the -BBDB. Note that this ham processor has no effect in @emph{spam} -or @emph{unclassified} groups. +BBDB. @emph{WARNING} @@ -23449,8 +23500,7 @@ customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added to a group's @code{spam-process} parameter, the ham-marked articles in @emph{ham} groups will be added to the Bogofilter database -of non-spam messages. Note that this ham processor has no effect in -@emph{spam} or @emph{unclassified} groups. +of non-spam messages. @emph{WARNING} @@ -23475,6 +23525,59 @@ variables to indicate to spam-split that Bogofilter should either be used, or has already been used on the article. The 0.9.2.1 version of Bogofilter was used to test this functionality. +@node SpamAssassin backend +@subsubsection SpamAssassin backend +@cindex spam filtering +@cindex spamassassin, spam filtering +@cindex spam + +@defvar spam-use-spamassassin + +Set this variable if you want @code{spam-split} to use SpamAssassin. + +SpamAssassin assigns a score to each article based on a set of rules +and tests, including a Bayesian filter. The Bayesian filter can be +trained by associating the @samp{$} mark for spam articles. The +spam score can be viewed by using the command @kbd{S t} in summary +mode. + +If you set this variable, each article will be processed by +SpamAssassin when @code{spam-split} is called. If your mail is +preprocessed by SpamAssassin, and you want to just use the +SpamAssassin headers, set @code{spam-use-spamassassin-headers} +instead. + +You should not enable this is you use +@code{spam-use-spamassassin-headers}. + +@end defvar + +@defvar spam-use-spamassassin-headers + +Set this variable if your mail is preprocessed by SpamAssassin and +want @code{spam-split} to split based on the SpamAssassin headers. + +You should not enable this is you use @code{spam-use-spamassassin}. + +@end defvar + +@defvar spam-spamassassin-path + +This variable points to the SpamAssassin executable. If you have +@code{spamd} running, you can set this variable to the @code{spamc} +executable for faster processing. See the SpamAssassin documentation +for more information on @code{spamd}/@code{spamc}. + +@end defvar + +SpamAssassin is a powerful and flexible spam filter that uses a wide +variety of tests to identify spam. A ham and a spam processors are +provided, plus the @code{spam-use-spamassassin} and +@code{spam-use-spamassassin-headers} variables to indicate to +spam-split that SpamAssassin should be either used, or has already +been used on the article. The 2.63 version of SpamAssassin was used +to test this functionality. + @node ifile spam filtering @subsubsection ifile spam filtering @cindex spam filtering @@ -23553,8 +23656,7 @@ customizing the group parameters or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added to a group's @code{spam-process} parameter, the ham-marked articles in @emph{ham} groups will be added to the spam-stat database -of non-spam messages. Note that this ham processor has no effect in -@emph{spam} or @emph{unclassified} groups. +of non-spam messages. @emph{WARNING} @@ -23660,10 +23762,9 @@ the same way, we promise. Add this symbol to a group's @code{spam-process} parameter by customizing the group parameter or the @code{gnus-spam-process-newsgroups} variable. When this symbol is added -to a grup's @code{spam-process} parameter, the ham-marked articles in +to a group's @code{spam-process} parameter, the ham-marked articles in @emph{ham} groups will be sent to the SpamOracle as samples of ham -messages. Note that this ham processor has no effect in @emph{spam} or -@emph{unclassified} groups. +messages. @emph{WARNING} @@ -23700,7 +23801,7 @@ incoming mail, provide the following: @enumerate @item -code +Code @lisp (defvar spam-use-blackbox nil @@ -23708,32 +23809,34 @@ code @end lisp Add -@example - (spam-use-blackbox . spam-check-blackbox) -@end example +@lisp +(spam-use-blackbox . spam-check-blackbox) +@end lisp to @code{spam-list-of-checks}. Add -@example - (gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) - (gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) -@end example +@lisp +(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) +(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) +@end lisp + to @code{spam-list-of-processors}. Add -@example - (spam-use-blackbox spam-blackbox-register-routine - nil - spam-blackbox-unregister-routine - nil) -@end example +@lisp +(spam-use-blackbox spam-blackbox-register-routine + nil + spam-blackbox-unregister-routine + nil) +@end lisp + to @code{spam-registration-functions}. Write the register/unregister routines using the bogofilter register/unregister routines as a start, or other restister/unregister routines more appropriate to Blackbox. @item -functionality +Functionality Write the @code{spam-check-blackbox} function. It should return @samp{nil} or @code{spam-split-group}, observing the other @@ -23752,7 +23855,7 @@ For processing spam and ham messages, provide the following: @enumerate @item -code +Code Note you don't have to provide a spam or a ham processor. Only provide them if Blackbox supports spam or ham processing. @@ -23777,18 +23880,18 @@ Only applicable to non-spam (unclassified and ham) groups.") Gnus parameters Add -@example - (const :tag "Spam: Blackbox" (spam spam-use-blackbox)) - (const :tag "Ham: Blackbox" (ham spam-use-blackbox)) -@end example +@lisp +(const :tag "Spam: Blackbox" (spam spam-use-blackbox)) +(const :tag "Ham: Blackbox" (ham spam-use-blackbox)) +@end lisp to the @code{spam-process} group parameter in @code{gnus.el}. Make sure you do it twice, once for the parameter and once for the variable customization. Add -@example - (variable-item spam-use-blackbox) -@end example +@lisp +(variable-item spam-use-blackbox) +@end lisp to the @code{spam-autodetect-methods} group parameter in @code{gnus.el}. @@ -24552,10 +24655,10 @@ Gnus should work on: @itemize @bullet @item -Emacs 20.3 and up. +Emacs 21.1 and up. @item -XEmacs 21.1.1 and up. +XEmacs 21.4 and up. @end itemize @@ -24662,8 +24765,7 @@ Wes Hardaker---@file{gnus-picon.el} and the manual section on Kim-Minh Kaplan---further work on the picon code. @item -Brad Miller---@file{gnus-gl.el} and the GroupLens manual section -(@pxref{GroupLens}). +Brad Miller---@file{gnus-gl.el} and the GroupLens manual section. @item Sudish Joseph---innumerable bug fixes. @@ -24704,7 +24806,7 @@ David Moore---rewrite of @file{nnvirtual.el} and many other things. Kevin Davidson---came up with the name @dfn{ding}, so blame him. @item -François Pinard---many, many interesting and thorough bug reports, as +Fran@,{c}ois Pinard---many, many interesting and thorough bug reports, as well as autoconf support. @end itemize @@ -24721,7 +24823,7 @@ Kevin Greiner, Jesper Harder, Paul Jarc, Simon Josefsson, -David Kågedal, +David K@aa{}gedal, Richard Pieri, Fabrice Popineau, Daniel Quinlan, @@ -24811,7 +24913,7 @@ Gunnar Horrigmo, Richard Hoskins, Brad Howes, Miguel de Icaza, -François Felix Ingrand, +Fran@,{c}ois Felix Ingrand, Tatsuya Ichikawa, @c Ichikawa Ishikawa Ichiro, @c Ishikawa Lee Iverson, @@ -24951,6 +25053,7 @@ actually are people who are using Gnus. Who'd'a thunk it! * Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. * Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. * Oort Gnus:: It's big. It's far out. Gnus 5.10. +* No Gnus:: Lars, FIXME! @end menu These lists are, of course, just @emph{short} overviews of the @@ -25110,7 +25213,7 @@ Partial thread regeneration now happens when articles are referred. @item -Gnus can make use of GroupLens predictions (@pxref{GroupLens}). +Gnus can make use of GroupLens predictions. @item Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). @@ -26227,6 +26330,15 @@ used when forwarding signed or encrypted messages, as the conversion invalidate the digital signature. @end itemize +@node No Gnus +@subsubsection No Gnus +@cindex No Gnus + +New features in No Gnus: +@c FIXME: Gnus 5.12? + +@include gnus-news.texi + @iftex @page @@ -26662,6 +26774,10 @@ Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and @code{gnus-nov-is-evil} to @code{nil} to make entering and exiting the summary buffer faster. +Gnus uses the internal ELisp-based @code{uncompface} program for +decoding an @code{X-Face} header normally in Emacs. If you feel it is +slow, set @code{uncompface-use-external} to @code{t}. @xref{X-Face}. + @page @node Troubleshooting diff --git a/texi/gnusref.tex b/texi/gnusref.tex index 0ddecd6..955e240 100644 --- a/texi/gnusref.tex +++ b/texi/gnusref.tex @@ -1,7 +1,7 @@ %% include file for the Gnus refcard and booklet \def\progver{5.10}\def\refver{5.10-1} % program and refcard versions -\def\date{Oct, 2003} +\def\date{Jan, 2004} \def\author{Gnus Bugfixing Girls + Boys $<$bugs@gnus.org$>$} %% @@ -37,7 +37,7 @@ Copyright \copyright\ 1995 Vladimir Alexiev $<$vladimir@cs.ualberta.ca$>$.\\* Copyright \copyright\ 2000 Felix Natter $<$fnatter@gmx.net$>$.\\* - Copyright \copyright\ 2001, 2002, 2003 \author.\\* + Copyright \copyright\ 2001, 2002, 2003, 2004 \author.\\* Created from the Gnus manual Copyright \copyright\ 1994 Lars Magne Ingebrigtsen.\\* and the Emacs Help Bindings feature (C-h b).\\* @@ -818,6 +818,7 @@ /o & Insert all {\bf old} articles. [Prefix: how many]\\ /N & Insert all {\bf new} articles.\\ /p & Limit to articles {\bf predicated} in the `display' group parameter.\\ + /r & Limit to {\bf replied} articles. [Prefix: unreplied]\\ \end{keys} } } diff --git a/texi/infohack.el b/texi/infohack.el index 89bad3f..126fbcc 100644 --- a/texi/infohack.el +++ b/texi/infohack.el @@ -45,11 +45,13 @@ (let ((dest-directory default-directory) (max-lisp-eval-depth (max max-lisp-eval-depth 600)) coding-system) + ;; Emacs 21.3 doesn't support @documentencoding + (unless (get 'documentencoding 'texinfo-format) + (put 'documentencoding 'texinfo-format + 'texinfo-discard-line-with-args)) (find-file file) (setq buffer-read-only nil) - (setq coding-system (if (boundp 'buffer-file-coding-system) - buffer-file-coding-system - file-coding-system)) + (setq coding-system buffer-file-coding-system) (infohack-remove-unsupported) (texinfo-every-node-update) (texinfo-format-buffer t) ;; Don't save any file. @@ -57,8 +59,7 @@ (setq buffer-file-name (expand-file-name (file-name-nondirectory buffer-file-name) default-directory)) - (setq buffer-file-coding-system coding-system - file-coding-system coding-system) + (setq buffer-file-coding-system coding-system) (if (> (buffer-size) 100000) (Info-split)) (save-buffer))) @@ -97,16 +98,13 @@ Both characters must have the same length of multi-byte form." (let ((auto-save-default nil) (find-file-run-dired nil) coding-system-for-write - output-coding-system (error 0)) (condition-case err (progn (find-file file) (setq buffer-read-only nil) (buffer-disable-undo (current-buffer)) - (if (boundp 'MULE) - (setq output-coding-system file-coding-system) - (setq coding-system-for-write buffer-file-coding-system)) + (setq coding-system-for-write buffer-file-coding-system) ;; process @include before updating node ;; This might produce some problem if we use @lowersection or ;; such. @@ -165,17 +163,11 @@ Both characters must have the same length of multi-byte form." (let ((si:message (symbol-function 'message))) (fset 'message (byte-compile - (if (boundp 'MULE) - `(lambda (fmt &rest args) - (funcall ,si:message "%s" - (code-convert-string - (apply 'format fmt args) - '*internal* '*junet*))) - `(lambda (fmt &rest args) - (funcall ,si:message "%s" - (encode-coding-string - (apply 'format fmt args) - 'iso-2022-7bit)))))) + `(lambda (fmt &rest args) + (funcall ,si:message "%s" + (encode-coding-string + (apply 'format fmt args) + 'iso-2022-7bit))))) (unwind-protect (texinfo-format-buffer nil) (fset 'message si:message))) diff --git a/texi/message-ja.texi b/texi/message-ja.texi index 0387d28..50644bf 100644 --- a/texi/message-ja.texi +++ b/texi/message-ja.texi @@ -132,8 +132,8 @@ Gnus $B$NA4$F$N%a%C%;!<%8$N:n@.(B ($B%a!<%k$H%K%e!<%9$NN>J}(B) $B$O%a%C%;!< @node Interface @chapter $B3&LL(B -$B%W%m%0%i%`(B ($B$b$7$/$O?M(B) $B$,%a%C%;!<%8$KH?1~$7$?$$$H$-(B -- $BJVEz!"%U%)%m!<%"%C(B -$B%W!"E>Aw!"C$7(B -- $B$=$N%W%m%0%i%`(B ($B$b$7$/$O?M(B) $B$O%a%C%;!<%8$,$"$k%P%C(B +$B%W%m%0%i%`(B ($B$b$7$/$O?M(B) $B$,%a%C%;!<%8$KH?1~$7$?$$$H$-(B---$BJVEz!"%U%)%m!<%"%C(B +$B%W!"E>Aw!"C$7(B---$B$=$N%W%m%0%i%`(B ($B$b$7$/$O?M(B) $B$O%a%C%;!<%8$,$"$k%P%C(B $B%U%!$K%]%$%s%H$rF~$l$FI,MW$JL?Na$r8F$S=P$9$@$1$GNI$$$Y$-$G$9!#$=$&$9$k(B $B$H(B @code{Message} $B$O?7$7$$(B @code{message} $B%b!<%I%P%C%U%!$rE,@Z$J%X%C%@!<(B $B$rF~$l$F:n$j=P$7!"MxMQo$K@Q6KE*$G$9!#$=$l$Oe$GAv$C$F$$$k>l9g!"%a%C%;!<%8%P%C%U%!$O%I%i%U%H%0%k!<% @table @code @item nil -$B%"%I%l%9$@$1$G$9(B -- @samp{king@@grassland.com}. +$B%"%I%l%9$@$1$G$9(B---@samp{king@@grassland.com}. @item parens @samp{king@@granssland.com (Elvis Parsley)}. @@ -2018,7 +2019,7 @@ Emacs $B$O%a%C%;!<%8:n@.$r$$$m$$$m$K2u$7$F$7$^$&$3$H$,$G$-$kB?$/$N%F%-%9%H(B @item function @var{predicate} $B$,(B @code{nil} $B$G$J$$CM$r5"$7$?$H$-$K8F$P$l$k4X?t$G$9!#(B -@var{function} $B$O0l$D$N0z?t(B -- $B@\F,<-(B $B$H6&$K8F$P$l$^$9!#(B +@var{function} $B$O0l$D$N0z?t(B---$B@\F,<-(B---$B$H6&$K8F$P$l$^$9!#(B @end table @lisp diff --git a/texi/message.texi b/texi/message.texi index 5cc5e05..471e8bf 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -96,8 +96,8 @@ manual. @node Interface @chapter Interface -When a program (or a person) wants to respond to a message -- reply, -follow up, forward, cancel -- the program (or person) should just put +When a program (or a person) wants to respond to a message---reply, +follow up, forward, cancel---the program (or person) should just put point in the buffer where the message is and call the required command. @code{Message} will then pop up a new @code{message} mode buffer with appropriate headers filled out, and the user can edit the message before @@ -828,9 +828,10 @@ automatically add the @code{Content-Type} and @code{Content-Transfer-Encoding} headers. The most typical thing users want to use the multipart things in -@acronym{MIME} for is to add ``attachments'' to mail they send out. This can -be done with the @kbd{C-c C-a} command, which will prompt for a file -name and a @acronym{MIME} type. +@acronym{MIME} for is to add ``attachments'' to mail they send out. +This can be done with the @kbd{C-c C-a} command, which will prompt for +a file name and a @acronym{MIME} type. If your Emacs supports drag +and drop, you can also drop the file in the Message buffer. You can also create arbitrarily complex multiparts using the @acronym{MML} language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME @@ -1286,7 +1287,7 @@ installed. @section Message Headers Message is quite aggressive on the message generation front. It has to -be -- it's a combined news and mail agent. To be able to send combined +be---it's a combined news and mail agent. To be able to send combined messages, it has to generate all headers itself (instead of letting the mail/news system do it) to ensure that mail and news copies of messages look sufficiently similar. @@ -1325,7 +1326,7 @@ values: @table @code @item nil -Just the address -- @samp{king@@grassland.com}. +Just the address---@samp{king@@grassland.com}. @item parens @samp{king@@grassland.com (Elvis Parsley)}. @@ -2026,7 +2027,7 @@ message is a message of type @var{type}. @item function A function to be called if @var{predicate} returns non-@code{nil}. -@var{function} is called with one parameter -- the prefix. +@var{function} is called with one parameter---the prefix. @end table @lisp diff --git a/texi/ptexinfmt.el b/texi/ptexinfmt.el index 66a507f..136bae2 100644 --- a/texi/ptexinfmt.el +++ b/texi/ptexinfmt.el @@ -100,12 +100,7 @@ DOCSTRING will be printed if ASSERTION is nil and ;; sort -fd (ptexinfmt-broken-facility texinfo-format-printindex "Can't sort on Mule for Windows." - (if (and (memq system-type '(windows-nt ms-dos)) -;;; I don't know version threshold. -;;; (string< texinfmt-version "2.37 of 24 May 1997") - (boundp 'MULE) (not (featurep 'meadow))) ; Mule for Windows - nil - t)) + t) ;; @var (ptexinfmt-broken-facility texinfo-format-var @@ -263,6 +258,9 @@ DOCSTRING will be printed if ASSERTION is nil and (put 'ifnotplaintext 'texinfo-format 'texinfo-discard-line) (put 'ifnotplaintext 'texinfo-end 'texinfo-discard-command) +;; @ifnotdocbook ... @end ifnotdocbook (makeinfo 4.7 or later) +(put 'ifnotdocbook 'texinfo-format 'texinfo-discard-line) +(put 'ifnotdocbook 'texinfo-end 'texinfo-discard-command) ;; @ifnotinfo ... @end ifnotinfo (makeinfo 3.11 or later) (put 'ifnotinfo 'texinfo-format 'texinfo-format-ifnotinfo) @@ -278,6 +276,13 @@ DOCSTRING will be printed if ASSERTION is nil and (progn (re-search-forward "@end html[ \t]*\n") (point)))) +;; @docbook ... @end docbook (makeinfo 4.7 or later) +(put 'docbook 'texinfo-format 'texinfo-format-docbook) +(ptexinfmt-defun-if-void texinfo-format-docbook () + (delete-region texinfo-command-start + (progn (re-search-forward "@end docbook[ \t]*\n") + (point)))) + ;; @ifhtml ... @end ifhtml (makeinfo 3.8 or later) (put 'ifhtml 'texinfo-format 'texinfo-format-ifhtml) (defun texinfo-format-ifhtml () @@ -292,14 +297,22 @@ DOCSTRING will be printed if ASSERTION is nil and (progn (re-search-forward "@end ifplaintext[ \t]*\n") (point)))) +;; @ifdocbook ... @end ifdocbook (makeinfo 4.7 or later) +(put 'ifdocbook 'texinfo-format 'texinfo-format-ifdocbook) +(ptexinfmt-defun-if-void texinfo-format-ifdocbook () + (delete-region texinfo-command-start + (progn (re-search-forward "@end ifdocbook[ \t]*\n") + (point)))) ;;; Marking -;; @url, @env, @command -(put 'url 'texinfo-format 'texinfo-format-code) +;; @indicateurl, @url, @env, @command, (put 'env 'texinfo-format 'texinfo-format-code) (put 'command 'texinfo-format 'texinfo-format-code) +(put 'indicateurl 'texinfo-format 'texinfo-format-code) +(put 'url 'texinfo-format 'texinfo-format-uref) ; Texinfo 4.7 + ;; @acronym (put 'acronym 'texinfo-format 'texinfo-format-var) @@ -361,6 +374,17 @@ For example, @verb\{|@|\} results in @ and (delete-char 1)) +;;; @LaTeX, @registeredsymbol{} +(put 'LaTeX 'texinfo-format 'texinfo-format-LaTeX) +(ptexinfmt-defun-if-void texinfo-format-LaTeX () + (texinfo-parse-arg-discard) + (insert "LaTeX")) + +(put 'registeredsymbol 'texinfo-format 'texinfo-format-registeredsymbol) +(ptexinfmt-defun-if-void texinfo-format-registeredsymbol () + (texinfo-parse-arg-discard) + (insert "(R)")) + ;;; Accents and Special characters ;; @pounds{} ==> # Pounds Sterling (put 'pounds 'texinfo-format 'texinfo-format-pounds) @@ -368,6 +392,18 @@ For example, @verb\{|@|\} results in @ and (texinfo-parse-arg-discard) (insert "#")) +;; @ordf{} ==> a Spanish feminine +(put 'ordf 'texinfo-format 'texinfo-format-ordf) +(ptexinfmt-defun-if-void texinfo-format-ordf () + (texinfo-parse-arg-discard) + (insert "o")) + +;; @ordm{} ==> o Spanish masculine +(put 'ordm 'texinfo-format 'texinfo-format-ordm) +(ptexinfmt-defun-if-void texinfo-format-ordm () + (texinfo-parse-arg-discard) + (insert "o")) + ;; @OE{} ==> OE French-OE-ligature (put 'OE 'texinfo-format 'texinfo-format-French-OE-ligature) (ptexinfmt-defun-if-void texinfo-format-French-OE-ligature () diff --git a/texi/sieve.texi b/texi/sieve.texi index 6bfcf2f..26077ca 100644 --- a/texi/sieve.texi +++ b/texi/sieve.texi @@ -297,7 +297,7 @@ Sets the default port to use, the suggested port number is @code{2000}. @item sieve-manage-log @vindex sieve-manage-log -If non-nil, should be a string naming a buffer where a protocol trace +If non-@code{nil}, should be a string naming a buffer where a protocol trace is dumped (for debugging purposes). @end table @@ -333,7 +333,8 @@ List scripts on the server. @item sieve-manage-havespace @findex sieve-manage-havespace -Returns non-nil iff server have roam for a script of given size. +Returns non-@code{nil} iff server have roam for a script of given +size. @item sieve-manage-getscript @findex sieve-manage-getscript diff --git a/texi/texi2latex.el b/texi/texi2latex.el index a5e5a26..82cabde 100644 --- a/texi/texi2latex.el +++ b/texi/texi2latex.el @@ -1,5 +1,5 @@ ;;; texi2latex.el --- convert a texi file into a LaTeX file. -;; Copyright (C) 1996 Lars Magne Ingebrigtsen +;; Copyright (C) 1996, 2004 Lars Magne Ingebrigtsen (require 'cl) @@ -38,7 +38,10 @@ (latexi-translate-file "gnus-faq") (latexi-translate-file "message" t) (latexi-translate-file "emacs-mime" t) - (latexi-translate-file "sieve" t)) + (latexi-translate-file "sieve" t) + ;;(latexi-translate-file "pgg" t) + ;;(latexi-translate-file "sasl" t) + (latexi-translate-file "gnus-news" t)) (defun latexi-translate-file (file &optional as-a-chapter) "Translate file a LaTeX file." @@ -62,6 +65,11 @@ (insert-buffer-substring cur) (goto-char (point-min)) (latexi-strip-line) + (latexi-translate-string "@'e" "\\'{e}") + (latexi-translate-string "@`a" "\\`{a}") + (latexi-translate-string "@,{c}" "\\c{c}") + (latexi-translate-string "@aa{}" "{\\aa}") + (latexi-translate-string "@\"{@dotless{i}}" "ï") (latexi-translate-string "%@{" "\\gnuspercent{}\\gnusbraceleft{}") (latexi-translate-string "%@}" "\\gnuspercent{}\\gnusbraceright{}") (latexi-translate-string "%1@{" "\\gnuspercent{}1\\gnusbraceright{}") @@ -100,7 +108,8 @@ "summarycontents" "bye" "top" "iftex" "cartouche" "iflatex" "finalout" "vskip" - "dircategory" "group" "syncodeindex")) + "dircategory" "group" "syncodeindex" + "documentencoding")) (latexi-strip-line)) ((member command '("menu" "tex" "ifinfo" "ignore" "ifnottex" "direntry")) @@ -241,7 +250,7 @@ (latexi-begin-command "verse")) ((equal command "page") (latexi-strip-line) - (insert (format "\\newpage\n" arg))) + (insert "\\newpage\n")) ((equal command "'s") (goto-char (match-beginning 0)) (delete-char 1)) -- 1.7.10.4