|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T v
Length: 23663 (0x5c6f) Types: TextFile Names: »vmh.1«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦e7f64e0c0⟧ »EurOpenD3/mail/vmh.tar.Z« └─⟦dcb95597f⟧ └─⟦this⟧ »doc/vmh.1«
.TH VMH PUBLIC .SH NAME vmh \- Visual MH .SH SYNOPSIS .HP .I vmh .RI [ \-[no]autoclear ] .RI [ \-[no]autoprint ] .RI [ \-[no]biff ] .RI [ "\-goodbye message" ] .RI [ \-nogoodbye ] .RI [ "\-ignore hdr,hdr,..." ] .RI [ "\-retain hdr,hdr,..." ] .RI [ \-[no]page ] .RI [ "\-scanwindow size" ] .RI [ "\-sequence seq-name" ] .RI [ \-[no]terse ] .RI [ \-help ] .RI [ \-[no]autoinc ] .RI [ \-[n]debug ] .RI [ "\-mailcheck time" ] .RI [ "\-scanformat string" ] .RI [ \-noscanformat ] .RI [ folder ] .SH DESCRIPTION .PP .I Vmh is a reasonably friendly, visually-oriented front-end for the .I MH system. The fact that such a front-end completely destroys one of the primary design goals of the .I MH system should not bother the user in the least, as it never bothered the author. .I Vmh is based on a program called .I HM which was written by Jim Guyton, to whom the author is duly grateful. .I Vmh provides the user with the full message handling capabilities of the .I MH system, but makes them much easier to use. Commands are usually only one character, with a few of them being two because of conflicts. .PP When .I vmh is invoked, the user is presented with several windows: .IP 1) a window into the folder which shows the user a certain number of the message in the folder. The format of the display is dictated by the value given for the .I \-scanformat string. .IP 2) a status window, which gives the current folder name, number of messages in the folder, the number of messages after the current one, the current time and whether the user has new mail or not. .IP 3) An all-purpose display window where messages and shell command output will be printed. .IP 4) An input window where extra input will be gathered and where most error messages are displayed. .SH SWITCHES .IP "\-[no]autoclear\c" When .I autoclear is set, the bottom window will be cleared upon return from any function which used the entire terminal screen and when reentering .I vmh after suspending it. This will occur before the screen is refreshed and is useful (and is the default) when the terminal is running at or below 1200 baud. .IP "\-[no]autoprint\c" .I Autoprint will cause the next message to be printed after a deletion. I.e. if the cursor is on message 12 and you type `d', message 12 will be deleted and the next message (usually 13) will be printed in the bottom window. .IP "\-[no]biff\c" Biff is usually turned off while in .IR vmh , but it can be forced on by giving the .I \-biff switch. .IP "\-goodbye message\c" The message which is printed upon leaving .I vmh can be changed by means of this switch. Double quotes may be used to embed spaces in the message. .IP "\-nogoodbye\c" This turns off the printing of any message when leaving .IR vmh . .IP "\-ignore hdr,hdr,...\c" .I Ignore is followed by a comma-separated list of headers to be ignored when displaying a message in the bottom window. Any .I \-retain switches override this. .I \-ignore switches accumulate so many may be given when .I vmh is invoked. .IP "\-retain hdr,hdr,...\c" This is similar to .I \-ignore except that only those headers listed are kept when displaying the message. .IP "\-[no]page\c" If .I \-page is given, messages will be displayed in the bottom window in a manner similar to /usr/ucb/page, i.e. by clearing the window and continuing from the top line. Otherwise the messages are displayed as /usr/ucb/more would display them. Many of the commands which .I more accepts are also taken by .IR vmh . This includes the <cr> and `b' commands. .IP "\-scanwindow size\c" This sets the top window (where message summaries are displayed) to be .I size lines. In addition, .I size can be a fraction .RI ( not a real number) which is interpreted as a fraction of the screen to devote to this window. .IP "\-sequence seq-name\c" The given .I seq-name is used as the default sequence to use for the `pick' function. .IP "\-[no]terse\c" .I \-terse causes most prompts to be abbreviated, command expansions are only the letters typed, not the full name of the command, etc. Not all prompts respond to this switch at the moment, but they will. .I \-terse will also be the default for terminals operating at or below 1200 baud. .IP "\-help\c" This simply gives a list of the available switches, like any .I mh command. .IP "\-[no]autoinc\c" If .I \-autoinc is given, any new mail will be automatically incorporated when .I vmh is invoked. It is ignored at all other times. .IP "\-[n]debug\c" If .I vmh is compiled with debug functions, this will produce a file called DEBUG in the current directory filled with all sorts of interesting debug output. .IP "\-mailcheck time\c" The user's mailbox is usually checked every 15 seconds for new mail. This can be changed by using this switch. .I Time is a real number (not a fraction) which is interpreted as the number of seconds between checks. .IP "\-scanformat string\c" The argument of this switch controls the way messages are summarized in the topmost window. It is a string similar to that used by .IR printf (3), but using different `%' escapes. Any character which is not preceeded by a `%' is printed as-is. A double percent is printed as a single percent sign in the top window. A number may be given between the percent sign and the key character. In most cases, this is the field in which the number is printed (right justified) and in all cases it is the maximum number of characters printed for that field. In the table below, ``FWM'' stands for ``Field Width Meaning'' and takes one of three values based on how a fieldwidth specification is interpreted: .RS .IP 1) Both as the maximum number of characters to print and as the constant width of the field in which it is to be printed. If there are fewer characters than specified by the fieldwidth, the field is space-padded to the left in the case of numbers and to the right in the case of strings (e.g. the ``From'' field). .IP 2) The maximum number of characters to print, only. The field will not be space-padded if it is not long enough. .IP 3) Ignored. The field is only a single character and while it is not an error to specify a fieldwidth, it will be ignored. .RE The key characters and their meanings are as follows: .nf .ta \w'Character F'u \w'Character FWM 'u Character FWM Meaning U 3 A `>' if the message is unseen, a blank otherwise M 1 The message number. The default field width is 4. R 3 A `-' if the message has been replied to, a blank otherwise m 1 the month of the message (numeric) d 1 the day of the message (numeric) y 1 the year of the message. If the field is too small to fit the entire year number, only as many least significant digits as will fit are printed. s 1 the size of the message (in bytes). Field width defaults to 5. F 1 the return path (From field) of the message. If the message is from you, the word ``To:'' is printed before the To field of the message. S 2 The subject of the message. B 2 The body of the message. .fi .IP "\-noscanformat" The format for the upper window is returned to the default value of "%U%M%R %2m/%2d/%1y %16F %S <<%B>>". .SH COMMAND SYNTAX Commands are of the form: .sp 1 .ce [[-|+]count]\ {command} .sp 1 where .I count is a number of messages after the current one to which the .I command is to be applied. A `-' preceeding this count will have the expected effect. .PP Most commands take no arguments unless they are preceeded by a `:'. At this point, input is taken from the bottom line and again an optionally-count-proceeded command is accepted. Input is not echoed until a command has been recognized, at which point a full expansion (so long as -noterse is set) of the command is printed and the user is prompted for further input. The further input can be any of the following: .IP "messages" Numeric arguments which are not quoted and which are not preceeded by a plus or minus sign are assumed to be message numbers. If two message numbers are separated by a range operator (``..'' or `-'), the messages with numbers from the first to the second number, inclusive, are added to the list of messages passed to the command. .IP "sequences" A regular sequence name such as can be produced using .IR mark (1) or .IR pick (1) or the .I pick command in .I vmh may be given as an argument. All messages contained in that sequence are added to the list. In addition, all of the sequence operators which are valid for .I MH are valid for .IR vmh . Thus ``first:4'' means the first four messages, ``next:-4'' means the four messages before and including the next message, etc. .IP "arguments" If an argument is quoted, or evaluates to a null sequence, it is assumed to be an argument for the function itself, rather than messages for it. All arguments are put together and passed to the function. What it does with them is its own concern. .PP What follows is a description of the individual commands grouped by their actions. The characters which are described in each section are printed in the left margin. .SH SHELL ESCAPES .IP ", ! # " There are two sorts of shell escapes in .IR vmh : those which use the full screen and those which use only the bottom window. A full-screen shell escape is performed in response to the `#' character, while a half-screen escape may be had with either the `!' or the `,' characters. In either case you are prompted for a command and, if you actually give one, that command is executed by .IR csh (1). During a half-screen escape, all output from the command is taken by a paging routine and printed on the display window with proper pagination. .SH MANAGING THE SCREEN .IP "b B ^L ^R " There are three commands for handling the display: `B' is used to clear the bottom display window. `b' is used to blank the entire screen to prevent obnoxious people from reading over your shoulder and `^L' is used to redraw the screen in case it gets messed up somehow. .SH DISPLAYING MESSAGES .IP "t T " You can display messages with either `t' or `T'. `t' will print the current message in the bottom window and `T' prints it using the full screen. `T' uses the show program set in the profile (`showproc:') or environment ($SHOWPROC). If neither of these is set, it defaults to /usr/ucb/more. .SH COMPOSING MESSAGES .IP "c C " Two commands allow for the composing of messages, and neither of them take a .IR count . A `c' simply runs the .I MH .I comp command and executes immediately. A `C', on the other hand, will prompt for arguments to pass to the ``comp'' program. NOTE: These are not arguments which are passed to the compose .IR function , but are, in fact, given to .IR comp . Thus the arguments should be real switches which .I comp will accept. .SH EDITING MESSAGES .IP "e " If the `e' command is given, an editor will be invoked on the current message .IR only . The editor defaults to .IR vi , but may be changed using either the EDITOR envariable or the ``editor:'' .I MH profile entry. .SH FORWARDING MESSAGES .IP "f F " Messages are forwarded using one of the two versions of the letter `f.' A lower-case `f' will forward messages, invoking the .I MH forw command with just the message number. An upper-case `f' is like an upper-case `c' in that it will prompt the user for further arguments to pass to .IR forw . Again, note that these arguments should be actual switches for the .I forw command. If more than one message is given to the `f' command, all those messages will be forwarded .IR together . .SH GRIPES .IP "y " Gripes, suggestions, bug reports and (god forbid) core dump reports may be sent to the author using the `y' (yell) command. This command will invoke /usr/ucb/Mail using the version number of the program as the subject. When you have finished with your gripe, a line with a single dot or an EOT will send the letter and you will be brought back to .IR vmh 's command level. .SH GETTING HELP .IP "? h H " Help may be obtained by typing any of `h', `?', and `H'. The first two will display the help file in the bottom window (using proper pagination, of course) while the last one will invoke /usr/ucb/more to display the help file using the entire screen. .SH INCORPORATING NEW MAIL .IP "i " When new mail arrives in the user's mail box, ``*** New Mail ***'' is printed in the upper-left hand corner of the screen followed by a beep. To get this new mail, the user issues the `i' command. The .I MH inc program is invoked and the new messages incorporated into the folder. The first new message becomes the current message. .SH SWITCHING FOLDERS .IP "s " You can change folders using the `s' command (for ``switch,'' of course). It takes no further arguments and you will be prompted for a folder to switch to. If you decide you don't really wish to switch folders, your regular interrupt character (usually ^C) will abort the switch (this is generally true for any command which prompts for further input). A much more convenient mechanism for switching folders is the .I folder stack which is described in the next section. .SH THE FOLDER STACK .IP "p P S " The folder stack is manipulated by, you guessed it, three commands. .I p is used to push a folder onto the stack. .I P is used to remove one and .I S is used to list the current stack. The folder stack is displayed after each successful push or pop. If the .I p command is preceeded by a number, .IR n , then the .IR n th folder on the stack is brought to the fore, with everything above it being slid down one. If the .I P command is preceeded by a number, .IR n , then the .IR n th folder in the stack is removed from it and the entries below it move up one. The stack is a very useful tool and should be used when possible. .SH REPLYING TO MESSAGES .IP "r R " Replying to messages can be accomplished in a manner similar to the way one forwards messages, except the key letter is `r.' A lower-case `r' replies to the current message, and an upper-case `r' prompts for arguments to the .I MH repl command .SH MOVING THE CURSOR .IP "k ^P j ^N <ESC>v ^K ^V ^J <ESC>. <ESC>, <ESC>< <ESC>> " The current message is denoted in the message window by a `+' in the left-most column of its summary line. This cursor can be moved using several sets of keys. For those who use .I vi or .I emacs or who play .IR rogue , these controls should be familiar. To move the cursor up, one of `k', `^P' or the terminal's `up-arrow' key can be used. To move it down, `j', `^N' or the terminal's `down-arrow' key. The keys `^K', `<ESC>V' and the terminal's `left-arrow' keys all shift the cursor back one entire page (the number of messages displayed in the folder-display window), while the keys `^J', `^V' and the terminal's `right-arrow' keys all shift the cursor forward one page. The sequence `<ESC>.' goes to the bottom of the window while the sequence `<ESC>,' goes to the top. `<ESC><' may be used to go to the beginning of the folder, and `<ESC>>' gets you to the end. Note that `<ESC>' is simply the escape key. .SH PICK .IP "/ " The .I pick function is invoked by typing the `/' character. No message numbers are looked for and any count given is ignored. The pick command consists of combinations of keywords and arguments. The following keywords are possible (the number and type of argument follow the keyword): .sp 1 .RS 10n .ta \w'subject 'u .nf keyword args ------- ---- from string to string cc string subject string date string other string1 string2 search string after date before date seq sequence-name do command or and .sp 1 .RE .fi .DT The .IR string s must be actual strings, not regular expressions. This lack can be overcome using the .I or and .I and keywords. .IR From , .IR to , .IR cc , .IR date , and .I subject are pretty much self-explanatory: they select the message based on finding the given pattern in that header. e.g. `from John' will select any message which has the string ``John'' in its `From:' header. .I Search will look for the given .I string everywhere in the letter, instead of just the header. .I Other is used to search for some header other than the ones already given. Thus, ``other query how'' will look for all messages which have a ``query'' header (the search for header names is case-insensitive) and check to see if the message has the string ``how'' in it. This search and all searches for actual content are semi-case-sensitive: a lower case letter will match either an upper- or lower-case letter, while an upper-case letter will match .I only an upper-case letter. .I After and .I before may be used to bracket the date of an acceptable letter. These functions are unimplemented because the author has yet to figure out a quick way to implement it without actually invoking the .I MH pick command. Any suggestions would be welcome. The .I seq keyword, followed by a sequence name, will put the selected messages in that sequence for later use in a command. If no .I seq keyword is encountered during the execution of the .I pick command, the message numbers are placed in a sequence called .I Select unless the .I \-sequence switch was given. .IR Do , when followed by a command causes that command to be executed when the .I pick command has finished. The command should be in the standard .I vmh form. This doesn't always work, so beware. .I And and .I or are, as yet, ineffective. In fact, all .IR pick s are performed as if each keyword were separated by .IR or s. This is not the way it should be and it is not the way it will end up being, but it can be useful in its own way. .SH MOVING MESSAGES .IP "d l m " Messages can be moved into another folder with one of two commands: `d' will move messages into a folder called ``deleted'' while `m' will actually move the message into the prompted-for folder. `l' will simply make a copy of the message (by \fl\fRinking it there) in the prompted-for folder. .SH MARKS .IP "M ' " A marking mechanism similar to .IR vi 's has been installed in .IR vmh . Twenty-seven marks exist for each folder, one being referenced by each of the lowercase letters and one by the apostrophe character. The first twenty-six are user-settable, by means of the `M' command, while the apostrophe mark is set whenever a non-relative cursor motion is done in a folder (e.g. home, go, top of folder or that performed by the inc command). Marks may also be given in place of message numbers, when entering a command with arguments, in the same manner as in .IR vi , i.e. by prefacing the mark name with an apostrophe character. So ``'a-'b'' is the range of messages between the marks `a' and `b' inclusive. If either of these marks is undefined, an error is generated and the command aborted. .SH MISCELLANEOUS COMMANDS .IP "$ g G u U x K " There are several commands available which don't really fit into any of the above categories, at least, they don't fit comfortably. They are: .IP `$' .I $ is used simply to alter the values of switches after .I vmh is running. It accepts all the switches (except help and scanwindow) which .I vmh takes from the command shell. .IP `g' Should be preceeded by a .I count which is then taken to be a message number to which to move. If the message number doesn't actually exist, the next highest, existing message is moved to. A zero (0) count will move to the beginning of the folder. .IP `G' operates in the same way as `g' except that a 0 count moves to the end of the folder. .IP `u' `u' is used to unsee a message, for those people who actually care about such things. .IP `U' This will undo the previous undoable command. It will not let you undo such things as compose or type, but it will let you undo a deletion or a move or things of that ilk. .IP `x' Expunges deleted messages. Since when you delete a message it is merely moved to another folder, it is usually desirable to actually get rid of the messages every now and again. This command does just that, removing all messages in the ``deleted'' folder. .IP `K' After many deletions, a folder becomes riddled with holes, causing messages to have ridiculously high numbers. This command ``packs'' a folder, making all the messages have consecutive numbers. It is the equivalent of ``folder -pack'' in the .I MH system. .IP "^A " In addition, one debugging command which can be useful is control-`a'. This displays the internal structure of the current folder, showing the lowest message number (m->lowmsg), the highest message number (m->hghmsg), the number of messages in the folder (m->nummsg), and a string of digits and `.'s, one for each possible message number, where a digit means the message exists and `.' means it doesn't (the digit is the one's digit of the message number). .SH PROFILE ENTRIES .PP .I Vmh follows the standard .I MH protocol of searching the profile for an entry for its invocation name. Any switches which follow this entry are processed as if they occurred at invocation time. In addition, the following standard .I MH profile entries are used. .IP "showproc" The value of this entry is taken as the program to run when you type `T'. .IP "editor " The editor to use for the `e' command. .IP "path " The path (from your home directory if not absolute) to your .I MH directory. .IP "folder-protect" The mode .I vmh uses if it needs to create a new folder. .IP "sequence-negation" if a sequence is preceeded by the string given in this entry, its negative is used rather than the sequence itself. .IP "context" the value of this entry is used as the path of the current context file in which the current folder is kept. .PP If MH6 was defined when .I vmh was compiled, then the following profile entries are also used: .IP "mh-sequences" the name of the file where public sequences are stored for each folder. .IP "unseen-sequence" the sequence to alter when a message is typed. .SH ENVIRONMENT VARIABLES .IP SHOWPROC Overrides any `showproc' profile entry. .IP EDITOR Overrides any `editor' profile entry. .IP TERM The terminal type. .IP MAILDROP If this envariable is set, the path in it is used as your mailbox. It must be absolute. .IP MH The absolute path of the user's .I MH profile. .PP If MH6 was defined then the following addition environment variables are sought: .IP MHCONTEXT the path of the current context file. .SH CONFIGURATION .PP .I Vmh will search along the user's path to find where its binary image is located. When it finds itself, it looks for a file which is its base invocation name with ``.conf'' appended to it. If this file exists, it is read to determine the configuration of the system. There are three (so far) valid keywords for the file. Each takes a single argument. They are: .IP helpfile the pathname of the helpfile. This defaults to /usr/lib/hm.helpfile. .IP editor the default editor to use. It is overridden by the EDITOR envariable and editor: profile entry. It defaults to /usr/ucb/vi. .IP page the program to use when paging things (such as messages and helpfiles) in full-screen format. It defaults to /usr/ucb/page. .PP So if .I vmh resides in /usr/public and a file /usr/public/vmh.conf exists there and contains the lines: .RS helpfile /usr/public/lib/hm.helpfile .br editor /usr/ucb/ex .RE the various help commands will read the file /usr/public/lib/hm.helpfile and the edit command will use /usr/ucb/ex unless overridden by the user. An important thing to note is that this allows the user to specify a different configuration simply by creating a symbolic link to .I vmh in a directory earlier in his path and putting a configuration file in that directory. .SH FILES .ta \w'/usr/local/lib/vmh.helpfile 'u <folder>/.info summary files for each folder /usr/local/lib/vmh.helpfile the help file ..../vmh.conf the config file .DT .SH SEE ALSO mh(1) .SH AUTHOR Adam R. de Boor .SH BUGS Many.