EXMH REFERENCE

Contents

NAME

exmh-ref - A detailed reference to exmh functions.

EXMH REFERENCE CHAPTER

This man page gives complete, but terse, information about Exmh.

COMMAND LINE OPTIONS

There are just a handful of command line options for exmh. Note that Xt-like command line options are not supported because exmh is based on Tk, not Xt.

-bgAction action
Override background processing setting. Valid actions are: off, count, msgchk, flist, and inc.
-bgPeriod minutes
Override background period setting.
-geometry geometry
Initial geometry to use for the window. Exmh remembers the geometry when you change it interactively, so you do not really need to specify it each time on the command line.
-iconposition geometry
Initial position to use for the icon in the form +xoff+yoff. You can use minus signs instead of + to position relative to the right and bottom of the screen.
-iconic
Begin execution iconic.
-nofaces
Do not use faces database during this run.
-sedit
Override the editor command defined in Preferences and use the built-in editor (sedit) instead.
folder
It the argument is not one of the flags given above, it is assumed to be the name of a folder. In this case exmh begins in that folder.

EXMH MAIN BUTTONS

There are three sets of buttons in exmh, the main, or top row, folder operations, and message operations. The main set has global commands: Log, Help..., Bindings..., Address..., Preferences, and Quit.

Help...
Help is a menu with several choices:
Quick Intro
This provides a useful sub-set of this man page.
Color Legend
This provides a highlighting key for color or monochrome screens.
HTML Docs
This provides access to all the exmh documentation.
Frequently Asked Questions
This displays a Frequently-Asked-Questions file. It has the same info as the help.FAQ file.
Exmh Mailing Lists...
This is a sub-menu that lets you administer your membership in the exmh-related mailing lists. See the About menu entry for an explaination of the various mailing lists. The add/remove operations result in mail messages. You'll need to Send the draft messages.
Submit Bug Report
A mail message is started so you can report a problem with exmh.
Register as an EXMH User
A mail message is started to you can register as an exmh user. There is an opportunity to sign up for the mailing lists and provide positive and negative feedback about exmh.
Pgp Setup
Get started with PGP. There is some help text and an interface to create your public key / private key pair.
Bindings...
Exmh has two sets of key bindings. One for simple editting, and another to invoke commands. The editting bindings are used in the simple editor and in the various text entry widgets. The command bindings are in effect otherwise, and they allow you to invoke various Exmh commands without using buttons or menus. This is a menu with three choices:
Commands
This brings up a dialog that lets you edit the keystroke bindings. All of the defined bindings are displayed, and you can edit their associated keystroke in place. Use the entry to the right of each command to alter or add key bindings. There are further directions in the dialog box.
Simple Edit
These bindings result in class definitions for the Entry and Text widget classes. The default bindings are Emacs-like. See the Tk man page on the bind command for details about the syntax, if you need to. In Tk versions 3.3 and later, "Meta" is an ok synonym for "Mod1". To emulate Emacs, any keystroke that is defined to be <Meta-x> will also result in a binding for <Escape>x.
Compose Key
The compose key is used to insert 8-bit characters. This dialog shows you the key sequences used to get special characters. You can define which key maps to Compose in the Simple Edit bindings dialog.
Log
If you have enabled the debug log under the Hacking Support preferences section, then this button appears. It displays the debug log.
Address...
This is a menu to with the following entriesMH
Aliases
This displays an interface to the MH alias file. You will be prompted to set up the MH profile entry that names the alias file, if needed. There are a pair of lists in the interface. To the left is a list of your aliases. Selecting one will display the address(s) of the alias in the right-hand list. Under each list are three buttons: Insert, Change, and Delete, that let you operate on the aliases or the addresses associated with an alias. As you view messages, the From address of the current message is displayed in the dialog. There is a Help button in the dialog that gives more tips about using it.
Address Book
This is a user interface onto all the email addresses exmh has saved for you. You can update the address information, delete addresses, and view the last message from a person. You can save them automatically or on demand. See the Address Database preferences. Within the built-in editor a <Control-Tab> does pattern matching against saved addresses.
Preferences
This displays a dialog that lets you customize exmh. There is also a different Help button in the Preference dialog that explains how to make selections and get more info. In particular, you can click on the descriptive label for an item to get a popup with more detailed information on the preference item.
Quit
This quits exmh. If there are pending changes to draft messages, they are saved first.

FOLDER BUTTONS

The middle set of buttons has folder commands: New, Flist, Inc, Commit, Search... and More...

New
This pops up a dialog box from which you can create new folders. When entering a folder name, the '@' character is short for the current folder name. Note that the Delete folder operation is under the More menu.
Flist
The Flist button refreshes the color feedback of folder buttons so you can tell which folders have unseen messages in them. If you use presort inc style, then this is done automatically. However, if you read all the unseen messages in a folder from outside exmh, then it will miss the transition out of the unseen state, so the Flist button will help reset its view of the folder state.
Inc
The Inc button will incorporate new mail from your spool file into your mail folders. This command is also bound to the keystroke 'i'.
Commit
The Commit button causes pending delete and move operations to occur. This command is also bound to the keystroke <Control-Return>. Know that messages marked for deletion are removed by means of the MH rmm command. In most systems, rmm will rename the message to a name begining with either a comma (,) or pound sign (#). Unlike xmh, exmh requires that you commit changes before changing folders and doing other operations that modify the scan listing (e.g., Pack, Sort, Rescan). However, you can set Auto Commit under the Scan Listing preferences to have exmh automatically commit changes when needed. See also the description of the "Purge Folder" operation.
Search...
This is a menu of different search methods. The first two operations use a simple Find dialog. The Pick and Glimpse interfaces have their own dialogs. The menu entries under Search... are:
Search help
This help text describes the search methods in more detail.
Current message
Enter a string to find in the current message. <Return> causes the search to begin. <Control-s> and <Control-r> cause subsequent forward and reverse searches, respectively.
Folder table of contents
This search is done by scanning the folder table of contents display, so it only hits on the current folder scan output. Select the All button to select all matching messages. Use Pick for more general searching.
All messages in current folder (pick)
This provides an interface to the MH pick command. Begin by chosing from the "pick attribute" menu in the dialog. These include headers like Subject, From, To, and Cc, as well as date criteria like Before, and After. You can search for a string in the body of messages with the "Search" field. You can enter a pattern for any of these, and pick selects messages that satisfy the logical AND of these pattern specifications. Note that the Before and After patterns are date-specific, and pick understands many forms of date patterns. Read the MH man page on pick for the complete story. You can build up more complex logical search expressions by clicking the Or button.
Pick from Seq/msgs(s)
This entry lets you limit pick to a specific set of messages. In particular, you can specify a sequence name (e.g., "unseen"), and have pick find all messages with that sequence identifier. After the pick completes, a range of messages is selected that satisfies the search, and you can operate on these messages as described below.
Add to Sequence(s)
This entry lets you apply a sequence name to the set of messages that are selected by the search. You can select these later by using the "Pick from Seq" field.
Add to Sel
This button is part of the pick interface. Set this before the pick to add the results of the pick to whatever message range is already selected in the table of contents. Otherwise a new selection is made.
New FTOC
This button is part of the pick interface. It causes the table of contents to be replaced with the set of currently selected messages. These can be the result of a pick, or you can just make a selection with the mouse. Warning: after projecting a new table of contents, a subsequent pick will only find things in this limited table of contents.
Mark Seen
This button is part of the pick interface. Use this to remove the selected messages from the unseen sequence.
All messages in all folders (glimpse)
This brings up an interface to the Glimpse text index tool. You must first index your mail, so to get started click "index" to build your indexes. This process runs in the background, and the status of the index process is displayed in the Glimpse log. The storage overhead of the indexes is about 10% to 15%, which is quite good for a full text index system. To search, enter a word in the search area and press "Search". The button changes to a "Stop" button, although the stop may take a moment to take effect. The search results are displayed in the log. Click on the message in the log and exmh will visit that message. For more details, see the exmh-use man page.
Display related messages
This selects messages that have the same subject as the current message, or that are "in-reply-to" the current message. The folder table of contents is replaced by one that only lists the related messages.
More...
This is a menu with more folder operations in it:
Rescan folder
Rescan forces a rescan of the folder contents. Exmh maintains a cache of the scan output that could get confused. The Rescan button forces a full scan. If you just want to scan the new messages that have arrived in the folder you are currently reading, it is more efficient to click on the folder's label in the top pane. This will invoke a scan merging procedure that attempts to preserve the cached results of previous scans. You should only need Rescan when you have reason to believe that exmh is out of sync.
List only selected messages
This changes the table of contents to list only the selected messages. This is useful after a pick or table of contents search that has highlighted several messages throughout the folder. You must use Rescan folder to get the full listing back.
Pack folder
This will renumber messages in the current folder to eliminate any gaps in the number sequence.
Sort folder
This is a cascade menu that provides different ways to sort your folder: by date, by subject, and by the sender. The subject and sender sorts also do some grouping by date so that messages from one person or about one subject may be grouped into several subgroups based on their age. See the MH sortf command manual page for details.
Find all folders
This refreshes the display of folder buttons, and it will pick up any new folders you have created. This currently uses the MH command "folders -fast -recurse", which can be slow. The results are saved, so you should not need to wait for this scanning unless you change your folder structure. (You can also edit the .folders file in your MH mail directory.) The exmh distribution comes with a two-line patch for the MH folders program that speeds it up considerably. This is found in the misc/folder.patch file.
Delete folder
This lets you delete a folder. The folder must be empty, except for .xmhcache, .mh_sequences, and any .nfs junk files.
Catch-up Unseen
This clears the unseen sequence from the current folder.
Update scan caches
This runs another process in the background to update any scan caches that are out of date.
Update all scan caches
This runs another process in the background to update all the scan caches.
Purge folder
When MH deletes a message it really only renames it to have a name like #N or ,N if it was message N. The Purge operation will clean up these junk files that are older than 7 days. (This age parameter can be adjusted by a Preference item under the MH Tweaks section.)
Purge all folders
This runs through all your folders deleting old junk files. This is done in the background so you can continue to use the user interface during the process.
Import mailbox folders
If you use a program like Elm or Sun's Mailtool, you can import their message folder contents into the format used by MH. This menu entry brings up a dialog that lets you do this. After you specify the directory that contains the mail folders, a display with a checkbutton for each folder is created. You can select which folders to import. The originals are left alone, so you'll have to delete them yourself after you import them into MH.
Audit
This is a cascade menu entry that lets you either view the audit summary statistics or the current audit log. Note that the audit log is appended into ~/Mail/.exmhaudit when you quit exmh.
Re-read MH Profile
If you change something important in your MH profile, you can get exmh to reprocess it with this operation.

MESSAGE BUTTONS

The last set of commands are message operations. Several of these work in a batch fashion on all the messages in a selected set. These include Delete, Move, Link, Forward, Unmark, and Print. Some of these buttons and menu entries are disabled if there is no current message. Disabled actions have their text greyed out.

Forward
Forward the current message(s). Also keystroke 'f'.
Send
Compose a mail message. Chose the editor to use via the Preferences dialog. Also keystroke 'c' (for "compose").
Prev
Move to the previous message. Also keystroke 'p'. Keystroke 'P' changes the current message without displaying it. Use 's' to display such a message.
Next
Move to the next message. This will chain to the next folder with unread messages if you are at the end of the current folder. The "Next" folder is defined by the Folder-Order .mh_profile entry, and it is always the first folder in the order that has unseen messages. (This keeps you in the interesting folders and away from the dregs if you organize your Folder-Order properly.) Also keystroke 'n'. Keystroke 'N' changes the current message without displaying it. Keystroke 'F' changes to the next folder with unseen messages.
Delete
Mark the current message(s) for deletion and go to the next message. Also keystroke 'd'. If you change your mind, select the message again and "Unmark" it via the entry under the message More... menu.
Move
Mark the selected message(s) to be moved to the target folder and go to the next message. Also keystroke 'm'. Note that selecting a target folder also moves the current message(s). So, you use the Move button if the correct target folder is already selected. If you make a mistake and want to move the message to a different folder, just select it again and right click on the proper destination folder. If you don't want to move it at all, then "Unmark" the message.
Link
Similar to move, except that the message is linked into the other folder so that it appears in both places. While this appears like a copy, the same message is shared between the folders to save disk space.
Reply...
This is a menu of reply options. By default there are two choices, but you can easily define more variations on reply. The default choices are:
Reply to sender <Key-r>
Reply to the current message, only to the person that send the original. Also keystroke 'r'.
Reply all <Key-R>
Reply to the current message, including on the cc line everyone that got the original message. (It invokes MH repl with: -cc cc -cc to). Also keystroke 'R'.
Reply help
This pops up a display that tells you how to program new reply buttons. You'll need to be familiar with the MH repl command and its filters. Check out the repl and mh-format manual pages.
More...
This is a menu of more message operations.
Print
Print the current message, or the selected set of messages. The print command is defined via the Preferences dialog. The whole message is printed, headers and all.
Unmark (Undo)
Cancel a move or delete mark on the selected message(s). Also keystroke 'u'.
Clip
Display a new toplevel window containing the current message.
First Unseen
Display the first unseen message, if any. Also keystroke 'U'.
Burst Digest
Use the MH burst command to split up a digest message into its individual messages. In addition, the new messages are added to the unseen sequence. You can control whether or not the orignal message is replaced with just the digest header by specifying burst options in your .mh_profile. (E.g., "burst: -inplace").
Redistribute
This uses the MH dist command to resend a message to a different recipient. Your editor is invoked with a small buffer containing only Resent-To: and Resent-Cc: lines.
Save to file
This simply copies the current message(s) to a file selected via the file selector dialog.
Use message as draft
This copies the current message into the drafts folder and opens your editor on the message.
Edit message
This opens your editor on the message so that you can annotate it.
uudecode message
This simple runs uudecode with the current message as input. A file selection dialog lets you choose the name of the resulting file.
Print postscript content
This is useful for non-MIME messages that contain a postscript file. The message body (everything from the initial %!PS onwards) is put into a temp file and then the Preferences Postscript Print Command is used to print that file.
Apply command to message
This runs a UNIX command over the current message (all of it). A dialog lets you set the command, with occurrences of $file replaced with the pathname of the message. The default value of the UNIX command is hiding under the Print preferences entry.
Apply command to body
This runs a UNIX command over a temporary file containing the body of the current message.
Mark Unseen
This puts the current message(s) back into the unseen sequence.
PGP Encrypt
Replace the current message with an encrypted version of it.
old PGP...
This is a menu of operations that apply to PGP messages that are not wrapped up in a MIME format. Those are handled automatically. This menu is used to tell exmh explicitly what to do. You can Decrypt, View, or Extract Keys.
Scan for URLs
Scan through the message body and look for URL and URN references. If any are found, they are highlighted and made into active text. Click on the text and Mosaic will be started on that URI. You can set the command to use via the URI preferences section. Also keystroke 'z'.
View selected URL
If you have manually selected an embedded URL, then use this menu entry to get exmh to ask your web browser to display the selected URL. If the automatic scanning doesn't work perfectly, you can do a manual selection on top of an incorrect active text button.
Concatenate partial messages
If you get a message in parts, as a MIME type message/partial, then select all the messages that have the parts and invoke this operation.
Automatic Refile
Choose a folder for the current message based on the from address.
Post this message to a Newsgroup
Post a copy of the current message to a newsgroup. You'll be prompted for what group.

SEDIT

The built-in editor, sedit, has a dozen or so commonly used editing operations bound to keystrokes. These are Emacs-like, but you can change them from within the editor through the "Simple Edit" dialog available under the main "Bindings" menu. In addition, the editor has a number of buttons and menu entries used to manipulate your draft messages.
Abort
This deletes the draft message and removes the editor window.
Save&Quit
This will save the message and quit the editor window. The idea is that you will come back to the draft via the drafts folder later.
Help
This button brings up a window with a short explanation of the editor.
Quote
This is only active while you are replying to a message. When you are replying to a message, the file named "@" is a symbolic link to the message to which you are replying. When this file is inserted, it is formatted a bit, unlike the Insert File... operation. The mail headers are stripped off, quoted-printable text is decoded so you get 8-bit characters in the edit buffer, and each line is prefixed with a short string to distinguish the inserted lines. You can set this prefix via an Xresource, replPrefix. The default prefix is "> ". If you want to change this and still have trailing blanks, it turns out this works ok. The resource value seems to begin with the first non-blank character, but then extends all the way to the newline character.
Sign
This appends your ~/.signature file to the draft. If this file is instead an executable script or program, it is executed in order to generate the signature.
Sign...
If you have multiple files that match the ~/.signature* pattern, the Sign button is replaced with a menu of possibilities. If you choose the autoSign Simple Editor Preference, then this menu is used to choose which signature file (or program) is used when automatically signing the message as it gets posted.
Send
When you are done with the message, click Send. This is also bound to the keystroke <Control-c><Control-c>.
Text...
This menu is used to add bold, italic, underline, etc. to your messages. This results in a MIME message of type text/enriched. The formatting commands are supposed to be palatable to a non-MIME reader, but you may want to take this into consideration. If you disable the "Format mail" setting (described below), the looks are discarded before sending the message.
More...
This menu contains a few entries for less common operations. They are:
Keep on send
This is a checkbox menu item that is off (un-highlighted) by default. If selected it prevents the editor window from disappearing after you send or abort a message. This is useful if you'd like to compose a few similar messges. (I also use it to debug the enriched text formatter.)
Format mail
This is a submenu of formatting options. The first three options are mutually eclusive and determine when and how the text in your message is formatted to fit into standard lenght lines. The choices are:
No Line Breaking
Don't do any formatting at anytime.
Line Break at Send
Post process the message after you hit the send button to break long lines.
Line Break when Typing.
At each keystroke check to see if the current line is too long, wrapping it if necessary. If you use this then you should know about the "format" command that reformats a paragraph. By default, that is bound to <Meta-q>
Attempt mhn
If this is selected, your message is run through mhn in order to expand any # directives that format a MIME mesage. See also the "Run mhn now" menu entry below, and see the mhn man page for details.
Quote Printable
If this is selected, then any text MIME parts are run through the quoted-printable encoder to wrap up 8-bit characters in a 7-bit safe encoding. The Quoted Printable default preference setting under Simple Editor can be set to automatic, never, or always. In automatic mode, quoting is enabled when you enter a Compose key sequence to generate an 8-bit character.
Run mhn nowThis processes the message assuming you have mhn directives, and then lets you edit the result.
Cite Selection
This formats and inserts the current selection. It is assumed to be in the currently displayed mail message, and the sender of that message is identified before the formatted text. Hint: this is the only useful way to include text from PGP encryped messages and text/enriched messages. The formatting of text/enriched is lost, however.
Attachment
This is a menu of attachment options.
Attach File...
This brings up a dialog box that lets you attach a file using MIME. It tries to determine the type of the file based on nametemplate entries in the metamail mailcap description file. It presents a dialog that lets you override the type, add a Content-Description, and choose an encoding for the file. When you attach the first Part of a message you are asked whether or not to save the existing message body. If you save it, it becomes the text/plain first part of the multipart message.
Insert File...
This simply inserts a file at the current insert point.
Attach Reference...
This sets up an Message/External-Body MIME message part. This is useful for sending around pointers to files available via FTP or on your local file system.
Attatch PGP Keys...
Insert your PGP keys into the mail message. You can use the key selector to choose any key in your public keyring. Just type in a pattern that matches part of the key ID. Matching keys are displayed in the listbox.
Whom
This entry displays a small window with the network addresses of the recipients of the message. Clicking the button a second time makes the window go away.
Spell...
This runs either the UNIX spell or ispell command. Choose between these two options in the Simple Editor preferences. (Don't confuse that with the setting under Editor Support preferences.) If you use ispell then the draft is reloaded after ispell terminates. If you use spell then the output of spell is put into a second pane inside the editor window. That's all - nothing fancy.
Find SEL
This searches the draft for the current X selection. The intent is that you select mispelled words in the output of the spell command and use this menu entry to locate them in the draft. (The find and keybinding mechanisms were stressed by this addition - expect a cleanup someday. There is no reasonable way to define keystroke accellerators for the find and still be able to change them in the Bind dialog. - don't ask...).
Save Buffer
This saves the editor buffer into a file in your drafts folder. Most likely you really want the "Keep on Send" function instead of Save, because that function preserves the draft after you send it, while ordinarily (in spite of "Save") MH will rename the draft after you send it.
Mime Preview
This displays the message as it will appear when an exmh user receives it. A detached top-level window is used, as with message Clip.
Alternate Editor
Save the draft and invoke your alternate editor on the message. Define the alternate under the Editor Support preferences..
PGP...
This is a menu of options that use the Pretty Good Privacy package to to encryption and authentication. An explaination of pgp is beyond the scope of this manual. This works by inserting a header into your message that indicates what action to do. The actual encryption or whatever is done after you hit the Send button. If you use an external editor you can insert the headers in that, and exmh will run your message through PGP for you when you send it. The four supported headers are:
pgp-action: signclear pgp-action: signbinary pgp-action: encrypt pgp-action: encryptsign

SEE ALSO

exmh-use, exmh, exmh-custom, mh

AUTHOR

welch@acm.org "Brent Welch"

THANKS

To Xerox PARC/CSL, for supporting this work initially, to Sun Microsystems Laboratories for continuing the support, and to all the exmh users that contributed ideas and code.
[ exmh | software | intro | faq | basics | guide ]