.c -*- Mode:Bolio; Package:ZWEI -*- .chapter ZMAIL ZMAIL is an extremely powerful display-oriented mail system for BABYL or RMAIL mail files. This document describes most of its rather complicated user interface. .cindex mail file .cindex message The program mostly operates upon two types of objects, 2messages* and 2mail files*. As one might suspect, a 2mail file* is a collection of 2messages*. There are two kinds of 2mail files*, those that actually correspond to files on some file computer (whether they are present there or not), and collections of 2messages* which exist only during a particular running of the program. For the most part in this document, the term 2mail file* can refer to either type. When a distinction is to be made, the terms 2disk mail file* and 2temporary mail file* will be used, respectively. A 2message* is always contained in exactly one 2disk mail file* and zero or more 2temporary mail files*. .page .section Startup and top level configuration When started up via (ZMAIL), ZMAIL begins reading in your RMAIL file and any new mail. This is done in a background process, so the display of the first message should come up rapidly. The background process will continue to read in those files and write out the updated RMAIL file, if necessary. You are therefore allowed some limited interaction while this is going on. When invoked by [SYSTEM] M, ZMAIL displays an explanatory message and allows commands that do not require an mail file. Clicking on Get New Mail will start reading in your RMAIL file as above. .nopara There are three ZMAIL windows displayed while the program is at top level: .table 1 .item the Message window This window displays the text of the current message itself. .item the Command menu A menu containing most of the useful top level commands. See the section on commands for what they all do. .item the Mode line A one line window showing the status of the program. For example, .nopara .exdent 240 "7ZMAIL Option AI: ZIPPY; ZIPPY RMAIL Msg #3/57 (unseen) {personal} --More--*" .br 7Option* means the program is at top level. Next comes the name of the current 2mail file*. 73* is the current message number, and 757* the total number of messages in the current file. 7unseen* means this is the first time the message has been displayed; other things that go inside the parentheses are 7deleted*, 7recent* and 7last*, meaning the last message in the file. Inside the braces are any user keywords which have been saved on this message. 'cindex keywords 7--More--* is displayed when there is more text of the message below the end of this screenful. Some of the items in the mode line are mouse sensitive at various times. See the section on the various commands for what parts these are and what clicking on them does. .end_table .section Top level commands .nopara These are the commands available in the main command menu. In general, clicking left on one of them does its default action and clicking right gets another menu of suboptions. Whenever a command can be invoked by both the menu and the keyboard, the keyboard version is equivalent to clicking left, that is it gives the default behavior. .table .item Summarize Changes the display from just the current message and the command menu to the summary window, the command menu and the current message. See the section on the summary window for what is displayed there. .item Select file Clicking left selects the 2mail file* that was last selected before this one. Clicking right gives a two column menu with the 2disk mail files* in the left column and the 2temporary mail files* in the right. Clicking on one of these selects that 2mail file*. .nopara In addition, there are these special options in italics in the menu: .table .item Find file Reads the name of a file from the keyboard and reads in and selects that mail file. .item Mark survey Enters marking survey mode and selects a 2temporary mail file* of the marked messages when exited. See the section on marking survey mode in the description of the summary window, below. .item Filter Selects a temporary mail file of messages chosen by a filter. See the section on filtering for how this specification is done. .item Abort Aborts the Select File command. .end_table .item Delete 2also gotten by typing 3D** .nopara Deletes a message. There are two types of deletion commands. Clicking right gets a menu of the two. .table .item Delete Marks a message as deleted relative to the 2disk mail file* that is is contained in. If 3zwei:*delete-after-next** is not 3nil*, then moves on to the next message. This is also what clicking left does. .item Remove Actually immediately removes the current message from the current 2temporary mail file*. This is useful for getting rid of just a few messages for the 2Map Over* command, for example. .end_table .item Undelete Searches starting with the current message and then backward for a deleted message and unmarks it as deleted and selects it. .item Reply 2also gotten by typing 3R** Sets things up for mailing a reply to the current message. There are two variables relevant to the initial setup of the reply. These are the 2reply mode* and the 2reply window mode*. Clicking right gets a menu of these, and clicking left defaults them to 3zwei:*default-reply-mode** and 3zwei:*default-reply-window-mode**, respectively. .nopara These are the possible choices for 2reply mode*, which controls to whom the reply is addressed. .table .item All All of the original recipients of the message. .item All-Cc All of the original recipients of the message, except Cc: everyone except the original sender, rather than To:. .item Cc-All All the original recipients, except Cc: the sender of the message. This is useful for replying to messages to mailing lists to the mailing list itself. .item To Just the sender and original To: recipients of the message. .item To-Cc To: the sender, and Cc: the original To: recipients. .item Cc-To To: the original To: recipients, Cc: the sender. .item Sender Just the sender of the message. .end_table .nopara These are the possible choices for 2reply window mode*, which controls how the display is initially configured. .table .item Two-windows Reply is in two windows, with the message being replied to at the top. .item One-window Only the reply being composed is displayed, not the original message. .item Yank Display only the reply, and also yank the text of the original message, indented, into the text of the reply. .end_table See the section on Sending a message for how to finish composing the reply. .item Profile Enters profile mode, which allows modifying ones init file. See the section on this mode for how it works. .item Map Over .nopara Performs operations on all the messages in the current mail file. The operation if chosen from a menu with the following items: .table .item Delete Delete all messages. .item Undelete Undelete all messages. .item Type Type out all messages, using a window with scrolls like the View File window in the editor. .item Find string Print out all lines in messages containing a string which is read from the terminal. The lines printed are mouse sensitive and clicking on them selects that message. .item Keywords Add keywords to all messages. See the Keywords command for how to interact with the keywords menu. .item Unkeywords Remove keywords from all messages. .item Move to file Move all messages into a file. See the Move to File command for how to specify that file. .item Sort .nopara Reorder the messages by sorting. Sort keys can be: .table .item Date Sort chronologically by date of the message. .item To Sort alphabetically by the To: field of the message. .item From Sort alphabetically by the From: field of the message. .item Subject Sort alphabetically by the Subject: field of the message. .item Keywords Sort by what keywords are present on the message. .item Text Sort alphabetically by the actual text of the message. .item Length Sort numerically by the length of the message in characters. .end_table .nopara The menu also allows specifying in which direction the messages should be ordered after that sort. .table .item Forward .item Backward .end_table .item Forward Forward all messages to someone. See the forward command under the Mail command for how this sets things up and the section on Sending a message for how to finish it up. .item Concatenate Replace the text of the first message in this mail file with the concatenation of the text of all messages, and mark all messages except the first as deleted. Useful for combining several messages on the same subject. .end_table .item Save files 2also gotten by typing 3S** Clicking left expunges and saves all mail files. Clicking right gives a multiple choose menu, like the one the Kill or Save Buffers command in the editor uses, with the following options for each mail file. .table .item Expunge Remove all deleted messages from this mail file. .item Save Write the file back to disk if it has been changed. .item Kill Remove this mail file from the list of mail files that can be selected. .end_table .item Next 2also gotten by typing 3N** Move to the next undeleted message. .item Previous 2also gotten by typing 3P** Move to the previous undeleted message. .item Continue 2also gotten by typing 3C** Enter mail mode again for sending the same message. See the section on sending a message. .item Quit 2also gotten by typing 3Q** Exits ZMAIL. By default, first saves out all files. Contrast the C-Z command. Clicking right gives a menu with the following items: .table .item Don't Save Do not save any files before exiting. .item Ask Pop up the same menu as when the Save files command is clicked right to determine which files to save. .item Save The default. Expunge and save all mail files before exiting. .end_table .table .item Quit Just return to the caller. .item Logout Logout from the Lisp machine after all saving has been done. If you are daring, you can give this option and go away before the saving finishes. .end_table .item Survey Prints the summary lines for messages selected according to a filter. See the section on filters for how to specify one and the section on the summary window for the format of the lines printed out. The lines printed are mouse sensitive and clicking on them selects the corresponding message. .item Get new mail 2also gotten by typing 3G** If there is new mail on the file computer, start reading it in. .item Move to file Moves a message into a mail file. Since a message can only reside in one 2disk mail file* and any number of 2temporary mail files*, moving a message into a 2disk mail file* means actually copying the message and its text, whereas moving into a 2temporary mail file* only stores the 2message* into that data structure. Clicking left moves into the same mail file as the last move to file command. Clicking right gives a menu of all the current mail files, clicking one of them moves the message into that file. .nopara In addition, there are the following special options in italics in the menu: .table .item New temporary Read the name of a new 2temporary mail file* from the keyboard and start it out with this message. .item Recycled temporary The same 2temporary mail file* that the filter opterations would have used. .item New file Read the name of a 2disk mail file* from the keyboard, read in from the file computer if it exists, and add this message to it. .item Hardcopy Prints the message on some hardcopy device, see the section on hardcopy. .item Abort Abort the Move to file command. .end_table .item Keywords Change the current message's keywords. Clicking left performs the same additions and substractions to this message's keywords as the last keywords command. Clicking right gives the keyword menu. This menu contains all the currently defined keywords. Keywords that are currently on this message will be highlighted. Clicking on a keyword complements the highlighting. .nopara In addition, there are the following special items in italics: .table .item Quit Aborts the Keywords command. .item Done Finishes up, the message will get all the highlighted keywords. .item New Reads the name of a new keyword from the keyboard, adds it to the list of possible keywords and to the keyword menu, and highlights it. .end_table .item Mail 2also gotten by typing 3M** Sets things up for sending a message. See the section on sending mail for how to continue from there. .nopara Clicking right gives a menu of various special setup modes for mailing. .table .item Bug Gives a menu of possible bug-report recipients and initializes the to and text fields of the message the same way as the M-X Bug command in the editor. .item Mail Normal mail setup. .item Forward Copies the current message into the text portion of the message being composed. .end_table .item Other Gives a menu of other commands and executes the chosen one. By default there are no other commands. See the section on init files for how to define some commands and add them to this list. .end_table .nopara Typing digits accumulates an argument for the next command. Most commands do not do anything with their argument. These are the commands only available from the keyboard: .table .item Break 2gotten by typing 3BREAK** Gives a break loop. .item Delete And Up 2gotten by typing 3C-D** Deletes this message and moves to the previous undeleted message. .item Down To Next 2gotten by typing 3C-N** Moves to the next message, whether deleted or not. .item Jump 2gotten by typing 3J** Moves the the beginning of the file. With an argument, moves to that message. .item Next Screen 2gotten by typing 3SPACE** Scrolls to the next screenful of this message. The argument is the same as for the C-V command in the editor. .item Previous Screen 2gotten by typing 3BS** Scrolls to the previous screenful of this message. The argument is the same as for the M-V command in the editor. .item Refresh 2gotten by typing 3FORM** Redisplays all the ZMAIL windows. .item Scroll Summary Window 2gotten by typing 3C-M-V** Scrolls the summary window if it is displayed. The argument is interpreted the same way as the C-M-V command in the editor, except that an argument of 0 means scroll the line for the current message to the top of the summary window. .item Start Of Msg 2gotten by typing 3.** Scroll this text of this message so that the beginning is at the top of the window. This is how the text is initially displayed. .item Up To Previous 2gotten by typing 3C-P** Moves to the previous message, where deleted or not. .item Quit 2gotten by typing 3C-Z** Returns from ZMAIL without writing any files or anything. .end_table .nopara These are the commands gotten by clicking on mouse senstive parts of the mode line. .table .item Keywords Gotten by clicking on the keywords in braces, the same as the Keywords command in the main command menu. .item Rename Mail File Gotten by clicking on the filename. Reads a new name from the keyboard and changes the name of the current mail file to that. .end_table .nopara These are the commands that are not available anywhere by default. They can be added to the other command's list in one's init file, or invoked via the M-X command. .table .item Replay Keyboard Macro Gets the name of a named keyboard macro from a menu, and replays it. Useful for setting up special cases of the Mail command, for example. .item View File Reads the name of a file from the keyboard and displays it like View file in the editor. .item Find String Reads a string from the keyboard and moves to the next message that contains that string. .end_table .section Mailing mode .nopara These are the special commands available while mailing a message. Some of them are also available in the editor menu while in sending a message also. .table .item Abort Send 2gotten by typing 3ABORT** Abort sending of this message and return to top level command mode. .item Add Cc Field 2gotten by typing 3C-X C** Add another CC recipient, with an argument of 0, moves to the start of the CC field. With a negative argument, deletes the CC field. .item Add From Field 2gotten by typing 3C-X F** Add a from field. The argument is interpreted the same as the Add CC Field command. .item Add More Text 2gotten by typing 3C-X A** Move to the end of the text window. .item Add Subject Field 2gotten by typing 3C-X S** Add a subject field. The argument is interpreted the same as the Add CC Field command. .item Add To Field 2gotten by typing 3C-X T** Add a to field. The argument is interpreted the same as the Add CC Field command. .item Other Window 2gotten by typing 3C-X O** Select another exposed window, hence equivalent to the C-X O command in the editor. .item Prune Yanked Headers 2gotten by typing 3C-X Y** Delete the useless headers of a message that was yanked in via C-M-Y. .item Restore Draft 2gotten by typing 3C-X C-R** Restore the draft of a file from the file computer, such as saved by the C-X C-S command. .item Save Draft 2gotten by typing 3C-X C-S** Save the message being composed on disk, such that C-X C-R will restore it. Defaults the name of the file to the one used last time or HSNAME;DRAFT >. .item Send Message 2gotten by typing 3END** Actually send the message and return to top level command mode. .item Write Draft 2gotten by typing 3C-X C-W** Read a filename from the keyboard and save the message being composed on that file. .item Yank 2gotten by typing 3C-M-Y** Yank in the current message (i.e. the one being replied to), an argument means do not indent. .end_table .section The summary window The summary window is a scroll window which displays a single line for each message in the current mail file. Each line is mouse sensitive and clicking left on a line selects the message corresponding to that line. Clicking right gives menu of operations on that message. (For exceptions to this rule, see the section on defining a new filter.) There are two possible formats for the summary line, one which displays the date, and one which does not. This is controlled by 3zwei:*summary-include-date**. For example, .nopara .exdent 240 "7 3: 30 GLS(BUG ZWEI) {feature zwei} Suggestions for C-Q (Various Quantities)*" .exdent 240 "7 3: 30 1-Jul GLS(BUG ZWEI) {feature zwei} Suggestions for C-Q (Various Quan*" .br 73* is the number of the message relative to this mail file. Numbers are provided for counting purposes only, there are no absolute numbers. 7:* is the status letter of the message. .nopara Possible status letters are, in reverse order of predicate precedence: .table 7 .item - The message is unseen, i.e. it has not been displayed yet. .item : The message has been seen before. .item A The message has been answered. .item D The message is deleted. .end_table 730* is the number of lines in the message. The sender and recipients of the message are summarized on either side of the 7*. The keywords for the message are enclosed in braces. The rest of the line is either the subject of the message, or the first line which appears to contain meaningful text. In addition, the current message will have a small arrow in the leftmost column of its survey line. .subsection Marking survey mode Marking survey mode is the simplest way to get a set of (a small number of) messages for the Map Over commands. When in marking survey mode, clicking on a line in the summary window complements its marked status. Marked messages have a small 7x*-like blob in the leftmost column. Typing 3END* will select a temporary mail file of the marked messages. Typing 3ABORT* will abort marking survey mode. Also, mousing most any other command will first select the marked messages and then execute the command. This is the easy way to start the Map Over command you presumably wanted to do. .section Filtering In order for the operations available in the Map Over menu to be generally useful, one needs to be able to collect messages which fit a particular predicate into a 2temporary mail file*. This collection is assembled by mapping a 2filter* over a 2universe* of messages. A 2filter* is simply a predicate, a function on a 2message*. A 2universe* is just a collection of messages. Usually it is nothing more than a 2mail file*, but see below. This same filtering operation is performed by the Survey command to decide which messages to print. .subsection Choosing a filter .nopara When the user is called upon to select a filter, the filter selection frame is exposed over the rest of the window. These are the windows in the filter selection frame and what they do: .table 1 .item The universe button This window has the name of the 2universe* the 2filter* will be applied to. Normally, this is the current 2mail file*. Clicking on it allows choosing another 2universe*. See the section on Choosing a universe below for how that works. .item The not button This window just says 7not* on it. Clicking on it complements its highlight. If it is highlighted when you finally select the 2filter* (see below), then the complement of the predicate is used instead. .item The abort button This window just says 7abort* on it. Clicking on it aborts the filter selection, which probably aborts the current command, such as Select File or Survey. .item Keywords Each keyword that is defined is displayed in a menu. Clicking on an item in that menu selects the 2filter* that gets 2messages* with that keyword on them. Also, the item 2Any*, in italics, gives a 2filter* for all messages with any keywords at all on them. .item System filters .nopara A number of filters are pre-defined. These are the ones displayed in the middle menu and what messages they filter. .table .item All Gives all messages. If you don't select a different 2universe*, you won't get a different set of messages and won't have accomplished anything, so see below for how to do that. .item Deleted Messages marked as deleted .item Seen Messages which have been displayed before. .item Recent Messages read as new mail during this session. .item Answered Messages to which a reply has been sent using the Reply command. .end_table .item User filters A menu of any 2filters* that the user has defined is also given. Also, the item 2New filter* appears in italics. Selecting it will let you define a new filter. See below for how that works. .end_table .subsection Defining a new filter .cindex filter When defining a new filter, the screen is split between the summary window and the filter definition frame. The summary window displays the current mail file. See the section on it for the format of the display. Clicking on its mouse sensitive lines gives several lines of mouse sensitive typeout showing the sender and recipients of the corresponding message. Clicking on them adds clauses to match those fields, just like the From or To/Cc commands below. On the right of filter definition window is an editor, which shows the LISP definition of the filter you are defining. Usually it will contain logical expressions on pre-defined macros, gotten automatically by clicking on the various other windows. However, clicking on it will allow you to edit the LISP itself. See the section on filter macros to help interpret things there. Here is an example of a simple filter which gets all deleted messages from Moon at MIT-MC. .lisp (define-filter foo (msg) (and (get status ':deleted) (msg-header-recipient-search ':from "Moon@MIT-MC"))) .end_lisp .nopara The other windows in the filter definition frame are: .table 1 .item Not button This window just says not in it, clicking it inserts code which will complement the next clause inserted. .item And button Starts an 3and* conditional, into which following clauses are filled in. .item Or button Starts and 3or* conditional. .item Close button This moves to the next higher level of nested clauses. In fact which it does is what M-) does in the editor. That is to say, if you click And, then Or, then some clauses for the Or, and now want to get back to adding the rest of the And clauses, this is how you do it. .item Sample button Clicking this shows what messages fit the filter as so far defined, just the the Survey command at top level. .item Name button This has the name of the filter you are defining, initially something like NONAME-1. Clicking left on it lets you change the name of the new filter. Clicking right gives you a menu of already defined filters and lets you select one which is then inserted with its definition. This is how you edit an existing filter definition. .item Done button Finishes up defining the filter. .item Abort button Aborts the filter definition, and probably whatever command it was called from. .item Keyword menu Similar to the Keyword menu in the filter selection frame, except that choosing something inserts a clause for matching messages with that keyword. .item System filter menu Similar to the menu in the filter selection frame, except that it too inserts clauses which match the corresponding predicate. .nopara There are also a few other items in the menu: .table .item Filed Gives messages which have been moved to another 2disk mail file*. .item Search Reads a string from the mini-buffer (over there below the editor window) and gives a clause which matches messages containing that string. .end_table .item Headers menu Clicking on the items in this menu reads a string from the mini-buffer and gives a clause for messages that match that string in the corresponding string. When you are reading in that mini-buffer, clicking in the survey window will insert the text of the corresponding field in the message that corresonds to that line in the survey, giving a menu in the typeout window if there is more than recipient in that field. .nopara These are the headers that appear in the headers menu: .table .item To Match on the to field of the message. .item To/cc Match on either the to or the cc field of the message, i.e. any recipient of the message. .item From Match the from field. .item Subject Match the subject field. .item Other First reads the name of a header (presumably other than To, From, or Subject) and then the search string, and search that particular header for the string. .end_table .item Date menu .nopara Clicking on these items reads a date from the mini-buffer and inserts a clause for the corresponding time predicate. .table .item Before Gets messages dated before the given date. .item On Gets messages dated within 24 hours of the given date. .item After Gets messages dates after the given date. .end_table .end_table .subsection Choosing a universe .cindex universe The menu for selecting a universe contains the names of all mail files, and already defined universes (see below). Clicking on one of these selects the correponding set of messages for the universe of in which the filter is conducted. Also, the item 2All*, in italics, appears, which means all messages in any mail file; and the item 2New universe*, which allows definition of a new universe, as below. A universe which is not a mail file does not correspond to a particular set of messages until it is used for filtering. It is in this way that it differs from a mail file. Mail files used in it are specified by name, not by their messages. .subsection Defining a universe .cindex cosmogony To define a new universe, the universe definition frame pops up. It has an editor window just like the Filter definition frame; in fact, definition works much the same way, except that set operations, rather than logical operations, are applied to collections of messages, rather than to filtering clauses. .nopara The other windows in the universe definition frame are: .table 1 .item Name button This has the name of the universe you are defining, initially something like NONAME-1. Clicking left on it lets you change the name of the new universe. Clicking right gives you a menu of already defined universes and lets you select one which is then inserted with its definition. This is how you edit an existing universe definition. .item Done button When done, returns the newly defined universe .item Abort button Aborts the definition of the new universe, and returns to the filter frame probably. .item Union button Gives the union of the succeeding collections. Union of no arguments is the empty set. .item Intersection button Gives the intersection of the succeeding collections. Intersection of no arguments in everything, in this case all messages anywhere. .item Not button Gives the complement of the suceeding collection. .item Close button Moves up a level of union or intersection, just like the close button in the filter definition frame, or M-) in the editor. .item Disk mail files A menu of all disk mail files appears on the left. In addition, the item 2Primary* in italics, which means the file that was read in to startup and to which your new mail is appended, i.e. your RMAIL file. .item Temporary mail files A menu of all temporary sets of messages appears in the middle. In addition, the item 2Current*, which means the currently selected mail file. .item Universe menu A menu of all the universes you have already defined also appears, clicking it uses that collection of messages. .end_table .section Profile mode .cindex user options .cindex init file When ZMAIL starts up, it 3load*'s the file HSNAME;UNAME ZMAIL, if it exists. This init file can define filters, 3setq* variables (see below under user options), etc. Profile mode gives a convenient interface for helping to edit up this file. [More to come] .section User options .cindex user options .cindex init file .nopara These are the user options and what they mean, they are all in the ZWEI package. Your init file probably should be also for convenience. .table 3 .item *next-after-delete* 2boolean, default 3t** Whether to move to the next message after deleting the current one. .item *delete-after-move-to-file* 2boolean, default 3t** Whether to delete a message after moving it into a disk mail file. .item *summary-include-date* 2boolean, default 3nil** Whether the summary window should include the date of the message too. .item *default-initial-window-configuration* 2assoc, default 3:msg** .nopara Controls what windows are displayed when ZMAIL starts up. Possible values are: .table 3 .item :msg Just the message window is displayed. .item :both Both the summary window and message window are displayed. .item :summary Just the summary window is displayed .end_table .item *default-header-force* 2assoc, default 3:none** .nopara Controls the type of message generated by the mailing commands. Possible values are: .table 3 .item :none ZMAIL does not specify the header force, but allows COMSAT to default them. .item :rfc733 .item :its .item :network .end_table .item *reply-window-mode* 2assoc, default 3:two-windows** Controls the default for the reply command's window mode, see the reply command for the meaning of the possible values, which are 3:one-window*, 3:two-windows*, and 3:yank*. .item *reply-mode* 2assoc, default 3:all** Controls the default for the reply command's reply mode, see the reply command for the meaning of the possible values, which are 3:all*, 3:all-cc*, 3:to*, 3:to-cc*, and 3:sender*. .item *other-mail-file-names* 2filename-list, default 3nil** A list of files which are available in the menus for Select file and Move to file, even before they are read in. Selecting them will read them in of course before using them. .item *dont-reply-to* 2string-list, default 3("INFO-*")** A list of people who are removed from the list of people to whom to send a reply to a message. If a string ends with a 3**, it means that it will match any ending string. Add your 3USER-ID* to this if you don't like copies of your replies. .item *forwarded-message-separator* 2string, default 3""** A string that separates several messages that are forwarded together. .item *zmail-startup-file-name* 2filename-or-nil* The filename that is read in initially, and to which new mail is added, defaults to your BABYL or RMAIL file. .item *default-draft-file-name* 2filename-or-nil* The name of the file where messages being composed can be saved, defaults to HSNAME;DRAFT >. .end_table .section Filter alist processing .cindex filter .cindex init file Some functions are defined which give an interactive scrolling display of the text of messages and allow putting keywords on messages, deleting them, at the same time. They aren't all that well thought out yet. If you want to experiment with them, look in MMcM's init file for examples of how to use them. [This section will get more specific someday.] .eof