Beth stands for Browsing & Editing Tcl Hypertool. This is not the type of
program you start up only once per login session. It is intended to be run in
multiple instances, and it also can be used as a 'slave' for other applications.
Multiple instances of Beth running simultaneously keep track of each other (via
Tk's send), and thus provide the same power and flexibility provided by
multi-buffer editors like emacs. Yet, as separate processes, each Beth instance
can be configured for special-purpose applications without disturbing the other
instances.

Beth is also a source-modular tool. Each source file adds a set of bindings; you
can extend Beth easily by adding new source bindings. Also you can extract
source code easily from Beth. For example, suppose you want to include
parentheses balancing in your Tk app, but you don't want all of Beth. If your
app uses a Text widget, all you need do is source the balancebind.tcl file, with
a few global variables set. This alleviates the problem of having to use
multiple editors because they have mutually exclusive features you need.


Installation
------------

After unpacking Beth, all you need do to start running it is edit the file
beth.tcl with your (soon-to-be-ex (-: )-favorite editor, and change the top line
to reflect the location of wish on your system. beth.tcl is the startup file,
you can then call it with your file to be edited and you're in business.

There is a simple shellscript titled beth which allows you to call beth.tcl with
multiple filenames; it calls beth once for each argument that isn't a
command-line switch. If you want to use this shellscript, you need to edit the
line that says "set beth=..." to reflect where Beth's source code is living on
your system. You can then copy beth to your favorite bin directory, though you
should not copy beth.tcl, since it figures out its location via the info script
command, and assumes its companion source files are in its own directory.

The 'HELP' file provides in-depth explanation of the functions and keybindings
provided by Beth, including a quick-reference chart.

If it exists, Beth sources the file $HOME/.beth, to provide arbitrary
configuration options, such as extra bindings, procedures, and options. A sample
.beth file is included in the startup (beth.tcl) section of the help file.


Change Log
----------
	$Log:	README,v $
# Revision 2.0  93/07/16  13:54:07  svoboda
# Added undo/word-traversal options
# 
# Revision 1.0  93/06/23  11:59:56  svoboda
# Beth is first released
# 


Copyright
---------

Copyright (c) 1993 by David Svoboda (svoboda@ece.cmu.edu)
Department of Electrical & Computer Engineering 
Carnegie Mellon
All rights reserved.

Permission is granted to use, modify, and distribute this software freely,
provided that thie copyright section appears in all copies of this software.
However, one may not charge for it or include it with software which is sold.

If Beth is embedded within a larger system, or if Beth cooperates with an
independent system via IPC or some variant thereof, that system is not covered
by this copyright, and may have a different copyright.

In no event shall Carnegie Mellon be liable to any party  for direct, indirect,
special, incidental, or consequential damages  arising out of the use of this
software and its documentation, even if Carnegie Mellon has been advised of the
possibility of such damage.


Bugs / Suggestions
------------------

Doubtless there will be bugs, or rather, 'features' you and I didn't count on.
Beth sets the Tk error mechanism to put the error into a dialog box, which is
(IMHO) much neater than spitting it out to your terminal. (Since Tk3.3 also puts
Tk errors in a dialog box, this feature will be removed at a later date.) You
generally should not encounter Tk errors while running Beth with no
modifications. If you get a reproduceable bug (i.e. one that occurs more than
once), mail the contents of the dialog window to me, along with what you were
doing, and, of course, the versions of Tk, Tcl, X, and your hardware and
software platforms. (You can, of course, get the tkerror contents by doing a
'send $interp {set errorInfo}' in another wish script.)

There are many things that can be added to Beth. (a few are mentioned in the
TODO file) Beth has been designed to allow you to extend it with your own
modules. It stores the name of the text widget in the global variable $text, the
frame widget messages appear in $frame, and the quit button is named
$quit_button. The easiest way to extend Beth is to write your own module using
these variables and source it in your .beth file. If you make any popular
extensions, I would like to hear about them; they might get incorporated in the
next version of Beth. I do not wish to weigh Beth down with features, but a
'Beth library' of optional modules might be a good idea in the future. The
textbind.tcl and balancebind.tcl modules are good examples of optional modules,
since beth.tcl does not load them, but rather they are loaded by your own .beth
file.

Send bug reports and suggestions to:
David Svoboda	svoboda@ece.cmu.edu
