
990921	Release 3.1.22.

990920	Backed out a lot of half-implemented stuff from this summer.
	Made t1lib opt-in.

990712	Release 3.1.21.

990709	Install kdelnk files if KDE is present on the system.
	Updated application icons.
	New kdeinst script in common for installing kdelnk files.

990707	Fixed XtFree bug in Rudegrid.c.
	Added icon directories for KDE and Gnome toolbar icons, which
	can be accessed by setting the PIXPATH environment variable.

990706	Missing keysyms for Solaris 2.5 contributed by Andrew Gilmore
	<gilmorea@fluvial.Colorado.EDU>. Release 3.1.20.

990703	Ported to new Tooltip and Handle widgets.

990629	Resized all 16x16 pixmaps to 24x24.

990628	Release 3.1.19.

990626	Duh. Got the logic reversed in label_set, so it *always*
	set the label, causing heavy flicker when editing a cell
	in Siag. The bug affects the other programs as well, but
	the effects are less obvious there. Seems like another
	release is due when I get home tomorrow.

990624	Release 3.1.18.

990622	Added opt-in autoconf test for ndbm, so users with broken Linux
	distributions (recent Debian and Red Hat, at least) can build
	without hassle. This means that a serious error in the system
	is masked; I'm not convinced that it's the best thing to do,
	but it's not my fault and hopefully the products will be fixed
	eventually.
	Made Guile and Tcl opt-in as well, to be consistent with
	Python and ndbm.
	Use load_pixmap in xcommon for the icons.
	Implemented the same interface to external converters as in
	PW. The default register-converters in siag.scm probes for
	xls2csv, which is no longer included with Siag but distributed
	separately. Of course, this means that fileio_txt.c no longer
	includes XLS support.
	Updated file format documentation in fileformats.html.

990621	Release 3.1.17.

990606	Made A1 references the default.
	WK1 reader makes A1 references if that is the user's preference.
	New function @LOG10 is defined as log10 to avoid being interpreted
	as an A1 reference.

990605	Plugged memory leak in xsiag.c/fit_block_width.
	Double click in colnum calls (fit-block-width).
	Double click in rownum calls (fit-block-height).
	Autofill by clicking and dragging in grid.
	In fileio_siag.c/load_flat: make sure that the resulting
	standard format does not include borders.
	Updated docs/mouse.html to describe the new functionality,
	including the autofilling.
	A few fixes in the Danish, French and Croatian message keys
	Added more strings to Swedish message file.
	New "newdict" script in common looks for missing keys by
	comparing message files for different languages.

990604	Resize cell size using mouse inside the grid.
	cmds.c/block_border: automatically insert label with a single
	space into empty cells.

990603	Implemented keypad keybindings in xsiag/windows.c and in
	the TextField widget.

990602	Change format of unallocated cells.
	Redesigned list selector box.
	Release 3.1.16.

990601	Added a1_refs field to buffer structure and added it to the
	file format. This means that different buffers can contain
	different reference styles without conflict. WK1 loader
	automatically sets loaded buffer to r1c1 references.

990527	Fixed a nasty bug in siodi.c and guilei.c: under certain
	circumstances when expanding references, too little memory would
	be allocated causing a crash. Pierre Abbat <phma@oltronics.net>

990526	Updated Swedish messages in dictionary.sv.in.
	The sequence (set-block) (unset-block) (set-block) would
	crash because w->bsht wasn't handled. Discovered by
	Pascal.Cuoq@inria.fr.

990525	Fix to fileio_wk1.c by Marcus Harnisch
	<marcus@harnisch.isdn.cs.tu-berlin.de>: A year contains 86400
	seconds, not 84600.
	Release 3.1.15.

990523	Fixed enter-date and enter-time. They are still not as flexible
	as I would like them to be, but at least they work now.
	Added commands edit-applications and save-applications to the
	Tools menu, so they can be used to customize the environment.

990516	Release 3.1.14.

990515	Interface to Gnuplot rewritten. Use form to get more
	flexibility. Updated documentation somewhat.

990513	Auto-generate commands.html and keys.html. Thanks to
	Pascal.Cuoq@inria.fr for the idea.

990509	Use XmbLookupString rather than XLookupString in Richtext.c
        and TextField.c to get reliable support for dead keys.

990503	Release 3.1.13.

990502	In col_last_used: check if any columns at all are allocated,
	and return 0 if not.

990427	Fixed the DSC comments in fileio_ps.c so the previewer can
	automatically set the right paper and rotation.

990425	Moved all the resources for all widgets of a common
	class from Siag.ad to xcommon-ad.h.

990424	Changed the paper selection, margin, header, footer et al code
	to the code used by PW. No more properties for this purpose.
	Fixed the backup-on-save code so it actually works.
	Changed default header to &n and footer to &p.
	Orientation and protection moved from the File menu to the
	paper selection dialog.

990423	Released 3.1.12.

990421	COPYING was missing from the installed documentation.

990420	Danish message file by Birger Langkjer <birger.langkjer@image.dk>

990416	Moved all file selector and dialog box app-defaults into separate
	headers xcommon/filesel-ad.h and xcommon/dialogs-ad.h so they
	can be included separately into the application. Removed the
	corresponding lines from Siag.ad. The same change to all other
	programs in the suite so identical resources only need to be
	updated in one place.

990408	Free removed lines so that > to move to end of buffer works.

990408	Replaced tryuntar in fileio_siag.c with the one in common/common.c.
	That version looks for the string "ustar" at offset 257 in the file
	*before* trying to untar it, so it is sure to be a tar archive.

990407	Incorporated Victor Wagner's xls2csv utility. XLS format added
	in module fileio_txt.c.
	Portability patches from Harold Toms fixed a couple of
	broken casts.

990406	Incorporated the Xed text editor by Randolf Werner
	(evol@infko.uni-koblenz.de). See xed subdirectory for details.
	Removed xcommon/input.c which didn't do anything useful (duplicated
	existing stuff).

990404	Redesigned file selector. Modified plotting plugin so it doesn't
	barf on cells containing labels or strings (bug in plot.scm).

990402	Released 3.1.9.

990402	URL on Help menu updated to point at new site.

990401	Another patch from S Lockwood:
	1. the File menu has "Close" option to kill buffers
	2. the default for killing buffers is now to have a save
	   dialog for buffers that have been changed

990331	Rewrote the Gridbox widget into a much simpler constraint
	widget called Rudegrid. Replaced the Siag widget with this one
	and lo! it was a success. Even worked first try. Removed Gridbox.

990331	Updated web pages.

990331	After considerable tweaking, I concluded that the Gridbox simply
	cannot be made to do what the Siag widget does. In particular, Label
	widgets become too high and the rowcol widget too narrow.
	The Layout widget has the same problem; in fact it produces a very
	similar result. I'll stick with the custom Siag widget for now.
	I would like to eventually write another Gridbox which doesn't
	ask so nicely but simply assigns sizes to its children.

990330	Added Ed Falk's Frame, Tabs and Gridbox widgets. Removed my Frame
	widget, and the Notebook, Siag, Pw and Egon widgets will follow.
	Some changes necessary to the new widgets to make them compile,
	for example Frame and Tabs used incompatible versions of Gcs.c.

990329	Released 3.1.8.

990329	Patch from Stephen Eglen <stephen@anc.ed.ac.uk>: when a file
	is saved, show its name in the status bar.

990328	Made printing work with Type 1 fonts. Pfb files require t1ascii
	from t1utils. New "magic" script common/readpfa.

990326	Default number of recalculations increased from 0 to 1.

990324	Replaced Application widget with the Layout widget from Xaw3d.
	This means that Siag is no longer compatible at all with Xaw.
	It also means that xcommon/Application* can be removed.

990324	One-line fix in buffer.c to avoid accessing previously freed
	pointer. Thanks to S. Lockwood <sjl@chaucer.ece.ucsb.edu>

990324	TextField widget incorrectly discarded Tab characters, which
	made it impossible to load tab separated files. Discovered by
	Stephen Eglen <stephen@cogsci.ed.ac.uk>

990322	T1lib support. xcommon/fonts.c modified to work with
	X fonts in combination with Type 1. Richchar, Table and Animator
	widgets changed to leverage the new functionality.

990314	New Check widget displays radio or check button together with
	a label.
	Verified that Gnuplot 3.7 works with Siag.

990313	New Notebook widget, similar to Tabbing. Started working on a
	form plugin which builds a dialog from description in a text file.

990303	Plotting plugin: (plot-plugin style). Available on menu as
	Plot - Plugin. Requires Gnuplot and PBMplus/NetPBM.
	Uses my Image widget; removed the Sciplot widget.

990225	Reduced plugin read timeout to 30 seconds.
	Abolished all siag_plugin_blah functions and instead created new
	common/plugin.h for all non-UI dependent plugin functions.
	Moved plugin commands from xsiag/xsiag.c to siag/cmds.c.
	New plugin-select, plugin-write and plugin-read functions.
	Demo function text-plugin-test in siag.scm runs shell command
	in text plugin and reads output.

990222	Added configure checks for libtermcap, libncurses, libcurses,
	resizeterm, beep, immedok and keypad. Tsiag compiles on
	Linux (Sparc, Intel, PPC), NetBSD (Intel), Solaris (Sparc, Intel).
	Modified makefiles to allow building outside source tree
	(suggested by "Marcus G. Daniels" <mgd@santafe.edu>)

990221	Plotting plugin based on Rob McMullen's SciPlot widget.

990214	Plugins talk back! New EWIN command tells plugins where to send
	X ClientMessage events. The first long of the data field is a
	version code, which is always 0. The second is the plugin
	handle. The third is a ticket used to identify the message.
	See xcommon/plugin.c for detailed documentation.
	init_plugin now takes another argument: a pointer to a function
	which can execute a command passed as a string.
	Use gmatch where fnmatch is unavailable.

990213	Global flags plugin and grid_only. In plugin mode, always save
	in Siag format if nothing else is specified. Reset the "changed"
	flag in save_plugin. New function plugin-resize.
	Workaround in filesel.c for systems without fnmatch: list
	all files regardless of name.
	Command to set plugin size in a form.

990212	Move sheet up, down, top, bottom. New functions: get-sheet
	and move-sheet.
	In edit_cell: edit in place even in -gridonly mode.

990211	Image widget scales images when it is resized. Image plugin
	uses Image widget. Automatically select the first plugin when
	there is only one; don't display a list.

990208	Croatian messages, thanks to Matej Vela <vela@zagreb.mioc.hr>.

990206	Norwegian messages, thanks to Bjrn-Ove Heimsund
	<s811@drone.ii.uib.no>

990205	In set_block: set w_list->bsht to w_list->sht. Bug found by
	Rodrigo Alfonso Guzmn (raguzman@impsat1.com.ar).

990205	Changed exit to _exit in quit_siag so plugins will actually
	exit.

990205	Replaced most longs with int. Don't know what it will do for
	the Alpha, but it won't hurt.

990204	Resize plugins using the mouse.

990202	Rudimentary Python bindings.

990125	Agh! Left a debugging message in 3.1.4. Removed the message
	and released 3.1.5.

990124	Removed topdir.mk completely. Plugins moved to arch-specific
	part of the file system. See FILES for detailed map of the
	file system layout. Released 3.1.4.

990121	w->ui->tab wasn't initialized to None when running with -gridonly.
	Resulted in a crash in activate_window.
	Allow ditcionary names in the form dictionary.xx_YY.

990119	Unbroke Siag running as a plugin with -gridonly. It still doesn't
	edit in place, but at least it doesn't crash.

990118	Message catalogs are now distributed unsorted as dictionary.*.in
	files, which are then sorted into dictionary.* files before
	installing. Comments, empty lines and duplicates are
	filtered out. This work is done by the makedict script, which
	is also distributed. Also: siag.dfmext for inclusion in .dfmext
	makes DFM recognise a few file formats, and siag.magic for
	inclusion in /etc/magic makes file recognise formats used by
	Siag Office.

990115	New widgets: Frame draws a beveled frame around a single child
	widget. Based on ThreeD from Xaw3d. Application widget manages
	menubar, toolbar, format bar, text bar, main and status widgets.
	Replaced the "topbox" Form widget with Application widget. Moved
	menubar, toolbar and format bar into their own Box widgets, wrapped
	in Frames. Moved Combo widgets into Frames. Moved text1 into frame.
	Replaced icon with ksiag.xpm from Daniel Duley's ksiag.

990113	Replaced the linear dictionary search with a binary one. This means
	that the dictionary must be sorted.

990109	Removed --with-static. Static binaries can just as well be made
	by running "LDFLAGS=-static ./configure"

990107	Use guile-config in autoconf script to detect Guile. This means
	that Guile versions before 1.3 are no longer supported.

990101	Replaced Textfield widget with the one from Chimera 2.

981228	Made generating binaries a little easier:
	./configure --with-static --without-tcl --without-guile
	make
	make strip
	make binaries

981223	In fileio.c: separate loading formats from saving formats, so that
	the file selector box doesn't display formats it can't handle,
	such as Postscript when loading a file.

981214	Printing in landscape mode. Print protected cells on all pages.

981209	Compatibility with NetBSD. Released 3.1.1.

981129	Made fileio_siag less vulnerable to wacky documents produced by
	alpha versions of 3.1.

981129	In activate_window, hide plugins from sheets that are not visible.

981127	Removed the .sf tag from the file format. Old documents used
	it for the old bitmapped attributes, so it blows up when we
	try to use it as an index into the format table. Replaced it
	with a new .nsf tag.

981127	Scrollbar thumb sizes reflect visible part of the grid.

981126	Plugins were installed into the wrong directory.

981126	Redecorated the Format menu so that all items work and do
	something useful. Added item to change background colour.

981125	Weird! -DNARROWPROTO is necessary to make the scrollbars decide
	whether to take floats or doubles as arguments. How many more
	surprises of this kind will there be?

981125	Moved siag.man from xsiag to siag/docs.

981120	Moved configuration from imake to autoconf. Macro VERSION
	renamed to SIAG_VERSION.

981116	New functions encode-format and decode-format do about the same
	as their C counterparts. Reimplemented change-format in Scheme
	using the above functions. Removed lchange_format from xsiag.c.
	Removed begin_y and max_y from the window structure: nothing
	was using them.

981111	Changed file format for styles, see save/load_styles in matrix.c.
	Added or updated GPL notices in all source files.

981109	Oops, the function to copy the block and the function to put the
	block on the clipboard were both called copy-block. The latter
	was renamed copy-block-to-string.

981108	Multiple, redefinable styles in siag/styles.scm. Style support
	added to fileio_siag.

981105	New utility rgb (in common) reads rgb.txt and writes colors.scm,
	which can then be loaded to define oodles of colours.
	Load $SIAGHOME/siag/siag.scm before windows are initialized.
	fonts.scm is now loaded from siag.scm, and loads colors.scm.
	$HOME/.siag/siag.scm is still loaded after initialization, so
	that definitions can take place that will affect the UI.
	New function (init-windows) is called after initialization to
	do UI dependent stuff. Menus are now set up by the function
	(create-menus), which is also loaded after window init.
	In fileio.c: keep backup copy when saving.

981105	Moved all Combo widget functionality to the Combo widget (makes
	sense, doesn't it).

981104	Made command and toggle widgets not draw themselves in reverse
	(rather: made background and foreground colours the same).

981103	Text can be typed into the combo controls, in addition to selecting
	them from the drop-down list. This allows among other things sizes
	that are not on the list.

981103	The Vsep and Hsep separator bar widgets are redundant, so I
	removed them.  The same job can be done with thin labels.

981102	Replaced menus for font, size, style and colour with combo
	controls.

981030	Used fmt_old2new and fmt_new2old to allow wk1 to work again.
	Pretend that screen resolution is 72x72 to make screen and
	Postscript line up better.
	Changed multi-sheet semantics and added function
	find_sheet_by_name (see buffer.c). Add, remove and rename
	sheets in documents. Native file format saves sheet names.
	New function @XVALUE(sheet, row, col) for cross-references.
	Create tabs for the hidden buffers as well. Put a ':' at
	the end of the name to show that they are buffers.
	Renamed the ret_* functions in Table.c to return_* to tell them
	apart from the ones in matrix.c. Renamed the cell_* functions
	in window.c to tcell_* for the same reason.

981029	Yee haw, multiple sheets. The implementation still sucks, but
	all the important parts are there: loading and saving files,
	cross-sheet references, tabbing between sheets.
	Change to the Table widget: XtNtableData is now a (window *),
	not a (buffer *).

981026	Getting values from the Textfield widgets with XtVaGetValues
	was flaky. Changed to TextFieldGetString in forminput.c.

981026	Don't let make clean delete app-defaults.h. Also, dirty hack to
	let make install ignore the CVS directories.

981019	When editing in place, use same font as the cell. Also expand
	the text widget as needed if there is room.

981018	Saner scrolling: only scroll the used lines and columns + 50.

981005	Bug in text entry widget made forms display the wrong strings.

981005	The postscript viewer GV was incorrectly called XV in README.install.

981002	Cut, Copy and Paste on the Edit menu. They use the new functions
	pack-area and unpack-area.

981001	Fixed SEGV when plugin was hidden and then redisplayed.

980930	Optional A1 references. Set print command and postscript viewer
	from the menu (File - Print Format).

980927	Sorting in sort.scm. Main functions are sort-block and sort-range.

980924	Removed all (?) GNU/Linuxisms from the Imakefiles.

980921	Changed default location of binaries to /usr/local/bin. Changed
	"mkdir -p" to MKDIRHIER in the Imakefiles. Released 3.0.5.

980917	Better loading of 1-2-3 files.

980917	In siodi.c: allow get_cell to return label as string.

980916	Workaround for some weirdness in SUSE .Xdefaults.

980913	In free_window: don't hide plugins after the buffers are freed.

980912	Removed most of the XBM files in common/bitmaps. New Imakefile
	gives better control over what is installed where.

980911	Use XPM pixmaps for the toolbar icons.

980910	In slibu.c: don't reinvent usleep for Solaris.
	New standout action for the menus and buttons: change shadow
	width rather than background colour. Doesn't work with plain
	Athena widgets, but I don't want to be restricted to features
	supported by that widget set unless absolutely necessary.
	The standout code is just cosmetics so it doesn't matter much.
	New hsep widget separates the groups on the main form.

980908	Rearranged the menus to take advantage of submenus. Also added
	lots of new stuff that wouldn't fit before.

980906	Removed arbitrary limit to the number of menus. Added submenus.
	New SIOD functions add-submenu and add-submenuentry.

980831	Don't link with Xaw3d and Xaw at the same time (makes Solaris
	linker spew warnings).

980829	Set default cell width, height and format from the menu.

980827	Autoscroll the grid when selecting outside the window.

980820	Removed most SIOD configuration items from topdir.mk.

980817	New keybindings: all digits that are not assigned to something
	else in keytable.scm invoke edit-expression, using itself
	as the first character in the new expression. All alphabetic
	characters that are not assigned in keytable.scm invoke
	edit-label in a similar fashion. Long on the wishlist.

980816	New TextentryWidget replaces all AsciiTextWidgets. Automatic
	scrolling is included in the features.

980815	In place editing by using a text widget as a child inside the
	grid.

980810	Released 3.0.

980731	More toys in the file selector, including online help. Improved
	1-2-3 format so it understands formats and saves properly.

980729	New features in the file selector: type directory name in the
	filename widget. Dirname widget is now a menu for parent dirs.

980728	Image plugin displays most image formats.

980724	Updated man page.

980723	Right mouse button in the grid pops up a shortcut menu.

980723	Change to the plugin protocol: new command WIN tells the plugin
	to print its toplevel window id on stdout. This is *much* better
	then using the name for identification, because it is certain
	to be unique. It is also faster, because there is no need to
	search the window tree.

980722	New option -gridonly makes Siag run with only the grid widget,
	to make it more useful as a plugin.
	Personal config file moved from $HOME/.siagrc to $HOME/.siag/siag.scm.

980721	New option -plugin makes Siag behave as a plugin: takes commands
	from stdin and does not set window name.

980719	Structured file format: a document with plugins is saved as a
	single file. I use tar for this, so the result can be untarred.
	The main document is INDEX.siag, which is of the old flat format.
	Documents without plugins is always saved in the flat format.

980719	Plugins, i.e. other X applictions that are captured live and
	reparented to the grid! Works great for many of those I have tried.
	Example of a plugin is in the new "plugins" directory.

980716	New composite Siag widget replaces the Form widget.

980715	Added another configuration item SIAGDOCS to topdir.mk. This is
	to make life easier for people making binary packages.
	All docs and examples moved to SIAGDOCS. Installation script
	updated to reflect the change.

980711	Changed default expression interpreter from SIOD to C.

980706	Moved signal handling to common.c, where it can be used by all
	three programs.

980705	Moved the siaghelp script to common/docs and made it
	(i.e. Netscape) the default help browser.

980701	Moved icon.[ch] to xcommon. XPM no longer optional.

980629	Bundle Siag, PW and Egon as a package called Siag Office with
	version number 2.80. I'm mainly doing this to adjust to
	reality; they have already been bundled for months.

980514	More bugfixing. Removed the requirement to use MD5 in SIOD.
	Install support files in /usr/local/lib/siag. Updated manpage!
	Version 2.73.

980513	Fixed a few places where functions returned 0 instead of cval.
	Found by Grzegorz Mucha. Version 2.72.

980318	Save in wk1 format. Increased max number of formats to 20.

980317	Load Lotus 1-2-3 (*.wk1) format. Cleverly rewrites the postfix
	formulas into Scheme prefix notation.

980307	Added toplevel Imakefile, which should simplify installation.
	SIAG, PW and Egon are now distributed together, also to simplify.
	Installation can now be done to a separate directory.
	Version 2.70.

980124	Increased SIOD heap size made plotting work again. Removed a bug
	which made gridline changes hang after the block had been unset.

980123	Added the (smart-fill-block) function contributed by
	John Jones. Release 2.64.

980122	Moved all keybindings from app-defaults to the file keytable.scm.
	This way the same set of keybindings can be used by siag, gsiag
	and tsiag. New function (add-keybinding "key" "command") added
	to set up the keybinding table.

980122	(scroll-up) and (scroll-down) had mysteriously reversed their
	meaning, compared to Emacs. Reversed them back again along with
	the keybindings, so that the user interface is unchanged.

980108	Gsiag: list selector, better focus control, XPM toolbar button
	icons, eliminated compile warnings, arrow keys, changed paned
	widget to vbox.

980107	File selector and string input work for gsiag, making that version
	usable. Still ugly, though.

980105	Alpha version of Siag for Gtk. Release 2.62.

971225	Use strftime for date and time, as suggested by Dag Nygren.
	New file formats: tbl and LaTeX tables.
	Removed incorrect termination condition in pr_scr.
	Proper select_from_list in tsiag. Release 2.61.

971221	Curses version of siag finally operational, if not bug free.
	Call it tsiag ("Text Siag") and release 2.60.

971119	Broke out X dependent code into its own "xsiag" directory,
	in the hope that this will make writing alternative user
	interfaces easier.

971110	Code cleanup and updates to PW and Egon. Version 2.55.

971102	Property with key "startup" is automatically run as startup code
	when a document is loaded. Form interface to properties.

971102	Use properties to customize Postscript output:
	ps_paper_width, ps_paper_height, ps_top_margin, ps_left_margin,
	ps_right_margin, ps_bottom_margin, ps_page_header, ps_page_footer

971101	Messed up Chimera again to make the new version look
	more like Siag.
	Added property list to the buffer structure. That way
	arbitrary (text) data can be associated with a document
	and loaded and saved together with it.

971030	Try to guess file format when loading and saving.
	Handle XA_STRING selection target type.
	Adjust cell size using the pointer by dragging borders in
	the colnum and rownum widgets.
	Upgraded Chimera to version 1.70p1.
	Release Siag 2.53.

971029	Made sure that when the grid widget changes top, the changes
	are propagated to the window structure and also to the
	colnum and rownum widgets.
	New siag-highlight and siag-unhighlight actions replace
	the standard highlight and unhighlight actions for command,
	menu and toggle buttons. Highlights the background instead
	of drawing a black border around the widget.
	Wait half a second before popping up the help box.

971027	Removed div by zero hazard from [vh]scroll_scroll in main.c
	Release 2.52.

971026	cmds.c tried to fit the width of a nonexisting block.
	Redraw immediately when losing the selection.
	Improved coordinate calculation functions in Table widgets.

971025	Updated the docs somewhat, then ship 2.51!

971024	Try to apply a little common sense to huge selections:
	ins_format refuses to change the format of unallocated
	cells other than changing the borders.

971024	New function (unset-block) disowns the selection. Bound to
	Shift-space and also on menu Block - Unset Block.

971024	Optionally ask for confirmation when overwriting an
	existing file. This annoying behaviour can be turned on
	with the new command (confirm-overwrite 1) and back off
	with the command (confirm-overwrite 0).

971021	Single-level undo. Added functions to matrix.c:
	undo_save(buffer *b, int r1, int c1, int r2, int c2)
		Called before any destructive command.
	undo_restore(buffer *b)
		Puts back whatever was stored by undo_save.
	Not quite finished, but better than nothing.

971020	Made selection work for all interpreters, not just C and SIOD.

971019	New siag-net function starts up a TCP-based server which
	understands the following commands:
	GET r1 c1 r2 c2
		Reads one label per line and inserts them into r1c1..r2c2
	PUT r1 c1 r2 c2
		Prints contents of r1c1..r2c2 with one label per line
	QUIT
		Exit the server and return to Siag
	Source in examples/siag-net.scm.

971016	Write ranges of cells as R1C2..R3C4. This is translated into
	"'RANGE 1 2 3 4" before being passed to the interpreter. The
	RANGE is used to show that this is a reference, not a value.
	It is then up to the called function to handle it, if it can.
	New functions r_sum, r_min, r_max and r_avg handle ranges.

971012	Visicalc style (R1C1) references added to all interpreters
	except Tcl, after a suggestion by Daniel Risacher.
	Accept leading 0 in decimal numbers in ci.c.
	Evaluate unknown identifiers using SIOD in ci.c.
	Hack in ci.c to evaluate functions using SIOD.
	Update references when cells are moved. Version 2.50

971010	Improved error handling in the C interpreter. Credit goes to
	Daniel Risacher for noticing it wasn't done properly.

970915	Improved memory mamagement. Removed arbitrary limits on strings
	and added checking to avoid surprises. Siag now handles strings
	containing millions of characters.

970915	Save the whole document, rather than just the first column.
	Version 2.42.

970913	Yipes! String expressions interfered with GC to make the result
	completely unpredictable. Fixed. Version 2.41.

970912	Got rid of the stringpool. Improved memory handling by not
	allocating space for cells until they are actually used.
	Increased the maximum grid size to a whopping 100000x100000.
	Look out for bugs, because this required major recoding!
	Version 2.40.

970910	Display images correctly in the Table widget. FILENAME_MAX changed
	to 1024 everywhere. Made images work even for ancient X versions.
	Made asinh, acosh, log1p optional. Scrapped makemathwrap.
	Imakefile for SIOD.
	Compiles out of the box on Linux, SparcLinux, Solaris and HP/UX.
	Version 2.30.

970909	HP port, courtesy of Emmanuel Bigler.

970908	Don't display caret in fsel_dirtext.

970908	Initialize name before calling fsel_input in main.c

970907	New function (data-entry) to edit a record, move to the next
	and edit that until Cancel. Bound to 'e' in Siag.ad.

970907	Use XawSetScrollbarThumb rather than XtSetValues.
	Eliminates flicker and voodoo.

970906	Added the R and C variables to the SIOD interpreter as well.

970906	Removed redundant functions from makemathwrap: acos, asin,
	atan, cos, exp, log, sin, sqrt, tan, atan2, fmod, pow.
	SIOD handles them itself.

970906	Don't set the point out of bounds when clicking in the table
	widget.

970906	Added functions to the Tcl interpreter: row(), col(),
	get_cell() and sum(). Also variables $R and $C for row and col.

970815	Use the Table widget for the grid as well.

970813	New Table widget for column numbers, row numbers and grid.
	Moved the widget to ../common/Table*.[ch]

970807	Allowed range for cell width and height changed to [5..500].

970729	Updated documentation and broke out common parts into common/docs.

970728	Broke out common code into subdir common.

970718	Added embedding. V 2.23.

970709	Synchronize version numbers with pw. New version 2.22.

970702	Improved integration between interpreters by adding cross-calling
	capabilities. (exec-expr intp cmd) can be called in SIOD, Guile
	or Tcl, where intp is the name of the interpreter and cmd is a
	command to execute.

970701	Threw in Tcl for good measure. This is great fun! Version 2.2,
	the first available number greater than 2.01 (Guile alpha) and
	2.10 (second Guile alpha, not released).

970701	Added Guile as interpreter, so that it is now an official part
	of the main development branch.

970630	The index to stringpool in the matrix structure was short!!!
	No wonder text handling was flaky. Changed to unsigned long.
	Also matrix.c was virtually void of range checks on row and col.

970630	Broke out C expression evaluator into its own module ci.c and
	created a framework for having many independent interpreters.
	Breaking out the SIOD stuff will take some time, it's scattered
	throughout the C code. Extended the file format in a way that is
	backward compatible for SIOD and C (anything more is impossible).

970630	Having both kinds of help texts at the same time as default
	was kinda obnoxious so I changed it to 2. Also added menu entry
	to turn it off.

970629	Use yellow popups for the help text instead of using label1.
	Because this is annoying in the long run, I also made a function
	to select how to display the help. (helptext-mode mode) where
	mode is 0 for none, 1 for label, 2 for popup and 3 for both.
	Version 1.63.

970627	Use unhighlight() instead of reset() for the buttons. This is
	important for the toggle buttons, because reset() unpresses them.

970627	Buttons, buttons everywhere! A new format bar with menus for
	font family, size, style and colour, and buttons for bold, italic,
	left adjusted, centered and right adjusted text. The new controls
	affect the block if point is inside it, otherwise only the
	cell under point. Version 1.62.

970626	New mode 3 for block-borders makes the block underlined.
	Toolbar buttons to call block-borders with the four modes.

970626	A new text input widget is used for ask-for-str, rather than
	a popup. Much nicer; this was the way it worked in the
	Xlib version.

970624	Fixed a couple of null pointers in forminput.c.

970624	Linked with Xaw95; looks very nice. Changes in main.c:
	Removed the "box" form and put menu and toolbar buttons directly
	under the "topbox" form. Changed fonts and removed unused lines
	in Siag.ad.

970618	Fixed the case when the siag directory is a symbolic link (main.c)
	Upgraded GPL to version 2. Added documentation for the form stuff.

970614	Moved action initializations for ask-for-str and fsel_input
	away from main.c and made them static.

970614	Set keyboard focus in activate_window() and in all the
	dialog boxes, including forminput. Made keyboard traversal
	with Tab, ^N and ^P work.

970614	Moved fonts.[ch] into the main directory and got rid of "xstuff".

970524	Form input (forminput.c and form.scm) is now useful. Wrote a
	simple data entry module (data.scm) to make use of it.

970519	Changed the Makefiles to use SIAG_HELP and SIAG_HOME to avoid
	confusing them with the environment variables SIAGHELP and
	SIAGHOME during compilation. Also added a hack to main.c
	to locate siag.scm manually if all else fails. Version 1.57.

970519	Set SIAGHELP and SIAGHOME from main.c using a simple (define ...)
	instead of using (getenv ...) from siag.scm. This removes the
	requirement to define SLIBU if SIAGHOME is not /usr/local/siag.

970508	Implemented a simple form which can be called from C or Scheme
	and return entered data in string or list form. This will allow
	easy user interfacing (or so I hope). forminput.c, unfinished.

970506	(search-forward) and (search-backward).

970505	Optionally warp pointer to the input window when ask-for-str
	is called. This can be disabled by (input-warp-pointer 0).

970505	Long strings caused crashes when previewing or printing.
	Fixed by making the buffer larger. Version 1.56.

970505	Simple hyperlinking through the (hyperlink) function. See
	examples/hyperhelp.siag for an example.

970504	Embedded histograms by abusing the USER5 style in window.c.
	Decided it was a lousy idea, but left the code. Enable with
	-DEXPERIMENTAL

970504	Siag does colours! Eight predefined colours: black, red, green,
	blue, yellow, magenta, cyan, white. Functions get-color and
	set-color.

970504	Set fallback resources in main.c in case Siag.ad is not
	installed.

970504	Removed C++ and dndtest from DND. Anyone who wants it can
	install it anyway.

970430	Some more tweaking of topdir.mk to make Siag compile under
	Solaris brings us 1.52.

970430	Try to get database support right, along with a number of
	changes to topdir.mk to allow for various environments.
	Call this 1.51.

970430	Try harder to figure out SIAGHOME and SIAGHELP. New file
	siaghome.h automatically sets SIAGHOME to where Siag is
	installed. main() sets environment variables SIAGHOME
	and SIAGHELP if they are not set already. It is thus no
	longer necessary to set those in topdir.mk

970427	Renamed C and Scheme functions: point-position, move-point,
	mark-position, move-mark to get-point, set-point,
	get-mark, set-mark.

970427	Removed unused C functions: find_beginning_of_buffer,
	find_end_of_buffer, at_beginning_of_line, find_beginning_of_line,
	find_end_of_line, line_forward, line_backward, at_end_of_buffer,
	cell_forward, cell_backward, at_end_of_line. Moved position
	handling functions from cmds.c to position.c.

970427	get-prot and set-prot to manipulate protection of a few
	lines/cols at the edge of a doc. Many changes in window.c
	to make use of this. Neat feature!

970426	Rudimentary surface plot in splot.scm

970425	Don't load plot.scm until plot is called.

970424	Bugfixes: Changed libndbm to libgdbm in the Imakefile.
	Commented out dlfcn.h in slibu.c. Added setsockopt(SO_REUSEADDR)
	before bind in ss.c. Version 1.41.

970423	Plot, preview and print reimplemented in Scheme, thus removing
	print.c. Version 1.4.

970422	Reimplemented in Scheme: new-siag, do-help, help-contents,
	help-copyright, help-for-help, help-search, keyboard-quit,
	no-op, get-cell-coords, fix-point, scroll-up, scroll-cell-up,
	scroll-down, scroll-cell-down, scroll-left, scroll-cell-left,
	scroll-right, scroll-cell-right, what-cursor-position,
	insert-line, remove-line, insert-col, remove-col and more.

970420	The parts of siag.scm that came from siod.scm were replaced
	with "require siod.scm".

970420	Moved most of the menu initialization from main.c to siag.scm.

970416	Example Scheme script serves the document as HTML over http.

970412	Fixed the bug that made format changes overwrite the style.

970412	Added file type Scheme (*.scm)

970411	Upgraded Siod to 3.4. Included md5, slibu, ss, ndbm, regex
	and tar, which adds a large number of functions. Version 1.3.

970404	Added an icon.

970401	Make the educated guess on startup that filenames ending in
	".siag" are probably Siag files. Version 1.2.

970401	Display the buffer name on the title bar.

970331	Included support for OffiX drag-and-drop. For example, drag
	a file from the file manager into Siag to start another
	instance of Siag with the document loaded.

970331	Did nasty things to Chimera to make it look more like Siag,
	including pull-down menu and icon toolbar. No lisp yet. ;-)

970224	Adjust cell size automatically with (fit-block-width) and
	(fit-block-height). Version 1.13.

970224	Horizontal and vertical adjustment on screen and on paper,
	along with modifications to the format dialog. Version 1.12.

970223	Prettier formatting: number of decimals, currency and so on.
	16 different "styles" and commands to choose and redefine them.
	Extended file format to cope with this (backward compatible).
	New function time.

970223	Load and save using external programs, for example from
	a webserver using httpget or compressed files using gzip.

970222	Made colnum less wide to preserve real estate. Made selectall
	do the obvious thing via new function select-all (also on menu).

970222	Functions to allow access between buffers:
	(x-get-cell row col "buffer") and (x-get-string row col "buffer")
	Version 1.11.

970222	Ask for file format if none is given (i.e. "All files")

970220	Load well-behaved HTML tables.

970218	Yet another format Text, where every line is loaded as a label
	and placed in column 1 of successive rows.

970217	Load and save files as comma separated values (the field
	separator is selectable). Save files as HTML and Postscript.
	New version 1.1.

970216	Broke out the code for saving and loading Siag files and added
	a framework for other fileformats. Added version comment to Siag
	files to help identification.

970209	More bugfixing. Moved code from oldmain() into main() and
	broke out menu and toolbar initializations in main.c. Load
	the runtime library earlier so that functions do not cause
	errors when files are specified from the command line.

970207	Bugfix version 1.01. New type ERROR added, old types CONSTANT
	and UNCONSTANT obsoleted. Function edit-string removed.
	Removed return statement from calc_matrix preventing everything
	after the first error from being calculated.

970206	String expressions! Numerous changes everywhere. Calls for
	new version; it's time for 1.0 even though there are
	remaining bugs and missing features.

970204	edit_expression() inserts as label if there are errors. That way
	it won't be necessary to retype the expression to fix an error.

970204	New command fill-block allows filling an entire area. This
	capability was already in the old overlapping copy, but copying
	the selection uses a buffer.

970204	Implemented selection properly. The old per-buffer "block" is
	replaced by a selection that is global across windows.

970201	Implemented WM_DELETE_WINDOW.

970130	Changed to ISO-Latin1 encoding in the postscript.

970124	Improved postscript generation in print.c.

970117	Cleanup of code, removed a few annoying warts. Updated
	documentation. Version 0.99 and gone public.

960816	Multiple documents can now be displayed in separate windows.
	New commands (split-window-vertically), (delete-window),
	(delete-other-windows) and (other-windows) give Emacs-style
	handling. Also of course added to main menu.

960815	Multiple windows work, sort of, but the sizes are screwed up.

960814	Added a paned widget to allow multiple document windows. Put
	the document form in this widget instead of directly under
	topLevel. Added the necessary widgets to the "window" structure.
	Cleaned up all the places where the X code was written with
	the assumption that there would never be more than one window.

960814	New commands (switch-to-buffer) and (kill-buffer). Give the
	buffers shorter, unique names.

960813	New command (auto-recalc N) sets the number of times the sheet
	is recalculated when a cell is changed. Defaults to 1.

960813	Alertbox.

960811	Added manpage. Version 0.96

960811	Load $HOME/.siagrc on startup.

960809	Compiles under Solaris (gcc, vanilla Athena, no Chimera or
	Ghostview) without any changes.

960808	Reimplemented the following commands in Scheme: backward-cell,
	forward-cell, set-mark-command, exchange-point-and-mark,
	beginning-of-buffer, end-of-buffer, top-of-buffer, bottom-of-buffer,
	beginning-of-line, end-of-line, next-line, previous-line

960808	Added quick help texts and context sensitive help for the
	menu and toolbar buttons.

960808	Environment variables SIAGHOME and SIAGHELP

960808	Changed some keybindings back to Emacs style.

960805	Automatically load $SIAGHOME/siag/siag.scm on startup.

960801	Improved postscript generation. Now prints multiple pages and
	inserts DSC comments so it can be post-processed. Version 0.95.

960727	Changed the block setting again. Nothing is changed in the
	program, but app-defaults now does the following:
	Button 2 in the grid sets top left block boundary
	Button 3 in the grid sets bottom right block boundary
	Nothing else was changed. I think this is more logical.

960727	Reap zombies in calc_matrix.

960726	Better plotting with optional titles, tics on the x axis and
	choice between all the simple 2D styles. Version 0.94.

960726	In savematrix: save empty cells with nonstandard format (e.g. borders).

960725	Format selection dialog ported to Xt.

960720	Stopped drawing cells and coordinates out of bounds.

960720	Fixed the scrollbars.

960720	Simplified the block setting et al. New behaviour:
	Button 1 in the grid moves point
	Button 2 in the grid moves mark
	Button 3 in the grid sets block to between mark and clicked cell
	Button 1 in colnum sets block to clicked column
	Button 2 in colnum sets left block boundary
	Button 3 in colnum sets right block boundary
	Button 1 in rownum sets block to clicked row
	Button 2 in rownum moves top block boundary
	Button 3 in rownum moves bottom block boundary
	All of this is in the app-defaults so it can be changed by people
	with a shortage of buttons.

960720	Added toolbar button for plotting.

960719	Made the cursor and grid look and act like the old Xlib Siag,
	including displaying the correct fonts and colours.

960719	Toolbar buttons.

960718	File selection dialog.

960716	Reintroduced the old C-style expression syntax.

960716	Replaced varargs.h with stdarg.h.

960715	Simple plotting using Gnuplot. Only plots a single row or
	column using points.

960713	Previewing using Ghostscript.

960710	Started moving Siag from Xlib-only to Xt with Athena (or Xaw3d)
	widgets. Version increased to 0.91 to distinguish from Xlib Siag.

960705	Use Chimera as help browser and get rid of the ridiculous
	Siaghelp. Also split siag.html into several smaller files.

960212	Cleanups. Moved menu code to a separate module. Removed buttons
	that aren't implemented from the cell format dialog.

960211	Prints multiple fonts.

960209	New file format with support for cell size and format.

960207	Fixed the worst memory leaks, having to do with font handling.

960201	Font selection dialog, rather than typing in a number.

960130	Fonts (screen only, not paper).

960128	Prints! Single font, single page, only Postscript, but still...

960125	Adjustable cell width & height; can't save yet.

960125	Command line arguments are now passed correctly to Siod. This means
	that there is no need to hard-code the filename .siagrc as the
	init file can be selected with -ifilename.

960125	Minor cleanups. Now compiles quietly with -Wall.

960125	At last, error checking! Also redirected Siod output to llpr().

960124	Prettified alertbox with light gray background and a frame. Big deal...

960123	Print version in alert box instead of status bar.

960123	Resizing didn't work when a menu was active.

960122	Added animation to scrollbar arrow buttons.

960120	New execute() uses Siod rather than looking up the function
	itself. This calls for a new version: 0.9.

960120	Added hooks for siod in cmds.c.

960119	Added bindings for a number of functions in the standard FP lib:
	acos, acosh, asin, asinh, atan, ceil, cos, cosh, exp, fabs,
	floor, log, log10, pow2, pow10, sin, sinh, sqrt, tan, tanh,
	erf, erfc, j0, j1, lgamma, y0, y1, expm1, log1p, cbrt

960118	Added a rudimentary help browser. Also changed everything to
	English.

960117	Standard number of decimals changed to 2.

960116	Now that text input and menues work, the user interface is
	pretty much finished. There are of course plenty of bugs and
	missing goodies, but I'll still bump the version to 0.8.

960112	Introduced Siod as formula language. This change is significant
	enough that I increase the version number to 0.7.

960109	New commands to scroll the sheet one row/column without moving
	point (unless it would end up outside the visible part of the sheet).

960108	Uses keysyms so I can use the proper keys instead of the horrible
	Ctrl-combinations. I.e. arrow keys, Home, End, PageUp, PageDown
	et al work now.

960108	Changed version numbering. Since the program is not even
	remotely finished, I have devaluated the version number by
	90 %. Thus we now have version 0.6 instead of 6.0.
	Calc can keep its version numbers, but I don't intend to
	do anything about that program in the future.

960108	Scrollbars, status window now work.

960107	Prototype compiles and runs. All input comes from stdin and
	the menus, scrollbars and the status window don't work. The cursor
	disappears from time to time.

960106	Main window design finished. Dummy application.

