
- Fixed bug in parenth.tcl when it was used before frame.tcl

- Fixed tag menu to be short, just like tag ranges menu.

- Fixed bug where TH /Elsbeth directory still was getting set as bin/../aux/../

*****Release of Elsbeth 1.0*****

- Fixed cth bug where formatted comment ending with solo */ on last line, when
reformatted gets */ moving up one line, making new last line too long.

- Fixed bug where X grid was not lined up with elsbeth's text region, Well,
it's not perfect (I doubt we can really handle every packing variation), but it
does the Right Thing more often.

- In text mode, Return no longer formats the paragraph it finishes, it merely
splits the line if it was super-long.

- Fixed some bugs in searcheth:
  - The incremental feature can be turned off now in Elsbeth like it should.
  - Case-insensitive searches now can have mixed-case in the search entry
  - The tag configurations for searched text and old-searched text always get
    properly displayed now.
  - When replacement is turned on, the search entry, which used to extend to
the length of the search string, now extends to the string length or 10,
whichever is less.

- Fixed bug where the tags menu counts tags with no text associated with them
when splitting themselves into submenus (even if textless tags are not to be
displayed)

- Elsbeth no longer keeps track of marks on files that no longer exist.

- Changed the buttons to menus. Now Help and Quit are under the Misc. menu. The
Teach button has been replaced by a menu, and various types of Teaching are
listed under the menu (they vary for different hypertools). The Source menu now
lives with the other menus, and they all live in a menubar on top of the
window. The output text now lives below the menubar, and the hypertool-specific
other stuff live below the output text.

- Makebeth starts up much faster now.

- There are options under the Change menu to let you specify a menubar to stick
menus in. Some hypertools also let you specify a frame for misc. other stuff,
when teaching other widgets. So they can create their own menubar and frame, or
use preexisting ones. They can even use the same widget as frame and menubar.

- Elsbeth (actually els) now lets you bring up windows inside the toplevel
window, instead of in separate toplevel windows. This provides a more 'layered'
outlook on the text widgets, which will look familiar to Emacs users. Various
commands, such as iconify and move, will do the right thing to text widgets in
the toplevel window. (This is an option, you can still leave each widget in a
toplevel window.)

- The gradual-reading facility elsbeth (actually els) provides has moved over
to fileth, so fileth now lets you add gradual reading to any tool, whether or
not it has the addinput extension (which makes gradual reading much more
convenient). Els and elsbeth are functionally unchanged.

- Fixed Elsbeth bug where moving windows made them unresizeable.

- Fixed Elsbeth bug where save-confirmation dialog would prevent the rest of a
read/save operation from finishing.

- Elsbeth now lets you switch All-AllPermanent with either All_Shown or
All_Windows keybinding.

- Fixed bug where Elsbeth's 'Make' command got corrupted if a file with the
word 'make' (such as Imakefile) was being edited.

- Elsbeth's make command now re-executes make if a Make window was already
existant (it merely switched focus to the make window before.)

*****Release of Elsbeth 1.1*****

Things are converted to Tk4.0. Changes: too numerous to list them all. Here are
the user-visible changes not implicit in Tk4.0:

- Source menus (which were formerly filled with radiobuttons) are now option
menus.

- Busyth, provided in the TH distribution will be used by elsbeth 2.0. Dialogth
will not, so it is not included here, though it is still in the TH distribution.

- The 'Press Keys Here' label is now an entry, so it can receive the input
focus.

- The 'Default Menu' and 'Default Frame' entries are  labels, so they cannot
receive the input focus.

-* Gridth is now better at packing grids around widgets, so the grids resize
correctly if the widget gets resized. The 'Vertical Grid Width' option no
longer exists, the vertical grid is made as wide as necesasry to hold the grid
numbers. Text widgets' horizontal grids are now scrollable.

- When asked to display the path and filename, fileth uses checkbuttons which
switch from "-" to the path/name, instead of labels.

-* Frame labels, such as 'Goto' have been replaced with buttons, pressing the
button is the same as hitting Return on the entry; ie, the 'Goto' button goes
to the index in the entry. However, the 'Search' and 'Replace' labels are
replaced with menus showing the available bindings for the search/replace
entries (which were previously not on any menu.)

-* Finally broke down and gave the output text a scrollbar.
- Actually, the text now has a vertical and horizontal scrollbar, and no
character-wrapping.

- Many bindings are different. The differences arise from two changes:
  1. Tk4.0 contains a rudimentary set of bindings for many widgets. The
  hypertools' bindings should be as similar to Tk's as possible.
  2. Elsbeth's hypertools only provide bindings for the QWERTY section of the
  keyboard, while Tk4.0 concentrates on the arrow keys and other keys not part
  of the QWERTY. This gives Tk and Elsbeth some independence and autonomy.

- The selection mechanism is used differently. Hypertools like searcheth and
parenth that optionally select text put the anchor at one end of the selection
and the cursor at the other, so you can switch between them using edith's
'Exchange Cursor with Anchor' binding.

- Browseth has a few new functions:
  - Text widgets now have keybindings for horizontal scrolling, just like
  Listboxes and Canvases.
  - Several new commands for Text widgets, that do some action similar to a 
  Tk text widget binding, but do the Right Thing for super-long lines,
  different-sized lines, tabs, etc. Meta-comma and Meta-period do the same thing
  as Control-n/p, and Control-comma and Control-period do the same thing as
  Control-a/e, except they work on weird lines. (They all rely on the layout
  of your text window, not on the contents of the text widget itself).
  - New command: Copy-Selection (bound to Meta-w) copies the selection into the
  clipboard.

- Edith also has a few new features:
  - Edith now uses Tk4.0's clipboard instead of a secret text window for killed
text. The kill-line command is now Cut-line and bound to Control-c. Control-k
deletes the insert's line of text, just like in Tk4.0. Also the Cut-line
command's behavior is much more Emacs-like, if you want to cut a contiguous
multi-line selection of text, you may no longer move the cursor, press a
mousebutton, or move the mouse outside the window, or the clipboard will be
cleared on the next cut-line invocation.
  - Paste is now split into two commands, Paste-Selection (Control-v) and
Paste-Clipboard (Control-y), just like Tk4.0.
  - Edith's modified checkbutton has changed. Instead of turning an indicator
on when text is modified, it changes its text from blank to "Modified".

- Searcheth no longer supports glob searching, since its functionality is
superseded by regexp searching. The 'Highlight Text' binding (now
Meta-Control-l) works on listboxes (selecting all matches). And, for text
widgets, you can add & delete marks (just like marketh) on found text from the
search entry.

- Commandeth can now associate with any widget; it takes input from the
selection, if the widget owns it, or an appropriate value from the widget (like
the -text field). Output can be inserted into the widget if the widget allows
insertion, or else it is displayed in a dialog box.

- Taggeth's 'show start/end ranges' checkbuttons have been replaced with a
'select tag range' checkbutton. Now all tag ranges get only one menuentry each,
which contains the start and end text of the range, and if the select button is
set, the tagged range is selected.

- The modules acting on actual widgets (paragraph, C, Tcl, and othe modes) have
lost their editing bindings, because of the new binding mechansim, and they
weren't very useful anyway. Rmth has also lost some command-editing bindings,
too.

- Parenth can now match expressions of more than 1 character, such as #ifdef
and #endif. It can also match expressions that do not nest, such as quotes, or
multi-character non-nesting expressions, like the /* */ pair in C. Also, the
user can specify what pairs to add to an application, in a format similar to
completh. The prompting mechanism has been removed, all keybindings work on the
expression just before the cursor, or just after it (depending on the binding).

- Paragrath now has explicit Split and Join functions to handle multi-line and
single-line paragraph conversion, as well as the old Format. They all can work
on multiple paragraphs or subsets (just use the selection to indicate if a unit
other than the cursor's local paragraph should be used). Also a 'Narrow
Paragraphs' checkbutton that indicates whether paragraphs should be narrow or
wide. Finally, paragrath uses the actual window width for splitting and
formatting, so it does the Right Thing for lines with tab stops,
non-fixed-width fonts, and embedded windows.

- Cth, lispth and tclth now let you select comments, and they are faster at
function traversal. Htmlth works on markups and anchors, with the same
functions as cth and the others.

- Makebeth has a new option, called 'Bind Library', which enables any program
to use TH bindings without invoking any hypertools. Elsbeth uses this binding
library, so it takes less space. Certain bindings that work on all widgets now
get bound to 'all', so widgets like buttons can use them.

- Button-3 now can bring up any widget's menu, creating it if necessary. Except
for the hypertools help text windows, where button 3 brings up a list of the
help headers, and rmth, where button 3 brings up the applications menu. You can
do this in Elsbeth to see the menus of any text widget. (Elsbeth no longer
generates menus for each text widget by default, so it can start up faster.)

- New hypertool: scrolleth, which adds and removes scrollbars on scrollable
widgets. Used by elsbeth.

- All hypertools now work with widgets not managed by the packer. For widgets
managed by the placer, or embedded in canvases or texts, the menu and frame
appear in the top and bottom, respectively of the toplevel window, not above
and below the widget. Gridth and scrolleth add widgets as toplevel windows so
the user can move them around as necessary.

- Elsbeth now remembers marks associated with a file and its directory name,
instead of its whole pathname. This should fix a lot of the problems with marks
not being associated with a file due to bad paths, while still keeping distinct
different files in different directories with same names (ie Makefiles).

- Elsbeth's Teacher Hypertools now take advantage of the Elsbeth bindings. The
only user-visible change is that the 'Index' menu is no longer available off
the Help windows...to bring up the Index menu, you need to press Button 3 over
the Help window.

*****Release of Elsbeth 2.0 Beta 1*****

- Fixed a nasty bug that caused Elsbeth to hang when one formats a paragraph at
the end of the text (w/o a trailing newline).

- Control-w now cuts the selection only if the cursor is in the selection,
otherwise it cuts between anchor and cursor.

- Pasting text with button-2 is now undoable, and it inserts text at the cursor.

- Rmth wasn't executing commands properly...fixed.

- Els (and elsbeth) is now better at geometry management with the -p option. If
text buffers are piled into one window with -p, the window starts off the same
size as a window not used with -p, but new text buffers do not increase the
size -- it gets shared among them.

- Tclth now has a simple means for Perl code...it searches for 'sub' instead of
'proc' if it is editing a Perl file.

- Fileth when prompting for a file now fills the entry with enough spaces so
only the file name (or none if no file name is known yet) is visible; the path
is hidden on the left. Elsbeth does the same for the visit-file and make
commands.

- Fixed undo bugs: search/replace undo wasn't working, and undoing deletes
overwrote undeleted text.

- Fixed bug where ~ wasn't always recognized in filename processing.

- Gridth's horizontal grid now displays line numbers like this:
"0----+----10---+----20--...", making long columns easier to count.

- Rmth no longer loses focus after the apps menu is popuped over the text.

- Fixed bug where searching text would kill the cut-line binding for Entries
(and probably some other bindings, too)

- Fixed bug where filename completion would sometimes delete chars before the
filename.

- Filename completion now adds a '/' when an unambiguous directory name is
specified.

- Grids and scrollbars now get along better with each other (a program using
both will not let you add or remove a scrollbar when a grid is in place) They
also pack better in programs not explicitly taught them by the hypertools. (For
example, you can put a horizontal grid or scrollbar in an Elsbeth entry, and it
will now go below the entry, instead of to the left)

- Elsbeth is more sophisticated at remembering marks. It stores the complete
pathname of each file accessed, and removes its 'entry' in the elsbeth.info
(formerly elsbeth.marks) file if that file gets deleted. In addition, elsbeth
remembers for each file, its current view and cursor location when the user
quits. This means that the view and cursor locations are now remembered across
different Elsbeth sessions for each file.

Note: the new information Elsbeth stores is incompatible with the old...your
old marks will not be recognized by Elsbeth anymore.

- Fixed bug where elsbeth marks would get corrupted across elsbeth sessions if
user quits a file without saving.

- Fileth, when reverting to an old file, maintains the cursor location and view
of the widget, so the widget no longer scrolls back to the beginning after
revert.

- Thcolors and thfonts weren't updating the scrollbar when scrolled. Fixed.

- Elsbeth has a new 'grep' command, that works like the 'make' command, (Just
like the 'make' command, using the 'grep' command is better than simply
bringing up a new text window with the 'grep' command, because Elsbeth
automatically loads the error module, and adds line numbers to the matches
found by grep. So you can use the error module to visit files with matches
found by grep. Several other changes were added to make the grep command more
usable:
  -- Fixed errorth bug; errorth wouldn't recognize a file with an absolute
path. Actually, errorth's visit-error is better at figuring out what error to
visit...either the error the cursor is over, or the one after the cursor.
  -- Fileth and elsbeth now don't get confused by slashes after the pipe
command, so piped commands like "/usr/me| ls foo/bar" get interpreted properly.
(Elsbeth's interpretation of this is, the directory to execute the command in
is '/usr/me', the name of the command is 'ls foo/bar', and the output should be
the contents of the directory /usr/me/foo/bar.)
  -- Fileth (and els) now implicitly expand a glob pattern in a pipe reading, if
it is the last word in the pipe command. So things like '| grep foo *.c' work
fine even if you don't expand the '*.c' pattern.

- Double-clicking Button 1 over a file when doing 'ls' brings Elsbeth up on
that file, and double-clicking button-1 over an error brings Elsbeth up on that
file and line number where the error occurred, which means you can open up a
file mentioned in the output of make or grep.

- Fixed Elsbeth bug where text word completion often completed to words in the
wrong text widget.

- Fixed Elsbeth bug where text windows that had been closed still showed up in
the 'Which' buffer-command entry's completions.

*****Release of Elsbeth 2.0 Beta 2*****

- Fixed bug in bsend where sending multiple letters failed because bsend
prompted user for filename.

- Fileth now eliminates /./ and foo/../ notation from directory pathnames.

- Fixed taggeth bug which broke tag menus if the tag name contained
punctuation.

- Meta-q (quit) no longer saves insert and view; though it still saves marks.
New binding, Meta-Q, works like meta-q, but saves insert and view, too. This
keeps elsbeth.info file from growing out of hand.

- There are now procedures for clearing Elsbeth info. They are elsbeth_clear,
elsbeth_clear_locations, and elsbeth_clear_marks. There is also
elsbeth_info_visit, which visits any file Elsbeth has info about.

- Now when commandeth's wish command yields an error, the error is brought up
using Tkerror, which allows you to see a stack trace.

- New hypertool, painth...paints regular expressions occurring in text. Cth,
tclth, etc. now use painth for highlighting language-specific expressions, like
strings, comments, #include's, etc. Painth has a simple mechanism for adding
new regexps to paint, and Elsbeth will remember custom paints across different
Elsbeth sessions.

*****Release of Elsbeth 2.0*****

- Elsbeth's visit-file command is now much improved:
  - If you visit a command like make or grep, and there is already a window
with a make or grep command, Elsbeth now uses the old window if and only if
your command immediately follows the pipeline symbol (|) with no space. If
there is a space, Elsbeth will open a new window, just like it used to.
  - Elsbeth has a new implicit-visit-file command. This is really errorth's
visit-error command generalized to be included in all text windows. Which means
you can bring up files referenced in make output, or grep output, or directory
listings, without using errorth. Additionally, the implicit-visit-file command
can, when used over a function name (be it a C function, Tcl procedure, LISP
defun, or Perl subroutine), will bring up an Elsbeth window containing the
function's definition. This requires that the function already exist and be
painted in an Elsbeth window.
  - Since errorth is no longer necessary, it is no longer being included in the
Elsbeth distribution.
  - The grep command is also removed, since you get full functionality doing
grep in a visit-file command, now.
  - Entry widgets that accept command pipelines now have a small completion
list of acceptable commands, that generate useful output. (For example, when
using Elsbeth to view files, you're better off using "|ls -lFa" rather than
just "|ls".) This list grows with each new command pipeline you visit, so
Elsbeth remembers old commands for when you want to reexecute them.

- Elsbeth now goes busy when painting.

- Using Control-g to interrupt one of Elsbeth's command pipelines works better
now. Also fixed bug where two windows reading pipelines would both terminate if
one had a fatal error.

- Fixed bug where saving files when an Elsbeth window was busy would improperly
indicate the window saving the file was permenantly busy.

- Fixed fileth bug where pathnames with '.' characters in them were getting
chopped.

- Fileth now resets the pwd after doing file I/O so tools using fileth don't
have to worry about fileth changing their pwd. Elsbeth changes the pwd to the
directory of whatever file/command is being read in the widget with the current
focus. This means that exec-commands, and file-completion requests use the same
pwd that the current file has.

- Fixed focuth bug...it wasn't working well across different toplevel windows.

- New hypertool: multh, now teaches the switch-buffer, move-below-last, and
all-window commands formerly loaded by Elsbeth. So any program using thbind
gets these functions, not just Elsbeth.

- Module loading is now available to text widgets of any program that uses the
thbind command (they used to be only available to Elsbeth). That means you can
load, say, the paragraph module into any text widget, not just an Elsbeth
widget.

- Thbind now sources the ~/.th/thbind and ./.thbind files, if they exist, after
adding the TH bindings, so you can add your own TH bindings.

- Improved Elsbeth and els startup. They now use thbind, so they source the
thbind config files as well as the elsbeth config files. Also, els(beth) can
now take as many -w and -c parameters as you want.

- Changed some bindings so they wouldn't interfere with each other.

- Tclth now can handle Makefiles, A dependency in a Makefile corresponds to a
Tcl procedure or Perl subroutine.

- Fileth now makes padding on file entries optional.

- Searcheth now has two ways of handling when to make searches case-sensitive.
The explicit model is the case-sensitive keybinding that we all know and love,
and the implicit model, runs along a more Emacs-based scheme of making
searches case-insensitive except when the search string contains uppercase
characters or replacements are being done. Defaults to the new implicit model.

- Elsbeth, when displaying directories, puts the directory name, followed by
a '/' in the window and iconname titles...this is more useful than showing some
'ls' command.

- Edith's 'Modified' checkbutton can now be turned on or off.

- Tested everything under Tk4.1a2 (latest version as of this writing).

- Added an 'elsclient' program, mainly for use by programs that like to invoke
an editor on a file, then wait for it to quit. Elsclient takes the same parms
as elsbeth, and it either starts up a new elsbeth program, or finds an
already-running one, adds the windows to it, then exits when the user destroys
those new windows.

- Fixed several window title inconsistancies with elsbeth...when reading a new
file, the new file is displayed in the title when reading begins, not when
reading ends. Also Elsbeth no longer assigns comments given via the -t flag to
all windows, it only gives it to files specified after the -t flag (and any
files visited later by Elsbeth).

- Fixed multh bug where Control or Meta with a numbers key wouldn't work
properly (so you couldn't, say, do M-/, M-1, which adds paragraph bindings to
all shown windows).

- Included my own preference files for elsbeth, thbind, and rmth (they are
elsbeth.rc, thbind.rc, and rmth.rc in the aux directory). Full of comments about
how they do their things.

- If the local .thbind, .elsbeth, or .rmth file contains an error in code, then
thbind, elsbeth, and rmth now bring the error up in a Tk dialog box...and
continue to run, instead of quitting immediately.

*****Release of Elsbeth 2.1*****
