Trailing-Edge
-
PDP-10 Archives
-
mit_emacs_170_teco_1220
-
info/zbabyl.info
There are no other files named zbabyl.info in the archive.
-*-Text-*-
This is the file INFO;ZBABYL >, which documents ZBabyl, an extension to the
Babyl mail reading subsystem.
File: ZBabyl Node: Top Up: (Babyl) Next: Differences
ZBabyl is a basically upward-compatible extension to Babyl which is
inspired by the Lisp Machine's mail reader, ZMail.
* Menu:
* Differences:: Discussion of minor incompatibilities with Babyl.
* Commands:: Commands offered by ZBabyl
* Extended:: New m-X commands in ZBabyl
* Filters:: Making and using filters
* InitFiles:: About the format of a ZBabyl init file
File: ZBabyl Node: Differences Up: Top Next: Visible
The following commands do not behave in ZBabyl as they would in Babyl:
* Menu:
* Visible:: About visible changes.
* Internals:: About how the internals are restructured.
File: ZBabyl Node: Visible Up: Differences Next: Commands
Command Babyl Function ZBabyl Function
c-X Exit Babyl Temporarily Command prefix.
To get the old behavior, use
c-X c-C on ITS or c-X c-Z on Twenex.
c-S Survey Prefix Survey Prefix, but several of the
dispatch characters have changed.
Type c-S ? for documentation.
File: ZBabyl Node: Internals Up: Differences Next: Commands
All survey commands (Survey All Messages, Survey Labeled Messages, etc)
work by using filters.
The only really noticeable loss in speed is to Survey All Messages.
Users are encouraged to use the B command to get rapid, unconditional
surveying. Survey All Messages is provided for upward compatibility
only. It is not worth anyone's address space to make a special version
of this which is fast since the B command already suffices.
File: ZBabyl Node: Commands Up: Top Next: Extended
The following commands are new and/or different in ZBabyl:
Command Function
K, Y Changed upward compatibly:
The K and Y commands now cooperate to retain some
information in the message header about what messages have
been put together. ZMail can later use this info and ZBabyl
may some day be able to also.
@ If you type @ at one or more messages, Babyl will remember
the `name' of each message. If you later type 1@, Babyl will
yank a "References" field into the message you are looking
at which is made from the names of all the remembered messages.
Also, when sending mail from Babyl, m-X Yank References
works to yank the references into the mail you are sending.
Its behavior is relatively harmless, so it is safe to
experiment with.
c-X Command Prefix. Dispatches on next char typed:
c-C, c-Z Exit Babyl temporarily.
c-B Mail File `Buffer' Menu.
Lets you select another mail file to edit.
A menu form of the I command in normal Babyl.
1, 2, O, ^ These work like the normal window
manipulation commands c-X 1, c-X 2,
c-X O, and c-X ^ in normal Emacs.
E Same as Set Event Date.
R Same as Set Start Date.
S Same as Set Stop Date.
X Same as Set Expiration Date.
c-S Survey Command Prefix. Dispatches on next char typed:
A, c-A Survey All Messages
D, c-D Survey Deleted Messages
F, c-F Survey Filtered Messages
L, c-L Survey Labeled Messages
M, c-M Survey Messages Containing String
R, c-R Survey Reminders
S Survey Seen Messages
X, c-X Survey Expired Messages
U, c-U Prefix. Dispatches on next char typed:
D, c-D Survey UnDeleted Messages
L, c-L Survey UnLabeled Messages
S Survey UnSeen Messages
As with Babyl, c-S followed by c-S or c-Q is ignored to
account for VT52 lossage.
c-E Edits (creates or modifies) a filter.
With an argument, as in 0 c-E, shows the filter and
the Teco compiled code for the filter.
| Find the next occurrence of a message matching a given filter.
This command prompts for a filter name; type the name or Return
to accept the default. If there is no matching message following,
the cursor will not move.
There was a | command in Babyl which did something similar using
labels instead of filters. It had slightly more elaborate argument
conventions and defaulting, which ZBabyl might adopt sometime but
for now doesn't have.
# Maps a command across a set of messages (by filter). Currently,
the commands which can be mapped are D, U, L, -L, and O. This
set might be extended at some point.
Here's a sample of what using it looks like:
User types: #
ZBabyl prompts: Command to Map:
User types: L
ZBabyl prompts: Map, attaching label:
User types: Foo<Return>
ZBabyl prompts: Attach label "Foo" to messages matching filter:
User types: My-Filter-17
ZBabyl then maps across all messages matching My-Filter-17, adding
the label "Foo".
File: ZBabyl Node: Extended Up: Top Next: Filters
m-X Set Start Date
Sets the Start-Date for a message.
If a message has a Start-Date, then it is a reminder.
By default, a reminder is active if the current date is after
the start date (unless the message also has a Start-Date or
Expiration-Date which also in the past).
m-X Set Stop Date
Sets the Stop-Date for a message.
If a message has a Stop-Date, then it is not a reminder if
that Stop-Date is in the past.
m-X Set Expiration Date
Sets the Expiration-Date for a message.
If a message has an Expiration-Date but no Stop-Date, the
Expiration-Date behaves as a Stop-Date. By default, a message
is said to hae expired if it has an Expiration-Date and that
date is in the past.
m-X Set Event Date
Simultaneously sets the Start-Date and Expiration-Date for a message.
The Start-Date is set to a time 48 hours before the given time.
The Stop-Date is set to a time 1 hour after the given time.
If a precomma argument is given, it is the number of hours ahead
to use for the Start-Date.
If a single (or postcomma) argument is given, it is the number of hours
after to use for the Stop-Date.
For example, 72,8 X Set Event DateTomorrow at 3pm
is equivalent to: X Set Start DateTwo days ago at 3pm
X Set Stop DateTomorrow at 11pm
m-X Yank References
Yanks references saved by the @ command into the current message.
At Babyl command level, this is the same as 1@. When sending mail,
it operates on the *Mail* buffer instead of the current message.
m-X Sort All Messages By Date
This sorts the messages by date.
With a negative argument, the file is sorted in reverse by date.
Due to address space limitations, only works for small Babyl files.
Also, only works well if your Babyl file has headers reformed.
File: ZBabyl Node: Filters Up: Top Next: Concepts
* Menu:
* Concepts:: About the concept of a filter.
* Functions:: About the Lisp functions allowed in filters.
* Menus:: About the creation of a filter.
* Predefined:: About filters that are initially defined for you.
* Usage:: About the usage of a filter.
File: ZBabyl Node: Concepts Up: Filters Next: Menus
Filtering messages is a way of talking about messages by some
unifying characteristic or characteristics.
For example, a common filter which was offered by Babyl was the
filter which matched all messages with a given label. Babyl's
filter facility was, however, not extensible or modifiable in
the way ZBabyl's is.
Here are some simple ZBabyl filter descriptions:
Filter... Matches...
T ;all messages
NIL ;no messages
(LABEL "Foo") ;any message having the label "Foo"
(NOT (LABEL "Foo")) ;any message not having the label "Foo"
(AND (LABEL "Foo")
(LABEL "Bar")) ;any message labeled both "Foo" and "Bar"
(LABEL (PROMPT LABEL "Label")) ;any message labeled with a label that
;will be prompted for interactively.
;The prompt string will be "Label: "
File: ZBabyl Node: Menus Up: Filters Next: Predefined
File: ZBabyl Node: Predefined Up: Filters Next: Usage
File: ZBabyl Node: Usage Up: Filters Next: InitFiles
File: ZBabyl Node: InitFiles Up: Top Next: Forms
The format of a ZBabyl init file is Lisp code.
* Menu:
* Forms:: Special forms allowed in an init file.
* SampleInit:: A sample init file.
File: ZBabyl Node: Forms Up: InitFiles Next: SampleInit
Filter Definitions
A DEFINE-FILTER form defines a filter. The syntax is
(DEFINE-FILTER <name> ...ignored... <comment> <lisp-code>)
This defines a filter called <name> with definition of <lisp-code>.
The ignored portion is for compatibility with ZMail filter
definition conventions. Only the name and the last form in
the DEFINE-FILTER form are actually looked at. eg,
(DEFINE-FILTER FOOBAR (AND (LABEL "FOO") (LABEL "BAR")))
The <comment>, if given, should be a plural definite noun reference
with lowercase initial, no trailing period, and no leading "the".
It will be inserted in phrases like:
No <comment>.
No more <comment>.
Checking for <comment>...
Hence, "funny mail" or "messages about X" are examples of correct
style because they fit into the above strings, becoming:
No funny mail. No messages about X.
No more funny mail. No more messages about X.
Checking for funny mail... Checking for messages about X...
Auxiliary Mail Files
An assignment to *OTHER-MAIL-FILE-NAMES* using SETQ or
LOGIN-SETQ will be recognized to initialize the set of
filenames offered by c-X c-B. eg,
(SETQ *OTHER-MAIL-FILE-NAMES*
'("<MYDIR>FOO.XMAIL" "<MYDIR>BAR.XMAIL"))
Load Commands
If the file contains calls to LOAD at toplevel, the contents of
the files which are arguments to LOAD will be rocessed -after- any
filter definitions or other assignments in the current file. eg,
(LOAD "MC:MYDIR;MORE FILTRS")
Filter Daemons
An assignment to *FILE-FILTER-DAEMONS* using SETQ or LOGIN-SETQ
will be recognized to initialize an alist of filter daemons. These
daemons will be run whenever a G command is done (explicitly or
implicitly) successfully (ie, when there was really new mail).
The format of the
To define this behavior, you define appropriate filters in
your Lisp init file for ZBabyl and then set the variable
*FILE-FILTER-DAEMONS* to a list of lists, each of the form:
(babylfile action1 action2 ...)
actions should be a list of commands of the form:
(command filter [argument])
COMMAND must be one of: LABEL, -LABEL, DELETE, UNDELETE, and OUTPUT.
In fact, it keys only on the first character, which is why
-LABEL was chosen rather than UNLABEL.
FILTER should be a filter which does no interactive prompting in
order for things to work gracefully.
ARGUMENT should be given if and only if the command is LABEL,
-LABEL, or OUTPUT and should be the string that would
normally be prompted for by the given command.
Notes:
Init files are not scanned linearly. They are scanned as a
multi-pass process. This will only matter, however, if your init
defines the same filter or variable more than once.
Also, filter definitions and load commands will only be processed
if they begin in column 0. This may change at some point, so don't
rely on it, but it may explain occasional unusual behavior.
File: ZBabyl Node: SampleInit Up: InitFiles
;;; -*- Mode:LISP; -*-
;;; Sample ZBabyl init file
(SETQ *OTHER-MAIL-FILE-NAMES*
'("OZ:PS:<MYNAME.XMAIL>FOO.XMAIL"
"OZ:PS:<MYNAME.XMAIL>BAR.XMAIL"
"MC:MYNAME;OLD MAIL"))
(DEFINE-FILTER UnProcessed (MSG)
"unprocessed messages"
(AND (NOT (LABEL "deleted"))
(OR (LABEL "recent")
(LABEL "unseen")
(NOT (LABEL)))))
(DEFINE-FILTER Event (MSG)
"active notices about seminars, conferences, etc"
(AND (OR (LABEL "Conference")
(LABEL "Seminar")
(LABEL "Meeting")
(LABEL "SocialEvent")
(LABEL "Event")
(SEARCH-FIELD SUBJECT "seminar")
(SEARCH-FIELD RE "seminar")
(SEARCH-FIELD TO "COG-SCI")
(SEARCH-FIELD CC "COG-SCI"))
(OR (NOT (SEARCH-FIELD START-DATE))
(PRECEDES START-DATE))
(OR (NOT (SEARCH-FIELD EXPIRATION-DATE))
(FOLLOWS EXPIRATION-DATE))))
(DEFINE-FILTER Worthless (MSG)
"worthless mail"
(OR (SEARCH-FIELD FROM "DVRSPL")
(AND (OR (SEARCH-FIELD TO "INFO-")
(SEARCH-FIELD FROM "INFO-"))
(SEARCH "Please add ")
(SEARCH "Please remove "))))
(SETQ *FILE-FILTER-DAEMONS*
'(("MC: GUEST2; JDOE BABYL"
(LABEL Event "RemindNow")
(DELETE Worthless))))