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.2 93/07/26 12:31:05 svoboda # Fixed paging and indent bugs # # Revision 2.1 93/07/25 15:22:39 svoboda # Made embedding easier, added indent function # # 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