home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume18 / mush6.4 / part01 / README-6.4 < prev    next >
Text File  |  1989-03-12  |  16KB  |  373 lines

  1.  
  2. New features/bug fixes to Mail User's Shell (Mush) since version 6.3:
  3.  
  4. For general information about mush, comments, bug reports, etc:
  5.     Dan Heller <island!argv@sun.com>
  6. Extra special thanx to Bart Schaefer <schaefer@ogccse.ogc.edu>
  7. for his help in fixing some bugs, and adding some new features.
  8.  
  9. Thanx to Marc Rouleau <mer6g@virginia.acc.virginia.edu> for his
  10. work on providing MMDF support.
  11.  
  12. The main README has been rewritten to be more easily read.  someday,
  13. this will be mostly replaced by a Configure file once I figure out
  14. Metaconfig :-).
  15.  
  16. Several "rc" files for demonstrating sample user configuration environments
  17. are provided.  Each are documented, but the man page does not reference them.
  18.  
  19. The person responsible for the changes are indicated in []'s.
  20. =========
  21. A new command line option, -m mailbox-path, can reset the value of your
  22. main (system) mailbox.  Mush will treat this new mailbox as if it were
  23. your /usr/spool/mail/$USER file.  Read the man page to understand all
  24. the implications of this.
  25. [Dan Heller]
  26. ---------
  27. The variables, autosign2 and fortunates now take a new style of
  28. addresses to specify an alternate signature or "fortune" program
  29. appendatures.  One side effect of this is that you can have a "local"
  30. signature and a remote signature simply by specifying "!hostname"
  31. in your autosign2 variable.  (hostname is the name of your local
  32. host).  The old format is still supported, but the new syntax supports
  33. some new funtionality.  I set mine to:
  34.  
  35.     set autosign2 = "!island @berkeley.edu @mit.edu *schaefer root: \--dan"
  36.  
  37. This means that any mail I send to 1) anyone at island, 2) anyone at
  38. berkeley, 3) anyone at mit, 4) bart shcaefer, wherever he may be,
  39. and 4) root on my local machine only (this includes root@my-machine-name)
  40. will be signed  by my "alternate" signature.  If any address on the
  41. recipient list fails to satisfy these four matches, the mail will be
  42. signed by my regular signature.  More precisely, the syntax is:
  43.  
  44. The list of recipients, after alias expansion and comment removal, is
  45. then scanned and the following patterns are matched against those addresses
  46. specified in the autosign2 or fortunates variable according to these rules.
  47.  
  48.     user *user !host !path!name @dom.ain host!user
  49.  
  50. user    the user is on the local host only.  user!localhost will also match.
  51. *user    the address matches regardless of the path to the user.
  52.     includes: user, user@host1, host2!user, ...!path!user
  53. !host    matches any user who resides on the specified host.
  54.     includes: ...!foo!bar!host!user
  55. !host1!host2  just like above, but path is more specific:
  56.     includes: ...!foo!bar!host1!host2!user
  57. @dom.ain  matches any user whose destination host lies within the domain.
  58.     includes: ...!host.dom.ain.etc!user
  59. [Dan Heller]
  60. ---------
  61. Variable modifiers :t and :h are now supported.  If a variable expands
  62. to a filename, the head of the path (up to the filename itself) is
  63. returned for :h, and the title of the path (filename itself) is returned
  64. for :t.  Thus, you could set your prompt:
  65.     a fo 'fo \!*; set prompt = "! [$thisfolder:t] "'
  66. Whenever you change folders, your prompt will tell you the name
  67. of the folder you're in.
  68. [Bart Schaefer]
  69. ---------
  70. The alternates command (alts) now supports the added feature of
  71. alternate login names as well as paths to login names.  If you
  72. have another login name on the local machine or on a remote machine,
  73. specify this in the alts command as "!login" or "!path!to!login"
  74. The point is, precede the login name or path by a !.
  75. [Dan Heller]
  76. ---------
  77. If someone else updates your folder while you're in it, mush will
  78. immediately modify your folder to reflect the current version of
  79. the folder.  You would therefore lose any changes you made, so be
  80. sure that no one else uses the same folder you do while you're
  81. using it.
  82. [Dan Heller]
  83. ---------
  84. Arguments to mush may be "clumped" together when appropriate... Like
  85. % mush -CS
  86. Also, there are now long names for arguments... such as
  87. % mush -shell -curses
  88. Finally, it is now possible to specify blind-carbon recipients on the
  89. command line, with the -b (-blind) option.
  90. [Bart Schaefer]
  91. ---------
  92. Command parsing has been improved.  Notably, handling of commands appearing
  93. to the right of `|' or `;' separators has been made uniform with that for
  94. commands at the beginning of a line.  Variable expansions in commands to the
  95. right of a `;' now take place _after_ the command to the left has been run.
  96. Quoting of separators (e.g. '|' or ";") also works properly, but you still
  97. can't generate null arguments with empty quotes (sigh).
  98. This now allows you to do things like:
  99.     cmd cd 'cd \!*; set prompt = "[$cwd] "'
  100. whereas it didn't used to before.
  101.  
  102. Also, message lists are now separated only from command names to the left,
  103. not from other strings to the right.  This means that
  104.     save 3 ../msg_three
  105. will save message 3 in the file "msg_three" in the parent directory, rather
  106. than attempting to save messages 3 and the current message in "/msg_three".
  107. Similarly, a command like
  108.     write12somefile
  109. will be parsed as "write 12somefile" and will therefore save the current
  110. message in "12somefile" in the current directory.
  111. [Bart Schaefer]
  112. ---------
  113. The tilde-escapes, ~c and ~b now work like ~t in that they append addresses
  114. specified on the tilde line:
  115.     ~c root
  116. will append the user root rather than replace the entire Cc list.
  117. [Dan Heller]
  118. ---------
  119. When replying to multiple messages, all the messages will be replied to
  120. at once rather than one at a time as it was before.
  121.     reply 2 4 6 -i 6 8
  122. will reply to all the authors of messages 2 4 and 6 and include in the
  123. text of the message the contents of messages 6 and 8.
  124. [Dan Heller]
  125. ---------
  126. When appropriate, the terminal settings for erase, word erase, line kill,
  127. etc. special characters are now examined BEFORE the mush defaults, so
  128. conflicts will now be resolved in favor of the stty settings.  For example,
  129. this allows the delete character (\177, ^?) to be defined as line kill;
  130. previously, mush would have interpreted ^? as character erase.
  131. [Bart Schaefer]
  132. ---------
  133. You can now save a list of messages in a variable by piping mush
  134. commands to the "set" command.  For example,
  135.  
  136. mush> pick -f argv | set argv_msgs
  137.  
  138. The variable $argv_msgs will be a string which can be used as the
  139. msg_list argument to other commands.  So you can type: save $argv_msgs
  140. [Dan Heller]
  141. ---------
  142. variable testing can be done via "$?variable" --if the variable
  143. is set, then the string "1" is returned.  Otherwise, "0" is.
  144. [Dan Heller]
  145. ---------
  146. If-else-endif statements in the initialization file can now be nested.
  147. They also understand the $?variable syntax, e.g.,
  148.     if ! $?autoedit
  149.     set wrapcolumn=75
  150.     else
  151.     if ! $?editor
  152.         set editor=/usr/local/bin/emacs
  153.     endif
  154.     endif
  155. Note that there is no "elseif" syntax, and the "else" must still be on
  156. a line by itself.
  157. [Bart Schaefer]
  158. ---------
  159. A new variable $thisfolder has been added.  Its value is the full path name
  160. of the current folder.  $thisfolder cannot be changed by the "set" command.
  161. Instead, it changes automatically whenever a new folder is entered.  For
  162. example,
  163.     cmd fo 'folder \!*; set prompt="$thisfolder "'
  164.  
  165. When initialization files are read (before a folder has been loaded),
  166. $thisfolder is not set, so $?thisfolder can be used in a test around
  167. other commands that manipulate messages.  Example:
  168.     if $?thisfolder
  169.     sort -d
  170.     pick -f argv | save +argv_msgs | d
  171.     endif
  172. [Bart Schaefer]
  173. ---------
  174. The new variable $curses_help may be set to a list of curses command names.
  175. The key bindings for the commands in this list will be displayed in a menu
  176. format on the last few lines of the curses screen.  If $curses_help is set,
  177. but not to a value, then a default list of commands is used.  See the file
  178. config.h-dist for the default menu.  Note that the commands listed in this
  179. variable should be separated by spaces or tabs, not commas.
  180. [Bart Schaefer]
  181. ---------
  182. Linewrapping in composition mode is available through a new
  183. variable, $wrapcolumn; set it to the last column in which you want
  184. characters to appear.
  185. [Bart Schaefer]
  186. ---------
  187. Macros ala vi are now available in three flavors: curses, line mode,
  188. and composition mode.  See new commands, below.
  189. [Bart Schaefer, Dan Heller]
  190. ---------
  191. Support for MMDF and for system mailboxes kept in each user's home
  192. directory have been added.  #define MMDF and/or HOMEMAIL in config.h.
  193. [Marc Rouleau]
  194. =========
  195.  
  196. New commands and command options:
  197. =========
  198. A new command, edit, has been introduced to allow you to edit
  199. messages.  See the man page, but it's pretty straightforward.
  200. [Dan Heller]
  201. ---------
  202. The command, pipe, allows you to invoke unix commands with
  203. message text as standard input.  For example,
  204.  
  205. mush> pipe patch
  206.  
  207. sends the current message to "patch".  See the man page for details.
  208. [Bart Schaefer & Dan Heller, instigated by Marc Rouleau]
  209. ---------
  210. The write/save/copy commands now have the options -a and -s.  This
  211. means, save the message according to the author or subject (respectively).
  212. So, if you type "save -s" and the subject of the message was "READ ME"
  213. then the message will be saved in a file called "READ_ME".  Note that
  214. spaces and slashes are converted to underscores.
  215.  
  216. A directory name may be specified:
  217.  
  218. mush> save -a $folder
  219.  
  220. Then mush will save the current message to the file described by the
  221. author of the message's login name in your folder directory.
  222. [Dan Heller]
  223. ---------
  224. The mail/reply/replyall commands now have options -b and -c to specify
  225. blind-carbon and carbon-copy recipients.  These are most useful in
  226. conjunction with the -f option, because forwarding does not allow the
  227. use of the ~c and ~b escapes (unless the -e option was given).
  228. [Bart Schaefer]
  229. ---------
  230. The -f option to mail now forwards mail in such a way as to retain all
  231. the original headers of the message -- "Resent-" fields are added by
  232. mush according to RFC822.  Note that this makes "replying" to messages
  233. that have been forwarded potentially tricky.  The reply_to_hdr variable
  234. may specify headers to build a reply-path, yet the headers may be
  235. inconsistent from message to message.  It is advised to set reply_to_hdr
  236. to be "From:" when trying to reply to forwarded messages to heighten the
  237. probability of a correct return address to the _original_ author.  Otherwise,
  238. the return address will probably be that of the forwarder.
  239. [Dan Heller]
  240. ---------
  241. The previously undocumented "flags" command has become documented and
  242. has picked up some new options.  See the man page for details.
  243. [Dan Heller]
  244. ---------
  245. A new command "eval" has been added, analogous to the sh and csh "eval".
  246. [Bart Schaefer]
  247. ---------
  248. Commands bind-macro, map, and map! have been added for creating macros.
  249. See the descriptions of these commands in the man page, and the new man
  250. page section on MACROS.  New curses functions for each of these have
  251. also been created.  Currently, the unmap and unmap! commands can only be
  252. used from line mode; "unbind" will remove curses mode macros.
  253. [Dan Heller, Bart Schaefer]
  254. ---------
  255. Another new variable, $nonobang, lets you turn off those annoying
  256. "event not found" messages without shutting history off altogether.
  257. When nonobang is set, failed history references simply do not expand;
  258. the effect is similar to csh's "nonomatch" for filename expansions.
  259. [Bart Schaefer]
  260. ---------
  261. The undigest command disassembles digests into the set of messages which
  262. comprises it.  The -m option will merge these messages into the current
  263. folder.  Otherwise, if a filename is specified, a new folder is created
  264. and the user can change folders to read the messages separately.
  265. If a message list is specified, each digest is disassembled to the same
  266. filename (if given).  If no filename is given and the user did not request
  267. a merge, then a temporary file is made.
  268. [Dan Heller, Bart Schaefer]
  269. ---------
  270. dead.letter is now saved in mbox format.
  271. [Dan Heller]
  272. ---------
  273. uucp-style mbox formats with From uucp and >From lines are now collapsed
  274. into the "correct" From line format.  All the >From lines are removed
  275. and the mailbox is stored in the format permenantly.  This does not apply
  276. to read-only folders.
  277. [Dan Heller]
  278. =========
  279.  
  280. Changes to old commands/functions/variables:
  281. =========
  282. Curses functions referenced by the "bind" command no longer have two-word
  283. names.  "delete list", "mail flags", etc. have been replaced by hyphenated
  284. commands "delete-list", "mail-flags", etc.  The "search" commands have
  285. changed from "search down" to "search-back", "search up" to "search-next"
  286. and "search cont" to "search-again", to avoid confusion with "up" and "down"
  287. referring to message number rather than to screen direction.  "show hdr" is
  288. no longer a recognized name.
  289. [Bart Schaefer, Dan Heller]
  290. ---------
  291. The show_deleted variable now controls whether or you you can display
  292. deleted messages in addition to whether to display their headers for a
  293. headers command.  All other mush commands affect all messages regardless
  294. of whether or not they are deleted.  Commands that wish to not affect
  295. deleted messages should prepend the command with "* {`:d`} |"
  296. [Dan Heller]
  297. ---------
  298. The "screen-back" curses function (default 'Z') now places the current
  299. message at the bottom of the screen instead of the top.  Both the
  300. "screen-back" and "screen-next" (default 'z') commands will leave the
  301. current message unchanged if it is still visible on the new screen.
  302. [Bart Schaefer]
  303. ---------
  304. The "next-msg" curses function (default 'j') will now scroll downward
  305. from the bottom of the page whenever there are blank lines available
  306. on the screen.  It stops when the last message or the bottom of the
  307. screen is reached.
  308. [Dan Heller]
  309. ---------
  310. The "saveopts" command now saves all bindings and macros, as well as
  311. variable settings, aliases, etc.  Note that this also saves the system
  312. defaults, too.  Using saveopts will probably create very large .mushrc
  313. files.
  314. [Bart Schaefer]
  315. ---------
  316. echo now understands -h and -p flags.  When -h is used, the arguments
  317. are treated as if you changed your header format to the argument(s) and
  318. the current message header is printed using those formatting args.  The
  319. -p flag is as if you changed your prompt to the given arguments.  This
  320. allows the user to do things like:
  321.     echo -h This message is from %n and was dated on %d.
  322.     echo -p There are %u unread messages in folder %f.
  323. [Dan Heller]
  324. ---------
  325. reply_to_hdr now understands From_ to mean the colon-less From line.
  326. Now, you can say:
  327.     set reply_to_hdr = "reply-to, return-path, sender, from_"
  328. previously, you could only specify the From_ header by setting
  329. reply_to_hdr to a null value.  Also, regardless of which header
  330. the return path is gotten from, the "name" is always taken from
  331. the From: header if it exists.  The result is a To: line which
  332. contains the user's name and address.
  333. [Dan Heller]
  334. ---------
  335. While composing a message, if new mail arrives, then you will be
  336. notified accordingly and you may continue composing your letter.
  337. This does not happen if you are in an editor.  This is not a feature
  338. which can be turned off.
  339. [Dan Heller]
  340. ---------
  341. The day-of-week formatting parameter for the prompt formatting
  342. string and the header formatting string ("prompt" and "hdr_format")
  343. has changed from %D to %W altho the old method is still supported
  344. even tho it's not documented.
  345. [Dan Heller]
  346. ---------
  347. A new formatting parameter for hdr_format: %i produces the message-id
  348. of the message in question.  This is a header not produced by OLD_MAILER
  349. type MTA's.
  350. [Dan Heller]
  351. ---------
  352. config.h --a new macro HDRSIZ is available to redefine how large a
  353. mail message header can be.  This was based on the fact that some
  354. systems' BUFSIZ is not very large and that some To: headers can
  355. exceed that size.  This resulted in a truncated reply list.  HDRSIZ
  356. is defined to be BUFSIZ by default.  It should *not* be redefined
  357. to a value less than BUFSIZ, but it can be increased.
  358. [Dan Heller]
  359. ---------
  360. MAX_HOST_NAMES define has gone away in config.h -- there is no more
  361. limit on hostnames that your host can be called.  By default, the
  362. hostname is the legal hostname the system thinks it is, and the
  363. rest of the names are set by various other sources.  The user can
  364. add to or override these names at any time.
  365. [Dan Heller]
  366. ---------
  367. makefile.x386 and makefile.x286 have gone away and replaced by
  368. makefile.xenix.  See the README and the makefile itself if you
  369. run xenix.
  370. [Dan Heller]
  371. =========
  372.  
  373.