From 8c620ff2178b0f9079eb742a56f82a17c65c30bb Mon Sep 17 00:00:00 2001 From: ichikawa Date: Sun, 30 Aug 1998 05:57:26 +0000 Subject: [PATCH] Importing pgnus-0.6 --- GNUS-NEWS | 100 -- Makefile.in | 6 +- lisp/ChangeLog | 3518 +--------------------------------------------------- lisp/base64.el | 274 ++++ lisp/gnus-agent.el | 18 +- lisp/gnus-art.el | 83 +- lisp/gnus-cache.el | 2 +- lisp/gnus-dup.el | 2 +- lisp/gnus-ems.el | 39 +- lisp/gnus-group.el | 2 +- lisp/gnus-nocem.el | 6 +- lisp/gnus-score.el | 4 +- lisp/gnus-soup.el | 4 +- lisp/gnus-start.el | 4 +- lisp/gnus-sum.el | 46 +- lisp/gnus-util.el | 22 +- lisp/gnus-xmas.el | 3 +- lisp/gnus.el | 15 +- lisp/lpath.el | 14 +- lisp/message.el | 9 +- lisp/mm-decode.el | 134 ++ lisp/mm.el | 1283 +++++++++++++++++++ lisp/nndraft.el | 2 +- lisp/nneething.el | 4 +- lisp/nnfolder.el | 3 +- lisp/nngateway.el | 2 +- lisp/nnheader.el | 59 +- lisp/nnkiboze.el | 6 +- lisp/nnmail.el | 12 +- lisp/nnmh.el | 6 +- lisp/nnml.el | 2 +- lisp/nnsoup.el | 2 +- lisp/nntp.el | 2 +- lisp/nnweb.el | 6 +- lisp/qp.el | 90 ++ texi/ChangeLog | 1000 --------------- texi/gnus.texi | 6 +- texi/message.texi | 10 +- 38 files changed, 1962 insertions(+), 4838 deletions(-) create mode 100644 lisp/base64.el create mode 100644 lisp/mm-decode.el create mode 100644 lisp/mm.el create mode 100644 lisp/qp.el diff --git a/GNUS-NEWS b/GNUS-NEWS index 0c5b11a..75306e1 100644 --- a/GNUS-NEWS +++ b/GNUS-NEWS @@ -1,102 +1,2 @@ ** Gnus changes. -*** The Gnus distribution no longer bundles Custom and Widget. -If your Emacs doesn't come with these libraries, fetch them 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. - -*** New functionality for using Gnus as an offline newsreader has been -added. A plethora of new commands and modes have been added. See the -Gnus manual for the full story. - -*** The nndraft backend has returned, but works differently than -before. All Message buffers are now also articles in the nndraft -group, which is created automatically. - -*** `gnus-alter-header-function' can now be used to alter header -values. - -*** `gnus-summary-goto-article' now accept Message-ID's. - -*** A new Message command for deleting text in the body of a message -outside the region: `C-c C-v'. - -*** You can now post to component group in nnvirtual groups with -`C-u C-c C-c'. - -*** `nntp-rlogin-program' -- new variable to ease customization. - -*** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit -re-highlighting of the article buffer. - -*** New element in `gnus-boring-article-headers' -- `long-to'. - -*** `M-i' symbolic prefix command. See the section "Symbolic -Prefixes" in the Gnus manual for details. - -*** `L' and `I' in the summary buffer now take the symbolic prefix -`a' to add the score rule to the "all.SCORE" file. - -*** `gnus-simplify-subject-functions' variable to allow greater -control over simplification. - -*** `A T' -- new command for fetching the current thread. - -*** `/ T' -- new command for including the current thread in the -limit. - -*** `M-RET' is a new Message command for breaking cited text. - -*** \\1-expressions are now valid in `nnmail-split-methods'. - -*** The `custom-face-lookup' function has been removed. -If you used this function in your initialization files, you must -rewrite them to use `face-spec-set' instead. - -*** Cancelling now uses the current select method. Symbolic prefix -`a' forces normal posting method. - -*** New command to translate M******** sm*rtq**t*s into proper text --- `W d'. - -*** For easier debugging of nntp, you can set `nntp-record-commands' -to a non-nil value. - -*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling -where and how to send AUTHINFO to NNTP servers. - -*** A command for editing group parameters from the summary buffer -has been added. - -*** A history of where mails have been split is available. - -*** A new article date command has been added -- `article-date-iso8601'. - -*** Subjects can be simplified when threading by setting -`gnus-score-thread-simplify'. - -*** A new function for citing in Message has been added -- -`message-cite-original-without-signature'. - -*** `article-strip-all-blank-lines' -- new article command. - -*** A new Message command to kill to the end of the article has -been added. - -*** A minimum adaptive score can be specified by using the -`gnus-adaptive-word-minimum' variable. - -*** The "lapsed date" article header can be kept continually -updated by the `gnus-start-date-timer' command. - -*** Web listserv archives can be read with the nnlistserv backend. - -*** Old dejanews archives can now be read by nnweb. - -*** Byte-compilation of user-specs now works under XEmacs. - -*** `gnus-posting-styles' has been re-activated. diff --git a/Makefile.in b/Makefile.in index a30ae8d..82fd420 100644 --- a/Makefile.in +++ b/Makefile.in @@ -5,7 +5,7 @@ srcdir = @srcdir@ @SET_MAKE@ EMACS = @EMACS@ -XEMACS = xemacs +XEMACS = xemacs21 all: lick info @@ -35,7 +35,7 @@ elclean: rm lisp/*.elc x: - make EMACS=xemacs + make EMACS=xemacs21 distclean: make clean @@ -44,7 +44,7 @@ distclean: rm -f config.log config.status Makefile osome: - make EMACS=emacs-19.34 some + make EMACS=xemacs21 some config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d06cf06..555213b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3514 +1,64 @@ -Sat Aug 29 19:17:19 1998 Lars Magne Ingebrigtsen +Sun Aug 30 00:59:15 1998 Lars Magne Ingebrigtsen - * gnus.el: Gnus v5.6.42 is released. + * gnus.el: Pterodactyl Gnus v0.6 is released. -1998-08-29 17:06:27 Simon Josefsson +1998-08-30 00:36:28 Lars Magne Ingebrigtsen - * gnus-sum.el (gnus-summary-make-menu-bar): Typo. + * nnheader.el (fboundp): Protect code-coding-string. -1998-08-29 12:47:42 Tatsuya Ichikawa + * gnus-art.el (gnus-article-mode): Check that set-buffer-multibyte + is available. - * gnus-agent.el: Use nnheader-insert-file-contents. +Sat Aug 29 23:24:31 1998 Lars Magne Ingebrigtsen -1998-08-29 12:18:18 Lars Magne Ingebrigtsen + * gnus.el: Pterodactyl Gnus v0.5 is released. - * nnvirtual.el (nnvirtual-request-group): Update the right group. +1998-08-29 22:38:35 Lars Magne Ingebrigtsen -1998-08-27 16:46:38 Lars Magne Ingebrigtsen + * gnus-art.el (gnus-article-mode): Make article buffer multibyte. + (gnus-hack-decode-rfc1522): Removed. - * gnus-sum.el (gnus-data-compute-positions): Didn't work on hidden - threads. + * mm-decode.el (mm-charset-coding-system-alist): Check better. - * nnvirtual.el (nnvirtual-request-group): Work when always - updating. - (nnvirtual-always-rescan): Default to t. +Sat Aug 29 22:20:39 1998 Lars Magne Ingebrigtsen -Thu Aug 27 11:03:59 1998 Lars Magne Ingebrigtsen + * gnus.el: Gnus v0.4 is released. - * gnus.el: Gnus v5.6.41 is released. +1998-08-29 20:53:29 Lars Magne Ingebrigtsen -1998-08-27 Mike McEwan - - * gnus-agent.el (gnus-agent-fetch-group-1): Leave the calculation - of `articles' to `gnus-agent-fetch-headers'. - (gnus-agent-fetch-headers): We only want headers that are after - the last entry in `gnus-group-alist'. - -1998-08-27 09:45:42 Lars Magne Ingebrigtsen - - * Makefile.in (warn): New. - - * gnus.el: Removed unreferenced bound variables all over. - - * gnus-group.el (gnus-update-group-mark-positions): Removed topic. - - * gnus-cus.el (gnus-group-customize): No part. - - * gnus-agent.el (gnus-category-line-format-alist): Renamed specs. - (gnus-category-insert-line): Use it. - -Thu Aug 27 09:29:53 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.40 is released. - -1998-08-27 09:19:31 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-mode): Only toggle plugged in group - mode. - -1998-08-27 07:25:47 Lars Balker Rasmussen - - * message.el (message-supersede): Check the right headers. - -1998-08-26 13:51:18 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-sort-threads): Changed level. - -1998-08-26 Mike McEwan - - * gnus-sum.el (gnus-build-all-threads): `save-excursion' and - `set-buffer' back to `gnus-summary-buffer' in order to access - buffer-local variables. - -1998-08-26 06:00:44 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-data-compute-positions): More and faster. - -1998-08-26 05:41:15 Matt Pharr - - * message.el (message-wash-subject): Remove more. - -1998-08-25 11:33:28 Tatsuya Ichikawa - - * gnus-cache.el (gnus-cache-overview-coding-system): New - variable. - -1998-08-25 08:23:05 Albert L. Ting - - * gnus-group.el (gnus-fetch-group-other-frame): New command. - -1998-08-25 07:24:51 Lars Magne Ingebrigtsen - - * gnus-uu.el (gnus-uu-grab-articles): Check for pseudos. - - * gnus-art.el (gnus-ignored-headers): More headers. - - * gnus-sum.el (gnus-summary-move-article): Update the right - group. - -1998-08-23 14:31:31 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-ignored-headers): More headers. - -1998-08-23 Mike McEwan - - * gnus-agent.el (gnus-agent-copy-nov-line): Return to beginning of - line before next read. - (gnus-agent-braid-nov): Remove redundant `let'. - -1998-08-22 10:40:54 Lars Magne Ingebrigtsen - - * gnus-art.el (article-display-x-face): Allow multiple X-Faces - under XEmacs. - -Sat Aug 22 10:28:25 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.39 is released. - -1998-08-22 10:06:03 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-ignored-headers): Added more headers. - -1998-08-21 02:49:56 Lars Magne Ingebrigtsen - - * nnweb.el (nnweb-type): Doc fix. - - * gnus-sum.el (gnus-summary-set-process-mark): Move to the right - article. - -1998-08-20 23:10:01 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-spool-file): Allow lists of files. - -1998-08-20 Per Starback - - * gnus/gnus-start.el (gnus-check-first-time-used): Change current - buffer before creating help group. - -1998-08-20 01:33:08 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-message-style-insertions): New variable. - (gnus-message-insert-stylings): New function. - (gnus-configure-posting-styles): Use them. - - * gnus-topic.el (gnus-topic-mode): Don't alter summary-exit-hook. - - * gnus-sum.el (gnus-select-newsgroup): Don't update group. - - * gnus-msg.el (gnus-setup-message): Bind message-mode-hook. - (gnus-inhibit-posting-styles): New variable. - (gnus-summary-reply): Use it. - (gnus-configure-posting-styles): Ditto. - - * gnus-group.el (gnus-group-suspend): Don't kill dribble buffer. - -Thu Aug 20 00:28:35 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.38 is released. - -1998-08-20 00:02:50 Lars Magne Ingebrigtsen - - * message.el (message-mail): Doc fix. - -1998-08-19 23:22:02 Bill Pringlemeir - - * messcompat.el (message-send-mail-function): Initialized from - send-mail-function. - -1998-08-19 23:20:42 Martin Larose - - * message.el (message-send-coding-system): New variable. - -1998-08-19 19:00:37 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-configure-posting-styles): Reinstated most of - old code. - - * gnus-start.el (gnus-save-newsrc-file): Use coding system. - -1980-06-08 03:53:56 Mike McEwan - - * gnus-agent.el (gnus-agent-braid-nov): Go to right place. - -1980-06-08 03:01:48 Shuhei KOBAYASHI - - * gnus-group.el (gnus-group-suspend): Fix. - -1998-08-18 00:25:11 Lars Magne Ingebrigtsen - - * gnus-cite.el (gnus-cited-opened-text-button-line-format-alist): - New n spec. - - * gnus-group.el (gnus-group-suspend): Use mapcar. - -1998-08-17 14:35:33 Lars Magne Ingebrigtsen - - * gnus-ems.el (gnus-add-minor-mode): Set mode var. - - * gnus-start.el (gnus-slave-mode): New function. - - * gnus-msg.el (gnus-post-method): Work with current in nndraft. - -1998-08-16 23:30:14 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-request-article-this-buffer): Allow recursive - selection of nneething groups. - - * nneething.el (nneething-address): Renamed from directory. - -Sun Aug 16 18:59:41 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.37 is released. - -1998-08-16 14:52:43 Lars Magne Ingebrigtsen - - * gnus.el: Autoload gnus-summary-wide-reply. - - * gnus-sum.el (gnus-get-newsgroup-headers): Return the value of - In-Reply-To. - - * gnus-msg.el (gnus-setup-message): Posting styles have to be - configured in message-mode-hook. - - * nntp.el (nntp-connection-timeout): Restored. - (nntp-open-connection): Use it. - -1998-08-15 22:46:49 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-make-useful-group): Doc fix. - - * gnus-art.el (gnus-article-push-button): Place point where you - click. - -1998-08-15 Mike McEwan - - * gnus-agent.el (gnus-agent-save-group-info): Update "groups" file - if `nntp-server-list-active-group' is nil. - -1998-08-15 00:35:03 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-summary-increase-score): Swap t and r. - - * gnus-sum.el (gnus-remove-thread): Didn't work with sparse - threads. - -1998-08-14 François Pinard - - * nndoc.el (nndoc-generate-mime-parts-head): Use original Subject, - Message-ID, and References in fully blown articles. - -Fri Aug 14 23:03:51 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.36 is released. - -1998-08-14 21:49:22 Lars Magne Ingebrigtsen - - * gnus.el (load): Push onto list. - - * gnus-group.el (gnus-group-get-new-news-this-group): Store active - info. - -Fri Aug 14 21:41:59 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.35 is released. - -1998-08-14 00:00:15 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-server-scan-server): Error better. - - * nndir.el: Make independent of nnmh. - Revert. - - * message.el (message-remove-text-with-property): New function. - (message-fix-before-sending): Check for invisible text. - - * gnus.el (load): Create the Gnus buffer even when no splash. - - * gnus-msg.el (gnus-setup-message): Add buffer to list. - - * gnus-win.el (gnus-remove-some-windows): Use new buffer system. - (gnus-delete-windows-in-gnusey-frames): Ditto. - - * gnus.el (gnus-add-buffer): New function. - -1998-08-13 23:38:21 Lars Magne Ingebrigtsen - - * gnus-xmas.el (gnus-buffer-list): Removed. - - * gnus.el (gnus-buffers): New variable. - (gnus-get-buffer-create): New function; used throughout. - (gnus-buffers): New function. - - * gnus-msg.el (gnus-configure-posting-styles): Go to eoh - reliably. - - * message.el (message-goto-eoh): New command. - -1998-08-13 23:13:53 Simon Josefsson - - * gnus-msg.el (gnus-setup-message): use message-setup-hook - instead - (gnus-configure-posting-styles): new posting-style 'body - (gnus-configure-posting-styles): insert headers immediately - -1998-08-13 13:05:36 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-summary-increase-score): Change thread to - "r". - - * gnus-sum.el (gnus-summary-scroll-down): New command and + * gnus-art.el (gnus-article-decode-mime-words): New command and keystroke. - * gnus-agent.el (gnus-agent-expire): Check that directories - exist. - -1998-08-12 20:56:41 Simon Josefsson - - * gnus-cache.el (gnus-uncacheable-groups): doc change - (gnus-cacheable-groups): new variable - (gnus-cache-possibly-enter-article): use it - -1998-08-12 22:30:16 Lars Magne Ingebrigtsen - - * nntp.el (nntp-encode-text): Too much text. - -1998-08-12 21:58:50 Matt Pharr - - * message.el (message-make-forward-subject-function): New - variable. - (message-wash-forwarded-subjects): Ditto. - -Wed Aug 12 21:09:58 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.34 is released. - -1998-08-12 13:32:38 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-post-method): Don't use `current' in drafts. - - * gnus-score.el (gnus-summary-increase-score): Changed T to h and - downcase. - -Tue Aug 11 20:46:25 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.33 is released. - -1998-08-11 20:07:55 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-apropos): Check symbol value. - - * gnus-cite.el (gnus-cited-closed-text-button-line-format): - Changed. - -Tue Aug 11 19:42:42 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.32 is released. - -1998-08-11 13:36:56 Lars Magne Ingebrigtsen - - * nndoc.el (nndoc-type-alist): Do MIME digests before multiparts. - - * gnus.el (gnus-predefined-server-alist): Expand vars. - -1998-08-09 Dave Love - - * gnus-art.el (article-display-x-face): Don't try (and fail) to - display multiple faces. - -1998-08-11 11:41:43 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-header-newsgroups-face): Don't bold so much. - - * gnus-group.el (gnus-group-rename-group): Remove old group name - from list of killed groups. - - * gnus-int.el (gnus-get-function): Error better. - - * gnus-art.el (gnus-article-narrow-to-signature): Inhibit motion - hooks. - (article-hide-pgp): Delete text instead of hiding it. - - * gnus-group.el (gnus-group-find-new-groups): Ditto. - - * gnus-start.el (gnus-find-new-newsgroups): Accept C-u C-u as a - total query. - -1998-08-10 09:31:36 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-prepare): Place point at the beginning - of the body. - - * gnus-cite.el (gnus-cite-attribution-face): Changed to italic. - - * gnus-art.el (gnus-article-edit-article): Delete "annotation" - text. - (gnus-insert-prev-page-button): Mark as annotation. - (gnus-insert-next-page-button): Ditto. - - * gnus-cite.el (gnus-cited-closed-text-button-line-format): New - variable. - (gnus-cited-closed-text-button-line-format-alist): Ditto. - (gnus-article-toggle-cited-text): Toggle between different - symbols. - -1998-08-09 19:58:36 Lars Magne Ingebrigtsen - - * gnus.el (gnus-version): Remove backend info. - -Sun Aug 9 19:37:40 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.31 is released. - -1998-08-09 François Pinard - - * nndoc.el: Split MIME multipart messages, maybe recursively. - (nndoc-mime-parts-type-p, nndoc-transform-mime-parts, - nndoc-generate-mime-parts-head, nndoc-dissect-mime-parts, - nndoc-dissect-mime-parts-sub): New functions. - - * nndoc.el: Quoting boundaries is optional, for multipart digests. - -1998-08-09 17:51:25 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-save-group-info): Check whether file - exists. - - * message.el (message-goto-signature): Return nil if no sig. - (message-delete-not-region): Delete properly if no sig. - -1998-08-09 17:26:30 Simon Josefsson - - * gnus-srvr.el (gnus-browse-make-menu-bar): select did read - -1998-08-09 15:51:43 Lars Magne Ingebrigtsen - - * gnus-sum.el (t): Added keystroke for W W C. - - * gnus-cite.el (gnus-article-hide-citation-maybe): hiden->hidden. - -Sun Aug 9 15:46:16 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.30 is released. - -1998-08-09 10:48:31 Lars Magne Ingebrigtsen - - * message.el (message-cite-original-without-signature): Peel off - blank lines. - - * gnus-art.el (gnus-article-maybe-highlight): Doc fix. - - * gnus-sum.el (gnus-data-enter-list): Threw away all new list data - at the beginning of the buffer. - -1998-08-07 01:41:29 Gareth Jones - - * gnus-score.el (gnus-summary-increase-score): Don't downcase - before lookin in char-to-header. - -1998-08-07 01:33:22 Lars Magne Ingebrigtsen - - * gnus.el (gnus-predefined-server-alist): Too many parentheses. - -1998-08-06 11:20:08 Lars Magne Ingebrigtsen - - * gnus.el (gnus-continuum-version): Include quassia. - - * gnus-sum.el (gnus-data-enter-list): Check before entering list. - -1998-08-06 11:13:56 Francois Felix Ingrand - - * gnus-salt.el (gnus-generate-vertical-tree): Don't go too far to - the left. - -Thu Aug 6 07:58:17 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.29 is released. - -1998-08-06 07:10:31 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire): Check whether (caar - gnus-agent-article-alist) is nil. - - * gnus.el (gnus-read-method): Allow selecting predefined servers. - - * gnus-topic.el (gnus-topic-update-topic-line): Compute right - number when inserting missing topic lines. - - * gnus-start.el (gnus-get-unread-articles): Check that the group - is alive. - - * gnus-score.el (gnus-score-load-score-alist): Better error - messaging. - -Tue Aug 4 09:42:31 1998 Kurt Swanson - - * gnus-salt.el (gnus-pick-mouse-pick-region): Fix picking bug due - to use of gnus-read-event-char. - -1998-07-28 Dave Love - - * gnus-group.el (gnus-group-fetch-faq): Don't mung dots in group - name. - -1998-07-27 Dave Love - - * gnus-topic.el (gnus-topic-mode-map): Provide Emacs tty - alternatives to [tab], [(meta tab)]. - -1998-08-06 04:41:38 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-startup-file-coding-system): New variable. - (gnus-read-init-file): Use it. - (gnus-read-newsrc-el-file): Ditto. - - * gnus-sum.el (gnus-thread-ignore-subject): Changed default. - -1998-08-06 04:38:02 Richard Stallman - - * message.el (sendmail): Required. - -1998-08-06 02:11:37 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-auto-select-same): Dix fix. - -1998-08-04 Mike McEwan - - * gnus-sum.el (gnus-select-newsgroup): Set - `gnus-newsgroup-unselected' when selecting specific articles via - SELECT-ARTICLE - there may be more headers to fetch if - `gnus-fetch-old-headers' is non-nil. - (gnus-summary-read-group): pass SELECT-ARTICLE to - `gnus-summary-read-group-1' and reset to nil when going to next group. - (gnus-summary-read-group): Change `select-article' to - `select-articles' for consistency. - -Tue Aug 4 05:25:01 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.28 is released. - -1998-08-03 22:00:25 Lars Magne Ingebrigtsen - - * nndoc.el (nndoc-set-delims): Removed article-end. - (nndoc-dissect-buffer): Use eobp. - -1998-08-03 19:59:36 Trung Tran-Duc - - * nntp.el (nntp-open-connection): Bind coding-system-for-write. - -1998-07-31 16:45:36 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-read-ephemeral-group): Make the server - unique. - -1998-07-28 François Pinard - - * gnus-uu.el (gnus-uu-reginize-string): Consider the number of - parts as part of the fixed subject, instead of a wild quantity. - -1998-07-30 21:47:23 Lars Magne Ingebrigtsen - - * gnus-cache.el (gnus-summary-insert-cached-articles): Sort - articles. - - * nndir.el (nndir): Use nnml functions. - -Mon Jul 27 03:26:00 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.27 is released. - -1998-07-27 02:27:11 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-update-unreads): New function. - - * gnus-sum.el (gnus-summary-limit): Update mode line. - - * gnus-soup.el (gnus-soup-add-article): Update mode line. - - * gnus-group.el (gnus-group-make-menu-bar): Bug. - - * gnus-art.el (gnus-article-make-menu-bar): Menu. - - * gnus-sum.el (gnus-summary-make-menu-bar): Bug reports. - - * gnus-topic.el (gnus-topic-mode-map): h -> H. - -1998-07-19 16:59 Simon Josefsson - - * gnus-util.el (gnus-netrc-syntax-table): @ is whitespace - -1998-07-17 Gordon Matzigkeit - - * gnus-uu.el (gnus-uu-reginize-string): Simplify by looking - from back to front for part numbers, rather than skipping - leading ``version numbers.'' - - (gnus-uu-part-number): Make consistent with - gnus-uu-reginize-string. - -1998-07-26 19:01:58 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-request-article-this-buffer): Pass along - header. - - * gnus-sum.el (gnus-summary-update-article): Don't pass along - iheader to regeneration routine. - -1998-07-27 KOSEKI Yoshinori - - * nnmail.el (nnmail-move-inbox): Clear nnmail-internal-password, - when supplied Password is incorrect. - -Sat Jul 25 19:31:36 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.26 is released. - -1998-07-25 14:53:24 Lars Magne Ingebrigtsen - - * gnus-salt.el (gnus-pick-mouse-pick-region): Use - gnus-read-event-char. - -Sat Jul 25 02:43:35 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.25 is released. - -1998-07-25 00:03:24 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-read-ephemeral-group): Ditto. - - * gnus-sum.el (gnus-summary-read-group-1): Ditto. - - * gnus-group.el (gnus-group-read-group): Accept article list. - -1998-07-24 14:35:02 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-configure-posting-styles): Quote some. - - * message.el (message-ignored-supersedes-headers): Added X-Trace - and X-Complaints-To. - - * nnmail.el (gnus-util): Required. - -1998-07-21 23:03:13 Lars Magne Ingebrigtsen - - * gnus.el (gnus-news-group-p): Bogosity in params. - -1998-07-21 16:14:32 Robert Bihlmeyer - - * gnus-util.el (gnus-globalify-regexp): New function. - -1998-07-18 21:49:01 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-list-of-unread-articles): Peel off articles - outside active range. - -1998-07-15 10:47:39 Lars Magne Ingebrigtsen - - * nnvirtual.el (nnvirtual-request-type): Handle non-numerical - articles. - - * gnus.el (gnus-news-group-p): Do something sensible with negative - articlies. - -Wed Jul 15 10:27:05 1998 Lars Magne Ingebrigtsen - - * gnus-salt.el (gnus-tree-minimize-window): Allow numbers. - -Wed Jul 15 10:25:29 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire): Ignored ticks. - -Wed Jul 15 10:15:28 1998 Hallvard B. Furuseth - - * nntp.el (nntp-send-authinfo): Message better and stuff. - -Wed Jul 15 10:10:07 1998 Lars Magne Ingebrigtsen - - * gnus.el (gnus-message-archive-group): Allow sexp. - -Wed Jul 15 09:56:47 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-select-newsgroup): Accept select-articles - para, - -1998-07-13 Mike McEwan - - * gnus-sum.el (gnus-select-newsgroup): Don't call the Agent to - mark articles as read until *all* headers have been retrieved. - -Wed Jul 15 09:06:18 1998 Lars Magne Ingebrigtsen - - * nndir.el (nndir): Use nnml to request article. - -1998-07-11 SL Baur - - * gnus-topic.el (gnus-topic-mode-map): Use modern key syntax. - -Sun Jul 12 04:01:22 1998 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-current-home-score-file): New function. - -1998-07-11 Mike McEwan - - * gnus-agent.el (gnus-agent-fetch-headers): Note last fetched - headers per sesion to aid expiry in `headers only' groups. - - * gnus-agent.el (gnus-agent-expire): Update group info to add - expired articles to list of read articles and prevent - re-fetching. - -1998-07-12 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-active-file-coding-system): Changed to - binary. - -Sun Jul 12 03:16:18 1998 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-load-file): Specify which alist to - decay. - -1998-07-12 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-startup-file-coding-system): New variable. - (gnus-read-newsrc-el-file): Use it. - -Sat Jul 11 03:03:53 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.24 is released. - -Fri Jul 10 04:23:24 1998 Hallvard B. Furuseth - - * gnus-util.el (gnus-parse-netrc): Allow "default" values. - -Fri Jul 10 04:15:35 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-server-opened-hook): Doc change. - -Fri Jul 10 03:03:48 1998 François Pinard - - * gnus-sum.el (gnus-summary-respool-trace): New command and - keystroke. - -Fri Jul 10 02:18:01 1998 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-prin1): Bind print-escape-multibyte to nil. - -Mon Jul 6 01:02:59 1998 Simon Josefsson - - * gnus-range.el (gnus-sorted-complement): Fix comments. - -Thu Jul 2 11:16:14 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-iterate): New macro. - - * message.el (message-pop-to-buffer): Clone locals. - - * gnus-msg.el (gnus-posting-styles): Reinstated. - (gnus-posting-style-alist): Ditto. - -Wed Jul 1 18:02:31 1998 Lars Magne Ingebrigtsen - - * gnus-int.el (gnus-get-function): Set funct to nil. - -1998-07-01 16:57:38 Simon Josefsson - - * gnus-int.el (gnus-get-function): returned non-nil when - function wasn't bound, if noerror=t - -Wed Jul 1 17:30:41 1998 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-mode-map): Bind TAB and M-TAB. - - * gnus-sum.el (gnus-build-sparse-threads): Make sure no dates are - nil. - (gnus-summary-limit-mark-excluded-as-read): Use the intersection. - - * gnus-msg.el (gnus-setup-message): Clone all local variables from - the summary buffer. - -Wed Jul 1 14:03:52 1998 Richard Stallman - - * message.el (message-cite-original): Use mail-citation-hook. - (message-cite-function): Ditto. - -Wed Jul 1 14:00:53 1998 Rajappa Iyer - - * gnus-salt.el (gnus-pick-mode-map): Changed keymap. - -Wed Jul 1 13:33:26 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.23 is released. - -Wed Jul 1 12:52:32 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-record-command): Give more precise time info. - (nntp-next-result-arrived-p): Look for the end of error lines. - -Wed Jul 1 12:24:06 1998 François Pinard - - * gnus-util.el (gnus-delete-if): Would do the opposite. - -Wed Jul 1 01:53:31 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-build-sparse-threads): Didn't work at all. - -Tue Jun 30 15:56:54 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-send-authinfo): Store the user name. - (nntp-authinfo-user): New variable. - - * gnus-sum.el (gnus-summary-limit-mark-excluded-as-read): Would - mark some articles as unread. - - * gnus-agent.el (gnus-agent-expire): Don't sort lines. - -Tue Jun 30 15:56:31 1998 Mike McEwan - - * gnus-agent.el (gnus-agent-expire): Use a fresh hash table. - -Mon Jun 29 22:49:49 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.22 is released. - -Mon Jun 29 21:22:46 1998 Lars Magne Ingebrigtsen - - * gnus-salt.el (gnus-pick-mode-map): Remove gnus-mouse. - - * gnus-sum.el (gnus-dependencies-add-header): `debug' left in. - Eh. Eh. - - * gnus-salt.el (gnus-summary-pick-line-format): Missing %.- - - * gnus-topic.el (gnus-topic-rename): Fix error message. - -Sun Jun 28 14:32:08 1998 Lars Magne Ingebrigtsen - - * gnus-spec.el (gnus-face-face-function): Double quoting removed. - -Sun Jun 28 09:54:52 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.21 is released. - -Sun Jun 28 08:51:39 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-edit-article-done): Copy the buffer to - a temp buffer before replacing. - - * gnus-msg.el (gnus-post-news): Treat broken-reply-to in - followups. - - * gnus-sum.el (gnus-summary-goto-subject): Position point. - -Sat Jun 27 09:19:20 1998 Lars Magne Ingebrigtsen - - * gnus-demon.el (gnus-util): Required. - - * gnus-score.el (gnus-score-body): Message fix. - - * gnus-group.el (gnus-group-highlight-line): Use it. - - * gnus-util.el - (gnus-put-text-properties-excluding-characters-with-faces): New - function. - -Sat Jun 27 08:56:08 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.20 is released. - -Sat Jun 27 08:49:51 1998 Arne Georg Gleditsch - - * gnus-sum.el (gnus-parent-headers): Check better for headers. - -Sat Jun 27 08:45:09 1998 Lars Magne Ingebrigtsen - - * message.el (message-check-news-body-syntax): Buggy checksum - check. - -Sat Jun 27 07:59:22 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.19 is released. - -Sat Jun 27 07:50:50 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.18 is released. - -Sat Jun 27 03:18:57 1998 Lars Magne Ingebrigtsen - - * gnus-soup.el (gnus-soup-save-areas): Made interactive. - - * nnfolder.el (nnfolder-request-replace-article): Check all X-From - headers. - - * gnus-sum.el (gnus-update-marks): Don't nix out cache lists. - - * nngateway.el (nngateway-mail2news-header-transformation): - Changed semantics. - - * message.el (message-check-news-body-syntax): Don't look at - buffer size to see whether text has been added. - -Fri Jun 26 15:46:05 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.16 is released. - -Fri Jun 26 15:36:25 1998 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-delete-assq): Removed. - (gnus-delete-assoc): Ditto. - - * gnus.el: Use throughout. - - * gnus-util.el (gnus-pull): New macro. - -1998-06-26 Simon Josefsson - - * gnus-sum.el (gnus-get-newsgroup-headers): parse Chars: headers - -Fri Jun 26 13:45:24 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-update-marks): Use it. - - * gnus-util.el (gnus-delete-alist): New function. - - * gnus-sum.el (gnus-update-marks): Don't save list of cached - articles. - - * message.el (message-mode-menu): Include kill-buffer. - - * nnmail.el (nnmail-purge-split-history): Use it. - - * gnus-util.el (gnus-delete-if): New function. - - * nnmail.el (nnmail-article-group): Use gnus-remove-duplicates. - -Fri Jun 26 13:45:09 1998 Richard Stallman - - * gnus-util.el (gnus-remove-duplicates): New function. - -Fri Jun 26 13:30:42 1998 Kevin Christian - - * gnus-score.el (gnus-score-string): Do updating of scores after - fuzzies. - -Fri Jun 26 07:26:03 1998 Lars Magne Ingebrigtsen - - * message.el (message-mode): Don't do the intern dance. - -Fri Jun 26 07:13:49 1998 Richard Stallman - - * message.el (message-mode): Adaptive fill changes. - -Fri Jun 26 04:29:44 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-mode-line-format-alist): Allow article - score. - - * gnus-score.el (gnus-score-load-file): Would ignore all score - files without un-advanced rules. - - * gnus-ems.el ((fboundp 'split-string)): Use it where it exists. - -Fri Jun 26 04:23:12 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.15 is released. - -Fri Jun 26 03:39:32 1998 Lars Magne Ingebrigtsen - - * nnfolder.el (nnfolder-request-replace-article): Delete old - delimiter. - - * gnus-msg.el (gnus-summary-reply): Use it. - - * message.el (message-reply): Removed parameter. - (message-wide-reply): Ditto. - - * gnus-msg.el (gnus-msg-treat-broken-reply-to): New function. - - * gnus-art.el (gnus-check-group-server): New function. - (gnus-request-article-this-buffer): Don't try to waken the server - before needing to. - -Thu Jun 25 10:35:48 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-delete-article): Sort the articles - before deleting. - - * nngateway.el (nngateway-request-post): Return success. - - * nnheader.el (nnheader-insert-file-contents): Bind more hooks. - - * gnus-sum.el (gnus-summary-limit-to-age): Reverse logic. - - * gnus-score.el (gnus-summary-score-entry): Removed interactive - spec. - ((gnus-summary-score-map "V" gnus-summary-mode-map)): Removed - keystroke. - - * gnus-art.el (gnus-article-show-summary): Position point. - - * gnus-cache.el (gnus-cache-update-article): Change group first. - - * gnus.el (gnus-short-group-name): Collapse more. - -Thu Jun 25 08:48:06 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.14 is released. - -Thu Jun 25 05:13:31 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-rebuild-thread): Accept a line argument. - (gnus-rebuild-thread): Would skip around a lot when `P'-ing past - the beginning. - - * gnus-msg.el (gnus-post-method): Present all known servers if - `C-u 0'. - - * gnus-salt.el (gnus-pick-mode-map): Reinstated keymap. - - * gnus-sum.el (gnus-build-sparse-threads): Put the proper date - in. - -Wed Jun 24 07:52:30 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.13 is released. - -Wed Jun 24 07:47:04 1998 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-rename): Disallow "nil". - -Wed Jun 24 07:33:17 1998 Vladimir Alexiev - - * nnvirtual.el (nnvirtual-update-xref-header): Regexp-quote group - name. - -Wed Jun 24 06:15:27 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-build-sparse-threads): Give all the sparse - articles the date of the current child. - - * gnus-topic.el (gnus-group-topic-parameters): Didn't compute. - -Wed Jun 24 03:27:44 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.12 is released. - -Wed Jun 10 11:06:35 1998 Andreas Schwab - - * message.el (message-mail-other-window): Bind message-this-is-mail. - (message-mail-other-frame): Likewise. - (message-news-other-window): Bind message-this-is-news. - (message-news-other-frame): Likewise. - -1998-06-09 Sam Steingold - - * gnus-uu.el (gnus-uu-default-view-rules): make sed kill ^M only - at the end of line. - -1998-06-05 Hrvoje Niksic - - * nnmail.el (nnmail-get-split-group): Don't regexp-quote - nnmail-procmail-suffix. - -Wed Jun 24 03:04:05 1998 Kim-Minh Kaplan - - * gnus-sum.el (gnus-build-get-header): Fix obarray. - -Wed Jun 24 02:49:57 1998 Castor - - * nntp.el (nntp-open-ssl-stream): - -Wed Jun 24 02:31:46 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-nov-parse-line): Cleaned up. - (gnus-build-all-threads): Put things in the wrong obarray. - -Wed Jun 24 01:43:26 1998 Decklin Foster - - * nngateway.el (nngateway-mail2news-header-transformation): New - function. - -Wed Jun 24 00:25:45 1998 Lars Magne Ingebrigtsen - - * message.el (message-shorten-references): New function. - (message-header-format-alist): Use it. - - * gnus-start.el (gnus-always-read-dribble-file): Customized. - - * message.el (message-generate-new-buffers): Dox fox. - -Tue Jun 23 23:58:48 1998 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-prepare-topic): Respect visible topic - param. - (gnus-topic-hierarchical-parameters): New function. - -1998-06-02 Didier Verna - - * gnus-picon.el (gnus-get-buffer-name): use get-buffer-create - instead of get-buffer - -Wed Jun 3 04:41:45 1998 Lars Magne Ingebrigtsen - - * nnkiboze.el (nnkiboze-request-delete-group): Delete .newsrc - file. - - * nnmail.el (nnmail-article-group): Nuke looong lines. - - * gnus-art.el (gnus-button-alist): Buggy default. - -Wed Jun 3 04:03:37 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.11 is released. - -Wed Jun 3 03:33:50 1998 Lars Magne Ingebrigtsen - - * gnus.el: Checked doc string syntax throughout. - - * message.el (message-subject-re-regexp): Renamed. - -Wed Jun 3 03:33:05 1998 Simon Josefsson - - * message.el (message-ignored-subject-re): New variable. - -Wed Jun 3 03:25:13 1998 Sam Steingold - - * gnus-msg.el (gnus-bug-create-help-buffer): New variable. - (gnus-bug): Use it. - -1998-05-07 Hrvoje Niksic - - * nnmail.el: (nnmail-get-split-group): Use `regexp-quote' - when file name is a part of pattern. - - * nnmail.el (nnmail-crosspost-link-function): Ditto. - - * gnus-ems.el: Use `symbol-name' instead of `(format "%s" ...)'. - - * gnus-score.el (gnus-score-load-file): Use `regexp-quote' - when file name is a part of pattern. - -1998-05-06 Hrvoje Niksic - - * gnus-cache.el (gnus-cache-generate-active): Use `regexp-quote' - when file name is a part of pattern. - -Wed Jun 3 03:13:34 1998 Lars Magne Ingebrigtsen - - * nnfolder.el (nnfolder-delete-mail): Changed parameters. - (nnfolder-request-replace-article): Rename X-From-Line. - -Wed Jun 3 03:10:04 1998 Dan Christensen - - * nnfolder.el (nnfolder-adjust-min-active): Work. - -Mon Jun 1 05:27:28 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-limit-to-age): Reversed time and - almost collapsed space! - - * nnmail.el (nnmail-days-to-time): Computed wrong time. - -Mon Jun 1 05:19:46 1998 Kim-Minh Kaplan - - * gnus-sum.el (gnus-dependencies-add-header): Break loops. - -Mon Jun 1 05:13:34 1998 Fabrice POPINEAU - - * gnus-cache.el (gnus-cache-generate-active): Regexp-quote. - -Mon Jun 1 04:31:23 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.10 is released. - -Mon Jun 1 03:25:33 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-button-alist): Recognize bare mailto buttons - for Gnus. - - * nntp.el: Replaced all `message' calls. - -Mon Jun 1 03:13:46 1998 Wolfgang Rupprecht - - * nntp.el (nntp-encode-text): Removed spurious forward-line. - -Sat May 23 19:44:43 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-session): Would infloop if - opening failed. - -Tue May 19 04:11:33 1998 Yoshiki Hayashi - - * nnheader.el (nnheader-translate-file-chars): Don't change - string. - -Tue May 19 03:07:45 1998 P. E. Jareth Hein - - * gnus-util.el (gnus-dd-mmm): New version. - -Tue May 19 03:00:39 1998 Lars Magne Ingebrigtsen - - * gnus.el: Changed address. - -Tue May 12 06:12:42 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire): Delete more. - -Sun May 10 19:08:28 1998 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-read-ephemeral-group): Don't add - `address'. - -Sun May 3 18:01:01 1998 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-within-headers-p): Renamed. - - * message.el (message-cancel-news): If a Sender header doesn't - exist, compare From against `message-make-from'. - -Sun May 3 15:07:25 1998 Lars Balker Rasmussen - - * gnus-agent.el (gnus-agent-save-group-info): Fix - re-search-forward params. - -Sun May 3 15:04:02 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire): Check for the size. - -Sat May 2 01:50:20 1998 Dan Christensen - - * nnfolder.el (nnfolder-goto-article): New version. - (nnfolder-read-folder): Fix. - - * nnmail.el (nnmail-within-headers): New function. - -Sat May 2 01:36:37 1998 Lars Magne Ingebrigtsen - - * nnfolder.el (nnfolder-goto-article): Thinkotypo search arguments. - - * nnheader.el (nnheader-find-file-noselect): Also bind - `find-file-hooks' to nil. - - * nnmail.el (nnmail-process-unix-mail-format): Don't use - `find-file-noselect'. - - * gnus-group.el (gnus-group-make-menu-bar): Typo. - -Fri May 1 21:59:35 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.9 is released. - -Fri May 1 21:54:30 1998 Lars Magne Ingebrigtsen - - * nnfolder.el (nnfolder-goto-article): Would infloop. - -Fri May 1 19:45:50 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.8 is released. - -Fri May 1 18:51:21 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-request-newgroups): Use format-time-string. - - * message.el (message-fetch-field): Inhibit point-motion hooks. - -Fri May 1 18:33:06 1998 Wes Hardaker - - * gnus-score.el (gnus-adaptive-word-no-group-words): New variable. - -Fri May 1 16:56:32 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire): Put point at the start of the - buffer. - - * gnus-soup.el (gnus-soup-parse-areas): Check whether the file - exists. - - * gnus-draft.el (gnus-draft-send): Use meta-information. - - * nnagent.el (nnagent-request-post): Store meta-information. - - * gnus-agent.el (gnus-agent-meta-information-header): New variable. - (gnus-agent-insert-meta-information): New function. - -Fri May 1 16:43:35 1998 Paul Franklin - - * message.el (message-generate-headers): Insert Sender when - required. - -Fri May 1 15:28:55 1998 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-dd-mmm): Accept "" dates. - - * gnus-cite.el (gnus-article-hide-citation): Don't remove button - when hiding. - - * gnus-msg.el (gnus-post-method): Allow ARG to override - `current'. - - * gnus-sum.el (gnus-remove-thread): Remove the dummy root - properly. - - * nnfolder.el (nnfolder-goto-article): New function. - (nnfolder-retrieve-headers): Use it. - (nnfolder-request-article): Ditto. - -Wed Apr 29 22:48:33 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.7 is released. - -Wed Apr 29 20:54:35 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-update-info): Bind - gnuis-newsgroup-scored later. - (gnus-summary-prepare-threads): Check some more before inserting - dummy roots. - - * gnus-cache.el (gnus-cache-enter-article): Update marks - properly. - - * gnus-xmas.el (gnus-xmas-draft-menu-add): New function. - - * nntp.el (nntp-connection-timeout): Removed. - - * gnus-move.el (gnus-move-group-to-server): Delete nils. - - * nntp.el (nntp-close-server): Close more connections. - - * gnus-art.el (gnus-button-alist): Accept white space after colons - in things. - -Wed Apr 29 20:18:45 1998 Kurt Swanson - - * gnus-art.el (article-update-date-lapsed): Bind - `deactivate-mark'. - - * gnus-salt.el (gnus-pick-mode-map): Moved keys around to avoid - shadowing. - - * gnus-art.el (gnus-article-read-summary-keys): New version. - - * gnus-sum.el (gnus-summary-make-menu-bar): New for article mode. - - * gnus-msg.el (gnus-post-method): `current' custom. - -Wed Apr 29 19:04:27 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-set-local-parameters): Ignore - quit-config. - (gnus-select-newsgroup): Use the value of gnus-fetch-old-headers. - - * message.el (message-post-method): Doc fix. - - * gnus.el (gnus-directory): dox fix. - -Tue Apr 28 03:32:17 1998 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-timestamp): Really get timestamp. - - * gnus.el (gnus-group-parameter-value): Use explicit iteration. - -Tue Apr 28 03:15:50 1998 Hallvard B. Furuseth - - * gnus-util.el (gnus-alive-p): Check for binding. - -Tue Apr 28 03:00:16 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-parent-headers): Don't infloop on nil - References. - - * gnus-art.el (gnus-article-mode): Don't kill local vars. - - * score-mode.el (score-mode-syntax-table): Change syntax. - -Mon Apr 27 00:26:01 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.6 is released. - -Mon Apr 27 00:07:11 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-request-article-this-buffer): Viewing pseudos - in nneething groups bugged. - - * gnus-sum.el (gnus-summary-prepare-threads): Dummy roots and - dormants and stuff. - -Sun Apr 26 23:34:40 1998 Lars Magne Ingebrigtsen - - * gnus-cache.el (gnus-cache-file-name): Use FULL. - - * nnheader.el (nnheader-translate-file-chars): Allow FULL - parameter. - - * gnus-cache.el (gnus-cache-file-name): Translate all colons. - -Sun Apr 26 19:27:56 1998 Justin Sheehy - - * nntp.el (nntp-rlogin-parameters): Doc fix. - -Sun Apr 26 19:21:12 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-summary-save-in-mail): Not a command. - -Sun Apr 26 19:16:03 1998 James Troup - - * gnus-sum.el (gnus-summary-expire-articles-now): Work. - -Sun Apr 26 14:34:06 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-build-sparse-threads): Break loops. - (gnus-summary-print-article): Save excursion to try to preserve - local/bound variable messup. - - * gnus-salt.el (gnus-tree-read-summary-keys): Put point in article - buffer. - - * gnus-undo.el (gnus-undo): New group. - (gnus-undo-limit): New variable. - (gnus-undo-register-1): Use it. - - * gnus-sum.el (gnus-summary-update-info): Don't nix out scores. - - * gnus-start.el (gnus-active-to-gnus-format): Removed "." from - quoting. - - * gnus.el (gnus-cache-directory): Moved here. - (gnus-predefined-server-alist): Use. - - * message.el (message-autosave-directory): Put back in. - (message-set-auto-save-file-name): Use if Gnus isn't running. - - * gnus-util.el (gnus-alive-p): Moved here. - - * message.el (message-autosave-directory): Removed. - (message-set-auto-save-file-name): Don't use it. - - * gnus.el: Use gnus-buffer-exists-p throughout. - - * gnus-uu.el (gnus-uu-save-article): Use gnus-kill-buffer. - - * message.el (message-make-in-reply-to): Check more for strange - From lines. - - * gnus-art.el (gnus-article-mode): Don't nix out vars. - -Sun Apr 26 14:05:40 1998 Frank Bennett - - * nnmail.el (nnmail-move-inbox): Push error'ed mailboxes onto the - list. - -Sun Apr 26 13:01:53 1998 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-save): Use it. - - * score-mode.el (score-mode-syntax-table): New table. - - * nnmbox.el: Commentary fix. - -Sun Apr 26 12:59:00 1998 Richard Stallman - - * message.el (message-mode): New adaptive fill defaults. - -Sun Apr 26 12:50:38 1998 Jim Radford - - * gnus-start.el (gnus-active-to-gnus-format): Groups that start - with dots. - -1998-04-11 Richard Stallman - - * gnus/gnus-art.el (gnus-emphasis-alist): Use nth, not caddr. - -Sat Apr 25 15:33:57 1998 Kim-Minh Kaplan - - * gnus-sum.el (gnus-build-sparse-threads): Handle loops. - -Sat Apr 25 15:09:54 1998 Lars Magne Ingebrigtsen - - * gnus.el (gnus-valid-select-methods): nngateway is post-mail. - -Fri Apr 24 21:32:14 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.5 is released. - -Fri Apr 24 21:19:21 1998 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-post-method): Doc fix. - (gnus-post-method): Reversed semantics. - -1998-04-01 Jan Vroonhof - - * gnus-msg.el (gnus-post-method): Customized. Added 'native - option. In the function, added support for new value. - -Fri Apr 24 20:04:15 1998 Lars Magne Ingebrigtsen - - * nnmbox.el (nnmbox-request-create-group): New function. - -Sun Apr 12 07:55:16 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-save-group-info): Only do those that - are covered. - -Tue Apr 7 11:26:31 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-authinfo-file): Doc fix. - -1998-03-31 Ken Raeburn - - * nnml.el (nnml-request-expire-articles): Sort active-articles, - then only expire the intersection of that set with the requested - articles. - -Wed Apr 1 16:01:44 1998 Lars Magne Ingebrigtsen - - * message.el (message-supersede): Check Sender. - (message-cancel-news): Fix Sender check. - -Sun Mar 29 11:54:33 1998 Lars Magne Ingebrigtsen - - * nnkiboze.el (nnkiboze-generate-group): Would mess up newsrs - hashtb. - (nnkiboze-enter-nov): Created bogus Xrefs headers. - - * gnus-agent.el (gnus-agent-save-group-info): New function. - - * gnus-start.el (gnus-get-unread-articles): Use it. - - * message.el (message-expand-group): Allow completion from in the - middle of strings. - (message-font-lock-keywords): Work when mail-header-separator is - "". - -Sun Mar 29 09:56:00 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.4 is released. - -Sun Mar 29 09:47:58 1998 Lars Magne Ingebrigtsen - - * nnkiboze.el (nnkiboze-request-delete-group): Would bug out when - deleting files. - -Sat Mar 28 08:48:31 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-encode-text): Use `nntp-end-of-line'. - -Thu Mar 26 15:29:51 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire): Check size of history file. - - * message.el (message-mode): Doc fix. - -Mon Mar 23 14:21:34 1998 Mike McEwan - - * gnus-score.el (gnus-score-default-type): Doc fix. - -Mon Mar 23 14:12:01 1998 Lars Magne Ingebrigtsen - - * gnus-int.el (gnus-request-body): Do the same as HEAD. - - * gnus-art.el (gnus-article-edit-article-hook): Removed. - -Mon Mar 23 14:09:56 1998 jari aalto - - * gnus-art.el (gnus-article-edit-article-hook): New hook. - -1998-03-19 Jan Vroonhof - - * nntp.el (nntp-open-rlogin): Wrap in save-excursion - -Thu Mar 19 16:43:59 1998 Joe Buehler - - * gnus-util.el (gnus-date-iso8601): Use simple string. - -Thu Mar 19 15:18:00 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.3 is released. - -Thu Mar 19 15:09:14 1998 Wes Hardaker - - * gnus-win.el (gnus-delete-windows-in-gnusey-frames): Make sure - there are no nil buffers. - -1998-03-17 Per Abrahamsen - - * gnus-uu.el (gnus-uu-digest-headers): Add `Content-Type' and - `Content-Transfer-Encoding'. - -1998-03-18 Per Abrahamsen - - * message.el (message-header-lines): Added `:format'. - -1998-03-18 Simon Josefsson - - * nndoc.el: dummy request-accept-article - -Thu Mar 19 14:10:25 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-next-subject): Expand threads. - - * gnus-agent.el (gnus-agent-group-mode-hook, - gnus-agent-summary-mode-hook): New variables. - (gnus-agent-mode): Run them. - -1998-03-14 SL Baur - - * gnus-xmas.el (gnus-xmas-group-startup-message): Tell gnus-start - we've already drawn the pretty Gnu graphic. - -Thu Mar 19 12:44:12 1998 Lars Magne Ingebrigtsen - - * gnus-msg.el: Would use nil group names. - - * nntp.el (nntp-send-authinfo): Send authinfo to "force"d - servers. - - * gnus-util.el (gnus-parse-netrc): Accept the "force" token. - - * message.el (message-cancel-news): Compare Sender header, not - From header. - -Tue Mar 17 15:07:18 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (article-hide-headers): Fold case. - -Sat Mar 14 17:57:35 1998 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-horizontal-recenter): New window-end may - return nil. - -Fri Mar 13 22:12:30 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-session): Check whether server - is up before fetching. - - * gnus-win.el (gnus-window-frame-focus): New variable. - (gnus-configure-windows): Use it. - - * gnus-sum.el (gnus-summary-catchup-and-exit): Don't select next - when in an ephemeral group. - - * gnus-agent.el (gnus-agent-expire): Message end. - (gnus-agent-expire-all): New variable. - (gnus-agent-expire): Use it. - -Fri Mar 13 22:07:17 1998 Shenghuo ZHU - - * gnus-agent.el (gnus-agent-high-scored-p): Wrong value. - -Fri Mar 13 21:10:24 1998 Lars Magne Ingebrigtsen - - * nnvirtual.el (nnvirtual-request-group): Force updating of info. - -Sun Mar 8 20:46:51 1998 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-delete-incoming): Changed default. - -Sun Mar 8 14:05:25 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.2 is released. - -Sun Mar 8 00:35:09 1998 Lars Magne Ingebrigtsen - - * gnus-picon.el (gnus-get-buffer-name): Look in the assoc for the - variable. - - * nntp.el (nntp-wait-for): Check more for dead connections. - - * gnus-eform.el (gnus-edit-form-buffer): Moved back here. - - * gnus-win.el (gnus-window-to-buffer-helper): Return nil when - buffers don't exist. - - * nndraft.el (nndraft-request-restore-buffer): Remove Xref header, - not Xrefs. - -Sun Mar 8 00:00:04 1998 Lars Magne Ingebrigtsen - - * gnus.el: Gnus v5.6.1 is released. - -Sat Mar 7 22:15:46 1998 Lars Magne Ingebrigtsen - - * gnus.el (gnus-edit-form-buffer): Moved here. - - * gnus-agent.el (gnus-agent-expire-old): Removed. - (gnus-agent-expire-directory): Ditto. - (gnus-agent-expire-group): Even more ditto. - -Sat Mar 7 21:59:18 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.37 is released. - -Sat Mar 7 20:10:42 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-expire-days): New variable. - (gnus-agent-expire): New function. - -Sat Mar 7 17:35:53 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.36 is released. - -Sat Mar 7 17:29:20 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-wait-for): Reversed logic. - -Sat Mar 7 17:19:04 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.35 is released. - -Sat Mar 7 15:01:57 1998 Lars Magne Ingebrigtsen - - * gnus-picon.el (gnus-picons-x-face-sentinel): Check whether - gnus-picons-x-face-file-name exists. - - * gnus-art.el (gnus-article-read-summary-keys): Move window point - in the summary buffer. - - * nndoc.el (nndoc-type-alist): Allow spaces around separator. - - * gnus-sum.el (gnus-summary-edit-parameters): Interactive. - -Sat Mar 7 15:00:05 1998 Wes Hardaker - - * gnus-art.el (gnus-article-prepare): Mark articles as - downloadable. - -Wed Mar 4 22:33:27 1998 Ken Raeburn - - * gnus-int.el (gnus-get-function): New version, caches symbol - names. - -Fri Mar 6 01:10:22 1998 Ken Raeburn - - * nnml.el (nnml-article-to-file): Build pathname using - expand-file-name. (Thanks, Colin Rafferty, for catching - this.) - -Sat Feb 28 23:33:40 1998 Ken Raeburn - - * nnml.el (nnml-article-to-file): Don't add extra "/" when - building pathname. - - * nnheader.el (nnheader-file-to-number): Check value of - nnheader-numerical-short-files instead of checking if jka-compr is - loaded. - -1998-03-03 Dave Love - - * nnheader.el (nnheader-parse-head): Fix in-reply-to code. Return - nil consistently if not found. - -Sat Mar 7 13:50:44 1998 Lars Magne Ingebrigtsen - - * nntp.el: Check whether the connection died. - -1998-03-01 Kim-Minh Kaplan - - * gnus.texi (Easy Picons): Removed references to - `gnus-group-display-picons'. - (Hard Picons): Ditto. - -Mon Mar 2 16:17:36 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-exit-no-update): Run - gnus-summary-prepare-exit-hook here as well. - -Sat Feb 28 13:35:26 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-authinforc-file): Changed default. - (nntp-authinfo-file): Changed name. - (nntp-record-commands): New variable. - (nntp-record-command): New function. - - * gnus-agent.el (gnus-agent-group-path): Use real name of group. - - * gnus-sum.el (gnus-summary-insert-subject): Don't allow nil - articles. - (gnus-summary-read-group): Respect backward movement. - -1998-03-01 Kim-Minh Kaplan - - * gnus-win.el (gnus-window-to-buffer): change "*Picons*" to - `gnus-picons-buffer'. - (gnus-window-to-buffer-helper): Support dynamic picon buffer - name (i.e a symbol that names a function to be called). - (gnus-configure-frame): Use it. - (gnus-delete-windows-in-gnusey-frames): Use it. - (gnus-all-windows-visible-p): Use it. - (gnus-remove-some-windows): Use it. - - * gnus-picon.el (gnus-get-buffer-name): Use it. - (gnus-picons-kill-buffer): New function. - (gnus-picons-setup-buffer): New function. - (gnus-picons-set-buffer): Use them. - (gnus-picons-display-x-face): Put back the `buf' binding: it is - needed when `gnus-picons-display-where' is not set to article. - Also move the X-Face to the left, near the address. It seems more - logical. - -Sat Feb 28 08:27:20 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.34 is released. - -Sat Feb 28 08:17:37 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.33 is released. - -Sat Feb 28 08:10:27 1998 Lars Magne Ingebrigtsen - - * gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound - var. - -Sat Feb 28 08:03:23 1998 François Pinard - - * gnus: configure'd. - -Sat Feb 28 07:43:00 1998 Nelson Jose dos Santos Ferreira - - * nnsoup.el (nnsoup-store-reply): Fix double sep error. - -Sat Feb 28 07:01:17 1998 Lasse Rasinen - - * gnus-start.el (gnus-ask-server-for-new-groups): Message more. - -Fri Feb 27 13:26:34 1998 Lars Magne Ingebrigtsen - - * message.el (message-resend): Allow arbitrary Also's. - -1998-02-27 Dave Love - - * gnus-sum.el (gnus-simplify-subject-functions): Fix - customization, doc. - -1998-02-25 Dave Love - - * gnus-art.el (gnus-article-x-face-command): Replace leading `{'. - -Mon Feb 23 18:26:48 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-plugged): New command and keystroke. - - * gnus-ems.el (gnus-ems-redefine): Define - 'gnus-summary-set-display-table as a function that takes no - params. - - * gnus.el (gnus-interactive): Don't use gnus-sum macros. - (gnus-valid-select-methods): Include nnlistserv. - - * gnus.el: Autoloaded things to make byte-comp silent. - -Mon Feb 23 18:06:47 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.32 is released. - -Mon Feb 23 17:48:42 1998 Lars Magne Ingebrigtsen - - * gnus-cite.el (gnus-article-hide-citation-maybe): Wrong - interactive specs. - (gnus-cite-toggle): Maybe parse. - -Mon Feb 23 05:26:11 1998 Rui-Tao Dong ~{6-HpLN~} - - * nnweb.el (nnweb-type-definition): Fixed. - -Sun Feb 22 18:10:53 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-group-path): Translate right chars. - (gnus-agent-toggle-plugged): Allow proper closing. - - * gnus-srvr.el (gnus-browse-read-group): Allow entering - non-ephemeral groups. - -Sun Feb 22 04:21:15 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.31 is released. - -Sun Feb 22 02:09:35 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-highlight): Give undownloaded marks a - better face. - - * gnus-score.el (gnus-score-set): Take optional "warn". - (gnus-summary-score-entry): Use it. - - * gnus.el: Removed spurious * in defcustoms. - - * gnus-score.el (gnus-score-load-file): Reverse logic. - - * gnus-cite.el (gnus-article-hide-citation): Use markers to make - things work when wrapping. - - * gnus-sum.el (gnus-summary-exit): Stop prefetch. - -Sat Feb 21 02:12:42 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-get-newsgroup-headers): Buggy regexp. - -Sat Feb 21 00:51:22 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.30 is released. - -Sat Feb 21 00:09:14 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-mark-article): Don't do anything if - the mark doesn't change. - - * gnus-art.el (gnus-article-prepare): Don't enter article into - cache. - - * gnus-sum.el (gnus-summary-reparent-thread): Don't mark as read. - (gnus-summary-mark-article): Don't do cache things here. - - * gnus-util.el (gnus-parse-netrc): Skip past macdefs. - -Fri Feb 20 22:56:22 1998 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-browse-unsubscribe-group): Wouldn't allow - unsubscription. - - * gnus-sum.el (gnus-summary-insert-subject): Allow inserting - articles outside limits. - - * gnus-start.el (gnus-dribble-enter): Update mode line. - - * gnus-srvr.el (gnus-browse-unsubscribe-group): Allow - unsubscription. - - * gnus-picon.el (gnus-article-display-picons): Check that the - extents are live first. - -Thu Feb 19 15:13:44 1998 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-useful-groups): Include gnus-bug. - -Thu Feb 19 02:28:17 1998 Jens-Ulrik Holger Petersen - - * gnus.el (gnus-group-history): Defined twice. - -Thu Feb 19 01:58:47 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-get-newsgroup-headers): Just use the header - value. - (gnus-summary-exit): Set global vars. - -Tue Feb 17 07:17:49 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-stop-page-breaking): Mark page as no - longer broken. - (gnus-summary-exit): Purge the real name. - -Tue Feb 17 07:00:43 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.29 is released. - -Tue Feb 17 06:15:03 1998 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-purge-split-history): List of alists, not - alist. - -Mon Feb 16 20:22:04 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.28 is released. - -1998-02-16 Lars Magne Ingebrigtsen - - * message.el (message-dont-send): Make sure the article really is - saved. - - * nnmail.el (nnmail-purge-split-history): Alist; not a list of - alists. - -1998-02-16 Hrvoje Niksic - - * message.el (message-kill-to-signature): Do the right thing when - there is no signature. - -1998-02-16 Hrvoje Niksic - - * message.el (message-elide-elipsis): Add type and group. - (message-elide-region): Docfix. - -1998-02-16 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-run-hooks): Use unwind-protect instead of - save-excursion. - -1998-02-16 Per Abrahamsen - - * nntp.el (nntp-authinforc-file): Customized. - -Mon Feb 16 03:18:33 1998 Lars Magne Ingebrigtsen - - * gnus-nocem.el (gnus-nocem-unwanted-article-p): Don't look if the - hashtable doesn't exist. - - * gnus-start.el (gnus-ask-server-for-new-groups): Make sure the - killed groups hashtable exists. - -Sun Feb 15 23:02:11 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-authinforc-file): Changed name and default. - (nntp-send-authinfo): Use it. - -Sun Feb 15 19:50:10 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.27 is released. - -Sun Feb 15 19:41:14 1998 Lars Magne Ingebrigtsen - - * gnus.el (gnus-ephemeral-servers): New variable. - * gnus-srvr.el (gnus-server-prepare): Use it. - * gnus-group.el (gnus-group-read-ephemeral-group): Ditto. - -Sun Feb 15 19:35:11 1998 Kurt Swanson - - * gnus-art.el (gnus-article-read-summary-keys): Go to top on - some. - -Sun Feb 15 19:26:21 1998 SeokChan LEE - - * message.el (message-ignored-supersedes-headers): Fix. - -Sun Feb 15 18:39:15 1998 Lars Magne Ingebrigtsen - - * gnus-salt.el (gnus-tree-close): Start killing buffer again. - - * gnus-sum.el (gnus-mark-article-as-read): Return t. - - * gnus-art.el (gnus-article-edit-mode): Run text mode hook. - -Sun Feb 15 17:31:19 1998 Roland Roberts - - * gnus-sum.el (gnus-nov-parse-line): Would bug out on bogus - References headers. - -Sun Feb 15 14:23:51 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-current-summary): New variable. - (gnus-article-mode): Make it local. - - * gnus-score.el (gnus-summary-increase-score): Find the right - global score file. - - * gnus-start.el (gnus-setup-news): Don't find new newsgroups - unless plugged. - - * message.el (message-mode): Set font-lock things before running - mode hook. - - * gnus-agent.el (gnus-agent-group-path): Respect long file names. - -Sat Feb 14 21:31:25 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-goto-last-article): Force jumping to - articles outside limit. - - * gnus-agent.el (gnus-agent-toggle-plugged): un/plug before hook. - -Sat Feb 14 21:08:03 1998 Kim-Minh Kaplan - - * gnus-xmas.el (gnus-xmas-article-display-xface): t t would make - faces disappear. - -Sat Feb 14 20:52:34 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-netrc-file): New variable. - -Sat Feb 14 19:28:01 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.26 is released. - -Sat Feb 14 18:40:55 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-directory): Translate file chars. - - * gnus-sum.el (gnus-summary-print-article): Don't display all - headers. - (gnus-summary-edit-parameters): New command and keystroke. - - * gnus-group.el (gnus-group-rename-group): Mark dribble. - -Sat Feb 14 18:39:45 1998 Fred Oberhauser - - * nnmail.el (nnmail-process-babyl-mail-format): Fix point - movement. - -Sat Feb 14 18:31:39 1998 Lars Magne Ingebrigtsen - - * gnus.el (gnus-group-get-parameter): Dix fix. - -Sat Feb 14 18:29:12 1998 Kim-Minh Kaplan - - * gnus-picon.el: Updated documentation. - -Sat Feb 14 18:26:53 1998 Joev Dubach - - * nntp.el (nntp-send-authinfo-from-file): Doc fix. - -Sun Jan 11 23:44:12 1998 Ken Raeburn - - * nnagent.el (nnagent-request-update-info): New no-op fn. - -Sat Feb 14 17:41:44 1998 Lars Magne Ingebrigtsen - - * gnus-srvr.el (gnus-browse-unsubscribe-group): Wouldn't allow - subscription of visited groups. - - * gnus-util.el (gnus-run-hooks): New function. - Use it everywhere. - - * nntp.el (nntp-authinfo-password): New variable. - (nntp-send-authinfo): Cache authinfo password. - - * gnus-sum.el (gnus-summary-mark-article-as-unread): Don't do - anything if the mark doesn't change. - -1998-01-17 Simon Josefsson - - * gnus-sum.el (gnus-summary-work-articles): change buffer - before looking at marked articles - (gnus-summary-work-articles): better check of marked articles - -Sat Feb 14 15:10:36 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-send-authinfo): Use new .netrc functionality. - - * gnus-util.el (gnus-netrc-syntax-table): New variable. - (gnus-parse-netrc): New function. - (gnus-netrc-machine): Ditto. - (gnus-netrc-get): Ditto. - - * gnus-draft.el (gnus-draft-make-menu-bar): Added deletion. - - * gnus.el (gnus-expert-user): Dix fox. - - * nnmail.el (nnmail-article-group): Remove duplicates from split. - - * message.el (message-check-news-header-syntax): Check more on - Message-ID. - - * nnmh.el: Don't call nnmail-activate. - - * gnus.el: User-variabelize all custom vars. - -Fri Feb 13 22:40:39 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.25 is released. - -Fri Feb 13 19:01:19 1998 Lars Magne Ingebrigtsen - - * nndoc.el (nndoc-type-alist): Allow blank lines to separate - headers from bodies. - - * gnus-art.el (gnus-article-edit): Restore Date header. - - * gnus-async.el (gnus-asynch-obarray): New variable. - (gnus-async-prefetched-article-entry): Use it. - (gnus-async-set-buffer): Use it. - - * nnmh.el (nnmh-active-number): Create parent dirs. - - * nntp.el (nntp-last-command): New variable. - (nntp-handle-authinfo): New function. - - * gnus-sum.el (gnus-summary-exit): Call purging function. - -Fri Feb 13 18:59:16 1998 François Pinard - - * nnmail.el (nnmail-get-new-mail): Don't clear split-history. - (nnmail-purge-split-history): New function. - -Fri Feb 13 18:36:16 1998 Lars Magne Ingebrigtsen - - * nntp.el (nntp-telnet-shell-prompt): Renamed. - -Fri Feb 13 18:35:23 1998 Sam Falkner - - * nntp.el (nntp-open-telnet-envuser): New variable. - -Fri Feb 13 18:29:23 1998 Lars Magne Ingebrigtsen - - * message.el (message-send-mail-function): Added smtpmail-send-it. - -1998-02-11 Dave Love - - * gnus-art.el (gnus-button-url): Don't lose in Emacs 20 with - browse-url-browser-function an alist, not a function. - (gnus-button-embedded-url): Likewise. - -Fri Feb 13 17:10:31 1998 Lars Magne Ingebrigtsen - - * gnus-cite.el (gnus-cite-localize): New function. - (gnus-cite-close): Renamed. - (gnus-cite-parse-maybe): Use it. - - * gnus-sum.el (gnus-summary-move-article): Move back to summary - buffer. - - * nnfolder.el (nnfolder-request-accept-article): Save excursion. - (nnfolder-request-move-article): Ditto. - - * nntp.el (nntp-find-connection): Don't message. - -Fri Feb 13 14:51:56 1998 MORIOKA Tomohiko - - * message.el (message-send-mail-with-qmail): Fix. - -1998-02-13 Per Abrahamsen - - * gnus-draft.el (gnus-draft-make-menu-bar): Added missing commands. - -1998-01-06 Per Abrahamsen - - * gnus/gnus-cus.el (gnus-score-parameters): Make `files' and - `exclude-files' widgets inline. - -Fri Feb 13 12:46:23 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-article-mark): Dox dox. - -Wed Feb 11 15:05:03 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.24 is released. - -Tue Feb 10 21:59:53 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-session): Reversed reversal. - - * gnus-topic.el (gnus-topic-rename): Check whether the new name - exists. - -Tue Feb 10 21:39:47 1998 dave edmondson - - * message.el (message-font-lock-keywords): Allow : as a citation - ending. - -Tue Feb 10 20:09:02 1998 Lars Magne Ingebrigtsen - - * message.el (message-send): Removed dead code. - -Mon Feb 9 17:02:09 1998 Lars Magne Ingebrigtsen - - * message.el (message-fill-header): Fill to column 990. - - * gnus-score.el (gnus-score-load-file): Exclude all excluded - files. - -Mon Feb 9 16:55:41 1998 jari aalto - - * gnus-art.el (gnus-article-time-format): Extended variable. - -Mon Feb 9 16:27:59 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (article-make-date-line): Make 8601 Dates. - (article-date-iso8601): New command and keystroke. - -Sun Feb 8 21:19:15 1998 Lars Magne Ingebrigtsen - - * message.el (message-ignored-mail-headers): Remove Xrefs. - - * nndoc.el (nndoc-open-document-hook): New variable. - -Sun Feb 8 21:01:33 1998 Istvan Marko - - * gnus-agent.el (gnus-unplugged): Typo fix. - -Sun Feb 8 18:34:31 1998 Kurt Swanson - - * gnus-score.el (gnus-score-thread-simplify): New variable. - -Sun Feb 8 18:31:35 1998 Lars Magne Ingebrigtsen - - * gnus-uu.el (gnus-uu-post-encode-mime): Call mmencode with - correct params. - -Sun Feb 8 18:13:58 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.23 is released. - -Sun Feb 8 17:20:40 1998 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-update-group-mark-positions): Bind `topic'. - - * message.el (message-expand-group): Added doc string. - - * nntp.el (nntp-wait-for): Don't change limit until after - accepting output. - -Sun Feb 8 16:44:36 1998 Richard Hoskins - - * message.el (message-kill-to-signature): Don't kill the - delimiter. - -Sun Feb 8 16:15:33 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-prepared-hook): New hook. - (gnus-summary-read-group-1): Use it. - - * message.el (message-cite-original-without-signature): New - function. - (message-cite-function): Added to custom. - -1998-01-13 Per Abrahamsen - - * gnus/message.el (message-cite-original): Don't quote signature. - -Sun Feb 8 15:50:20 1998 Lars Magne Ingebrigtsen - - * gnus-group.el (gnus-group-unsubscribe-group): Protest against - empty group names. - -Mon Feb 2 18:56:22 1998 Lars Magne Ingebrigtsen - - * gnus-draft.el (gnus-draft-setup): Associate with drafts group. - - * message.el (message-header-format-alist): Fill references. - - * gnus-agent.el (gnus-category-read): Changed default. - (gnus-agent-handle-level): New variable. - (gnus-agent-fetch-session): Use it. - - * gnus-art.el (article-strip-all-blank-lines): New command and - keystroke. - -Sun Feb 1 18:00:54 1998 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-inews-reject-message): Removed function. - (gnus-sent-message-ids-file): Removed. - (gnus-sent-message-ids-length): Ditto. - - * gnus-xmas.el (gnus-xmas-summary-set-display-table): Ditto. - - * gnus-sum.el (gnus-simplify-subject-fuzzy): Respect - `gnus-simplify-ignored-prefixes'. - (gnus-summary-set-display-table): Keep TAB. - -Thu Jan 15 22:47:38 1998 - - * gnus-art.el (gnus-request-article-this-buffer): Put it into the - backlog. - -Mon Jan 12 23:30:59 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-get-newsgroup-headers): Use the longest ID. - - * nnheader.el (nnheader-parse-head): Ditto. - -Thu Jan 8 09:47:18 1998 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-1): Use gnus-alive-p. - -Tue Jan 6 11:53:09 1998 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-prepare): Bind coding systems. - -Tue Jan 6 07:45:39 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.22 is released. - -Tue Jan 6 07:32:02 1998 Lars Magne Ingebrigtsen - - * message.el (message-kill-to-signature): Don't use mark. - -Tue Jan 6 07:30:46 1998 Russ Allbery - - * message.el (message-kill-to-signature): New command and keystroke. - -Tue Jan 6 06:39:29 1998 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-print-article): New defaults for - headers and stuff. - - * gnus-agent.el (gnus-agent-batch): New command. - - * nnoo.el (nnoo-execute): Copy vars from parent into child. - (nnoo-parent-function): Ditto. - - * gnus-draft.el (gnus-draft-setup): Removed message. - - * gnus-start.el (gnus-read-descriptions-file): Naked muleism. - -Mon Jan 5 05:20:16 1998 Lars Magne Ingebrigtsen - - * nnml.el (nnml-generate-nov-databases-1): Fix lower bound on - empty groups. - -Sun Jan 4 14:38:36 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.21 is released. - -Sun Jan 4 14:28:35 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.20 is released. - -1997-12-10 Per Abrahamsen - - * gnus/gnus-msg.el (gnus-inews-insert-mime-headers): Added - documentation. - (gnus-inews-insert-mime-headers): Made it work with Emacs MULE. - (gnus-inews-insert-mime-headers): Added as option to - `message-header-hook'. - -1997-12-22 Per Abrahamsen - - * gnus/gnus-art.el (gnus-button-alist): Assume msg-id after "in - message". - -1997-12-22 Simon Josefsson - - * nnmail.el (nnmail-get-new-mail): Make nnmail-tmp-directory - -1997-12-28 Per Abrahamsen - - * gnus/gnus-group.el (gnus-group-fetch-faq): Convert `.' in group - name to `/'. - -Sun Jan 4 13:35:14 1998 Lars Magne Ingebrigtsen - - * nndraft.el (nndraft-request-associate-buffer): Open the damn - server first. Sheesh. - - * gnus-draft.el (gnus-draft-send): Bind message-send-hook to nil. - - * gnus-sum.el (gnus-summary-catchup): Don't nix out downloadable. - (gnus-summary-highlight): Highlight down/un as unread. - -Sun Jan 4 13:27:31 1998 Kim-Minh Kaplan - - * gnus-start.el (gnus-strip-killed-list): Fix syntax. - -Sun Jan 4 13:18:04 1998 Lars Magne Ingebrigtsen - - * nnsoup.el (nnsoup-store-reply): Bind mail-header-separator to - "". - - * gnus-xmas.el (gnus-xmas-agent-server-menu-add): New. - - * nnoo.el (nnoo-change-server): Get the right values. - -1998-01-04 Aki Vehtari - - * gnus-art.el (gnus-signature-limit): Add default values for - choices suggested by Per Abrahamsen . - (gnus-prompt-before-saving): Add :value t for sexp tag. - (gnus-split-methods): Add default values for choices. - - * gnus-score.el (gnus-home-score-file): Add non-nil default for - function. - (gnus-home-adapt-file): Ditto. - - * gnus-sum.el (gnus-move-split-methods): Add default values for - choices. - - * nnmail.el (nnmail-list-identifiers): Add default values for - choices suggested by Per Abrahamsen . - -Sun Jan 4 11:31:42 1998 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.19 is released. - -Sun Jan 4 10:42:53 1998 Felix Lee - - * nntp.el (nntp-open-rlogin): Use a list of parameters. - -Sun Jan 4 10:25:05 1998 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-fetch-groups): New command. - - * gnus-sum.el (gnus-summary-print-article): Changed order of - parameters. - -Sun Jan 4 10:24:07 1998 Michael R. Cook - - * gnus-sum.el (gnus-summary-print-article): Use process/prefix. - -Sun Jan 4 05:29:38 1998 Lars Magne Ingebrigtsen - - * gnus-uu.el: Changed spurious defconsts to defvars. - - * nnmail.el (nnmail-get-spool-files): Quote group name. - - * gnus-agent.el (gnus-agent-fetch-group-1): Fetch ticked articles. - (gnus-agent-fetch-group-1): Never mind. - -Sat Dec 20 22:33:17 1997 Pete Ware - - * message.el (message-rename-buffer): Check for nil dirs. - -Fri Dec 19 21:45:59 1997 Lars Magne Ingebrigtsen - - * nnml.el (nnml-request-create-group): Check for files. - -Fri Dec 19 21:39:43 1997 Hrvoje Niksic - - * message.el (message-mode): Fixed font-lock. - -Fri Dec 19 21:26:08 1997 Lars Magne Ingebrigtsen - - * gnus-cache.el (gnus-cache-read-active): Check for empty files. - -Sun Dec 14 11:46:50 1997 Lars Magne Ingebrigtsen - - * gnus-uu.el (gnus-uu-save-article): Quote all lines beginning - with a dash. - -1997-12-10 SL Baur - - * gnus-start.el (gnus-read-descriptions-file): Really bind and gag - Mule. - -Fri Dec 5 15:15:05 1997 Danny Siu - - * nndoc.el (nndoc-babyl-body-begin): quote the regexp for the - string "*** EOOH ***" properly. - (nndoc-babyl-head-begin): Same as above. - -Sun Dec 14 11:11:22 1997 Lars Magne Ingebrigtsen - - * gnus-uu.el (gnus-uu-pre-uudecode-hook): New hook. - - * gnus-sum.el (gnus-summary-read-group-1): Set mode line after - configuring. - -Sun Dec 14 11:03:26 1997 Wes Hardaker - - * gnus-score.el (gnus-adaptive-word-minimum): New variable. - (gnus-score-adaptive): Use it. - -Sun Dec 14 09:19:18 1997 Roland B. Roberts - - * gnus-group.el: Fixed hardcoded levels. - -Sat Dec 6 17:40:33 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.18 is released. - -Sat Dec 6 17:27:04 1997 Kim-Minh Kaplan - - * gnus-picon.el (gnus-picons-remove): Race condition. - -Sat Dec 6 17:23:26 1997 Christian von Roques - - * gnus-start.el (gnus-read-descriptions-file): Fix - enable-multibyte-characters. - -1997-12-05 Dave Love - - * gnus-nocem.el (gnus-nocem-message-wanted-p): Fix paren typpo. - (gnus-nocem-issuers): Allow sexp alternative in :type for alists. - -1997-12-05 Dave Love - - * gnus-art.el (gnus-visible-headers): Add X-sent:. - -Sat Dec 6 17:16:28 1997 Lars Balker Rasmussen - - * gnus-art.el (article-make-date-line): Don't add extra newlines. - -1997-11-27 MORIOKA Tomohiko - - * nnmail.el (nnmail-file-coding-system): Use `raw-text' in - default. - - * nnheader.el (nnheader-file-coding-system): Use `raw-text' in - default. - -Sat Dec 6 17:04:40 1997 Kim-Minh Kaplan - - * nnml.el (nnml-parse-head): Out-of-bounds fix. - - * nndraft.el (nndraft-request-associate-buffer): Get proper file - name. - -Sat Dec 6 15:35:37 1997 Gary D. Foster - - * gnus-group.el: Added backspace. - -Thu Nov 27 19:56:59 1997 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-summary-set-agent-mark): Remove marks - properly. - -1997-11-27 Christoph Wedler - - * smiley.el (smiley-buffer): Provide `help-echo'. - -Thu Nov 27 17:33:45 1997 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-output-to-rmail): Always save buffer. - - * nntp.el (nntp-close-server): Don't sleep for me, Argentina. - (nntp-request-close): You neither. - -1997-11-19 Per Abrahamsen - - * message.el (message-header-lines): New widget. - (message-default-headers): Use it. - (message-default-mail-headers): Use it. - (message-default-news-headers): Use it. - -1997-11-24 Andreas Jaeger - - * gnus-start.el (gnus-read-descriptions-file): Add missing quote. - -Wed Nov 26 18:19:29 1997 Lars Magne Ingebrigtsen - - * nnweb.el (nnweb-type-definition): Rescued dejanewsold. - - * gnus-mh.el (gnus-summary-save-in-folder): Reverted to old - version. - - * gnus-sum.el (gnus-kill-or-deaden-summary): Save excursion. - - * gnus.el: Only require gnus-load in Emacsen 19. - - * gnus-start.el (gnus-setup-news): Always push archive server. - - * gnus-sum.el (gnus-read-header): Would bug out on sparse - articles. - -Wed Nov 26 17:50:41 1997 Kurt Swanson - - * gnus-ems.el (gnus-mule-cite-add-face): Work. - -Wed Nov 26 17:40:57 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.17 is released. - -Wed Nov 26 16:04:25 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-move-article): Don't work on canceled - articles. - - * gnus-start.el (gnus-subscribe-hierarchical-interactive): Use - `read-char-exclusive'. - - * gnus-sum.el (gnus-summary-mode): Localize - gnus-summary-dummy-line-format. - - * nnml.el (nnml-open-nov): Check that the file exists before - inserting it. - - * gnus-art.el (article-date-ut): Insert a newline if needed. - - * gnus-score.el (gnus-score-edit-current-scores): Protect against - nil score files. - - * gnus-start.el (gnus-newsrc-parse-options): Be more correct -- - match only hierarchies. - (gnus-gnus-to-quick-newsrc-format): Changed warning. - -Wed Nov 26 15:47:40 1997 Greg Klanderman - - * messagexmas.el (message-xmas-maybe-fontify): New definition. - -Wed Nov 26 15:43:53 1997 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-setup-news): Protect against nil - gnus-message-archive-method. - -1997-11-26 Christoph Wedler - - * gnus-art.el (gnus-article-edit-done): Update headers "Lines:", - "Content-Length:" and "X-Content-Length:" when present. - -Wed Nov 26 15:08:17 1997 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-process-unix-mail-format): Pop to the right - buffer on error. - (nnmail-process-mmdf-mail-format): Ditto. - -Wed Nov 26 13:54:04 1997 Joe Reiss - - * gnus-art.el (gnus-summary-save-in-rmail): Return the name of the - file. - -Wed Nov 26 13:50:01 1997 Alastair Burt - - * smiley.el: Balloon help, etc. - -Wed Nov 26 13:45:35 1997 Lars Magne Ingebrigtsen - - * gnus-util.el (gnus-kill-all-overlays): Remove check for XEmacs. - -1997-09-30 Dave Love - - * message.el: Don't require rmail. - -Wed Nov 26 13:37:50 1997 Kurt Swanson - - * gnus-group.el (gnus-group-setup-buffer): set-buffer. - -Wed Nov 26 13:31:54 1997 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-load-file): Don't create empty score - files when doing decays. - -Wed Nov 26 13:28:04 1997 Renaud Rioboo - - * nnmail.el (nnmail-move-inbox): Only bind default-directory when - calling external function. - -Wed Nov 26 13:03:45 1997 IWAMURO Motonori - - * gnus-kill.el (gnus-batch-score): Newsrc thinko. - -Wed Nov 26 10:31:17 1997 Lars Magne Ingebrigtsen - - * nnheader.el (nnheader-parse-head): Would break on Message-ID's - that spanned several lines. - - * gnus-util.el (gnus-date-iso8601): Didn't pick out the date - header. - - * gnus-demon.el (gnus-demon-scan-mail): Clean inboxes. - -1997-11-25 Christoph Wedler - - * gnus-picon.el (gnus-picons-x-face-sentinel): Would bug out in - headers with two X-Face lines. - -Wed Nov 26 08:54:26 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-update-info): Would use wrong group - name. - -1997-11-26 Hrvoje Niksic - - * gnus-spec.el (gnus-compile): Avoid multiple `c*addr's. - (gnus-compile): Require `bytecomp'. - -1997-11-25 Hrvoje Niksic - - * gnus-util.el (gnus-prin1): Bind `print-readably' to t. - - * gnus-xmas.el (gnus-xmas-kill-all-overlays): New function. - (gnus-xmas-define): Use it. - - * gnus-art.el (gnus-stop-date-timer): Use `nnheader-cancel-timer'. - - * message.el (message-header-lines): Specify format. - - * gnus-xmas.el (gnus-xmas-move-overlay): Use BUFFER. - (gnus-byte-code): Use `indirect-function'. - - * gnus-cite.el (gnus-cite-add-face): Would assign free variable. - -Wed Nov 26 08:31:28 1997 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-stop-date-timer): Cancel instead of delete. - (gnus-start-date-timer): Use the numerical prefix. - -Tue Nov 25 20:03:34 1997 Lars Magne Ingebrigtsen - - * gnus-draft.el (gnus-group-send-drafts): Activate group first. - -Tue Nov 25 19:57:55 1997 Dan Christensen - - * gnus-group.el (gnus-group-process-prefix): Skip topics. - -Tue Nov 25 19:54:00 1997 Lars Magne Ingebrigtsen - - * gnus-move.el (gnus-move-group-to-server): Protect agains - nil-ness. - -Tue Nov 25 19:03:38 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.16 is released. - -Tue Nov 25 16:05:01 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-read-header): Remove thread entry before - rebuilding. - - * gnus-cite.el (gnus-cite-add-face): Keep track of all overlays. - - * gnus-art.el (article-update-date-lapsed): New function. - (gnus-start-date-timer): New command. - (article-date-ut): Put the face in the right place. - (article-date-ut): Would move around. - - * gnus-group.el (gnus-group-read-ephemeral-group): Accept server - names. - - * gnus-srvr.el (gnus-browse-foreign-server): Use proper server - names. - - * gnus.el (gnus-group-prefixed-name): Give the right result for - native groups. - - * nnheader.el (nnheader-directory-files): New function. - - * nnmh.el (nnmh-request-list-1): Reversed check. - - * nnfolder.el (nnfolder-delete-mail): Would skip backwards one - line too much. - -Tue Nov 25 14:44:02 1997 SeokChan LEE - - * message.el (message-ignored-supersedes-headers): Typo. - -Mon Nov 24 18:46:37 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.15 is released. - -Mon Nov 24 18:07:21 1997 Lars Magne Ingebrigtsen - - * gnus-ems.el: Also check major version names. - -1997-10-05 SL Baur - - * message.el (require 'rmail): Put guard around. - * nnbabyl.el (require 'rmail): Ditto. - -Mon Nov 24 17:36:00 1997 Lars Magne Ingebrigtsen - - * message.el (message-reply): Respect Mail-Copies-To even when - `to-address'. - -Mon Nov 24 17:32:47 1997 Thor Kristoffersen - - * nntp.el (nntp-request-close): Sleep one second. - -Mon Nov 24 16:18:19 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-read-group-1): Update marks when not - entering group. - - * gnus-start.el (gnus-setup-news): Get correct value of archive - server. - -Wed Oct 8 20:29:35 1997 Robert Bihlmeyer - - * message.el (message-make-organization): Don't let the - environment variable override a user-set organization. - -Mon Nov 24 14:09:00 1997 Lars Magne Ingebrigtsen - - * nnml.el (nnml-open-nov): Don't use find-file. - - * gnus-sum.el (gnus-last-newsgroup-variables-set): New variable. - (gnus-set-global-variables): Don't do to much; gets run off of - pre-command-hook. - Got rid of gnus-set-global-variables throughout. - (gnus-summary-exit): Update adaptive scoring here. - (gnus-summary-isearch-article): Widen. - - * nnml.el (nnml-parse-head): Work in empty buffers. - -1997-10-14 Hrvoje Niksic - - * gnus-xmas.el (gnus-xmas-group-startup-message): Check for image - formats correctly. - (gnus-xmas-modeline-glyph): Ditto. - -Mon Nov 24 13:58:12 1997 Hrvoje Niksic - - * gnus-spec.el (gnus-compile): Work under XEmacs. - -Mon Nov 24 07:15:45 1997 Lars Magne Ingebrigtsen - - * nnoo.el (nnoo-change-server): Push the right parent packend onto - the alist. - -Sun Nov 23 16:21:41 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.14 is released. - -Sun Nov 23 14:04:07 1997 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-read-descriptions-file): Make sure Mule is - bound. And gagged. - - * message.el (message-send-mail-with-mh): Use - `mh-new-draft-name'. - - * nnfolder.el (nnfolder-read-folder): Save new buffers. - - * gnus-sum.el (gnus-summary-make-menu-bar): Removed "write to - file". - - * gnus-util.el (gnus-byte-code): Use indirect-function. - - * nntp.el (nntp-open-telnet): Also accept 201. - - * gnus-sum.el (gnus-summary-reparent-thread): Update thread. - - * gnus-score.el (gnus-all-score-files): Don't do anything unless - GROUP. - - * nnmail.el (nnmail-split-it): Save-excursion. - (nnmail-group-pathname): Translate file chars. - -Sun Nov 23 13:41:10 1997 Gunnar Horrigmo - - * gnus-sum.el (gnus-summary-exit): Don't skip if group - disappeared. - -Sun Nov 23 13:32:55 1997 Lars Magne Ingebrigtsen - - * nnfolder.el (nnfolder-normalize-buffer): New function. - (nnfolder-save-mail): Use it. - (nnfolder-request-replace-article): Ditto. - -1997-11-19 Per Abrahamsen - - * message.el (message-header-lines): New widget. - (message-default-headers): Use it. - (message-default-mail-headers): Use it. - (message-default-news-headers): Use it. - -Sun Nov 23 12:44:38 1997 Lars Magne Ingebrigtsen - - * gnus-win.el (gnus-remove-some-windows): Also delete dead summary - windows. - - * gnus-score.el (gnus-score-adaptive): Check whether functions are - bound. - -Sun Nov 23 12:15:00 1997 Hallvard B. Furuseth - - * gnus-sum.el (gnus-summary-limit-include-thread): Interactive - fix. - -Sun Nov 23 07:06:58 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-reparent-thread): Insert Message-ID in - proper place. - -Sat Nov 22 18:30:33 1997 Lars Magne Ingebrigtsen - - * gnus-cus.el (gnus-group-parameters): Add visible. - -Sat Nov 22 18:19:39 1997 Kim-Minh Kaplan - - * message.el (message-setup): Add a newline, if necessary. - -Sat Nov 22 18:04:34 1997 Lars Magne Ingebrigtsen - - * gnus-mh.el (gnus-summary-save-in-folder): Fix for default. - -Sat Nov 22 18:01:26 1997 Didier Verna - - * gnus-sum.el (gnus-summary-remove-bookmark): Interactive spec. - -Mon Nov 17 23:50:51 1997 Lars Magne Ingebrigtsen - - * gnus-art.el (article-display-x-face): Fold case. - -Thu Nov 13 22:57:23 1997 Kenichi Handa - - * gnus/gnus-start.el (gnus-read-descriptions-file): Decode - description if necessary. - - * gnus/nntp.el (nntp-coding-system-for-read): Set default value to - binary. - (nntp-coding-system-for-write): Likewise. - -Thu Nov 13 22:30:19 1997 seokchan lee - - * message.el (message-ignored-supersedes-headers): Ignore more - headers. - -Thu Nov 13 22:28:13 1997 Lars Magne Ingebrigtsen - - * message.el (message-separator-face): Lightened up. - (message-header-other-face): Ditto. - -Thu Nov 13 22:22:11 1997 jari aalto - - * nnmail.el (nnmail-process-mmdf-mail-format): Pop to buffer. - -Thu Nov 13 22:09:39 1997 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-start-draft-setup): Always create group. - - * gnus-agent.el (gnus-agent-fetch-headers): Translate file chars. - -Thu Nov 6 20:43:05 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.13 is released. - -Thu Nov 6 20:30:14 1997 Lars Magne Ingebrigtsen - - * nnlistserv.el: New backend. - -Thu Nov 6 01:53:51 1997 Stefan Waldherr - - * nnweb.el (nnweb-dejanewsold-search): New function. - -Thu Nov 6 01:52:43 1997 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-change-level): Really delete multiple - instances. - -Wed Nov 5 14:04:54 1997 Lars Magne Ingebrigtsen - - * gnus-topic.el (gnus-topic-update-topic-line): Possibly fix nil - numbers. - - * gnus-sum.el (gnus-summary-show-article): New command and - keystroke. - -Tue Nov 4 06:29:58 1997 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-score-adaptive): Use the home score file. - -Sat Oct 25 05:52:22 1997 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-article-save): Hide headers in the right - buffer. - - * gnus-picon.el (gnus-picons-xbm-face): New face. - -Sat Oct 25 00:39:42 1997 Lars Balker Rasmussen - - * gnus-art.el (gnus-article-fill-paragraph): New command and - keystroke. - -1997-10-16 Colin Rafferty - - * message.el (message-make-fqdn): Made certain that user-mail is - not nil. - -Sat Oct 25 00:18:32 1997 David S. Goldberg - - * gnus-art.el (article-hide-boring-headers): Use many-to. - -Fri Oct 24 23:48:39 1997 Lars Magne Ingebrigtsen - - * gnus-picon.el (gnus-picons-display-pairs): Don't add two bars. - (gnus-picons-try-face): Set the foreground color on the bar. - (gnus-picons-group-exluded-groups): New variable. - (gnus-group-display-picons): Use it. - -Mon Oct 13 00:01:35 1997 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-group-path): Translate file chars. - (gnus-agent-batch-fetch): New command. - (gnus-agent-fetch-group): Message. - -Sun Oct 12 23:54:55 1997 ISO-2022-JP - - * gnus-agent.el (gnus-agent-article-file-coding-system): New - variable. - -Sun Oct 12 16:46:11 1997 Lars Magne Ingebrigtsen - - * dgnushack.el (lpath): Reversed. - - * gnus-msg.el (gnus-summary-cancel-article): Use sym prefix. - - * gnus-art.el (article-translate-characters): New function. - (article-treat-dumbquotes): New command and keystroke. - -Sun Oct 5 20:09:31 1997 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-button-alist): No ' and " in News:. - - * gnus-msg.el (gnus-inews-insert-archive-gcc): Comp warn. - -Sat Oct 4 00:53:55 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.12 is released. - -Sat Oct 4 00:16:39 1997 Lars Magne Ingebrigtsen - - * gnus.el (gnus-plugged): Moved here. - - * nnmail.el (nnmail-delete-incoming): Changed default to nil. - - * gnus-int.el (gnus-request-scan): Don't do anything if - unplugged. - -Fri Oct 3 21:09:19 1997 Lars Magne Ingebrigtsen - - * gnus-art.el (gnus-ignored-headers): Doc fix. - - * gnus-demon.el (gnus-demon-add-nntp-close-connection): New - function. - (gnus-demon-nntp-close-connection): Ditto. - - * nntp.el (nntp-last-command-time): New variable. - (nntp-retrieve-data): Use it. - - * message.el (message-news-p): Messages with Posted-To aren't - news. - (message-mode): Heed message-yank-prefix when filling. - - * nndraft.el (nndraft-request-restore-buffer): Remove Xrefs and - Lines headers. - - * nntp.el (nntp-encode-text): Encode according to RFC977. - -Wed Oct 1 18:27:26 1997 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-inews-insert-archive-gcc): gcc-self didn't - work if `gnus-message-archive-method' was nil. - - * nnmail.el (nnmail-article-group): Allow \\1 substitution. - -Sat Sep 27 12:57:44 1997 Lars Magne Ingebrigtsen - - * gnus-salt.el (gnus-pick-mouse-pick-region): Use it. - - * gnus-xmas.el (gnus-xmas-window-edges): New function. - - * gnus-score.el (gnus-score-edit-current-scores): Don't select - window. - -Sat Sep 27 12:52:31 1997 Hallvard B. Furuseth - - * messcompat.el ((boundp 'mail-mode-hook)): Check. - -Sat Sep 27 09:22:15 1997 Lars Magne Ingebrigtsen - - * nndraft.el (nndraft-possibly-change-group): Always open server. - - * gnus-sum.el (gnus-summary-pop-article): Force. - - * gnus-art.el (gnus-article-prepare): Push the article onto the - history. - - * gnus-sum.el (gnus-summary-pop-article): Pop to the right - article. - - * gnus-demon.el (gnus-demon-scan-news): Save excursion. - -Sat Sep 27 09:06:55 1997 Hallvard B. Furuseth - - * gnus-cache.el (gnus-summary-limit-include-cached): New command - and keystroke. - -Sat Sep 27 06:45:58 1997 Lars Magne Ingebrigtsen - - * gnus-uu.el (gnus-uu-invert-processable): Make interactive. - -Sat Sep 27 06:43:38 1997 Kim-Minh Kaplan - - * gnus-picon.el: Doc fixes. - -1997-09-23 Hrvoje Niksic - - * gnus.el: Removed definition of `custom-face-lookup'. - -Sat Sep 27 05:36:11 1997 Lars Magne Ingebrigtsen - - * nndraft.el: Would block nnmh. - - * gnus-sum.el (gnus-mark-article-as-unread): Don't allow marking - negative articles. - - * gnus-group.el (gnus-fetch-group): Use `gnus-no-server'. - - * gnus-agent.el (gnus-agent-with-fetch): Moved. - - * gnus-sum.el (gnus-nov-read-integer): Really skip to next field. - -Sat Sep 27 04:32:45 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.11 is released. - -Sat Sep 27 03:50:12 1997 Lars Magne Ingebrigtsen - - * message.el (message-send): Post without asking. - (message-mode): Modify paragraphs-start and paragraph-separate. - (message-newline-and-reformat): New command and keystroke. - -Thu Sep 25 00:13:41 1997 Lars Magne Ingebrigtsen - - * nnmail.el (nnmail-activate): Init server buffer. - -Wed Sep 24 04:11:59 1997 Lars Magne Ingebrigtsen - - * gnus-draft.el (gnus-draft-setup): Inexplicable binding problem - worked around. - - * nnsoup.el (nnsoup-always-save): Renamed. - -Wed Sep 24 04:11:02 1997 Nelson Jose dos Santos Ferreira - - * nnsoup.el (nnsoup-commit-reply-now): New variable. - (nnsoup-store-reply): Use it. - -Wed Sep 24 02:30:44 1997 Lars Magne Ingebrigtsen - - * gnus-ems.el (gnus-deactivate-mark): New alias. - -Tue Sep 23 07:56:07 1997 Lars Magne Ingebrigtsen - - * gnus.el: Win-away! - - * gnus-msg.el (gnus-setup-message): Don't trust make-symbol. - -Tue Sep 23 07:45:11 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.10 is released. - -Tue Sep 23 01:41:04 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-read-all-headers): New function. - (gnus-select-newsgroup): Use it. - (gnus-summary-refer-thread): Ditto. - (gnus-refer-thread-limit): New variable. - (gnus-summary-refer-thread): Use it. - - * gnus-nocem.el (gnus-nocem-message-wanted-p): New function. - (gnus-nocem-check-article): Use it. - (gnus-nocem-issuers): Dox ofx. - - * dgnushack.el (dgnushack-compile): Check for cus-edit. - - * message.el (message-included-forward-headers): Include Mime - headers. - (message-send): Allow posting without confirming from Agent. - -Mon Sep 22 05:43:14 1997 Lars Magne Ingebrigtsen - - * dgnushack.el (byte-compile-warnings): Don't warn about obsolete - variables. - - * gnus-sum.el (gnus-summary-refer-thread): New command and - keystroke. - (gnus-summary-limit-include-thread): New command and keystroke. - (gnus-summary-articles-in-thread): New function. - (gnus-articles-in-thread): Renamed. - -Sun Sep 21 23:54:50 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.9 is released. - -Sun Sep 21 23:38:46 1997 Lars Magne Ingebrigtsen - - * gnus.el (gnus-splash-face): ForestGreen everywhere. - - * gnus-sum.el (gnus-simplify-subject-fully): Use new variable. - (gnus-general-simplify-subject): Ditto. - -Sun Sep 21 23:34:13 1997 Kurt Swanson - - * gnus-sum.el (gnus-simplify-subject-functions): New variable. - (gnus-simplify-whitespace): New function. - - * gnus-util.el (gnus-map-function): New function. - -Sun Sep 21 23:22:04 1997 Michelangelo Grigni - - * gnus-score.el (gnus-score-regexp-bad-p): New function. - -Sun Sep 21 00:14:40 1997 Lars Magne Ingebrigtsen - - * gnus-score.el (gnus-summary-lower-score): Use sym pref. - (gnus-summary-increase-score): Use it. - - * gnus.el (gnus-current-prefix-symbol): New variable. - (gnus-current-prefix-symbols): New variable. - - * gnus-score.el (gnus-summary-increase-score): Take symbolic - prefix. - - * gnus.el (gnus-interactive): Removed. - (gnus-interactive): Renamed from gnus-interactive-1. - (gnus-symbolic-argument): New command. - - * gnus-draft.el (gnus-draft-send-message): Disable message - checks. - (gnus-draft-send): Ditto. - (gnus-draft-setup): Don't save buffer. - - * dgnushack.el (dgnushack-compile): Warn people about Custom. - - * gnus-group.el (gnus-group-iterate): Use gensymmed variables. - - * pop3.el (pop3-md5): `with-temp-buffer' doesn't exist in Emacs - 19.34. - - * nneething.el (nneething-directory): Defvarred. - - * message.el: Autoloaded nndraft things. - (message-set-auto-save-file-name): Use it. - - * dgnushack.el (dgnushack-compile): Warn about things. - - * gnus-art.el: Autoload w3-region. - - * gnus-vm.el (gnus-summary-save-in-vm): Simplified. - - * gnus.el: Changed `compiled-function-p' to `byte-code-function-p' - throughout. - - * gnus-sum.el (gnus-summary-edit-article): Supply additional - param. - - * gnus-group.el (gnus-group-iterate): Undo bogus change. - - * gnus-agent.el (gnus-agentize): Just call gnus-open-agent - directly. - - * gnus.el (gnus-interactive): New macro. - (gnus-interactive-1): New function. - - * gnus-sum.el (gnus-fetch-old-headers): Allow `invisible'. - (gnus-cut-thread): Use it. - (gnus-cut-threads): Ditto. - (gnus-summary-initial-limit): Ditto. - (gnus-summary-limit-children): Ditto. - - * gnus-art.el (gnus-article-edit-done): Accept a prefix arg. - (gnus-boring-article-headers): Allow `long-to' param. - (article-hide-boring-headers): Use it. - - * gnus-sum.el (gnus-summary-edit-article-done): Accept a - no-highlight param. - - * nntp.el (nntp-rlogin-program): New variable. - (nntp-open-rlogin): Use it. - - * nnvirtual.el (nnvirtual-request-post): New function. - - * gnus-msg.el (gnus-message-group-art): New variable. - - * gnus-draft.el (gnus-draft-setup): Don't use message-setup. - - * nndraft.el (nndraft): Allow editing articles. - - * gnus-ems.el (gnus-x-splash): Ditto. - - * gnus.el (gnus-splash-face): Darker face. - - * gnus-draft.el (gnus-draft-setup): Clobbered variables. - -Sat Sep 20 23:23:49 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.8 is released. - -Sat Sep 20 20:41:16 1997 Lars Magne Ingebrigtsen - - * gnus-start.el (gnus-setup-news-hook): New hook. - - * gnus-agent.el (gnus-agentize): Really set up queue group. - (gnus-open-agent): Setup queue here. - -Sat Sep 20 20:23:07 1997 Matt Simmons - - * message.el (message-set-auto-save-file-name): Make things work - without drafts. - -Sat Sep 20 18:32:02 1997 Lars Magne Ingebrigtsen - - * nnmh.el (nnmh-request-list-1): Check for links to ".". - - * nndraft.el (nndraft-possibly-change-group): New function. - - * gnus-agent.el (gnus-agent-queue-setup): New function. - -Thu Sep 18 04:54:59 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.7 is released. - -Thu Sep 18 03:33:54 1997 Lars Magne Ingebrigtsen - - * gnus-msg.el (gnus-setup-message): Slap a progn around forms. - - * nndraft.el (nndraft-articles): Make sure directory exists. - - * message.el (message-mode): Don't delete article. - - * nnmh.el (nnmh-request-accept-article): Don't save when - noinsert. - -Wed Sep 17 03:37:59 1997 Lars Magne Ingebrigtsen - - * nndraft.el (nndraft-directory): Changed defaults. - - * gnus-agent.el (gnus-agent-fetch-session): Bind command method. - -Wed Sep 17 03:28:36 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.6 is released. - -1997-08-17 SL Baur - - * dgnushack.el (dgnushack-compile): Ignore .el files beginning - with an `=' character. - -Wed Sep 17 02:30:04 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-build-sparse-threads): Allow display of looped - References. - - * gnus-agent.el (gnus-agent-fetch-group-1): Separated out into - function. - - * message.el (message-delete-not-region): New command and - keystroke. - -Tue Sep 16 00:58:26 1997 Lars Magne Ingebrigtsen - - * nndraft.el (nndraft-directory): Changed value. - - * message.el (message-kill-buffer): Disassociate draft. - (message-mode): Use kill hook to disassociate. - (message-disassociate-draft): Double-check. - - * gnus-agent.el (gnus-agentize): Don't set twice. - - * gnus-art.el (gnus-article-prepare): Go to the right line before - marking. - - * gnus-start.el: Renamed the drafts group. - - * gnus-agent.el (gnus-agent-lib-file): Changed name of directory. - - * gnus-draft.el (gnus-draft-mode): Simplify. - -Tue Sep 16 00:18:11 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.5 is released. - -Mon Sep 15 00:53:50 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-alter-header-function): New variable. - (gnus-nov-parse-line): Use it. - (gnus-get-newsgroup-headers): Ditto. - - * gnus-draft.el (gnus-group-send-drafts): Don't send when - unplugged. - - * gnus-sum.el (gnus-summary-read-group): Don't show-all when - skipping groups. - - * gnus-start.el (gnus-start-draft-setup): Changed name. - -Mon Sep 15 00:40:09 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.4 is released. - -Mon Sep 15 00:19:07 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-summary-goto-article): Accept Message-ID's. - -Sun Sep 14 21:41:35 1997 Lars Magne Ingebrigtsen - - * gnus-sum.el (gnus-group-make-articles-read): No params. - - * nndraft.el (nndraft-status-string): Fix. - - * gnus-draft.el (gnus-group-send-drafts): New command. - - * gnus-sum.el (gnus-compute-read-articles): Separated. - (gnus-update-read-articles): Allow computation. - - * nndraft.el (nndraft-articles): New function. - - * message.el (message-send): Disabled test. - -Sun Sep 14 21:17:34 1997 Lars Magne Ingebrigtsen - - * gnus.el: Quassia Gnus v0.3 is released. - -Sun Sep 14 01:51:45 1997 Lars Magne Ingebrigtsen - - * gnus-agent.el (gnus-agent-short-article): New variables. - - * message.el (message-set-auto-save-file-name): Use drafts. - - * nndraft.el (nndraft-request-expire-articles): Use it. - - * nnmh.el (nnmh-deletable-article-p): Change. - (nnmh-allow-delete-final): New variable. - - * gnus-msg.el (gnus-summary-send-draft): Removed. - - * gnus.el (gnus-article-mark-lists): Save unsendable marks. - - * gnus-sum.el (gnus-newsgroup-unsendable): New variable. - - * gnus-draft.el: New file. - - * gnus-sum.el (gnus-unsendable-mark): New variable. - - * nndraft.el (nndraft-execute-nnmh-command): Cleanup. - - * message.el (message-send-news): Use `gnus-request-post'. - - * gnus-agent.el (gnus-agentize): New command. + * qp.el (quoted-printable-decode-region): Don't use hexl. - * gnus-bcklg.el (gnus-backlog-remove-article): Remove the ident - from the list. + * gnus-xmas.el (gnus-xmas-logo-color-style): Changed to dino. -Sun Sep 14 00:26:47 1997 Lars Magne Ingebrigtsen + * gnus-sum.el (gnus-parse-headers-hook): Default to nil. + (gnus-structured-field-decoder): Removed. + (gnus-unstructured-field-decoder): Ditto. - * gnus.el: Quassia Gnus v0.2 is released. + * mm-decode.el: New file. -Sun Sep 14 00:24:52 1997 Lars Magne Ingebrigtsen + * qp.el: New file. - * gnus-score.el (gnus-score-headers): Make sure the summary buffer - exists. + * gnus-art.el (article-mime-decode-quoted-printable): Removed. -Sat Sep 13 23:35:28 1997 Greg Stark + * gnus-ems.el (fboundp): Removed gnus-split-string. - * gnus-ems.el (gnus-x-splash): New function. + * gnus.el (gnus-splash-face): Doc fix. -Sat Sep 13 22:46:16 1997 Lars Magne Ingebrigtsen + * gnus-ems.el (fboundp): Don't bind mail-file-babyl-p. - * gnus-start.el (gnus-1): Use it. + * gnus-art.el (article-mime-decode-quoted-printable): Don't use + hexl. - * gnus-ems.el (gnus-decode-coding-string): New alias. + * nnheader.el (nnheader-temp-write): Removed. - * message.el (message-unix-mail-delimiter): Dox fox. +Sat Aug 29 20:34:17 1998 Lars Magne Ingebrigtsen - * nnmh.el (nnmh-request-list-1): Don't use coding system. + * gnus.el: Gnus v0.3 is released. - * gnus-sum.el (gnus-summary-catchup): Reverse logic. +Sat Aug 29 19:32:06 1998 Lars Magne Ingebrigtsen -Sat Sep 13 21:21:38 1997 Lars Magne Ingebrigtsen + * gnus.el: Gnus v0.2 is released. - * gnus.el: Quassia Gnus v0.1 is released. diff --git a/lisp/base64.el b/lisp/base64.el new file mode 100644 index 0000000..b96e890 --- /dev/null +++ b/lisp/base64.el @@ -0,0 +1,274 @@ +;;; 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. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; For non-MULE +(if (not (fboundp 'char-int)) + (fset '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)) + +(defun base64-run-command-on-region (start end output-buffer command + &rest arg-list) + (let ((tempfile nil) status errstring) + (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))))) + (condition-case () + (delete-file tempfile) + (error nil))))) + +(defun base64-insert-char (char &optional count ignored buffer) + (condition-case nil + (progn + (insert-char char count ignored buffer) + (fset 'base64-insert-char 'insert-char)) + (wrong-number-of-arguments + (fset 'base64-insert-char 'base64-xemacs-insert-char) + (base64-insert-char char count ignored buffer)))) + +(defun base64-xemacs-insert-char (char &optional count ignored buffer) + (if (and buffer (eq buffer (current-buffer))) + (insert-char char count) + (save-excursion + (set-buffer buffer) + (insert-char char count)))) + +(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 + ((= (point) end) + (if (not (zerop counter)) + (error "at least %d bits missing at end of base64 encoding" + (* (- 4 counter) 6))) + (setq done t)) + ((= (char-after (point)) ?=) + (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) + (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 ((= cols 72) + (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 (> cols 0) + (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) + (save-excursion + (set-buffer (get-buffer-create " *base64-encode*")) + (erase-buffer) + (insert string) + (base64-encode-region (point-min) (point-max)) + (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))))) + +(provide 'base64) diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index be03a4d..65bc02b 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -127,7 +127,7 @@ If nil, only read articles will be expired." (defun gnus-agent-read-file (file) "Load FILE and do a `read' there." - (nnheader-temp-write nil + (with-temp-buffer (ignore-errors (nnheader-insert-file-contents file) (goto-char (point-min)) @@ -427,7 +427,7 @@ be a select method." (defun gnus-agent-write-servers () "Write the alist of covered servers." - (nnheader-temp-write (nnheader-concat gnus-agent-directory "lib/servers") + (with-temp-file (nnheader-concat gnus-agent-directory "lib/servers") (prin1 gnus-agent-covered-methods (current-buffer)))) ;;; @@ -537,7 +537,7 @@ the actual number of articles toggled is returned." (gnus-agent-lib-file "active") (gnus-agent-lib-file "groups")))) (gnus-make-directory (file-name-directory file)) - (nnheader-temp-write file + (with-temp-file file (when (file-exists-p file) (nnheader-insert-file-contents file)) (goto-char (point-min)) @@ -662,7 +662,7 @@ the actual number of articles toggled is returned." ;; Fetch the articles from the backend. (if (gnus-check-backend-function 'retrieve-articles group) (setq pos (gnus-retrieve-articles articles group)) - (nnheader-temp-write nil + (with-temp-file nil (let (article) (while (setq article (pop articles)) (when (gnus-request-article article group) @@ -745,7 +745,7 @@ the actual number of articles toggled is returned." nil 'silent) (pop gnus-agent-buffer-alist)) (while gnus-agent-group-alist - (nnheader-temp-write (caar gnus-agent-group-alist) + (with-temp-file (caar gnus-agent-group-alist) (princ (cdar gnus-agent-group-alist)) (insert "\n")) (pop gnus-agent-group-alist)))) @@ -837,9 +837,9 @@ the actual number of articles toggled is returned." (defun gnus-agent-save-alist (group &optional articles state dir) "Save the article-state alist for GROUP." - (nnheader-temp-write (if dir - (concat dir ".agentview") - (gnus-agent-article-name ".agentview" group)) + (with-temp-file (if dir + (concat dir ".agentview") + (gnus-agent-article-name ".agentview" group)) (princ (setq gnus-agent-article-alist (nconc gnus-agent-article-alist (mapcar (lambda (article) (cons article state)) @@ -1084,7 +1084,7 @@ The following commands are available: "Write the category alist." (setq gnus-category-predicate-cache nil gnus-category-group-cache nil) - (nnheader-temp-write (nnheader-concat gnus-agent-directory "lib/categories") + (with-temp-file (nnheader-concat gnus-agent-directory "lib/categories") (prin1 gnus-category-alist (current-buffer)))) (defun gnus-category-edit-predicate (category) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 4eab8db..f598f57 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -272,7 +272,6 @@ be fed to `format-time-string'." :group 'gnus-article-washing) (eval-and-compile - (autoload 'hexl-hex-string-to-integer "hexl") (autoload 'timezone-make-date-arpa-standard "timezone") (autoload 'mail-extract-address-components "mail-extr")) @@ -946,84 +945,42 @@ characters to translate to." (process-send-region "article-x-face" beg end) (process-send-eof "article-x-face")))))))))) -(defun gnus-hack-decode-rfc1522 () - "Emergency hack function for avoiding problems when decoding." - (let ((buffer-read-only nil)) - (goto-char (point-min)) - ;; Remove encoded TABs. - (while (search-forward "=09" nil t) - (replace-match " " t t)) - ;; Remove encoded newlines. - (goto-char (point-min)) - (while (search-forward "=10" nil t) - (replace-match " " t t)))) +(defun gnus-article-decode-mime-words () + "Decode all MIME-encoded words in the article." + (interactive) + (save-excursion + (let ((inhibit-point-motion-hooks t) + buffer-read-only) + (mm-decode-words-region (point-min) (point-max))))) (defalias 'gnus-decode-rfc1522 'article-decode-rfc1522) (defalias 'gnus-article-decode-rfc1522 'article-decode-rfc1522) (defun article-decode-rfc1522 () - "Hack to remove QP encoding from headers." - (let ((case-fold-search t) - (inhibit-point-motion-hooks t) - (buffer-read-only nil) - string) + "Remove QP encoding from headers." + (let ((inhibit-point-motion-hooks t) + (buffer-read-only nil)) (save-restriction - (narrow-to-region - (goto-char (point-min)) - (or (search-forward "\n\n" nil t) (point-max))) - (goto-char (point-min)) - (while (re-search-forward - "=\\?iso-8859-1\\?q\\?\\([^?\t\n]*\\)\\?=" nil t) - (setq string (match-string 1)) - (save-restriction - (narrow-to-region (match-beginning 0) (match-end 0)) - (delete-region (point-min) (point-max)) - (insert string) - (article-mime-decode-quoted-printable - (goto-char (point-min)) (point-max)) - (subst-char-in-region (point-min) (point-max) ?_ ? ) - (goto-char (point-max))) - (goto-char (point-min)))))) + (message-narrow-to-head) + (mm-decode-words-region (point-min) (point-max))))) (defun article-de-quoted-unreadable (&optional force) - "Do a naive translation of a quoted-printable-encoded article. -This is in no way, shape or form meant as a replacement for real MIME -processing, but is simply a stop-gap measure until MIME support is -written. + "Translate a quoted-printable-encoded article. If FORCE, decode the article whether it is marked as quoted-printable or not." (interactive (list 'force)) (save-excursion - (let ((case-fold-search t) - (buffer-read-only nil) + (let ((buffer-read-only nil) (type (gnus-fetch-field "content-transfer-encoding"))) (gnus-article-decode-rfc1522) (when (or force (and type (string-match "quoted-printable" (downcase type)))) (goto-char (point-min)) (search-forward "\n\n" nil 'move) - (article-mime-decode-quoted-printable (point) (point-max)))))) + (quoted-printable-decode-region (point) (point-max)))))) (defun article-mime-decode-quoted-printable-buffer () "Decode Quoted-Printable in the current buffer." - (article-mime-decode-quoted-printable (point-min) (point-max))) - -(defun article-mime-decode-quoted-printable (from to) - "Decode Quoted-Printable in the region between FROM and TO." - (interactive "r") - (goto-char from) - (while (search-forward "=" to t) - (cond ((eq (following-char) ?\n) - (delete-char -1) - (delete-char 1)) - ((looking-at "[0-9A-F][0-9A-F]") - (subst-char-in-region - (1- (point)) (point) ?= - (hexl-hex-string-to-integer - (buffer-substring (point) (+ 2 (point))))) - (delete-char 2)) - ((looking-at "=") - (delete-char 1)) - ((gnus-message 3 "Malformed MIME quoted-printable message"))))) + (quoted-printable-decode-region (point-min) (point-max))) (defun article-hide-pgp (&optional arg) "Toggle hiding of any PGP headers and signatures in the current article. @@ -1231,7 +1188,7 @@ Put point at the beginning of the signature separator." (setq b (point)) (point-max)) (setq e (point-max))) - (nnheader-temp-write nil + (with-temp-buffer (insert-buffer-substring gnus-article-buffer b e) (require 'url) (save-window-excursion @@ -1978,6 +1935,8 @@ commands: (buffer-disable-undo (current-buffer)) (setq buffer-read-only t) (set-syntax-table gnus-article-mode-syntax-table) + (when (fboundp 'set-buffer-multibyte) + (set-buffer-multibyte t)) (gnus-run-hooks 'gnus-article-mode-hook)) (defun gnus-article-setup-buffer () @@ -2189,7 +2148,7 @@ Provided for backwards compatibility." (defun gnus-output-to-file (file-name) "Append the current article to a file named FILE-NAME." (let ((artbuf (current-buffer))) - (nnheader-temp-write nil + (with-temp-buffer (insert-buffer-substring artbuf) ;; Append newline at end of the buffer as separator, and then ;; save it to file. @@ -3135,7 +3094,7 @@ specified by `gnus-button-alist'." (defun gnus-url-parse-query-string (query &optional downcase) (let (retval pairs cur key val) - (setq pairs (gnus-split-string query "&")) + (setq pairs (split-string query "&")) (while pairs (setq cur (car pairs) pairs (cdr pairs)) diff --git a/lisp/gnus-cache.el b/lisp/gnus-cache.el index 7f03b70..bce2f54 100644 --- a/lisp/gnus-cache.el +++ b/lisp/gnus-cache.el @@ -595,7 +595,7 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache" (when (or force (and gnus-cache-active-hashtb gnus-cache-active-altered)) - (nnheader-temp-write gnus-cache-active-file + (with-temp-file gnus-cache-active-file (mapatoms (lambda (sym) (when (and sym (boundp sym)) diff --git a/lisp/gnus-dup.el b/lisp/gnus-dup.el index 6958f02..b289639 100644 --- a/lisp/gnus-dup.el +++ b/lisp/gnus-dup.el @@ -98,7 +98,7 @@ seen in the same session." "Save the duplicate suppression list." (when (and gnus-save-duplicate-list gnus-dup-list-dirty) - (nnheader-temp-write gnus-duplicate-file + (with-temp-file gnus-duplicate-file (gnus-prin1 `(setq gnus-dup-list ',gnus-dup-list)))) (setq gnus-dup-list-dirty nil)) diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index 0e95762..34625a2 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -45,9 +45,6 @@ (autoload 'gnus-xmas-redefine "gnus-xmas") (autoload 'appt-select-lowest-window "appt")) -(or (fboundp 'mail-file-babyl-p) - (fset 'mail-file-babyl-p 'rmail-file-p)) - ;;; Mule functions. (defun gnus-mule-cite-add-face (number prefix face) @@ -78,12 +75,6 @@ (truncate-string valstr (, max-width)) valstr)))) -(defun gnus-encode-coding-string (string system) - string) - -(defun gnus-decode-coding-string (string system) - string) - (eval-and-compile (if (string-match "XEmacs\\|Lucid" emacs-version) nil @@ -95,20 +86,6 @@ ((string-match "XEmacs\\|Lucid" emacs-version) (gnus-xmas-define)) - ((or (not (boundp 'emacs-minor-version)) - (and (< emacs-major-version 20) - (< emacs-minor-version 30))) - ;; Remove the `intangible' prop. - (let ((props (and (boundp 'gnus-hidden-properties) - gnus-hidden-properties))) - (while (and props (not (eq (car (cdr props)) 'intangible))) - (setq props (cdr props))) - (when props - (setcdr props (cdr (cdr (cdr props)))))) - (unless (fboundp 'buffer-substring-no-properties) - (defun buffer-substring-no-properties (beg end) - (format "%s" (buffer-substring beg end))))) - ((boundp 'MULE) (provide 'gnusutil)))) @@ -180,8 +157,6 @@ (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face) (fset 'gnus-max-width-function 'gnus-mule-max-width-function) (fset 'gnus-summary-set-display-table (lambda ())) - (fset 'gnus-encode-coding-string 'encode-coding-string) - (fset 'gnus-decode-coding-string 'decode-coding-string) (when (boundp 'gnus-check-before-posting) (setq gnus-check-before-posting @@ -234,7 +209,7 @@ (erase-buffer) (when (and dir (file-exists-p (setq file (concat dir "x-splash")))) - (nnheader-temp-write nil + (with-temp-buffer (insert-file-contents file) (goto-char (point-min)) (ignore-errors @@ -245,7 +220,7 @@ (make-face 'gnus-splash)) (setq height (/ (car pixmap) (frame-char-height)) width (/ (cadr pixmap) (frame-char-width))) - (set-face-foreground 'gnus-splash "ForestGreen") + (set-face-foreground 'gnus-splash "Brown") (set-face-stipple 'gnus-splash pixmap) (insert-char ?\n (* (/ (window-height) 2 height) height)) (setq i height) @@ -259,16 +234,6 @@ (goto-char (point-min)) (sit-for 0)))))) -(if (fboundp 'split-string) - (fset 'gnus-split-string 'split-string) - (defun gnus-split-string (string pattern) - "Return a list of substrings of STRING which are separated by PATTERN." - (let (parts (start 0)) - (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))))) - (provide 'gnus-ems) ;; Local Variables: diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 612be02..6eddfca 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -2155,7 +2155,7 @@ score file entries for articles to include in the group." (push (cons header regexps) scores)) scores))) (gnus-group-make-group group "nnkiboze" address) - (nnheader-temp-write (gnus-score-file-name (concat "nnkiboze:" group)) + (with-temp-file (gnus-score-file-name (concat "nnkiboze:" group)) (let (emacs-lisp-mode-hook) (pp scores (current-buffer))))) diff --git a/lisp/gnus-nocem.el b/lisp/gnus-nocem.el index d678531..66974ee 100644 --- a/lisp/gnus-nocem.el +++ b/lisp/gnus-nocem.el @@ -146,7 +146,7 @@ matches an previously scanned and verified nocem message." (save-excursion (let ((dependencies (make-vector 10 nil)) headers header) - (nnheader-temp-write nil + (with-temp-buffer (setq headers (if (eq 'nov (gnus-retrieve-headers @@ -302,13 +302,13 @@ matches an previously scanned and verified nocem message." "Save the NoCeM cache." (when (and gnus-nocem-alist gnus-nocem-touched-alist) - (nnheader-temp-write (gnus-nocem-cache-file) + (with-temp-file (gnus-nocem-cache-file) (gnus-prin1 `(setq gnus-nocem-alist ',gnus-nocem-alist))) (setq gnus-nocem-touched-alist nil))) (defun gnus-nocem-save-active () "Save the NoCeM active file." - (nnheader-temp-write (gnus-nocem-active-file) + (with-temp-file (gnus-nocem-active-file) (gnus-prin1 `(setq gnus-nocem-active ',gnus-nocem-active)))) (defun gnus-nocem-alist-to-hashtb () diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 8cff072..f2c3b3a 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -2209,7 +2209,7 @@ SCORE is the score to add." ;; Perform adaptive word scoring. (when (and (listp gnus-newsgroup-adaptive) (memq 'word gnus-newsgroup-adaptive)) - (nnheader-temp-write nil + (with-temp-buffer (let* ((hashtb (gnus-make-hashtable 1000)) (date (gnus-day-number (current-time-string))) (data gnus-newsgroup-data) @@ -2625,7 +2625,7 @@ Destroys the current buffer." (defun gnus-sort-score-files (files) "Sort FILES so that the most general files come first." - (nnheader-temp-write nil + (with-temp-buffer (let ((alist (mapcar (lambda (file) diff --git a/lisp/gnus-soup.el b/lisp/gnus-soup.el index 08f8176..71345c9 100644 --- a/lisp/gnus-soup.el +++ b/lisp/gnus-soup.el @@ -422,7 +422,7 @@ file. The vector contain three strings, [prefix name encoding]." "Write the AREAS file." (interactive) (when gnus-soup-areas - (nnheader-temp-write (concat gnus-soup-directory "AREAS") + (with-temp-file (concat gnus-soup-directory "AREAS") (let ((areas gnus-soup-areas) area) (while (setq area (pop areas)) @@ -443,7 +443,7 @@ file. The vector contain three strings, [prefix name encoding]." (defun gnus-soup-write-replies (dir areas) "Write a REPLIES file in DIR containing AREAS." - (nnheader-temp-write (concat dir "REPLIES") + (with-temp-file (concat dir "REPLIES") (let (area) (while (setq area (pop areas)) (insert (format "%s\t%s\t%s\n" diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 97ab9b8..005d2d0 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -2530,8 +2530,8 @@ If FORCE is non-nil, the .newsrc file is read." enable-multibyte-characters (fboundp 'gnus-mule-get-coding-system) (gnus-mule-get-coding-system (symbol-name group))))) - (if coding - (setq str (gnus-decode-coding-string str (car coding)))) + (when coding + (setq str (nnheader-decode-coding-string str (car coding)))) (set group str))) (forward-line 1)))) (gnus-message 5 "Reading descriptions file...done") diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 5e5c6ea..e2d17c9 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -663,18 +663,7 @@ is not run if `gnus-visual' is nil." :group 'gnus-summary-visual :type 'hook) -(defcustom gnus-structured-field-decoder 'identity - "Function to decode non-ASCII characters in structured field for summary." - :group 'gnus-various - :type 'function) - -(defcustom gnus-unstructured-field-decoder 'identity - "Function to decode non-ASCII characters in unstructured field for summary." - :group 'gnus-various - :type 'function) - -(defcustom gnus-parse-headers-hook - (list 'gnus-hack-decode-rfc1522 'gnus-decode-rfc1522) +(defcustom gnus-parse-headers-hook nil "*A hook called before parsing the headers." :group 'gnus-various :type 'hook) @@ -1395,6 +1384,9 @@ increase the score of each group you read." "c" gnus-article-highlight-citation "s" gnus-article-highlight-signature) + (gnus-define-keys (gnus-summary-wash-mime-map "M" gnus-summary-wash-map) + "w" gnus-article-decode-mime-words) + (gnus-define-keys (gnus-summary-wash-time-map "T" gnus-summary-wash-map) "z" gnus-article-date-ut "u" gnus-article-date-ut @@ -1494,6 +1486,9 @@ increase the score of each group you read." ["Headers" gnus-article-highlight-headers t] ["Signature" gnus-article-highlight-signature t] ["Citation" gnus-article-highlight-citation t]) + ("MIME" + ["Words" gnus-article-decode-mime-words t] + ["QP" gnus-article-de-quoted-unreadable t]) ("Date" ["Local" gnus-article-date-local t] ["ISO8601" gnus-article-date-iso8601 t] @@ -3062,10 +3057,8 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." (setq header (make-full-mail-header number ; number - (funcall - gnus-unstructured-field-decoder (gnus-nov-field)) ; subject - (funcall - gnus-structured-field-decoder (gnus-nov-field)) ; from + (mm-decode-words-string (gnus-nov-field)) ; subject + (mm-decode-words-string (gnus-nov-field)) ; from (gnus-nov-field) ; date (or (gnus-nov-field) (nnheader-generate-fake-message-id)) ; id @@ -4407,15 +4400,13 @@ The resulting hash table is returned, or nil if no Xrefs were found." (progn (goto-char p) (if (search-forward "\nsubject: " nil t) - (funcall - gnus-unstructured-field-decoder (nnheader-header-value)) + (mm-decode-words-string (nnheader-header-value)) "(none)")) ;; From. (progn (goto-char p) (if (search-forward "\nfrom: " nil t) - (funcall - gnus-structured-field-decoder (nnheader-header-value)) + (mm-decode-words-string (nnheader-header-value)) "(nobody)")) ;; Date. (progn @@ -4535,9 +4526,10 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')." number dependencies force-new)))) (push header headers)) (forward-line 1)) - (error - (gnus-error 4 "Strange nov line (%d)" - (count-lines (point-min) (point))))) + ;(error + ; (gnus-error 4 "Strange nov line (%d)" + ; (count-lines (point-min) (point)))) + ) (forward-line 1)) ;; A common bug in inn is that if you have posted an article and ;; then retrieves the active file, it will answer correctly -- @@ -6513,7 +6505,7 @@ Obeys the standard process/prefix convention." (gnus-summary-remove-process-mark article) (when (gnus-summary-display-article article) (save-excursion - (nnheader-temp-write nil + (with-temp-buffer (insert-buffer-substring gnus-original-article-buffer) ;; Remove some headers that may lead nndoc to make ;; the wrong guess. @@ -7318,7 +7310,7 @@ groups." (interactive) ;; Replace the article. (let ((buf (current-buffer))) - (nnheader-temp-write nil + (with-temp-buffer (insert-buffer buf) (if (and (not read-only) (not (gnus-request-replace-article @@ -7336,7 +7328,7 @@ groups." (message-narrow-to-head) (let ((head (buffer-string)) header) - (nnheader-temp-write nil + (with-temp-buffer (insert (format "211 %d Article retrieved.\n" (cdr gnus-article-current))) (insert head) @@ -8150,7 +8142,7 @@ is non-nil or the Subject: of both articles are the same." (gnus-summary-select-article t t nil current-article)) (set-buffer gnus-original-article-buffer) (let ((buf (format "%s" (buffer-string)))) - (nnheader-temp-write nil + (with-temp-buffer (insert buf) (goto-char (point-min)) (if (re-search-forward "^References: " nil t) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index ac066e5..069e6a6 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -106,25 +106,33 @@ (when (gnus-buffer-exists-p buf) (kill-buffer buf)))) -(if (fboundp 'point-at-bol) - (fset 'gnus-point-at-bol 'point-at-bol) +(cond + ((fboundp 'point-at-bol) + (fset 'gnus-point-at-bol 'point-at-bol)) + ((fboundp 'line-beginning-position) + (fset '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))))) - -(if (fboundp 'point-at-eol) - (fset 'gnus-point-at-eol 'point-at-eol) + (goto-char p)))))) + +(cond + ((fboundp 'point-at-eol) + (fset 'gnus-point-at-eol 'point-at-eol)) + ((fboundp 'line-end-position) + (fset '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))))) + (goto-char p)))))) (defun gnus-delete-first (elt list) "Delete by side effect the first occurrence of ELT as a member of LIST." diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index 00fc583..23eb31c 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -52,11 +52,12 @@ automatically." (grape "#b264cc" "#cf7df") (labia "#cc64c2" "#fd7dff") (berry "#cc6485" "#ff7db5") + (dino "#cc6485" "#ff7db5") (neutral "#b4b4b4" "#878787") (september "#bf9900" "#ffcc00")) "Color alist used for the Gnus logo.") -(defcustom gnus-xmas-logo-color-style 'moss +(defcustom gnus-xmas-logo-color-style 'dino "*Color styles used for the Gnus logo." :type '(choice (const flame) (const pine) (const moss) (const irish) (const sky) (const tin) diff --git a/lisp/gnus.el b/lisp/gnus.el index 2642303..82ae7cc 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -250,10 +250,10 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.6.42" +(defconst gnus-version-number "0.6" "Version number for this version of Gnus.") -(defconst gnus-version (format "Gnus v%s" gnus-version-number) +(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) "Version string for this version of Gnus.") (defcustom gnus-inhibit-startup-message nil @@ -637,13 +637,13 @@ be set in `.emacs' instead." (defface gnus-splash-face '((((class color) (background dark)) - (:foreground "ForestGreen")) + (:foreground "Brown")) (((class color) (background light)) - (:foreground "ForestGreen")) + (:foreground "Brown")) (t ())) - "Level 1 newsgroup face.") + "Face of the splash screen.") (defun gnus-splash () (save-excursion @@ -1569,8 +1569,9 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") (cdr package))))) '(("metamail" metamail-buffer) ("info" Info-goto-node) - ("hexl" hexl-hex-string-to-integer) ("pp" pp pp-to-string pp-eval-expression) + ("qp" quoted-printable-decode-region quoted-printable-decode-string) + ("mm-decode" mm-decode-words-region mm-decode-words-string) ("ps-print" ps-print-preprint) ("mail-extr" mail-extract-address-components) ("browse-url" browse-url) @@ -2005,7 +2006,7 @@ If ARG, insert string at point." ((member alpha '("September" "s")) "5.01") ((member alpha '("Red" "r")) "5.03") ((member alpha '("Quassia" "q")) "5.05") - ((member alpha '("p")) "5.07") + ((member alpha '("Pterodactyl" "p")) "5.07") ((member alpha '("o")) "5.09") ((member alpha '("n")) "5.11")) minor least) diff --git a/lisp/lpath.el b/lisp/lpath.el index d41172b..c48c08e 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -29,17 +29,21 @@ make-char-table set-char-table-range font-create-object x-color-values widget-make-intangible error-message-string w3-form-encode-xwfu gnus-mule-get-coding-system - decode-coding-string mail-aliases-setup)) + decode-coding-string mail-aliases-setup + mm-copy-tree url-view-url w3-prepare-buffer + set-buffer-multibyte)) (maybe-bind '(global-face-data mark-active transient-mark-mode mouse-selection-click-count mouse-selection-click-count-buffer buffer-display-table font-lock-defaults user-full-name user-login-name gnus-newsgroup-name gnus-article-x-face-too-ugly mail-mode-hook enable-multibyte-characters - adaptive-fill-first-line-regexp adaptive-fill-regexp))) + adaptive-fill-first-line-regexp adaptive-fill-regexp + url-current-mime-headers))) (maybe-bind '(mail-mode-hook enable-multibyte-characters browse-url-browser-function - adaptive-fill-first-line-regexp adaptive-fill-regexp)) + adaptive-fill-first-line-regexp adaptive-fill-regexp + url-current-mime-headers)) (maybe-fbind '(color-instance-rgb-components make-color-instance color-instance-name specifier-instance device-type device-class get-popup-menu-response event-object @@ -53,7 +57,9 @@ device-on-window-system-p make-gui-button Info-goto-node pp-to-string color-name gnus-mule-get-coding-system decode-coding-string - mail-aliases-setup))) + mail-aliases-setup + mm-copy-tree url-view-url w3-prepare-buffer + char-int mule-write-region-no-coding-system))) (setq load-path (cons "." load-path)) (require 'custom) diff --git a/lisp/message.el b/lisp/message.el index a7e5cd4..15c9b5b 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -1011,7 +1011,7 @@ The cdr of ech entry is a function for applying the face to a region.") (when (and (file-exists-p file) (file-readable-p file) (file-regular-p file)) - (nnheader-temp-write nil + (with-temp-buffer (nnheader-insert-file-contents file) (goto-char (point-min)) (looking-at message-unix-mail-delimiter)))) @@ -1111,7 +1111,8 @@ Return the number of headers removed." (goto-char (point-min))) (defun message-narrow-to-head () - "Narrow the buffer to the head of the message." + "Narrow the buffer to the head of the message. +Point is left at the beginning of the narrowed-to region." (widen) (narrow-to-region (goto-char (point-min)) @@ -3055,7 +3056,7 @@ Headers already prepared in the buffer are not modified." (let ((max 988) (cut 4) refs) - (nnheader-temp-write nil + (with-temp-buffer (insert references) (goto-char (point-min)) (while (re-search-forward "<[^>]+>" nil t) @@ -3583,7 +3584,7 @@ header line with the old Message-ID." (defun message-wash-subject (subject) "Remove junk like \"Re:\", \"(fwd)\", etc. that was added to the subject by previous forwarders, replyers, etc." - (nnheader-temp-write nil + (with-temp-buffer (insert-string subject) (goto-char (point-min)) ;; strip Re/Fwd stuff off the beginning diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el new file mode 100644 index 0000000..e1d50ed --- /dev/null +++ b/lisp/mm-decode.el @@ -0,0 +1,134 @@ +;;; mm-decode.el --- Function for decoding MIME things +;; Copyright (C) 1998 Free Software Foundation, Inc. + +;; Author: Lars Magne Ingebrigtsen +;; This file is not yet 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: + +(require 'base64) +(require 'qp) +(require 'nnheader) + +(defvar mm-charset-regexp (concat "[^" "][\000-\040()<>@,\;:\\\"/?.=" "]+")) + +(defvar mm-encoded-word-regexp + (concat "=\\?\\(" mm-charset-regexp "\\)\\?\\(B\\|Q\\)\\?" + "\\([!->@-~]+\\)\\?=")) + +(defun mm-decode-words-region (start end) + "Decode MIME-encoded words in region between START and END." + (interactive "r") + (save-excursion + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + ;; Remove whitespace between encoded words. + (while (re-search-forward + (concat "\\(" mm-encoded-word-regexp "\\)" + "\\(\n?[ \t]\\)+" + "\\(" mm-encoded-word-regexp "\\)") + nil t) + (delete-region (goto-char (match-end 1)) (match-beginning 6))) + ;; Decode the encoded words. + (goto-char (point-min)) + (while (re-search-forward mm-encoded-word-regexp nil t) + (insert (mm-decode-word + (prog1 + (match-string 0) + (delete-region (match-beginning 0) (match-end 0))))))))) + +(defun mm-decode-words-string (string) + "Decode the quoted-printable-encoded STRING and return the results." + (with-temp-buffer + (insert string) + (inline + (mm-decode-words-region (point-min) (point-max))) + (buffer-string))) + +(defun mm-decode-word (word) + "Decode WORD and return it if it is an encoded word. +Return WORD if not." + (if (not (string-match mm-encoded-word-regexp word)) + word + (or + (condition-case nil + (mm-decode-text + (match-string 1 word) + (upcase (match-string 2 word)) + (match-string 3 word)) + (error word)) + word))) + +(eval-and-compile + (if (fboundp 'decode-coding-string) + (fset 'mm-decode-coding-string 'decode-coding-string) + (fset 'mm-decode-coding-string (lambda (s a) s)))) + +(defun mm-decode-text (charset encoding string) + "Decode STRING as an encoded text. +Valid ENCODINGs are \"B\" and \"Q\". +If your Emacs implementation can't decode CHARSET, it returns nil." + (let ((cs (mm-charset-to-coding-system charset))) + (when cs + (mm-decode-coding-string + (cond + ((equal "B" encoding) + (base64-decode string)) + ((equal "Q" encoding) + (quoted-printable-decode-string + (nnheader-replace-chars-in-string string ?_ ? ))) + (t (error "Invalid encoding: %s" encoding))) + cs)))) + +(defvar mm-charset-coding-system-alist + (let ((rest + '((us-ascii . iso-8859-1) + (gb2312 . cn-gb-2312) + (iso-2022-jp-2 . iso-2022-7bit-ss2) + (x-ctext . ctext))) + (systems (coding-system-list)) + dest) + (while rest + (let ((pair (car rest))) + (unless (memq (car pair) systems) + (setq dest (cons pair dest)))) + (setq rest (cdr rest))) + dest) + "Charset/coding system alist.") + +(defun mm-charset-to-coding-system (charset &optional lbt) + "Return coding-system corresponding to CHARSET. +CHARSET is a symbol naming a MIME charset. +If optional argument LBT (`unix', `dos' or `mac') is specified, it is +used as the line break code type of the coding system." + (when (stringp charset) + (setq charset (intern (downcase charset)))) + (setq charset + (or (cdr (assq charset mm-charset-coding-system-alist)) + charset)) + (when lbt + (setq charset (intern (format "%s-%s" charset lbt)))) + (when (memq charset (coding-system-list)) + charset)) + +(provide 'mm-decode) + +;; qp.el ends here diff --git a/lisp/mm.el b/lisp/mm.el new file mode 100644 index 0000000..1b57cb1 --- /dev/null +++ b/lisp/mm.el @@ -0,0 +1,1283 @@ +;;; mm.el,v --- Mailcap parsing routines, and MIME handling +;; Author: wmperry +;; Created: 1996/05/28 02:46:51 +;; Version: 1.96 +;; Keywords: mail, news, hypermedia + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Copyright (c) 1994, 1995, 1996 by William M. Perry +;;; Copyright (c) 1996 - 1998 Free Software Foundation, Inc. +;;; +;;; 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. +;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Generalized mailcap parsing and access routines +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Data structures +;;; --------------- +;;; The mailcap structure is an assoc list of assoc lists. +;;; 1st assoc list is keyed on the major content-type +;;; 2nd assoc list is keyed on the minor content-type (which can be a regexp) +;;; +;;; Which looks like: +;;; ----------------- +;;; ( +;;; ("application" +;;; ("postscript" . ) +;;; ) +;;; ("text" +;;; ("plain" . ) +;;; ) +;;; ) +;;; +;;; Where is another assoc list of the various information +;;; related to the mailcap RFC. This is keyed on the lowercase +;;; attribute name (viewer, test, etc). This looks like: +;;; (("viewer" . viewerinfo) +;;; ("test" . testinfo) +;;; ("xxxx" . "string") +;;; ) +;;; +;;; Where viewerinfo specifies how the content-type is viewed. Can be +;;; a string, in which case it is run through a shell, with +;;; appropriate parameters, or a symbol, in which case the symbol is +;;; funcall'd, with the buffer as an argument. +;;; +;;; testinfo is a list of strings, or nil. If nil, it means the +;;; viewer specified is always valid. If it is a list of strings, +;;; these are used to determine whether a viewer passes the 'test' or +;;; not. +;;; +;;; The main interface to this code is: +;;; +;;; To set everything up: +;;; +;;; (mm-parse-mailcaps [path]) +;;; +;;; Where PATH is a unix-style path specification (: separated list +;;; of strings). If PATH is nil, the environment variable MAILCAPS +;;; will be consulted. If there is no environment variable, then a +;;; default list of paths is used. +;;; +;;; To retrieve the information: +;;; (mm-mime-info st [nd] [request]) +;;; +;;; Where st and nd are positions in a buffer that contain the +;;; content-type header information of a mail/news/whatever message. +;;; st can optionally be a string that contains the content-type +;;; information. +;;; +;;; Third argument REQUEST specifies what information to return. If +;;; it is nil or the empty string, the viewer (second field of the +;;; mailcap entry) will be returned. If it is a string, then the +;;; mailcap field corresponding to that string will be returned +;;; (print, description, whatever). If a number, then all the +;;; information for this specific viewer is returned. +;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Variables, etc +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(eval-and-compile + (require 'cl) +;LMI was here + ;;(require 'devices) + ) + +(defconst mm-version (let ((x "1.96")) + (if (string-match "Revision: \\([^ \t\n]+\\)" x) + (substring x (match-beginning 1) (match-end 1)) + x)) + "Version # of MM package") + +(defvar mm-parse-args-syntax-table + (copy-syntax-table emacs-lisp-mode-syntax-table) + "A syntax table for parsing sgml attributes.") + +(modify-syntax-entry ?' "\"" mm-parse-args-syntax-table) +(modify-syntax-entry ?` "\"" mm-parse-args-syntax-table) +(modify-syntax-entry ?{ "(" mm-parse-args-syntax-table) +(modify-syntax-entry ?} ")" mm-parse-args-syntax-table) + +(defvar mm-mime-data + '( + ("multipart" . ( + ("alternative". (("viewer" . mm-multipart-viewer) + ("type" . "multipart/alternative"))) + ("mixed" . (("viewer" . mm-multipart-viewer) + ("type" . "multipart/mixed"))) + (".*" . (("viewer" . mm-save-binary-file) + ("type" . "multipart/*"))) + ) + ) + ("application" . ( + ("x-x509-ca-cert" . (("viewer" . ssl-view-site-cert) + ("test" . (fboundp 'ssl-view-site-cert)) + ("type" . "application/x-x509-ca-cert"))) + ("x-x509-user-cert" . (("viewer" . ssl-view-user-cert) + ("test" . (fboundp 'ssl-view-user-cert)) + ("type" . "application/x-x509-user-cert"))) + ("octet-stream" . (("viewer" . mm-save-binary-file) + ("type" ."application/octet-stream"))) + ("dvi" . (("viewer" . "open %s") + ("type" . "application/dvi") + ("test" . (eq (device-type) 'ns)))) + ("dvi" . (("viewer" . "xdvi %s") + ("test" . (eq (device-type) 'x)) + ("needsx11") + ("type" . "application/dvi"))) + ("dvi" . (("viewer" . "dvitty %s") + ("test" . (not (getenv "DISPLAY"))) + ("type" . "application/dvi"))) + ("emacs-lisp" . (("viewer" . mm-maybe-eval) + ("type" . "application/emacs-lisp"))) +; ("x-tar" . (("viewer" . tar-mode) +; ("test" . (fboundp 'tar-mode)) +; ("type" . "application/x-tar"))) + ("x-tar" . (("viewer" . mm-save-binary-file) + ("type" . "application/x-tar"))) + ("x-latex" . (("viewer" . tex-mode) + ("test" . (fboundp 'tex-mode)) + ("type" . "application/x-latex"))) + ("x-tex" . (("viewer" . tex-mode) + ("test" . (fboundp 'tex-mode)) + ("type" . "application/x-tex"))) + ("latex" . (("viewer" . tex-mode) + ("test" . (fboundp 'tex-mode)) + ("type" . "application/latex"))) + ("tex" . (("viewer" . tex-mode) + ("test" . (fboundp 'tex-mode)) + ("type" . "application/tex"))) + ("texinfo" . (("viewer" . texinfo-mode) + ("test" . (fboundp 'texinfo-mode)) + ("type" . "application/tex"))) + ("zip" . (("viewer" . mm-save-binary-file) + ("type" . "application/zip") + ("copiousoutput"))) + ("pdf" . (("viewer" . "acroread %s") + ("type" . "application/pdf"))) + ("postscript" . (("viewer" . "open %s") + ("type" . "application/postscript") + ("test" . (eq (device-type) 'ns)))) + ("postscript" . (("viewer" . "ghostview %s") + ("type" . "application/postscript") + ("test" . (eq (device-type) 'x)) + ("needsx11"))) + ("postscript" . (("viewer" . "ps2ascii %s") + ("type" . "application/postscript") + ("test" . (not (getenv "DISPLAY"))) + ("copiousoutput"))) + )) + ("audio" . ( + ("x-mpeg" . (("viewer" . "maplay %s") + ("type" . "audio/x-mpeg"))) + (".*" . (("viewer" . mm-play-sound-file) + ("test" . (or (featurep 'nas-sound) + (featurep 'native-sound))) + ("type" . "audio/*"))) + (".*" . (("viewer" . "showaudio") + ("type" . "audio/*"))) + )) + ("message" . ( + ("rfc-*822" . (("viewer" . vm-mode) + ("test" . (fboundp 'vm-mode)) + ("type" . "message/rfc-822"))) + ("rfc-*822" . (("viewer" . w3-mode) + ("test" . (fboundp 'w3-mode)) + ("type" . "message/rfc-822"))) + ("rfc-*822" . (("viewer" . view-mode) + ("test" . (fboundp 'view-mode)) + ("type" . "message/rfc-822"))) + ("rfc-*822" . (("viewer" . fundamental-mode) + ("type" . "message/rfc-822"))) + )) + ("image" . ( + ("x-xwd" . (("viewer" . "xwud -in %s") + ("type" . "image/x-xwd") + ("compose" . "xwd -frame > %s") + ("test" . (eq (device-type) 'x)) + ("needsx11"))) + ("x11-dump" . (("viewer" . "xwud -in %s") + ("type" . "image/x-xwd") + ("compose" . "xwd -frame > %s") + ("test" . (eq (device-type) 'x)) + ("needsx11"))) + ("windowdump" . (("viewer" . "xwud -in %s") + ("type" . "image/x-xwd") + ("compose" . "xwd -frame > %s") + ("test" . (eq (device-type) 'x)) + ("needsx11"))) + (".*" . (("viewer" . "open %s") + ("type" . "image/*") + ("test" . (eq (device-type) 'ns)))) + (".*" . (("viewer" . "xv -perfect %s") + ("type" . "image/*") + ("test" . (eq (device-type) 'x)) + ("needsx11"))) + )) + ("text" . ( + ("plain" . (("viewer" . w3-mode) + ("test" . (fboundp 'w3-mode)) + ("type" . "text/plain"))) + ("plain" . (("viewer" . view-mode) + ("test" . (fboundp 'view-mode)) + ("type" . "text/plain"))) + ("plain" . (("viewer" . fundamental-mode) + ("type" . "text/plain"))) + ("enriched" . (("viewer" . enriched-decode-region) + ("test" . (fboundp + 'enriched-decode-region)) + ("type" . "text/enriched"))) + ("html" . (("viewer" . w3-prepare-buffer) + ("test" . (fboundp 'w3-prepare-buffer)) + ("type" . "text/html"))) + )) + ("video" . ( + ("mpeg" . (("viewer" . "mpeg_play %s") + ("type" . "video/mpeg") + ("test" . (eq (device-type) 'x)) + ("needsx11"))) + )) + ("x-world" . ( + ("x-vrml" . (("viewer" . "webspace -remote %s -URL %u") + ("type" . "x-world/x-vrml") + ("description" + "VRML document"))))) + ("archive" . ( + ("tar" . (("viewer" . tar-mode) + ("type" . "archive/tar") + ("test" . (fboundp 'tar-mode)))) + )) + ) + "*The mailcap structure is an assoc list of assoc lists. +1st assoc list is keyed on the major content-type +2nd assoc list is keyed on the minor content-type (which can be a regexp) + +Which looks like: +----------------- +( + (\"application\" + (\"postscript\" . ) + ) + (\"text\" + (\"plain\" . ) + ) +) + +Where is another assoc list of the various information +related to the mailcap RFC. This is keyed on the lowercase +attribute name (viewer, test, etc). This looks like: +((\"viewer\" . viewerinfo) + (\"test\" . testinfo) + (\"xxxx\" . \"string\") +) + +Where viewerinfo specifies how the content-type is viewed. Can be +a string, in which case it is run through a shell, with +appropriate parameters, or a symbol, in which case the symbol is +funcall'd, with the buffer as an argument. + +testinfo is a list of strings, or nil. If nil, it means the +viewer specified is always valid. If it is a list of strings, +these are used to determine whether a viewer passes the 'test' or +not.") + +(defvar mm-content-transfer-encodings + '(("base64" . base64-decode-region) + ("7bit" . ignore) + ("8bit" . ignore) + ("binary" . ignore) + ("x-compress" . ("uncompress" "-c")) + ("x-gzip" . ("gzip" "-dc")) + ("compress" . ("uncompress" "-c")) + ("gzip" . ("gzip" "-dc")) + ("x-hqx" . ("mcvert" "-P" "-s" "-S")) + ("quoted-printable" . mm-decode-quoted-printable) + ) + "*An assoc list of content-transfer-encodings and how to decode them.") + +(defvar mm-download-directory nil + "*Where downloaded files should go by default.") + +(defvar mm-temporary-directory (or (getenv "TMPDIR") "/tmp") + "*Where temporary files go.") + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; A few things from w3 and url, just in case this is used without them +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun mm-generate-unique-filename (&optional fmt) + "Generate a unique filename in mm-temporary-directory" + (if (not fmt) + (let ((base (format "mm-tmp.%d" (user-real-uid))) + (fname "") + (x 0)) + (setq fname (format "%s%d" base x)) + (while (file-exists-p + (expand-file-name fname mm-temporary-directory)) + (setq x (1+ x) + fname (concat base (int-to-string x)))) + (expand-file-name fname mm-temporary-directory)) + (let ((base (concat "mm" (int-to-string (user-real-uid)))) + (fname "") + (x 0)) + (setq fname (format fmt (concat base (int-to-string x)))) + (while (file-exists-p + (expand-file-name fname mm-temporary-directory)) + (setq x (1+ x) + fname (format fmt (concat base (int-to-string x))))) + (expand-file-name fname mm-temporary-directory)))) + +(if (and (fboundp 'copy-tree) + (subrp (symbol-function 'copy-tree))) + (fset 'mm-copy-tree 'copy-tree) + (defun mm-copy-tree (tree) + (if (consp tree) + (cons (mm-copy-tree (car tree)) + (mm-copy-tree (cdr tree))) + (if (vectorp tree) + (let* ((new (copy-sequence tree)) + (i (1- (length new)))) + (while (>= i 0) + (aset new i (mm-copy-tree (aref new i))) + (setq i (1- i))) + new) + tree)))) + +;LMI was here +;(require 'mule-sysdp) + +(if (not (fboundp 'w3-save-binary-file)) + (defun mm-save-binary-file () + ;; Ok, this is truly fucked. In XEmacs, if you use the mouse to select + ;; a URL that gets saved via this function, read-file-name will pop up a + ;; dialog box for file selection. For some reason which buffer we are in + ;; gets royally screwed (even with save-excursions and the whole nine + ;; yards). SO, we just keep the old buffer name around and away we go. + (let ((old-buff (current-buffer)) + (file (read-file-name "Filename to save as: " + (or mm-download-directory "~/") + (file-name-nondirectory (url-view-url t)) + nil + (file-name-nondirectory (url-view-url t)))) + (require-final-newline nil)) + (set-buffer old-buff) + (mule-write-region-no-coding-system (point-min) (point-max) file) + (kill-buffer (current-buffer)))) + (fset 'mm-save-binary-file 'w3-save-binary-file)) + +(defun mm-maybe-eval () + "Maybe evaluate a buffer of emacs lisp code" + (if (yes-or-no-p "This is emacs-lisp code, evaluate it? ") + (eval-buffer (current-buffer)) + (emacs-lisp-mode))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; The mailcap parser +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-viewer-unescape (format &optional filename url) + (save-excursion + (set-buffer (get-buffer-create " *mm-parse*")) + (erase-buffer) + (insert format) + (goto-char (point-min)) + (while (re-search-forward "%\\(.\\)" nil t) + (let ((escape (aref (match-string 1) 0))) + (replace-match "" t t) + (case escape + (?% (insert "%")) + (?s (insert (or filename "\"\""))) + (?u (insert (or url "\"\"")))))) + (buffer-string))) + +(defun mm-in-assoc (elt list) + ;; Check to see if ELT matches any of the regexps in the car elements of LIST + (let (rslt) + (while (and list (not rslt)) + (and (car (car list)) + (string-match (car (car list)) elt) + (setq rslt (car list))) + (setq list (cdr list))) + rslt)) + +(defun mm-replace-regexp (regexp to-string) + ;; Quiet replace-regexp. + (goto-char (point-min)) + (while (re-search-forward regexp nil t) + (replace-match to-string t nil))) + +(defun mm-parse-mailcaps (&optional path) + ;; Parse out all the mailcaps specified in a unix-style path string PATH + (cond + (path nil) + ((getenv "MAILCAPS") (setq path (getenv "MAILCAPS"))) + ((memq system-type '(ms-dos ms-windows windows-nt)) + (setq path (mapconcat 'expand-file-name '("~/mail.cap" "~/etc/mail.cap") + ";"))) + (t (setq path (mapconcat 'expand-file-name + '("~/.mailcap" + "/etc/mailcap:/usr/etc/mailcap" + "/usr/local/etc/mailcap") ":")))) + (let ((fnames (reverse + (mm-string-to-tokens path + (if (memq system-type + '(ms-dos ms-windows windows-nt)) + ?; + ?:)))) + fname) + (while fnames + (setq fname (car fnames)) + (if (and (file-exists-p fname) (file-readable-p fname)) + (mm-parse-mailcap (car fnames))) + (setq fnames (cdr fnames))))) + +(defun mm-parse-mailcap (fname) + ;; Parse out the mailcap file specified by FNAME + (let (major ; The major mime type (image/audio/etc) + minor ; The minor mime type (gif, basic, etc) + save-pos ; Misc saved positions used in parsing + viewer ; How to view this mime type + info ; Misc info about this mime type + ) + (save-excursion + (set-buffer (get-buffer-create " *mailcap*")) + (erase-buffer) + (insert-file-contents fname) + (set-syntax-table mm-parse-args-syntax-table) + (mm-replace-regexp "#.*" "") ; Remove all comments + (mm-replace-regexp "\n+" "\n") ; And blank lines + (mm-replace-regexp "\\\\[ \t\n]+" " ") ; And collapse spaces + (mm-replace-regexp (concat (regexp-quote "\\") "[ \t]*\n") "") + (goto-char (point-max)) + (skip-chars-backward " \t\n") + (delete-region (point) (point-max)) + (goto-char (point-min)) + (while (not (eobp)) + (skip-chars-forward " \t\n") + (setq save-pos (point) + info nil) + (skip-chars-forward "^/;") + (downcase-region save-pos (point)) + (setq major (buffer-substring save-pos (point))) + (skip-chars-forward "/ \t\n") + (setq save-pos (point)) + (skip-chars-forward "^;") + (downcase-region save-pos (point)) + (setq minor + (cond + ((= ?* (or (char-after save-pos) 0)) ".*") + ((= (point) save-pos) ".*") + (t (buffer-substring save-pos (point))))) + (skip-chars-forward "; \t\n") + ;;; Got the major/minor chunks, now for the viewers/etc + ;;; The first item _must_ be a viewer, according to the + ;;; RFC for mailcap files (#1343) + (skip-chars-forward "; \t\n") + (setq save-pos (point)) + (skip-chars-forward "^;\n") + (if (= (or (char-after save-pos) 0) ?') + (setq viewer (progn + (narrow-to-region (1+ save-pos) (point)) + (goto-char (point-min)) + (prog1 + (read (current-buffer)) + (goto-char (point-max)) + (widen)))) + (setq viewer (buffer-substring save-pos (point)))) + (setq save-pos (point)) + (end-of-line) + (setq info (nconc (list (cons "viewer" viewer) + (cons "type" (concat major "/" + (if (string= minor ".*") + "*" minor)))) + (mm-parse-mailcap-extras save-pos (point)))) + (mm-mailcap-entry-passes-test info) + (mm-add-mailcap-entry major minor info))))) + +(defun mm-parse-mailcap-extras (st nd) + ;; Grab all the extra stuff from a mailcap entry + (let ( + name ; From name= + value ; its value + results ; Assoc list of results + name-pos ; Start of XXXX= position + val-pos ; Start of value position + done ; Found end of \'d ;s? + ) + (save-restriction + (narrow-to-region st nd) + (goto-char (point-min)) + (skip-chars-forward " \n\t;") + (while (not (eobp)) + (setq done nil) + (skip-chars-forward " \";\n\t") + (setq name-pos (point)) + (skip-chars-forward "^ \n\t=") + (downcase-region name-pos (point)) + (setq name (buffer-substring name-pos (point))) + (skip-chars-forward " \t\n") + (if (/= (or (char-after (point)) 0) ?=) ; There is no value + (setq value nil) + (skip-chars-forward " \t\n=") + (setq val-pos (point)) + (if (memq (char-after val-pos) '(?\" ?')) + (progn + (setq val-pos (1+ val-pos)) + (condition-case nil + (progn + (forward-sexp 1) + (backward-char 1)) + (error (goto-char (point-max))))) + (while (not done) + (skip-chars-forward "^;") + (if (= (or (char-after (1- (point))) 0) ?\\ ) + (progn + (subst-char-in-region (1- (point)) (point) ?\\ ? ) + (skip-chars-forward ";")) + (setq done t)))) + (setq value (buffer-substring val-pos (point)))) + (setq results (cons (cons name value) results))) + results))) + +(defun mm-string-to-tokens (str &optional delim) + "Return a list of words from the string STR" + (setq delim (or delim ? )) + (let (results y) + (mapcar + (function + (lambda (x) + (cond + ((and (= x delim) y) (setq results (cons y results) y nil)) + ((/= x delim) (setq y (concat y (char-to-string x)))) + (t nil)))) str) + (nreverse (cons y results)))) + +(defun mm-mailcap-entry-passes-test (info) + ;; Return t iff a mailcap entry passes its test clause or no test + ;; clause is present. + (let (status ; Call-process-regions return value + (test (assoc "test" info)); The test clause + ) + (setq status (and test (mm-string-to-tokens (cdr test)))) + (if (and (assoc "needsx11" info) (not (getenv "DISPLAY"))) + (setq status nil) + (cond + ((and (equal (nth 0 status) "test") + (equal (nth 1 status) "-n") + (or (equal (nth 2 status) "$DISPLAY") + (equal (nth 2 status) "\"$DISPLAY\""))) + (setq status (if (getenv "DISPLAY") t nil))) + ((and (equal (nth 0 status) "test") + (equal (nth 1 status) "-z") + (or (equal (nth 2 status) "$DISPLAY") + (equal (nth 2 status) "\"$DISPLAY\""))) + (setq status (if (getenv "DISPLAY") nil t))) + (test nil) + (t nil))) + (and test (listp test) (setcdr test status)))) + +(defun mm-parse-args (st &optional nd nodowncase) + ;; Return an assoc list of attribute/value pairs from an RFC822-type string + (let ( + name ; From name= + value ; its value + results ; Assoc list of results + name-pos ; Start of XXXX= position + val-pos ; Start of value position + ) + (save-excursion + (if (stringp st) + (progn + (set-buffer (get-buffer-create " *mm-temp*")) + (set-syntax-table mm-parse-args-syntax-table) + (erase-buffer) + (insert st) + (setq st (point-min) + nd (point-max))) + (set-syntax-table mm-parse-args-syntax-table)) + (save-restriction + (narrow-to-region st nd) + (goto-char (point-min)) + (while (not (eobp)) + (skip-chars-forward "; \n\t") + (setq name-pos (point)) + (skip-chars-forward "^ \n\t=;") + (if (not nodowncase) + (downcase-region name-pos (point))) + (setq name (buffer-substring name-pos (point))) + (skip-chars-forward " \t\n") + (if (/= (or (char-after (point)) 0) ?=) ; There is no value + (setq value nil) + (skip-chars-forward " \t\n=") + (setq val-pos (point) + value + (cond + ((or (= (or (char-after val-pos) 0) ?\") + (= (or (char-after val-pos) 0) ?')) + (buffer-substring (1+ val-pos) + (condition-case () + (prog2 + (forward-sexp 1) + (1- (point)) + (skip-chars-forward "\"")) + (error + (skip-chars-forward "^ \t\n") + (point))))) + (t + (buffer-substring val-pos + (progn + (skip-chars-forward "^;") + (skip-chars-backward " \t") + (point))))))) + (setq results (cons (cons name value) results)) + (skip-chars-forward "; \n\t")) + results)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; The action routines. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-possible-viewers (major minor) + ;; Return a list of possible viewers from MAJOR for minor type MINOR + (let ((exact '()) + (wildcard '())) + (while major + (cond + ((equal (car (car major)) minor) + (setq exact (cons (cdr (car major)) exact))) + ((string-match (car (car major)) minor) + (setq wildcard (cons (cdr (car major)) wildcard)))) + (setq major (cdr major))) + (nconc (nreverse exact) (nreverse wildcard)))) + +(defun mm-unescape-mime-test (test type-info) + (let ((buff (get-buffer-create " *unescape*")) + save-pos save-chr subst) + (cond + ((symbolp test) test) + ((and (listp test) (symbolp (car test))) test) + ((or (stringp test) + (and (listp test) (stringp (car test)) + (setq test (mapconcat 'identity test " ")))) + (save-excursion + (set-buffer buff) + (erase-buffer) + (insert test) + (goto-char (point-min)) + (while (not (eobp)) + (skip-chars-forward "^%") + (if (/= (- (point) + (progn (skip-chars-backward "\\\\") + (point))) + 0) ; It is an escaped % + (progn + (delete-char 1) + (skip-chars-forward "%.")) + (setq save-pos (point)) + (skip-chars-forward "%") + (setq save-chr (char-after (point))) + (cond + ((null save-chr) nil) + ((= save-chr ?t) + (delete-region save-pos (progn (forward-char 1) (point))) + (insert (or (cdr (assoc "type" type-info)) "\"\""))) + ((= save-chr ?M) + (delete-region save-pos (progn (forward-char 1) (point))) + (insert "\"\"")) + ((= save-chr ?n) + (delete-region save-pos (progn (forward-char 1) (point))) + (insert "\"\"")) + ((= save-chr ?F) + (delete-region save-pos (progn (forward-char 1) (point))) + (insert "\"\"")) + ((= save-chr ?{) + (forward-char 1) + (skip-chars-forward "^}") + (downcase-region (+ 2 save-pos) (point)) + (setq subst (buffer-substring (+ 2 save-pos) (point))) + (delete-region save-pos (1+ (point))) + (insert (or (cdr (assoc subst type-info)) "\"\""))) + (t nil)))) + (buffer-string))) + (t (error "Bad value to mm-unescape-mime-test. %s" test))))) + +(defun mm-viewer-passes-test (viewer-info type-info) + ;; Return non-nil iff the viewer specified by VIEWER-INFO passes its + ;; test clause (if any). + (let* ((test-info (assoc "test" viewer-info)) + (test (cdr test-info)) + (viewer (cdr (assoc "viewer" viewer-info))) + (default-directory (expand-file-name "~/")) + status + parsed-test + ) + (cond + ((not test-info) t) ; No test clause + ((not test) nil) ; Already failed test + ((eq test t) t) ; Already passed test + ((and (symbolp test) ; Lisp function as test + (fboundp test)) + (funcall test type-info)) + ((and (symbolp test) ; Lisp variable as test + (boundp test)) + (symbol-value test)) + ((and (listp test) ; List to be eval'd + (symbolp (car test))) + (eval test)) + (t + (setq test (mm-unescape-mime-test test type-info) + test (list shell-file-name nil nil nil shell-command-switch test) + status (apply 'call-process test)) + (= 0 status))))) + +(defun mm-add-mailcap-entry (major minor info) + (let ((old-major (assoc major mm-mime-data))) + (if (null old-major) ; New major area + (setq mm-mime-data + (cons (cons major (list (cons minor info))) + mm-mime-data)) + (let ((cur-minor (assoc minor old-major))) + (cond + ((or (null cur-minor) ; New minor area, or + (assoc "test" info)) ; Has a test, insert at beginning + (setcdr old-major (cons (cons minor info) (cdr old-major)))) + ((and (not (assoc "test" info)); No test info, replace completely + (not (assoc "test" cur-minor))) + (setcdr cur-minor info)) + (t + (setcdr old-major (cons (cons minor info) (cdr old-major))))))))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; The main whabbo +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-viewer-lessp (x y) + ;; Return t iff viewer X is more desirable than viewer Y + (let ((x-wild (string-match "[*?]" (or (cdr-safe (assoc "type" x)) ""))) + (y-wild (string-match "[*?]" (or (cdr-safe (assoc "type" y)) ""))) + (x-lisp (not (stringp (or (cdr-safe (assoc "viewer" x)) "")))) + (y-lisp (not (stringp (or (cdr-safe (assoc "viewer" y)) ""))))) + (cond + ((and x-lisp (not y-lisp)) + t) + ((and (not y-lisp) x-wild (not y-wild)) + t) + ((and (not x-wild) y-wild) + t) + (t nil)))) + +(defun mm-mime-info (st &optional nd request) + "Get the mime viewer command for HEADERLINE, return nil if none found. +Expects a complete content-type header line as its argument. This can +be simple like text/html, or complex like text/plain; charset=blah; foo=bar + +Third argument REQUEST specifies what information to return. If it is +nil or the empty string, the viewer (second field of the mailcap +entry) will be returned. If it is a string, then the mailcap field +corresponding to that string will be returned (print, description, +whatever). If a number, then all the information for this specific +viewer is returned." + (let ( + major ; Major encoding (text, etc) + minor ; Minor encoding (html, etc) + info ; Other info + save-pos ; Misc. position during parse + major-info ; (assoc major mm-mime-data) + minor-info ; (assoc minor major-info) + test ; current test proc. + viewers ; Possible viewers + passed ; Viewers that passed the test + viewer ; The one and only viewer + ) + (save-excursion + (cond + ((null st) + (set-buffer (get-buffer-create " *mimeparse*")) + (erase-buffer) + (insert "text/plain") + (setq st (point-min))) + ((stringp st) + (set-buffer (get-buffer-create " *mimeparse*")) + (erase-buffer) + (insert st) + (setq st (point-min))) + ((null nd) + (narrow-to-region st (progn (goto-char st) (end-of-line) (point)))) + (t (narrow-to-region st nd))) + (goto-char st) + (skip-chars-forward ": \t\n") + (buffer-enable-undo) + (setq viewer + (catch 'mm-exit + (setq save-pos (point)) + (skip-chars-forward "^/") + (downcase-region save-pos (point)) + (setq major (buffer-substring save-pos (point))) + (if (not (setq major-info (cdr (assoc major mm-mime-data)))) + (throw 'mm-exit nil)) + (skip-chars-forward "/ \t\n") + (setq save-pos (point)) + (skip-chars-forward "^ \t\n;") + (downcase-region save-pos (point)) + (setq minor (buffer-substring save-pos (point))) + (if (not + (setq viewers (mm-possible-viewers major-info minor))) + (throw 'mm-exit nil)) + (skip-chars-forward "; \t") + (if (eolp) + nil ; No qualifiers + (setq save-pos (point)) + (end-of-line) + (setq info (mm-parse-args save-pos (point))) + ) + (while viewers + (if (mm-viewer-passes-test (car viewers) info) + (setq passed (cons (car viewers) passed))) + (setq viewers (cdr viewers))) + (setq passed (sort (nreverse passed) 'mm-viewer-lessp)) + (car passed))) + (if (and (stringp (cdr (assoc "viewer" viewer))) + passed) + (setq viewer (car passed))) + (widen) + (cond + ((and (null viewer) (not (equal major "default"))) + (mm-mime-info "default" nil request)) + ((or (null request) (equal request "")) + (mm-unescape-mime-test (cdr (assoc "viewer" viewer)) info)) + ((stringp request) + (if (or (string= request "test") (string= request "viewer")) + (mm-unescape-mime-test (cdr-safe (assoc request viewer)) info))) + (t + ;; MUST make a copy *sigh*, else we modify mm-mime-data + (setq viewer (mm-copy-tree viewer)) + (let ((view (assoc "viewer" viewer)) + (test (assoc "test" viewer))) + (if view (setcdr view (mm-unescape-mime-test (cdr view) info))) + (if test (setcdr test (mm-unescape-mime-test (cdr test) info)))) + viewer))))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Experimental MIME-types parsing +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defvar mm-mime-extensions + '( + ("" . "text/plain") + (".abs" . "audio/x-mpeg") + (".aif" . "audio/aiff") + (".aifc" . "audio/aiff") + (".aiff" . "audio/aiff") + (".ano" . "application/x-annotator") + (".au" . "audio/ulaw") + (".avi" . "video/x-msvideo") + (".bcpio" . "application/x-bcpio") + (".bin" . "application/octet-stream") + (".cdf" . "application/x-netcdr") + (".cpio" . "application/x-cpio") + (".csh" . "application/x-csh") + (".dvi" . "application/x-dvi") + (".el" . "application/emacs-lisp") + (".eps" . "application/postscript") + (".etx" . "text/x-setext") + (".exe" . "application/octet-stream") + (".fax" . "image/x-fax") + (".gif" . "image/gif") + (".hdf" . "application/x-hdf") + (".hqx" . "application/mac-binhex40") + (".htm" . "text/html") + (".html" . "text/html") + (".icon" . "image/x-icon") + (".ief" . "image/ief") + (".jpg" . "image/jpeg") + (".macp" . "image/x-macpaint") + (".man" . "application/x-troff-man") + (".me" . "application/x-troff-me") + (".mif" . "application/mif") + (".mov" . "video/quicktime") + (".movie" . "video/x-sgi-movie") + (".mp2" . "audio/x-mpeg") + (".mp2a" . "audio/x-mpeg2") + (".mpa" . "audio/x-mpeg") + (".mpa2" . "audio/x-mpeg2") + (".mpe" . "video/mpeg") + (".mpeg" . "video/mpeg") + (".mpega" . "audio/x-mpeg") + (".mpegv" . "video/mpeg") + (".mpg" . "video/mpeg") + (".mpv" . "video/mpeg") + (".ms" . "application/x-troff-ms") + (".nc" . "application/x-netcdf") + (".nc" . "application/x-netcdf") + (".oda" . "application/oda") + (".pbm" . "image/x-portable-bitmap") + (".pdf" . "application/pdf") + (".pgm" . "image/portable-graymap") + (".pict" . "image/pict") + (".png" . "image/png") + (".pnm" . "image/x-portable-anymap") + (".ppm" . "image/portable-pixmap") + (".ps" . "application/postscript") + (".qt" . "video/quicktime") + (".ras" . "image/x-raster") + (".rgb" . "image/x-rgb") + (".rtf" . "application/rtf") + (".rtx" . "text/richtext") + (".sh" . "application/x-sh") + (".sit" . "application/x-stuffit") + (".snd" . "audio/basic") + (".src" . "application/x-wais-source") + (".tar" . "archive/tar") + (".tcl" . "application/x-tcl") + (".tcl" . "application/x-tcl") + (".tex" . "application/x-tex") + (".texi" . "application/texinfo") + (".tga" . "image/x-targa") + (".tif" . "image/tiff") + (".tiff" . "image/tiff") + (".tr" . "application/x-troff") + (".troff" . "application/x-troff") + (".tsv" . "text/tab-separated-values") + (".txt" . "text/plain") + (".vbs" . "video/mpeg") + (".vox" . "audio/basic") + (".vrml" . "x-world/x-vrml") + (".wav" . "audio/x-wav") + (".wrl" . "x-world/x-vrml") + (".xbm" . "image/xbm") + (".xpm" . "image/x-pixmap") + (".xwd" . "image/windowdump") + (".zip" . "application/zip") + (".ai" . "application/postscript") + (".jpe" . "image/jpeg") + (".jpeg" . "image/jpeg") + ) + "*An assoc list of file extensions and the MIME content-types they +correspond to.") + +(defun mm-parse-mimetypes (&optional path) + ;; Parse out all the mimetypes specified in a unix-style path string PATH + (cond + (path nil) + ((getenv "MIMETYPES") (setq path (getenv "MIMETYPES"))) + ((memq system-type '(ms-dos ms-windows windows-nt)) + (setq path (mapconcat 'expand-file-name + '("~/mime.typ" "~/etc/mime.typ") ";"))) + (t (setq path (mapconcat 'expand-file-name + '("~/.mime-types" + "/etc/mime-types:/usr/etc/mime-types" + "/usr/local/etc/mime-types" + "/usr/local/www/conf/mime-types") ":")))) + (let ((fnames (reverse + (mm-string-to-tokens path + (if (memq system-type + '(ms-dos ms-windows windows-nt)) + ?; + ?:)))) + fname) + (while fnames + (setq fname (car fnames)) + (if (and (file-exists-p fname) (file-readable-p fname)) + (mm-parse-mimetype-file (car fnames))) + (setq fnames (cdr fnames))))) + +(defun mm-parse-mimetype-file (fname) + ;; Parse out a mime-types file + (let (type ; The MIME type for this line + extns ; The extensions for this line + save-pos ; Misc. saved buffer positions + ) + (save-excursion + (set-buffer (get-buffer-create " *mime-types*")) + (erase-buffer) + (insert-file-contents fname) + (mm-replace-regexp "#.*" "") + (mm-replace-regexp "\n+" "\n") + (mm-replace-regexp "[ \t]+$" "") + (goto-char (point-max)) + (skip-chars-backward " \t\n") + (delete-region (point) (point-max)) + (goto-char (point-min)) + (while (not (eobp)) + (skip-chars-forward " \t\n") + (setq save-pos (point)) + (skip-chars-forward "^ \t") + (downcase-region save-pos (point)) + (setq type (buffer-substring save-pos (point))) + (while (not (eolp)) + (skip-chars-forward " \t") + (setq save-pos (point)) + (skip-chars-forward "^ \t\n") + (setq extns (cons (buffer-substring save-pos (point)) extns))) + (while extns + (setq mm-mime-extensions + (cons + (cons (if (= (string-to-char (car extns)) ?.) + (car extns) + (concat "." (car extns))) type) mm-mime-extensions) + extns (cdr extns))))))) + +(defun mm-extension-to-mime (extn) + "Return the MIME content type of the file extensions EXTN" + (if (and (stringp extn) + (not (eq (string-to-char extn) ?.))) + (setq extn (concat "." extn))) + (cdr (assoc (downcase extn) mm-mime-extensions))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Editing/Composition of body parts +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-compose-type (type) + ;; Compose a body section of MIME-type TYPE. + (let* ((info (mm-mime-info type nil 5)) + (fnam (mm-generate-unique-filename)) + (comp (or (cdr (assoc "compose" info)))) + (ctyp (cdr (assoc "composetyped" info))) + (buff (get-buffer-create " *mimecompose*")) + (typeit (not ctyp)) + (retval "") + (usef nil)) + (setq comp (mm-unescape-mime-test (or comp ctyp) info)) + (while (string-match "\\([^\\\\]\\)%s" comp) + (setq comp (concat (substring comp 0 (match-end 1)) fnam + (substring comp (match-end 0) nil)) + usef t)) + (call-process shell-file-name nil + (if usef nil buff) + nil shell-command-switch comp) + (setq retval + (concat + (if typeit (concat "Content-type: " type "\r\n\r\n") "") + (if usef + (save-excursion + (set-buffer buff) + (erase-buffer) + (insert-file-contents fnam) + (buffer-string)) + (save-excursion + (set-buffer buff) + (buffer-string))) + "\r\n")) + retval)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Misc. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-type-to-file (type) + "Return the file extension for content-type TYPE" + (rassoc type mm-mime-extensions)) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Miscellaneous MIME viewers written in elisp +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-play-sound-file (&optional buff) + "Play a sound file in buffer BUFF (defaults to current buffer)" + (setq buff (or buff (current-buffer))) + (let ((fname (mm-generate-unique-filename "%s.au")) + (synchronous-sounds t)) ; Play synchronously + (mule-write-region-no-coding-system (point-min) (point-max) fname) + (kill-buffer (current-buffer)) + (play-sound-file fname) + (condition-case () + (delete-file fname) + (error nil)))) + +(defun mm-parse-mime-headers (&optional no-delete) + "Return a list of the MIME headers at the top of this buffer. If +optional argument NO-DELETE is non-nil, don't delete the headers." + (let* ((st (point-min)) + (nd (progn + (goto-char (point-min)) + (skip-chars-forward " \t\n") + (if (re-search-forward "^\r*$" nil t) + (1+ (point)) + (point-max)))) + save-pos + status + hname + hvalu + result + search + ) + (narrow-to-region st (min nd (point-max))) + (goto-char (point-min)) + (while (not (eobp)) + (skip-chars-forward " \t\n\r") + (setq save-pos (point)) + (skip-chars-forward "^:\n\r") + (downcase-region save-pos (point)) + (setq hname (buffer-substring save-pos (point))) + (skip-chars-forward ": \t ") + (setq save-pos (point)) + (skip-chars-forward "^\n\r") + (setq search t) + (while search + (skip-chars-forward "^\n\r") + (save-excursion + (skip-chars-forward "\n\r") + + (setq search + (string-match "[ \t]" + (char-to-string + (or (char-after (point)) ?a))))) + (if search + (skip-chars-forward "\n\r"))) + (setq hvalu (buffer-substring save-pos (point)) + result (cons (cons hname hvalu) result))) + (or no-delete (delete-region st nd)) + result)) + +(defun mm-find-available-multiparts (separator &optional buf) + "Return a list of mime-headers for the various body parts of a +multipart message in buffer BUF with separator SEPARATOR. +The different multipart specs are put in `mm-temporary-directory'." + (let ((sep (concat "^--" separator "\r*$")) + headers + fname + results) + (save-excursion + (and buf (set-buffer buf)) + (goto-char (point-min)) + (while (re-search-forward sep nil t) + (let ((st (set-marker (make-marker) + (progn + (forward-line 1) + (beginning-of-line) + (point)))) + (nd (set-marker (make-marker) + (if (re-search-forward sep nil t) + (1- (match-beginning 0)) + (point-max))))) + (narrow-to-region st nd) + (goto-char st) + (if (looking-at "^\r*$") + (insert "Content-type: text/plain\n" + "Content-length: " (int-to-string (- nd st)) "\n")) + (setq headers (mm-parse-mime-headers) + fname (mm-generate-unique-filename)) + (let ((x (or (cdr (assoc "content-type" headers)) "text/plain"))) + (if (string-match "name=\"*\\([^ \"]+\\)\"*" x) + (setq fname (expand-file-name + (substring x (match-beginning 1) + (match-end 1)) + mm-temporary-directory)))) + (widen) + (if (assoc "content-transfer-encoding" headers) + (let ((coding (cdr + (assoc "content-transfer-encoding" headers))) + (cmd nil)) + (setq coding (and coding (downcase coding)) + cmd (or (cdr (assoc coding + mm-content-transfer-encodings)) + (read-string + (concat "How shall I decode " coding "? ") + "cat"))) + (if (string= cmd "") (setq cmd "cat")) + (if (stringp cmd) + (shell-command-on-region st nd cmd t) + (funcall cmd st nd)) + (or (eq cmd 'ignore) (set-marker nd (point))))) + (write-region st nd fname nil 5) + (delete-region st nd) + (setq results (cons + (cons + (cons "mm-filename" fname) headers) results))))) + results)) + +(defun mm-format-multipart-as-html (&optional buf type) + (if buf (set-buffer buf)) + (let* ((boundary (if (string-match + "boundary[ \t]*=[ \t\"]*\\([^ \"\t\n]+\\)" + type) + (regexp-quote + (substring type (match-beginning 1) (match-end 1))))) + (parts (mm-find-available-multiparts boundary))) + (erase-buffer) + (insert "\n" + " \n" + " Multipart Message\n" + " \n" + " \n" + "

Multipart message encountered

\n" + "

I have encountered a multipart MIME message.\n" + " The following parts have been detected. Please\n" + " select which one you want to view.\n" + "

\n" + " \n" + " \n" + "\n" + "\n"))) + +(defun mm-multipart-viewer () + (mm-format-multipart-as-html + (current-buffer) + (cdr (assoc "content-type" url-current-mime-headers))) + (let ((w3-working-buffer (current-buffer))) + (w3-prepare-buffer))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Transfer encodings we can decrypt automatically +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun mm-decode-quoted-printable (&optional st nd) + (interactive) + (setq st (or st (point-min)) + nd (or nd (point-max))) + (save-restriction + (narrow-to-region st nd) + (save-excursion + (let ((buffer-read-only nil)) + (goto-char (point-min)) + (while (re-search-forward "=[0-9A-F][0-9A-F]" nil t) + (replace-match + (char-to-string + (+ + (* 16 (mm-hex-char-to-integer + (char-after (1+ (match-beginning 0))))) + (mm-hex-char-to-integer + (char-after (1- (match-end 0)))))))))) + (goto-char (point-max)))) + +;; Taken from hexl.el. +(defun mm-hex-char-to-integer (character) + "Take a char and return its value as if it was a hex digit." + (if (and (>= character ?0) (<= character ?9)) + (- character ?0) + (let ((ch (logior character 32))) + (if (and (>= ch ?a) (<= ch ?f)) + (- ch (- ?a 10)) + (error (format "Invalid hex digit `%c'." ch)))))) + + + +(require 'base64) +(provide 'mm) diff --git a/lisp/nndraft.el b/lisp/nndraft.el index f7182a5..39c6e28 100644 --- a/lisp/nndraft.el +++ b/lisp/nndraft.el @@ -156,7 +156,7 @@ (let ((gnus-verbose-backends nil) (buf (current-buffer)) article file) - (nnheader-temp-write nil + (with-temp-buffer (insert-buffer buf) (setq article (nndraft-request-accept-article group (nnoo-current-server 'nndraft) t 'noinsert)) diff --git a/lisp/nneething.el b/lisp/nneething.el index 7da5466..6aaa529 100644 --- a/lisp/nneething.el +++ b/lisp/nneething.el @@ -68,8 +68,6 @@ If this variable is nil, no files will be excluded.") -(autoload 'gnus-encode-coding-string "gnus-ems") - ;;; Interface functions. (nnoo-define-basics nneething) @@ -243,7 +241,7 @@ If this variable is nil, no files will be excluded.") (setq files (cdr files))) (when (and touched (not nneething-read-only)) - (nnheader-temp-write map-file + (with-temp-file map-file (insert "(setq nneething-map '") (gnus-prin1 nneething-map) (insert ")\n(setq nneething-active '") diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index db9666b..5efb0db 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -797,7 +797,8 @@ deleted. Point is left where the deleted region was." (defun nnfolder-group-pathname (group) "Make pathname for GROUP." - (setq group (gnus-encode-coding-string group nnmail-pathname-coding-system)) + (setq group + (nnheader-encode-coding-string group nnmail-pathname-coding-system)) (let ((dir (file-name-as-directory (expand-file-name nnfolder-directory)))) ;; If this file exists, we use it directly. (if (or nnmail-use-long-file-names diff --git a/lisp/nngateway.el b/lisp/nngateway.el index 2139885..41dc00a 100644 --- a/lisp/nngateway.el +++ b/lisp/nngateway.el @@ -54,7 +54,7 @@ parameter -- the gateway address.") (nngateway-open-server server)) ;; Rewrite the header. (let ((buf (current-buffer))) - (nnheader-temp-write nil + (with-temp-buffer (insert-buffer-substring buf) (message-narrow-to-head) (funcall nngateway-header-transformation nngateway-address) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index e0de0a4..bbeba0f 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -61,8 +61,7 @@ on your system, you could say something like: (autoload 'cancel-function-timers "timers") (autoload 'gnus-point-at-eol "gnus-util") (autoload 'gnus-delete-line "gnus-util") - (autoload 'gnus-buffer-live-p "gnus-util") - (autoload 'gnus-encode-coding-string "gnus-ems")) + (autoload 'gnus-buffer-live-p "gnus-util")) ;;; Header access macros. @@ -499,52 +498,6 @@ the line could be found." (erase-buffer)) (current-buffer)) -(defmacro nnheader-temp-write (file &rest forms) - "Create a new buffer, evaluate FORMS there, and write the buffer to FILE. -Return the value of FORMS. -If FILE is nil, just evaluate FORMS and don't save anything. -If FILE is t, return the buffer contents as a string." - (let ((temp-file (make-symbol "temp-file")) - (temp-buffer (make-symbol "temp-buffer")) - (temp-results (make-symbol "temp-results"))) - `(save-excursion - (let* ((,temp-file ,file) - (default-major-mode 'fundamental-mode) - (,temp-buffer - (set-buffer - (get-buffer-create - (generate-new-buffer-name " *nnheader temp*")))) - ,temp-results) - (unwind-protect - (progn - (setq ,temp-results (progn ,@forms)) - (cond - ;; Don't save anything. - ((null ,temp-file) - ,temp-results) - ;; Return the buffer contents. - ((eq ,temp-file t) - (set-buffer ,temp-buffer) - (buffer-string)) - ;; Save a file. - (t - (set-buffer ,temp-buffer) - ;; Make sure the directory where this file is - ;; to be saved exists. - (when (not (file-directory-p - (file-name-directory ,temp-file))) - (make-directory (file-name-directory ,temp-file) t)) - ;; Save the file. - (write-region (point-min) (point-max) - ,temp-file nil 'nomesg) - ,temp-results))) - ;; Kill the buffer. - (when (buffer-name ,temp-buffer) - (kill-buffer ,temp-buffer))))))) - -(put 'nnheader-temp-write 'lisp-indent-function 1) -(put 'nnheader-temp-write 'edebug-form-spec '(form body)) - (defvar jka-compr-compression-info-list) (defvar nnheader-numerical-files (if (boundp 'jka-compr-compression-info-list) @@ -701,7 +654,7 @@ without formatting." (concat dir group "/") ;; If not, we translate dots into slashes. (concat dir - (gnus-encode-coding-string + (nnheader-encode-coding-string (nnheader-replace-chars-in-string group ?. ?/) nnheader-pathname-coding-system) "/"))) @@ -857,6 +810,14 @@ find-file-hooks, etc. (fset 'nnheader-cancel-timer 'cancel-timer) (fset 'nnheader-cancel-function-timers 'cancel-function-timers) +(if (fboundp 'encode-coding-string) + (fset 'nnheader-encode-coding-string 'encode-coding-string) + (fset 'nnheader-encode-coding-string (lambda (s a) s))) + +(if (fboundp 'decode-coding-string) + (fset 'nnheader-decode-coding-string 'decode-coding-string) + (fset 'nnheader-decode-coding-string (lambda (s a) s))) + (when (string-match "XEmacs\\|Lucid" emacs-version) (require 'nnheaderxm)) diff --git a/lisp/nnkiboze.el b/lisp/nnkiboze.el index c47a10d..b3e8f7d 100644 --- a/lisp/nnkiboze.el +++ b/lisp/nnkiboze.el @@ -136,7 +136,7 @@ ;; Remove NOV lines of articles that are marked as read. (when (and (file-exists-p (nnkiboze-nov-file-name)) nnkiboze-remove-read-articles) - (nnheader-temp-write (nnkiboze-nov-file-name) + (with-temp-file (nnkiboze-nov-file-name) (let ((cur (current-buffer))) (nnheader-insert-file-contents (nnkiboze-nov-file-name)) (goto-char (point-min)) @@ -230,7 +230,7 @@ Finds out what articles are to be part of the nnkiboze groups." ;; Load the kiboze newsrc file for this group. (when (file-exists-p newsrc-file) (load newsrc-file)) - (nnheader-temp-write nov-file + (with-temp-file nov-file (when (file-exists-p nov-file) (insert-file-contents nov-file)) (setq nov-buffer (current-buffer)) @@ -318,7 +318,7 @@ Finds out what articles are to be part of the nnkiboze groups." (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc)) (setq newsrc (cdr newsrc)))) ;; We save the kiboze newsrc for this group. - (nnheader-temp-write newsrc-file + (with-temp-file newsrc-file (insert "(setq nnkiboze-newsrc '") (gnus-prin1 nnkiboze-newsrc) (insert ")\n"))) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index bc8d1f5..3124586 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -35,8 +35,7 @@ (eval-and-compile (autoload 'gnus-error "gnus-util") - (autoload 'gnus-buffer-live-p "gnus-util") - (autoload 'gnus-encode-coding-string "gnus-ems")) + (autoload 'gnus-buffer-live-p "gnus-util")) (defgroup nnmail nil "Reading mail with Gnus." @@ -514,7 +513,7 @@ parameter. It should return nil, `warn' or `delete'." (concat dir group "/") ;; If not, we translate dots into slashes. (concat dir - (gnus-encode-coding-string + (nnheader-encode-coding-string (nnheader-replace-chars-in-string group ?. ?/) nnmail-pathname-coding-system) "/"))) @@ -705,7 +704,7 @@ nn*-request-list should have been called before calling this function." "Save GROUP-ASSOC in ACTIVE-FILE." (let ((coding-system-for-write nnmail-active-file-coding-system)) (when file-name - (nnheader-temp-write file-name + (with-temp-file file-name (nnmail-generate-active group-assoc))))) (defun nnmail-generate-active (alist) @@ -1202,8 +1201,9 @@ Return the number of characters in the body." (insert (format "Xref: %s" (system-name))) (while group-alist (insert (format " %s:%d" - (gnus-encode-coding-string (caar group-alist) - nnmail-pathname-coding-system) + (nnheader-encode-coding-string + (caar group-alist) + nnmail-pathname-coding-system) (cdar group-alist))) (setq group-alist (cdr group-alist))) (insert "\n")))) diff --git a/lisp/nnmh.el b/lisp/nnmh.el index 8aafd7d..a393ebb 100644 --- a/lisp/nnmh.el +++ b/lisp/nnmh.el @@ -229,8 +229,8 @@ (expand-file-name nnmh-toplev)))) dir) (nnheader-replace-chars-in-string - (gnus-decode-coding-string (substring dir (match-end 0)) - nnmail-pathname-coding-system) + (nnheader-decode-coding-string (substring dir (match-end 0)) + nnmail-pathname-coding-system) ?/ ?.)) (apply 'max files) (apply 'min files))))))) @@ -533,7 +533,7 @@ (setq articles (sort articles (lambda (art1 art2) (> (car art1) (car art2))))) ;; Finally write this list back to the .nnmh-articles file. - (nnheader-temp-write nnmh-file + (with-temp-file nnmh-file (insert ";; Gnus article active file for " group "\n\n") (insert "(setq nnmh-newsgroup-articles '") (gnus-prin1 articles) diff --git a/lisp/nnml.el b/lisp/nnml.el index e7a1df9..f4da479 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -469,7 +469,7 @@ all. This may very well take some time.") ((not (file-exists-p file)) (nnheader-report 'nnml "File %s does not exist" file)) (t - (nnheader-temp-write file + (with-temp-file file (nnheader-insert-file-contents file) (nnmail-replace-status name value)) t)))) diff --git a/lisp/nnsoup.el b/lisp/nnsoup.el index e764150..4ccb28c 100644 --- a/lisp/nnsoup.el +++ b/lisp/nnsoup.el @@ -376,7 +376,7 @@ backend for the messages.") (or force nnsoup-group-alist-touched)) (setq nnsoup-group-alist-touched nil) - (nnheader-temp-write nnsoup-active-file + (with-temp-file nnsoup-active-file (gnus-prin1 `(setq nnsoup-group-alist ',nnsoup-group-alist)) (insert "\n") (gnus-prin1 `(setq nnsoup-current-prefix ,nnsoup-current-prefix)) diff --git a/lisp/nntp.el b/lisp/nntp.el index 487c72d..863b655 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -796,7 +796,7 @@ If SEND-IF-FORCE, only send authinfo to the server if the The authinfo login name is taken from the user's login name and the password contained in '~/.nntp-authinfo'." (when (file-exists-p "~/.nntp-authinfo") - (nnheader-temp-write nil + (with-temp-buffer (insert-file-contents "~/.nntp-authinfo") (goto-char (point-min)) (nntp-send-command "^3.*\r?\n" "AUTHINFO USER" (user-login-name)) diff --git a/lisp/nnweb.el b/lisp/nnweb.el index 5a673cd..96784c2 100644 --- a/lisp/nnweb.el +++ b/lisp/nnweb.el @@ -219,7 +219,7 @@ and `altavista'.") (defun nnweb-read-overview (group) "Read the overview of GROUP and build the map." (when (file-exists-p (nnweb-overview-file group)) - (nnheader-temp-write nil + (with-temp-buffer (nnheader-insert-file-contents (nnweb-overview-file group)) (goto-char (point-min)) (let (header) @@ -233,7 +233,7 @@ and `altavista'.") (defun nnweb-write-overview (group) "Write the overview file for GROUP." - (nnheader-temp-write (nnweb-overview-file group) + (with-temp-file (nnweb-overview-file group) (let ((articles nnweb-articles)) (while articles (nnheader-insert-nov (cadr (pop articles))))))) @@ -254,7 +254,7 @@ and `altavista'.") (defun nnweb-write-active () "Save the active file." - (nnheader-temp-write (nnheader-concat nnweb-directory "active") + (with-temp-file (nnheader-concat nnweb-directory "active") (prin1 `(setq nnweb-group-alist ',nnweb-group-alist) (current-buffer)))) (defun nnweb-read-active () diff --git a/lisp/qp.el b/lisp/qp.el new file mode 100644 index 0000000..1ef4a77 --- /dev/null +++ b/lisp/qp.el @@ -0,0 +1,90 @@ +;;; qp.el --- Quoted-printable functions +;; Copyright (C) 1998 Free Software Foundation, Inc. + +;; Author: Lars Magne Ingebrigtsen +;; 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 quoted-printable-encoding-characters + (mapcar 'identity "0123456789ABCDEF")) + +(defun quoted-printable-decode-region (from to) + "Decode quoted-printable in the region between FROM and TO." + (interactive "r") + (save-excursion + (goto-char from) + (while (search-forward "=" to t) + (cond ((eq (following-char) ?\n) + (delete-char -1) + (delete-char 1)) + ((and + (memq (following-char) quoted-printable-encoding-characters) + (memq (char-after (1+ (point))) + quoted-printable-encoding-characters)) + (subst-char-in-region + (1- (point)) (point) ?= + (string-to-number + (buffer-substring (point) (+ 2 (point))) + 16)) + (delete-char 2)) + ((looking-at "=") + (delete-char 1)) + ((message "Malformed MIME quoted-printable message")))))) + +(defun quoted-printable-decode-string (string) + "Decode the quoted-printable-encoded STRING and return the results." + (with-temp-buffer + (insert string) + (quoted-printable-decode-region (point-min) (point-max)) + (buffer-string))) + +(defun quoted-printable-encode-region (from to) + "QP-encode the region between FROM and TO." + (interactive "r") + (save-excursion + (save-restriction + (narrow-to-region from to) + (goto-char (point-min)) + (while (re-search-forward "[\000-\007\013\015-\037\200-\237=]" nil t) + (insert + (prog1 + (format "=%x" (char-after (1- (point)))) + (delete-char -1)))) + ;; Fold long lines. + (goto-char (point-min)) + (end-of-line) + (while (> (current-column) 72) + (beginning-of-line) + (forward-char 72) + (search-backward "=" (- (point) 2) t) + (insert "=\n") + (end-of-line))))) + +(defun quoted-printable-encode-string (string) + "QP-encode STRING and return the results." + (with-temp-buffer + (insert string) + (quoted-printable-encode-region (point-min) (point-max)) + (buffer-string))) + +(provide 'qp) + +;; qp.el ends here diff --git a/texi/ChangeLog b/texi/ChangeLog index fd2879c..b76c05d 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -2,1003 +2,3 @@ * gnus.texi (Mail Folders): Addition. -1998-08-25 08:06:28 Lars Magne Ingebrigtsen - - * gnus.texi (Posting Styles): Document this-is. - (Virtual Groups): Addition. - -1998-08-18 00:30:05 Lars Magne Ingebrigtsen - - * gnus.texi (Article Hiding): Addition. - -1998-08-16 14:53:45 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Reinstated. - (Asynchronous Fetching): No header prefetch. - -1998-08-15 13:01:41 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Score Commands): Change. - -1998-08-14 01:31:36 Simon Josefsson - - * gnus.texi (Posting Styles): New 'body style. - -1998-08-13 21:17:00 Lars Magne Ingebrigtsen - - * gnus.texi (Paging the Article): Addition. - -1998-08-13 00:13:47 Simon Josefsson - - * gnus.texi (Mail Group Commands): Typo. - -1998-08-12 21:28:09 Simon Josefsson - - * gnus.texi (Article Caching): gnus-cacheable-groups. - (Newest Features): remove gnus-cacheable-groups. - -1998-08-12 22:01:12 Lars Magne Ingebrigtsen - - * message.texi (Forwarding): Addition. - -1998-08-11 20:33:53 Justin Zaglio - - * gnus.texi (Group Maintenance): Fix. - -1998-08-11 11:44:20 Lars Magne Ingebrigtsen - - * gnus.texi (Group Maintenance): Fix. - -1998-08-10 08:59:25 Lars Magne Ingebrigtsen - - * gnus.texi (Article Highlighting): Addition. - (Article Fontisizing): Fix. - (Article Hiding): Change. - (Article Hiding): Fix. - -1998-08-09 15:32:24 Lars Magne Ingebrigtsen - - * gnus.texi (Hiding Headers): Fix. - (Article Hiding): Addition. - (Document Groups): Addition. - -1998-08-08 06:06:37 Lars Magne Ingebrigtsen - - * gnus.texi (Fancy Mail Splitting): Change. - -1998-08-06 02:12:04 Lars Magne Ingebrigtsen - - * gnus.texi: De-legalize. - - * message.texi: De-legalize. - - * gnus.texi (Summary Maneuvering): Fix. - -1998-07-21 17:51 Simon Josefsson - - * gnus.texi (Splitting Mail): junk is fancy splitting only - - * gnus.texi (Fancy Mail Splitting): warn about junk - -1998-07-27 02:28:33 Lars Magne Ingebrigtsen - - * gnus.texi (Topic Commands): Fix. - -1998-07-27 02:23:17 Robert Bihlmeyer - - * gnus.texi (Score Decays): Fix. - -Sun Jul 12 04:03:27 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Home Score File): Addition. - -Fri Jul 10 04:26:23 1998 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Addition. - -Sat Jul 4 14:24:29 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Gnus Utility Functions): Addition. - -Thu Jul 2 11:37:51 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Posting Styles): Ununcommented. - -Wed Jul 1 17:57:54 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Topic Commands): Addition. - -Tue Jun 30 16:11:27 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Topic Commands): Addition. - -Mon Jun 29 21:46:13 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Article Keymap): Typo. - -Sun Jun 28 17:41:10 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Formatting Fonts): Typo fix. - -Sat Jun 27 04:37:14 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Mail-To-News Gateways): Addition. - (Mail-To-News Gateways): Typo. - -Fri Jun 26 13:33:00 1998 Yoshiki Hayashi - - * gnus.texi (Summary Buffer Lines): Typo fix. - -Fri Jun 26 05:53:22 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Score File Format): Addition. - (Mode Line Formatting): New. - (Summary Buffer Mode Line): Addition. - -Thu Jun 25 11:24:14 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Score Commands): Deletia. - -Wed Jun 24 00:37:32 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Auto Save): Addition. - (Mail-To-News Gateways): Addition. - (NNTP): Addition. - -Wed Jun 3 03:30:47 1998 Lars Magne Ingebrigtsen - - * message.texi (Message Headers): Addition. - - * gnus.texi (Compatibility): Addition. - -Tue May 19 02:44:31 1998 Mike Pullen - - * gnus.texi.orig: Typo fixes. - -Wed Apr 29 21:52:28 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Key Index): Untabified. - (Group Parameters): Fix. - -Sun Apr 26 15:32:45 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Post Commands): Ref to Message. - - * message.texi (Various Message Variables): Deletia. - -Fri Apr 24 16:00:40 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Unread Articles): Typo. - (Summary Buffer Lines): Fix. - (Foreign Groups): Addition. - (Posting Server): Addition. - -Sat Mar 28 08:57:46 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Example Methods): Addition. - -Thu Mar 26 15:47:54 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Limiting): Mention `/ *'. - -Thu Mar 19 13:02:20 1998 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Addition. - Removed spurious white space. - -Fri Mar 13 21:05:47 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Quassia Gnus): Fix. - (Agent Expiry): Addition. - -Sun Mar 8 13:56:37 1998 James Troup - - * gnus.texi (Group Highlighting): Removed old example. - -Sun Mar 8 00:19:24 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Group Info): Fix ".". - -Sat Mar 7 17:09:49 1998 Lars Magne Ingebrigtsen - - * gnus.texi: Took direntries out again, since makeinfo doesn't - understand them. - (Agent Expiry): New. - (Quassia Gnus): New. - -Sat Mar 7 16:14:10 1998 Dan Christensen - - * gnus.texi (Group Parameters): Mention add-to-list. - -Sat Feb 28 14:21:12 1998 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Addition. - -1998-03-01 Kim-Minh Kaplan - - * gnus.texi (Easy Picons): Removed references to - `gnus-group-display-picons'. - (Hard Picons): Ditto. - -1998-03-01 Kim-Minh Kaplan - - * gnus.texi (Easy Picons): Removed references to - `gnus-group-display-picons'. - (Hard Picons): Ditto. - -Mon Feb 23 18:05:09 1998 Lars Magne Ingebrigtsen - - * gnus.texi: Direntry not handled by Emacs 19.34. - -1998-02-21 SL Baur - - * gnus.texi: Add a direntry field. - * message.texi: Ditto. (Data taken from Emacs 20.2 info/dir). - -Sun Feb 22 03:24:43 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Score File Format): Addition. - -1998-02-18 Jason R Mastaler - - * gnus.texi: Corrected typo. - -Thu Feb 19 02:20:29 1998 Francois Felix Ingrand - - * gnus.texi (Sorting): Fix order of args. - -Sun Feb 15 23:04:02 1998 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Change. - -Sat Feb 14 17:46:33 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Virtual Groups): Fix. - (NNTP): Addition. - (Really Various Summary Commands): Addition. - -Fri Feb 13 18:23:19 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Mail Group Commands): Typo. - (NNTP): Addition. - (Mail and Procmail): Addition. - -Mon Feb 9 16:30:30 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Article Date): Addition. - -Sun Feb 8 16:28:35 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Newest Features): Addition. - -Mon Feb 2 19:21:43 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Agent Variables): Addition. - -Sun Feb 1 18:08:45 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Using MIME): Addition. - -Tue Jan 6 07:22:41 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Batching Agents): New. - -1998-01-04 Christoph Wedler - - * gnus.texi (Newest Features): Delete spaces after @end example. - In XEmacs, `texinfo-format-buffer' would bug out. - -Sun Jan 4 12:04:45 1998 Lars Magne Ingebrigtsen - - * gnus.texi (Conformity): Removed GNKSA. - -Sun Dec 14 11:06:23 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Adaptive Scoring): Addition. - -1997-11-26 SL Baur - - * message.texi (Insertion): Fix typo. - (Responses): Ditto. - (Reply): Ditto. - -Wed Nov 26 12:57:00 1997 Lars Magne Ingebrigtsen - - * message.texi (Insertion): Addition. - -Wed Nov 26 12:55:15 1997 Hallvard B. Furuseth - - * message.texi (Insertion): Addition. - -Wed Nov 26 12:36:08 1997 Lars Magne Ingebrigtsen - - * message.texi (Responses): New. - (Appendices): New. - - * gnus.texi (Group Info): Fix. - -Tue Nov 25 17:53:55 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Article Date): Addition. - -Mon Nov 24 16:01:20 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Faces & Fonts): New. - -Mon Oct 13 00:08:06 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Agent Commands): Addition. - -Sun Oct 12 16:50:23 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Article Washing): Addition. - (Group Highlighting): New. - (Canceling and Superseding): Addition. - -Wed Oct 1 18:37:55 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Files): Addition. - -Sat Sep 27 09:37:17 1997 Lars Magne Ingebrigtsen - - * message.texi (Sending Variables): Fix. - - * gnus.texi (Choosing Commands): Addition. - -Sat Sep 27 05:56:44 1997 Hallvard B. Furuseth - - * gnus.texi: Various fixes. - -Sat Sep 27 04:24:41 1997 Lars Magne Ingebrigtsen - - * message.texi (Various Commands): Addition. - -Wed Sep 24 02:38:21 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Example Setup): Wrong info. - (SOUP Groups): Addition. - (Contributors): Addition. - -1997-09-22 SL Baur - - * gnus.texi (Finding the Parent): Fix typo. - (NoCeM): Fix typos. - -Tue Sep 23 07:05:48 1997 Lars Magne Ingebrigtsen - - * gnus.texi (NoCeM): Addition. - (Finding the Parent): Addition. - -Mon Sep 22 06:13:00 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Filling In Threads): Addition. - (Finding the Parent): Addition. - -Sun Sep 21 04:35:56 1997 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Addition. - (Hiding Headers): Addition. - (Symbolic Prefixes): New. - (Extended Interactive): New. - (Summary Score Commands): Addition. - -Sat Sep 20 20:53:43 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Variables): Addition. - -1997-09-16 SL Baur - - * gnus.texi: Correct typo. - -Wed Sep 17 02:32:56 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Customizing Threading): Broken up into five nodes. - (Article Washing): Addition. - - * message.texi (Various Commands): Add. - -Tue Sep 16 04:04:03 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Example Setup): New. - -Mon Sep 15 23:10:05 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Customizing Threading): Addition. - -Sun Sep 14 21:59:07 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Outgoing Messages): New. - (Score File Format): Note. - (Subscription Methods): Fix. - (Starting Up): Fix. - (Threading): Add. - -Sat Jul 19 23:02:03 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Followups To Yourself): \\(_-_\\)? - -Sat Jul 12 16:29:35 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Picon Configuration): Moved Picons to under XEmacs. - (Smileys): New section. - -Fri Jul 11 11:58:20 1997 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Addition. - -Tue Jun 17 23:52:17 1997 Justin Sheehy - - * gnus.texi (Group Parameters): Addition. - -Sun May 25 14:40:17 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Expiring Mail): Addition. - -Sat May 24 05:26:17 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Score File Format): Update. - -Tue May 20 21:56:03 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Document Server Internals): Typo. - -Sun May 18 05:59:24 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Topic Commands): Addition. - -Sun May 11 20:09:24 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Article Hiding): Change. - -Thu May 8 23:48:36 1997 James Troup - - * gnus.texi (Saving Articles): Typo. - -Wed May 7 19:00:48 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Saving Articles): Addition. - -Wed May 7 19:00:43 1997 Mark Boyns - - * gnus.texi (Saving Articles): Addition. - -Thu May 1 14:06:57 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Score File Format): Fix. - -Sun Apr 27 11:11:43 1997 Lars Magne Ingebrigtsen - - * gnus.texi (NNTP): Addition. - -Sat Apr 12 16:51:32 1997 Robert Bihlmeyer - - * gnus.texi (Thwarting Email Spam): Addition. - -Tue Apr 15 16:11:38 1997 Lars Magne Ingebrigtsen - - * message.texi (Various Message Variables): Addition. - - * gnus.texi (Thwarting Email Spam): Addition. - -Sat Apr 12 00:26:47 1997 Francois Felix Ingrand - - * gnus.texi (NoCeM): Addition. - -Thu Apr 10 21:25:14 1997 Hrvoje Niksic - - * gnus.texi (Emacs/XEmacs Code): Addition. - -Thu Apr 10 20:45:47 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Group Information): Fix. - -Wed Apr 2 11:48:44 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Sorting): Use total score. - -Tue Apr 1 11:44:57 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Subscription Methods): Addition. - (Group Info): Addition. - (Gnus Utility Functions): New. - (Thwarting Email Spam): Addition. - -Mon Mar 31 16:15:54 1997 Lars Magne Ingebrigtsen - - * message.texi (Various Message Variables): Addition. - -Sun Mar 23 02:16:19 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Thwarting Email Spam): New. - (Unavailable Servers): Fix. - -Wed Mar 19 15:45:17 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Various Summary Stuff): Addition. - (Mail Backend Variables): Addition. - -Tue Mar 18 14:43:32 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Article Washing): Not addition. - -Mon Mar 17 16:15:54 1997 Philippe Schnoebelen - - * Makefile (install): Install properly. - -Fri Mar 14 21:00:33 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Group Parameters): Addition. - (Expiring Mail): Addition. - -Wed Mar 12 06:57:14 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Various Various): Addition. - -Sat Mar 8 03:41:47 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Group Parameters): Added example. - (Duplicates): Fix. - -Fri Mar 7 10:49:43 1997 Lars Magne Ingebrigtsen - - * Makefile: New "install" target. - -Thu Mar 6 08:01:37 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Mail and Procmail): Fix. - -Sun Mar 2 02:08:40 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Files): Addition. - (Score File Format): Fix. - -Fri Feb 28 23:23:31 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Archived Messages): Clarify. - (Fuzzy Matching): New. - -Mon Feb 24 23:41:57 1997 Lars Magne Ingebrigtsen - - * message.texi (Compatibility): New. - -Thu Feb 20 03:29:17 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Foreign Groups): Addition. - -Wed Feb 19 02:57:51 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Server Variables): New. - -Sun Feb 16 15:43:34 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Mail Backend Variables): Fix. - - * message.texi (Various Message Variables): Addition. - -Mon Feb 10 07:18:16 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Article Commands): Addition. - -Mon Feb 3 19:59:10 1997 Paul Franklin - - * gnus-group.el (gnus-group-edit-group): Allow editing of bad - groups. - -Wed Feb 5 02:00:46 1997 Lars Magne Ingebrigtsen - - * message.texi (Mail Variables): Change. - -Tue Feb 4 02:33:31 1997 Lars Magne Ingebrigtsen - - * message.texi (Mail Aliases): New. - - * gnus.texi (Splitting Mail): Addition. - -Mon Feb 3 07:31:47 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Mode Lines): Addition. - -Mon Jan 27 17:51:29 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Highlighting and Menus): Removed - `gnus-display-type'. - -Sat Jan 25 08:09:30 1997 Lars Magne Ingebrigtsen - - * gnus.texi (The Active File): Addition. - -Fri Jan 24 05:07:28 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Mail Commands): Addition. - (Required Backend Functions): Deletia. - (Article Washing): Addition. - (Summary Mail Commands): Addition. - -Mon Jan 20 22:19:40 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Followups To Yourself): Fix. - -Fri Jan 17 00:55:51 1997 Lars Magne Ingebrigtsen - - * gnus.texi (NoCeM): Update. - -Wed Jan 15 02:23:03 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Mail Group Commands): Fix. - -Tue Jan 7 09:36:36 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Buffer Lines): Correction. - -Mon Jan 6 22:49:12 1997 Lars Magne Ingebrigtsen - - * gnus.texi (NoCeM): Addition. - -Fri Jan 3 18:13:02 1997 Lars Magne Ingebrigtsen - - * message.texi (Various Commands): Addition. - -Thu Jan 2 16:12:27 1997 Lars Magne Ingebrigtsen - - * gnus.texi (Optional Backend Functions): Fix. - -Mon Dec 16 13:53:28 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Exiting the Summary Buffer): Update. - -Fri Dec 13 01:04:41 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Limiting): Addition. - -Sat Dec 7 21:10:23 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Example Methods): Addition. - -Fri Dec 6 12:38:14 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Group Parameters): Update. - -1996-11-30 Lars Magne Ingebrigtsen - - * gnus.texi (Terminology): Addition. - -Wed Nov 27 03:13:05 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Selecting a Group): Addition. - -Tue Nov 26 12:42:47 1996 Martin Buchholz - - * message.texi: Typo fixes and stuff. - -Thu Nov 21 17:45:57 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Canceling and Superseding): Fix. - -Wed Nov 20 15:42:36 1996 Lars Magne Ingebrigtsen - - * gnus.texi (New Groups): Addition. - (Summary Sorting): Addition. - -Tue Nov 19 20:54:16 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Scanning New Messages): Addition. - -Sat Nov 9 06:04:22 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Group Parameters): Addition. - -Fri Nov 8 04:01:06 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Article Fontisizing): New. - (Fancy Mail Splitting): Addition. - (Summary Post Commands): Addition. - (Mail Spool): Addition. - (Server Commands): Addition. - (Fancy Mail Splitting): Addition. - -Wed Nov 6 06:39:44 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Misc Article): Addition. - (Emacsen): Updated. - -Wed Nov 6 03:52:05 1996 C. R. Oldham - - * Makefile (.texi.dvi): Fix rule. - -Tue Nov 5 10:45:39 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Other Decode Variables): Addition. - (Mail-like Backends): New. - -Tue Nov 5 06:41:46 1996 Hrvoje Niksic - - * gnus.texi (Score File Format): Added warning. - -Mon Oct 28 15:50:08 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Variables): Addition. - -Fri Oct 25 09:04:59 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Mail Commands): Addition. - -Wed Oct 23 08:28:29 1996 Hrvoje Niksic - - * gnus.texi (Fancy Mail Splitting): Removed trailing garbage. - -Tue Oct 22 07:36:02 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Converting Kill Files): New. - -Sat Oct 19 07:17:28 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Saving Articles): Addition. - - * message.texi (Various Message Variables): Addition. - -Thu Oct 17 06:53:04 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Contributors): Added names. - -Fri Oct 11 12:38:59 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Adaptive Scoring): Addition. - -Tue Oct 8 13:16:41 1996 Lars Magne Ingebrigtsen - - * Makefile (all): Make custom. - -Wed Oct 2 01:32:49 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Group Timestamps): New. - -Tue Oct 1 01:34:45 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Expiring Mail): Addition. - (Group Line Specification): Addition. - -Sat Sep 28 21:36:40 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Foreign Groups): Addition. - -Mon Sep 23 22:17:44 1996 Lars Magne Ingebrigtsen - - * gnus.texi (The Summary Buffer): Addition. - -Mon Sep 23 18:25:38 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Thread Commands): Correction. - (Group Information): Correction. - -Sat Sep 21 08:11:43 1996 Lars Magne Ingebrigtsen - - * gnus.texi (New Groups): Split into three nodes. - (Group Parameters): Shortened. - (Browse Foreign Server): Corrected. - -Thu Sep 19 18:45:15 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Mail and Procmail): Addition. - -Wed Sep 18 07:33:11 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Other Marks): Edited. - (The Manual): New. - (Contributors): Updated. - (Asynchronous Fetching): Addition. - (New Features): Split. - ((ding) Gnus): Renamed. - (September Gnus): New. - (Red Gnus): New, - (Undo): New. - -Thu Sep 12 23:55:53 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Archived Messages): Fix. - -Sat Sep 7 12:14:23 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Various Various): Addition. - -Fri Sep 6 07:57:26 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Files): Addition. - (Splitting Mail): Addition. - (Sorting Groups): Addition. - (Topic Sorting): New. - (Really Various Summary Commands): Deletia. - (Summary Generation Commands): New. - (Setting Process Marks): Addition. - -Thu Sep 5 07:34:27 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Terminology): Addition. - (Web Searches): Fix. - (Windows Configuration): Addition. - -Sun Sep 1 11:07:09 1996 Lars Magne Ingebrigtsen - - * gnus.texi (XEmacs Enhancements): New. - -Sat Aug 31 02:55:50 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Washing Mail): Addition. - -Fri Aug 30 09:10:17 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Washing Mail): New. - (Fancy Mail Splitting): Change. - -Fri Aug 30 00:21:59 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Foreign Groups): Change. - -Thu Aug 29 23:51:45 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Daemons): Addition. - -Thu Aug 29 02:09:24 1996 François Pinard - - * gnus.texi (Web Searches): Typo. - -Wed Aug 28 08:21:36 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Server Commands): Addition. - (Really Various Summary Commands): Addition. - -Mon Aug 26 18:29:23 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Optional Backend Functions): Deletia. - (Asynchronous Fetching): Deletia and addition. - -Sun Aug 25 23:39:03 1996 Lars Magne Ingebrigtsen - - * gnus.texi: Include the version number. - -Sun Aug 25 21:31:33 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Really Various Summary Commands): Addition. - -Sat Aug 17 22:24:34 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Files): Addition. - (Anything Groups): Addition. - -Thu Aug 22 17:27:31 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Adaptive Scoring): Addition. - (Adaptive Scoring): Addition. - -Mon Aug 19 00:30:07 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Fancy Mail Splitting): Addition. - (Splitting Mail): Addition. - (Group Parameters): Addition. - (Topic Variables): Addition. - (Mail Group Commands): Addition. - (Group Information): Addition. - (Article Washing): Addition. - -Sun Aug 18 18:06:49 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Web Searches): Change and addition. - -Sat Aug 17 22:24:34 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Startup Files): Addition. - (Anything Groups): Addition. - -Thu Aug 15 17:59:12 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Followups To Yourself): Addition. - (Setting Process Marks): Addition. - (Process/Prefix): Addition. - (Startup Files): Addition. - (Mail-To-News Gateways): New. - -Wed Aug 14 15:02:14 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Home Score File): Fix. - (Various Various): New. - -Tue Aug 13 10:38:47 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Error Messaging): New. - (Mail Backend Variables): Fix. - (Foreign Groups): Added references. - (Sorting Groups): Addition. - -Sun Aug 11 02:52:37 1996 Lars Magne Ingebrigtsen - - * gnus.texi (User-Defined Specs): Correction. - (Unavailable Servers): Addition. - (Moderation): New. - (Summary Mail Commands): Addition. - (Crosspost Handling): Addition. - -Sat Aug 10 00:13:39 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Summary Buffer Lines): Correction. - (Top): Name fix. - (Compilation ): Addition. - (Group Parameters): Addition. - (Troubleshooting): Addition. - -Fri Aug 9 07:17:59 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Selecting a Group): Addition. - (Score Decays): New. - (Score File Format): Addition. - (Changing Servers): Addition. - (Selecting a Group): Addition. - (Really Various Summary Commands): Addition. - -Thu Aug 8 05:39:31 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Read Articles): Addition. - (Foreign Groups): Addition. - (User-Defined Specs): Separated. - (Formatting Fonts): Ditto. - (Advanced Formatting): New. - (Formatting Basics): Addition. - (Formatting Variables): Split. - -Wed Aug 7 22:00:56 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Hooking New Backends Into Gnus): New node. - -Wed Aug 7 01:02:08 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Setting Marks): Addition. - (Formatting Variables): Addition. - -Mon Aug 5 20:20:42 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Formatting Variables): Addition. - -Sun Aug 4 07:15:28 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Score File Format): Addition. - (Adaptive Scoring): Addition. - -Sat Aug 3 17:35:36 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Group Parameters): Addition. - (Home Score File): New. - (Topic Parameters): New. - -Wed Jul 31 15:34:12 1996 Lars Magne Ingebrigtsen - - * gnus.texi (are): Fix. - -Wed Jul 31 15:32:57 1996 David S. Goldberg - - * gnus.texi (buffer-name): Addition. - -Fri Aug 2 00:32:39 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Pick and Read): Addition. - (Article Hiding): Addition. - (Article Signature): Made into own node. - -Thu Aug 1 00:25:41 1996 Lars Magne Ingebrigtsen - - * message.texi (Wide Reply): Addition. - (Bouncing): Addition. - - * gnus.texi (Crosspost Handling): Made into own node. - (Duplicate Suppression): New. - (Document Server Internals): New. - (Changing Servers): New. - -Wed Jul 31 15:37:44 1996 Lars Magne Ingebrigtsen - - * gnus.texi: Fix - -Mon Jul 29 10:12:24 1996 Lars Magne Ingebrigtsen - - * gnus.texi (Misc Article): Addition. - (Advanced Scoring Tips): New. - (Advanced Scoring Example): New. - (Advanced Scoring Syntax): New. - (Advanced Scoring): New. diff --git a/texi/gnus.texi b/texi/gnus.texi index 329119b..20da8ca 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Gnus 5.6.42 Manual +@settitle Pterodactyl Gnus 0.6 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Gnus 5.6.42 Manual +@title Pterodactyl Gnus 0.6 Manual @author by Lars Magne Ingebrigtsen @page @@ -354,7 +354,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local spool or your mbox file. All at the same time, if you want to push your luck. -This manual corresponds to Gnus 5.6.42. +This manual corresponds to Pterodactyl Gnus 0.6. @end ifinfo diff --git a/texi/message.texi b/texi/message.texi index 33ce0c4..588ef1b 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.6.42 Manual +@settitle Pterodactyl Message 0.6 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 5.6.42 Manual +@title Pterodactyl Message 0.6 Manual @author by Lars Magne Ingebrigtsen @page @@ -83,9 +83,9 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 5.6.42. Message is distributed with -the Gnus distribution bearing the same version number as this manual -has. +This manual corresponds to Pterodactyl Message 0.6. Message is +distributed with the Gnus distribution bearing the same version number +as this manual has. @node Interface -- 1.7.10.4