Commit c4d82de8 authored by Katsumi Yamaoka's avatar Katsumi Yamaoka

Remove nnultimate.el and related code; Remove nnsoup.el, gnus-soup.el and...

Remove nnultimate.el and related code; Remove nnsoup.el, gnus-soup.el and related code; by Lars Magne Ingebrigtsen <larsi@gnus.org>.
parent 51dee5ef
......@@ -632,7 +632,7 @@ Select Methods
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
* IMAP:: Using Gnus as a @acronym{IMAP} client.
* Other Sources:: Reading directories, files, SOUP packets.
* Other Sources:: Reading directories, files.
* Combined Groups:: Combining groups into one group.
* Email Based Diary:: Using mails to manage diary events in Gnus.
* Gnus Unplugged:: Reading news and mail offline.
......@@ -695,7 +695,6 @@ Browsing the Web
* Archiving Mail::
* Web Searches:: Creating groups from articles that match a string.
* Ultimate:: The Ultimate Bulletin Board systems.
* Web Archive:: Reading mailing list archived on web.
* RSS:: Reading RDF site summary.
* Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
......@@ -714,19 +713,12 @@ Other Sources
* Directory Groups:: You can read a directory as if it was a newsgroup.
* Anything Groups:: Dired? Who needs dired?
* Document Groups:: Single files can be the basis of a group.
* SOUP:: Reading @sc{soup} packets ``offline''.
* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
Document Groups
* Document Server Internals:: How to add your own document types.
SOUP
* SOUP Commands:: Commands for creating and sending @sc{soup} packets
* SOUP Groups:: A back end for reading @sc{soup} packets.
* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
Combined Groups
* Virtual Groups:: Combining articles from many groups.
......@@ -6850,10 +6842,6 @@ Marked as read by a catchup (@code{gnus-catchup-mark}).
@vindex gnus-canceled-mark
Canceled article (@code{gnus-canceled-mark})
@item F
@vindex gnus-souped-mark
@sc{soup}ed article (@code{gnus-souped-mark}). @xref{SOUP}.
@item Q
@vindex gnus-sparse-mark
Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing
......@@ -7824,7 +7812,7 @@ This is a rather obscure variable that few will find useful. It's
intended for those non-news newsgroups where the back end has to fetch
quite a lot to present the summary buffer, and where it's impossible to
go back to parents of articles. This is mostly the case in the
web-based groups, like the @code{nnultimate} groups.
web-based groups.
If you don't use those, then it's safe to leave this as the default
@code{nil}. If you want to use this variable, it should be a regexp
......@@ -13746,7 +13734,7 @@ The different methods all have their peculiarities, of course.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
* IMAP:: Using Gnus as a @acronym{IMAP} client.
* Other Sources:: Reading directories, files, SOUP packets.
* Other Sources:: Reading directories, files.
* Combined Groups:: Combining groups into one group.
* Email Based Diary:: Using mails to manage diary events in Gnus.
* Gnus Unplugged:: Reading news and mail offline.
......@@ -17407,7 +17395,6 @@ interfaces to these sources.
@menu
* Archiving Mail::
* Web Searches:: Creating groups from articles that match a string.
* Ultimate:: The Ultimate Bulletin Board systems.
* Web Archive:: Reading mailing list archived on web.
* RSS:: Reading RDF site summary.
* Customizing W3:: Doing stuff to Emacs/W3 from Gnus.
......@@ -17551,34 +17538,6 @@ Format string URL to fetch an article by @code{Message-ID}.
@end table
@node Ultimate
@subsection Ultimate
@cindex nnultimate
@cindex Ultimate Bulletin Board
@uref{http://www.ultimatebb.com/, The Ultimate Bulletin Board} is
probably the most popular Web bulletin board system used. It has a
quite regular and nice interface, and it's possible to get the
information Gnus needs to keep groups updated.
The easiest way to get started with @code{nnultimate} is to say
something like the following in the group buffer: @kbd{B nnultimate RET
http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @acronym{URL}
(not including @samp{Ultimate.cgi} or the like at the end) for a forum
you're interested in; there's quite a list of them on the Ultimate web
site.) Then subscribe to the groups you're interested in from the
server buffer, and read them from the group buffer.
The following @code{nnultimate} variables can be altered:
@table @code
@item nnultimate-directory
@vindex nnultimate-directory
The directory where @code{nnultimate} stores its files. The default is@*
@file{~/News/ultimate/}.
@end table
@node Web Archive
@subsection Web Archive
@cindex nnwarchive
......@@ -18552,7 +18511,6 @@ newsgroups.
* Directory Groups:: You can read a directory as if it was a newsgroup.
* Anything Groups:: Dired? Who needs dired?
* Document Groups:: Single files can be the basis of a group.
* SOUP:: Reading @sc{soup} packets ``offline''.
* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
@end menu
......@@ -18920,289 +18878,6 @@ correct type. A high number means high probability; a low number
means low probability with @samp{0} being the lowest valid number.
@node SOUP
@subsection SOUP
@cindex SOUP
@cindex offline
In the PC world people often talk about ``offline'' newsreaders. These
are thingies that are combined reader/news transport monstrosities.
With built-in modem programs. Yecchh!
Of course, us Unix Weenie types of human beans use things like
@code{uucp} and, like, @code{nntpd} and set up proper news and mail
transport things like Ghod intended. And then we just use normal
newsreaders.
However, it can sometimes be convenient to do something that's a bit
easier on the brain if you have a very slow modem, and you're not really
that interested in doing things properly.
A file format called @sc{soup} has been developed for transporting news
and mail from servers to home machines and back again. It can be a bit
fiddly.
First some terminology:
@table @dfn
@item server
This is the machine that is connected to the outside world and where you
get news and/or mail from.
@item home machine
This is the machine that you want to do the actual reading and responding
on. It is typically not connected to the rest of the world in any way.
@item packet
Something that contains messages and/or commands. There are two kinds
of packets:
@table @dfn
@item message packets
These are packets made at the server, and typically contain lots of
messages for you to read. These are called @file{SoupoutX.tgz} by
default, where @var{x} is a number.
@item response packets
These are packets made at the home machine, and typically contains
replies that you've written. These are called @file{SoupinX.tgz} by
default, where @var{x} is a number.
@end table
@end table
@enumerate
@item
You log in on the server and create a @sc{soup} packet. You can either
use a dedicated @sc{soup} thingie (like the @code{awk} program), or you
can use Gnus to create the packet with its @sc{soup} commands (@kbd{O
s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}).
@item
You transfer the packet home. Rail, boat, car or modem will do fine.
@item
You put the packet in your home directory.
@item
You fire up Gnus on your home machine using the @code{nnsoup} back end as
the native or secondary server.
@item
You read articles and mail and answer and followup to the things you
want (@pxref{SOUP Replies}).
@item
You do the @kbd{G s r} command to pack these replies into a @sc{soup}
packet.
@item
You transfer this packet to the server.
@item
You use Gnus to mail this packet out with the @kbd{G s s} command.
@item
You then repeat until you die.
@end enumerate
So you basically have a bipartite system---you use @code{nnsoup} for
reading and Gnus for packing/sending these @sc{soup} packets.
@menu
* SOUP Commands:: Commands for creating and sending @sc{soup} packets
* SOUP Groups:: A back end for reading @sc{soup} packets.
* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news.
@end menu
@node SOUP Commands
@subsubsection SOUP Commands
These are commands for creating and manipulating @sc{soup} packets.
@table @kbd
@item G s b
@kindex G s b (Group)
@findex gnus-group-brew-soup
Pack all unread articles in the current group
(@code{gnus-group-brew-soup}). This command understands the
process/prefix convention.
@item G s w
@kindex G s w (Group)
@findex gnus-soup-save-areas
Save all @sc{soup} data files (@code{gnus-soup-save-areas}).
@item G s s
@kindex G s s (Group)
@findex gnus-soup-send-replies
Send all replies from the replies packet
(@code{gnus-soup-send-replies}).
@item G s p
@kindex G s p (Group)
@findex gnus-soup-pack-packet
Pack all files into a @sc{soup} packet (@code{gnus-soup-pack-packet}).
@item G s r
@kindex G s r (Group)
@findex nnsoup-pack-replies
Pack all replies into a replies packet (@code{nnsoup-pack-replies}).
@item O s
@kindex O s (Summary)
@findex gnus-soup-add-article
This summary-mode command adds the current article to a @sc{soup} packet
(@code{gnus-soup-add-article}). It understands the process/prefix
convention (@pxref{Process/Prefix}).
@end table
There are a few variables to customize where Gnus will put all these
thingies:
@table @code
@item gnus-soup-directory
@vindex gnus-soup-directory
Directory where Gnus will save intermediate files while composing
@sc{soup} packets. The default is @file{~/SoupBrew/}.
@item gnus-soup-replies-directory
@vindex gnus-soup-replies-directory
This is what Gnus will use as a temporary directory while sending our
reply packets. @file{~/SoupBrew/SoupReplies/} is the default.
@item gnus-soup-prefix-file
@vindex gnus-soup-prefix-file
Name of the file where Gnus stores the last used prefix. The default is
@samp{gnus-prefix}.
@item gnus-soup-packer
@vindex gnus-soup-packer
A format string command for packing a @sc{soup} packet. The default is
@samp{tar cf - %s | gzip > $HOME/Soupout%d.tgz}.
@item gnus-soup-unpacker
@vindex gnus-soup-unpacker
Format string command for unpacking a @sc{soup} packet. The default is
@samp{gunzip -c %s | tar xvf -}.
@item gnus-soup-packet-directory
@vindex gnus-soup-packet-directory
Where Gnus will look for reply packets. The default is @file{~/}.
@item gnus-soup-packet-regexp
@vindex gnus-soup-packet-regexp
Regular expression matching @sc{soup} reply packets in
@code{gnus-soup-packet-directory}.
@end table
@node SOUP Groups
@subsubsection SOUP Groups
@cindex nnsoup
@code{nnsoup} is the back end for reading @sc{soup} packets. It will
read incoming packets, unpack them, and put them in a directory where
you can read them at leisure.
These are the variables you can use to customize its behavior:
@table @code
@item nnsoup-tmp-directory
@vindex nnsoup-tmp-directory
When @code{nnsoup} unpacks a @sc{soup} packet, it does it in this
directory. (@file{/tmp/} by default.)
@item nnsoup-directory
@vindex nnsoup-directory
@code{nnsoup} then moves each message and index file to this directory.
The default is @file{~/SOUP/}.
@item nnsoup-replies-directory
@vindex nnsoup-replies-directory
All replies will be stored in this directory before being packed into a
reply packet. The default is @file{~/SOUP/replies/}.
@item nnsoup-replies-format-type
@vindex nnsoup-replies-format-type
The @sc{soup} format of the replies packets. The default is @samp{?n}
(rnews), and I don't think you should touch that variable. I probably
shouldn't even have documented it. Drats! Too late!
@item nnsoup-replies-index-type
@vindex nnsoup-replies-index-type
The index type of the replies packet. The default is @samp{?n}, which
means ``none''. Don't fiddle with this one either!
@item nnsoup-active-file
@vindex nnsoup-active-file
Where @code{nnsoup} stores lots of information. This is not an ``active
file'' in the @code{nntp} sense; it's an Emacs Lisp file. If you lose
this file or mess it up in any way, you're dead. The default is
@file{~/SOUP/active}.
@item nnsoup-packer
@vindex nnsoup-packer
Format string command for packing a reply @sc{soup} packet. The default
is @samp{tar cf - %s | gzip > $HOME/Soupin%d.tgz}.
@item nnsoup-unpacker
@vindex nnsoup-unpacker
Format string command for unpacking incoming @sc{soup} packets. The
default is @samp{gunzip -c %s | tar xvf -}.
@item nnsoup-packet-directory
@vindex nnsoup-packet-directory
Where @code{nnsoup} will look for incoming packets. The default is
@file{~/}.
@item nnsoup-packet-regexp
@vindex nnsoup-packet-regexp
Regular expression matching incoming @sc{soup} packets. The default is
@samp{Soupout}.
@item nnsoup-always-save
@vindex nnsoup-always-save
If non-@code{nil}, save the replies buffer after each posted message.
@end table
@node SOUP Replies
@subsubsection SOUP Replies
Just using @code{nnsoup} won't mean that your postings and mailings end
up in @sc{soup} reply packets automagically. You have to work a bit
more for that to happen.
@findex nnsoup-set-variables
The @code{nnsoup-set-variables} command will set the appropriate
variables to ensure that all your followups and replies end up in the
@sc{soup} system.
In specific, this is what it does:
@lisp
(setq message-send-news-function 'nnsoup-request-post)
(setq message-send-mail-function 'nnsoup-request-mail)
@end lisp
And that's it, really. If you only want news to go into the @sc{soup}
system you just use the first line. If you only want mail to be
@sc{soup}ed you use the second.
@node Mail-To-News Gateways
@subsection Mail-To-News Gateways
@cindex mail-to-news gateways
......@@ -27927,8 +27602,7 @@ news batches, ClariNet briefs collections, and just about everything
else (@pxref{Document Groups}).
@item
Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets
(@pxref{SOUP}).
Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets.
@item
The Gnus cache is much faster.
......@@ -29492,7 +29166,7 @@ As the variables for the other back ends, there are
@code{nnml-nov-is-evil}, @code{nnspool-nov-is-evil}, and
@code{nnwarchive-nov-is-evil}. Note that a non-@code{nil} value for
@code{gnus-nov-is-evil} overrides all those variables.@footnote{Although
the back ends @code{nnkiboze}, @code{nnultimate}, and
+the back ends @code{nnkiboze}, and
@code{nnwfm} don't have their own nn*-nov-is-evil.}
@end table
2010-08-31 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-soup.el: Removed.
* nnsoup.el: Removed.
* nnultimate.el: Removed.
* gnus-html.el (gnus-blocked-images): New variable.
* message.el (message-prune-recipients): New function.
......
......@@ -680,13 +680,6 @@ simple manner.")
"\177" gnus-group-delete-group
[delete] gnus-group-delete-group)
(gnus-define-keys (gnus-group-soup-map "s" gnus-group-group-map)
"b" gnus-group-brew-soup
"w" gnus-soup-save-areas
"s" gnus-soup-send-replies
"p" gnus-soup-pack-packet
"r" nnsoup-pack-replies)
(gnus-define-keys (gnus-group-sort-map "S" gnus-group-group-map)
"s" gnus-group-sort-groups
"a" gnus-group-sort-groups-by-alphabet
......@@ -972,13 +965,6 @@ simple manner.")
(easy-menu-define
gnus-group-misc-menu gnus-group-mode-map ""
`("Gnus"
("SOUP"
["Pack replies" nnsoup-pack-replies (fboundp 'nnsoup-request-group)]
["Send replies" gnus-soup-send-replies
(fboundp 'gnus-soup-pack-packet)]
["Pack packet" gnus-soup-pack-packet (fboundp 'gnus-soup-pack-packet)]
["Save areas" gnus-soup-save-areas (fboundp 'gnus-soup-pack-packet)]
["Brew SOUP" gnus-group-brew-soup (fboundp 'gnus-soup-pack-packet)])
["Send a mail" gnus-group-mail t]
["Send a message (mail or news)" gnus-group-post-news t]
["Create a local message" gnus-group-news t]
......
;;; gnus-soup.el --- SOUP packet writing support for Gnus
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: Per Abrahamsen <abraham@iesd.auc.dk>
;; Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news, mail
;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
(eval-when-compile (require 'cl))
(require 'gnus)
(require 'gnus-art)
(require 'message)
(require 'gnus-start)
(require 'gnus-range)
(defgroup gnus-soup nil
"SOUP packet writing support for Gnus."
:group 'gnus)
;;; User Variables:
(defcustom gnus-soup-directory (nnheader-concat gnus-home-directory "SoupBrew/")
"Directory containing an unpacked SOUP packet."
:version "22.1" ;; Gnus 5.10.9
:type 'directory
:group 'gnus-soup)
(defcustom gnus-soup-replies-directory
(nnheader-concat gnus-soup-directory "SoupReplies/")
"Directory where Gnus will do processing of replies."
:version "22.1" ;; Gnus 5.10.9
:type 'directory
:group 'gnus-soup)
(defcustom gnus-soup-prefix-file "gnus-prefix"
"Name of the file where Gnus stores the last used prefix."
:version "22.1" ;; Gnus 5.10.9
:type 'file
:group 'gnus-soup)
(defcustom gnus-soup-packer "tar cf - %s | gzip > $HOME/Soupout%d.tgz"
"Format string command for packing a SOUP packet.
The SOUP files will be inserted where the %s is in the string.
This string MUST contain both %s and %d. The file number will be
inserted where %d appears."
:version "22.1" ;; Gnus 5.10.9
:type 'string
:group 'gnus-soup)
(defcustom gnus-soup-unpacker "gunzip -c %s | tar xvf -"
"Format string command for unpacking a SOUP packet.
The SOUP packet file name will be inserted at the %s."
:version "22.1" ;; Gnus 5.10.9
:type 'string
:group 'gnus-soup)
(defcustom gnus-soup-packet-directory gnus-home-directory
"Where gnus-soup will look for REPLIES packets."
:version "22.1" ;; Gnus 5.10.9
:type 'directory
:group 'gnus-soup)
(defcustom gnus-soup-packet-regexp "Soupin"
"Regular expression matching SOUP REPLIES packets in `gnus-soup-packet-directory'."
:version "22.1" ;; Gnus 5.10.9
:type 'regexp
:group 'gnus-soup)
(defcustom gnus-soup-ignored-headers "^Xref:"
"Regexp to match headers to be removed when brewing SOUP packets."
:version "22.1" ;; Gnus 5.10.9
:type 'regexp
:group 'gnus-soup)
;;; Internal Variables:
(defvar gnus-soup-encoding-type ?u
"*Soup encoding type.
`u' is USENET news format, `m' is Unix mbox format, and `M' is MMDF mailbox
format.")
(defvar gnus-soup-index-type ?c
"*Soup index type.
`n' means no index file and `c' means standard Cnews overview
format.")
(defvar gnus-soup-areas nil)
(defvar gnus-soup-last-prefix nil)
(defvar gnus-soup-prev-prefix nil)
(defvar gnus-soup-buffers nil)
;;; Access macros:
(defmacro gnus-soup-area-prefix (area)
`(aref ,area 0))
(defmacro gnus-soup-set-area-prefix (area prefix)
`(aset ,area 0 ,prefix))
(defmacro gnus-soup-area-name (area)
`(aref ,area 1))
(defmacro gnus-soup-area-encoding (area)
`(aref ,area 2))
(defmacro gnus-soup-area-description (area)
`(aref ,area 3))
(defmacro gnus-soup-area-number (area)
`(aref ,area 4))
(defmacro gnus-soup-area-set-number (area value)
`(aset ,area 4 ,value))
(defmacro gnus-soup-encoding-format (encoding)
`(aref ,encoding 0))
(defmacro gnus-soup-encoding-index (encoding)
`(aref ,encoding 1))
(defmacro gnus-soup-encoding-kind (encoding)
`(aref ,encoding 2))
(defmacro gnus-soup-reply-prefix (reply)
`(aref ,reply 0))
(defmacro gnus-soup-reply-kind (reply)
`(aref ,reply 1))
(defmacro gnus-soup-reply-encoding (reply)
`(aref ,reply 2))
;;; Commands:
(defun gnus-soup-send-replies ()
"Unpack and send all replies in the reply packet."
(interactive)
(let ((packets (directory-files
gnus-soup-packet-directory t gnus-soup-packet-regexp)))
(while packets
(when (gnus-soup-send-packet (car packets))
(delete-file (car packets)))
(setq packets (cdr packets)))))
(defun gnus-soup-add-article (n)
"Add the current article to SOUP packet.
If N is a positive number, add the N next articles.
If N is a negative number, add the N previous articles.
If N is nil and any articles have been marked with the process mark,
move those articles instead."
(interactive "P")
(let* ((articles (gnus-summary-work-articles n))
(tmp-buf (gnus-get-buffer-create "*soup work*"))
(area (gnus-soup-area gnus-newsgroup-name))
(prefix (gnus-soup-area-prefix area))
headers)
(buffer-disable-undo tmp-buf)
(save-excursion
(while articles
;; Put the article in a buffer.
(set-buffer tmp-buf)
(when (gnus-request-article-this-buffer
(car articles) gnus-newsgroup-name)
(setq headers (nnheader-parse-head t))
(save-restriction
(message-narrow-to-head)
(message-remove-header gnus-soup-ignored-headers t))
(gnus-soup-store gnus-soup-directory prefix headers
gnus-soup-encoding-type
gnus-soup-index-type)
(gnus-soup-area-set-number
area (1+ (or (gnus-soup-area-number area) 0)))
;; Mark article as read.
(set-buffer gnus-summary-buffer)
(gnus-summary-mark-as-read (car articles) gnus-souped-mark))
(gnus-summary-remove-process-mark (car articles))