Wed Oct 24 09:34:06 1990  Christopher Love  (love at pine)

	* dispepoch.c - fixed problem with duplicate (void and int)
	declarations of Ding().

Mon Oct 22 00:48:13 1990  Christopher Love  (love at pine)

	* termopts.h - #ifdef 0's changed to #ifdef IN_*; these function
	declarations will only be included if user #define s appropriate
	labels. 

	* ymakefile - corrected circular dependency for paths.h and
	config.h.

	* malloc.c - changed sole reference of old_mask to oldmask.
	(Potential problem for non-SYSV machines).

Fri Sep 28 16:58:01 1990  Christopher Love  (love at pine)

	* button.c - added epoch::buttons-at primitive.

	* x11term.c, config.h, s-sunos4.h - Added patch which will
	conditionally support X "Compose" feature.  Added minor fix to
	m-pmax.h. 

	* Updated ymakefile to remove references to X10...X11 is assumed.

	* Applied patches from Dave Brennan at Data General, which enable
	epoch to run on DG equipment.  Added files m-88k.h, s-dgux-4.30.h.
	Affected files include:  alarm.c, alloc.c, buffer.c, callint.c,
	data.c, dired.c, dispepoch.c, emacs.c, environ.c, eval.c,
	fileio.c, fns.c, indent.c, insdel.c, keyboard.c, keymap.c,
	malloc.c, minbuf.c, mocklisp.c, print.c, process.c, search.c,
	sysdep.c, unexec.c, window.c, x11term.c, lisp.h, termopts.h, x11term.h

Thu Sep 27 14:59:03 1990  Christopher Love  (love at pine)

	* s-sunos4.h - added (commented out) #define which reportedly 
	eliminates core-dumping problems for Sparc 1+ running OS 4.1

Tue Sep 25 15:22:05 1990  Christopher Love  (love at pine)

	* xdefault.c - x_get_defaults() now checks the type returned by
	property RESOURCE_MANAGER, and prints an error msg to stderr if
	type is not string or nil.

	* emacs.c - removed support for two emacs command line switches:
	-t for terminal output to a file, and -nw for no X-window.

	* window.c - fixed enlarge-window primitive to silently fail on
	attempts to enlarge window if it is sole window on a screen.

	* xdefault.c, screen.c - Added support for system-wide
	defaults in an "epoch" file in system app-defaults directory.
	Epoch will check in this directory for file corresponding to
	resource name *and* class.

Thu Sep 20 12:10:24 1990  Alan M. Carroll  (amc at LookingGlass)

	* Fixed memory leak in property code.

Wed Sep 19 14:17:38 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Added code to make_root_block() to force x11->mapped to 0 when
	the screen is created.

Sun Sep 16 15:00:13 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Added forward reference for read_escape in lread.c

	* Added forward reference for place in search.c

	* Added forward reference for insert_first_line in keymap.c

	* Added forward reference for save_window_save in window.c

Fri Sep 14 16:59:38 1990  Alan M. Carroll  (carroll at kaplan.cs.uiuc.edu)

	* Changed raw_get_property. It now checks to see if the property
	was too big to get the first time, and if so gets it again, with a
	buffer big enough to receive the whole thing. This was a problem
	for people with long RESOURCE_MANAGER setups.

	* Added fixes for HPUX-7. There is now a seperate s- file for it
	(which just include the standard and adds HPUX_7).

Thu Sep 13 11:28:35 1990  Alan M. Carroll  (carroll at kaplan.cs.uiuc.edu)

	* Changed the IO Error handler, so that it ignores them under HPUX
	but exits for other systems.

	* Changed the "screens" variable to "allowed-screens". Too many
	people were having collisions with "screens".

Mon Sep  3 13:08:10 1990  Alan M. Carroll  (carroll at kaplan.cs.uiuc.edu)

	* Changed epoch::coords-to-point. There were two bugs. First, the
	buffer position would be off by 1 for every line past the first of
	a continued line. Second, the horizontal scroll effect was no
	calculated correctly for the first line in a window.

Thu Aug 30 14:06:10 1990  Alan M. Carroll  (carroll at kaplan.cs.uiuc.edu)

	* Mod-to-shiftmask has been changed to return a value appropriate
	for the new rebind-key. It basically returns 1 shifted left by the
	argument. It is obsolete, and should not be used.

	* Changed the way rebind-key works. It's entirely different now. A
	lot slower, but it should be a lot more robust. Rebind-key now
	actually looks up the modifer key mapping, and uses that rather
	than the hardwired list. Mod-to-shiftmask is now useless. The
	shift mask argument in rebind-key now can be either a modifier
	shift mask (bit 0 for shift, bit 1 for lock, etc.), or a symbol
	(of the set 'shift, 'lock, 'control, 'meta, 'mod1 .. 'mod5), or a
	list of symbols (from the previous set). If the shift mask
	argument is not nil or 0, and there are no modifiers for the shift
	bit, then the key is not rebound (so, no more checks on the value
	of mod-to-shiftmask).

Wed Aug 29 15:35:42 1990  Alan M. Carroll  (carroll at kaplan.cs.uiuc.edu)

	* Freed the x modifier map in mod-to-shiftmask.

Fri Aug 10 15:36:51 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Fixed new display bug, where display lines weren't returned.

Thu Aug  9 15:24:26 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Redid all the scrolling stuff. Now, when doing a replot, if the
	screen is a shifted version of the desired screen, it is scrolled
	to be in better alignment with the desired screen.

Sun Aug  5 11:06:53 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Fiddling with the display code. Trying to simplify it, given
	that Epoch only runs under X.

	* New style stuff in. Seems to work. Probably lots of bugs, though.

Wed Aug  1 16:37:38 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Attributes are all different now. New type of object, a STYLE.
	Each style contains a description of how to plot it, including the
	various colors and stipples. Each style is a seperate object, and
	a given attribute is set to use a particular style.

Tue Jul 24 21:43:21 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Fix in preserve_other_columns so that attributes are preserved
	too. Not tested.

Tue Jul 17 10:46:33 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Changed Makefile's so that distclean removes the epoch and
	epoch-* files.

Mon Jul 16 15:09:19 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Changed x11fns.c to include sys/time.h on 386/ix systems.

Thu Jul  5 18:56:24 1990  Alan M. Carroll  (carroll at sunb3)

	* Changed cursor.color to default to the foreground color instead
	of black if not set or couldn't be parsed.

	* BETA VERSION SENT OFF - changes above here not in release!

Sat Jun 30 12:13:04 1990  Alan M. Carroll  (carroll at sunb6)

	* Added the function key stuff back to x11term.c, so that functin
	keys spit out that garbage once again. The variable
	epoch::function-key-mapping can be used to turn it off, though.

	* Added extra GCPROtection to read_minibuf(). I tracked down the
	"memory exhausted" error to the fact that the prefix argument to
	read_minibuf was getting GC'd while read_minibuf was running. This
	may also explain some of the other core dumps, since I noticed
	this while doing ^X^F and getting a GC (which is the standard
	symptom). I added GCPROtection to prompt & prefix in the function,
	and things seem to work better. It may be that the whole things
	stems from the set-window-buffer-hook, which can cause a GC inside
	read_minibuf.

	* Added SUNOS4.1 LocalTime patch. Apparently a function called by
	tzsetwall runs over its string by 1, and this blows up the GNU
	malloc pool.

Fri Jun 29 15:59:09 1990  Alan M. Carroll  (carroll at sunb2)

	* Changed xevent.c so that if epoch::event already has a vector of
	size at least three in it, it is reused, instead of creating a new
	one.

	* Put in a fix for select display/horizontal scroll bug.

	* Added epoch::set-bell, same as the old x-set-bell. Nil argument
	means use audio, non-nil visual.

	* Added epoch::flash-screen, taking a screen or xwin argument.
	Changed the way flashing is handled internally. Doesn't work too
	well on other screens on a color display. Can't think of a good
	way to fix that.

	* Added epoch::bell-volume. Should be set to an integer from -100
	to 100.

Wed Jun 27 15:52:41 1990  Alan M. Carroll  (carroll at sunb4)

	* Fixed the attribute plotting bug, which happened when the window
	was horizontally scrolled. The attributes would overwrite the
	text, and if scrolled too far, more vital areas. Found the
	selective display bug too, but no fix yet.

Tue Jun 26 12:10:50 1990  Alan M. Carroll  (carroll at sunb2)

	* Put in fix in cond so that it works correctly with no arguments,
	e.g. (cond) returns nil.

	* Added Dan LaLiberte's change-hooks fixes. Changed editfns.c, and
	insdel.c

Wed Jun 20 12:13:59 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Bug in Epoch somewhere - standard-input is being left bound to
	get-file-char, which is bad. This happened during event dispatch,
	and read was called with a value of nil, which caused a core dump
	because of standard-input being bound to get-file-char, and there
	not being a file. The only place it gets bound is in load, so it
	looks like the stack isn't getting unwound correctly.

Sat Jun 16 13:51:11 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Changed the way display lines are allocated, to do a whole
	screen's worth in one malloc (instead of each individually).

Thu Jun  7 08:17:05 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Put BLOCK_INPUT()'s in the key rebind code.

	* Finished making epoch::coords-to-point work. It takes 3
	arguments, X Y and (optional) SCREEN. Seems to work on scrolled
	and non-first screens, both horizontally and vertically. Should be
	a lot faster than mouse::convert-xy-screen.

Wed Jun  6 22:24:49 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Changed next-window so that it if it is given a window on
	another screen, it will wrap back to that screen. However, if you
	give the minibuffer, the next window will always be on the edit
	screen. Show fix previous-window too, sometime.

	* Added epoch::first-window and epoch::selected-window. These
	return the first and selected windows of a screen.

Tue Jun  5 17:30:51 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Attempting to add epoch::coord-to-point primitive.

	* Moved the RW_FIXUP() and EDIT_SCREEN() macros from screen.c to
	screen.h

	* Changed symbol-buffer-value to be more robust internally. It
	doesn't do any buffer switching (which would be bad if the symbol
	was unbound or void). Moved to data.c instead of buffer.c, seems
	to fit better there.

Mon Jun  4 11:28:17 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Added symbol-buffer-value.

	* Removed the commented out paragraph start check code in SetBfp()
	in buffer.c

Sun Jun  3 15:38:45 1990  Alan M. Carroll  (carroll at LookingGlass)

	* epoch::change-screen-size now has all optional arguments.
	Defaults for rows, columns are the current values.

Tue May 29 13:19:03 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Changed ConfigureNotify events so that the event is always put
	on the event Q, even if it is ignored internally (i.e., synthetic
	or the change isn't large enough).

	* Tuned move-button so that markers are unchained only if needed.

	* Changed prepare_to_modify_buffer to not take a flag argument.
	The previously mentioned fixes to read only buttons removed the
	need for this flag.

Mon May 28 12:52:57 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Added check to setjmp in keyboard.c, so that if
	quit_throw_to_get_char() is called, the handler hook variable gets
	set back to 0.

	* Added check to move-button so that if the button doesn't move,
	it just returns it without changing it.

	* Changed internal_block_handler so that map, unmap, and iconify -
	screen all return the screen object they were passed.

	* changed casify_region() so that modify_region is called first,
	before the loop, and instead of prepare_to_modify_buffer().

	* fileio.c : removed the "+size" from the
	prepare_to_modify_buffer() call. Shouldn't be there, and I think
	it worked only because size was always 0.

	* Moved the after_change call in InsCStr to be after the button
	adjustment. I think that is important.

	* Fixed a bug in InsCStr(). The call to prepare_to_modify_buffer()
	should have the start and end both be point. If a length is
	included, that means that if you are not in a ROB, but one follows
	point, and the string is longer than the distance to the ROB, you
	get a ROB error.

	* Fixed read-only-region-p to do a better job of figuring out
	whether there is a collision. Primarily, empty regions (start ==
	end) that are at the start/end of a read-only button are not
	collisions, since the button adjuster will fix them up.

	* Put a Denys fix into xdisp.c, for better checking on whether a
	line is continued (around line 1591).
	hpos -> (hpos - XFASTINT(w->left) /* account for window edges */

Sun May 27 21:05:47 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Fixed newline in cmds.c so that it doesn't do the back up if the
	preceeding character is in a read-only button.

Thu May 24 08:49:38 1990  Alan M. Carroll  (carroll at LookingGlass)

	* Added fix in scan_sexps_forward() in syntax.c. There was an
	error for lines that started with a close paren. The fix was to
	initialze curlevel->last to -1, along with curlevel->prev,
	otherwise curlevel->prev would get set to the (bogus) value in
	curlevel->last.

	* Changed direct_output_forward_char to not have the
	fflush(stdout). that file descriptor is closed, anyway. Changed
	direct_output_for_insert also. Same reason.

	* Changed epoch::font to not set the base_size hints at all - they
	should be unaltered from the original settting. Changed
	x_set_hints() in screen.c to set the base_size to 0 in x and y.

	* Changed epoch::font to set the base_size hints to 0.

	* Added epoch::query-cursor [ screen ]. Returns an X,Y cons pair
	of the text cursor location.

Wed May 23 21:06:09 1990  Alan M. Carroll  (carroll at glass)

	* Discovered the "add-change-log-entry" feature.

/*

5/23/90

  Had some problems with SIGIO not happening at the right times on the Sparc
  so I added another trigger in epoch::dispatch-events.

  Changed epoch::make-id and epoch::make-screen to epoch::get-screen-id and
  epoch::get-screen. epoch.el contains fset's to hide this.

5/21/90

  Mucking with button.c -
	make-button : buffer argument can be a string naming a buffer.
	button-read-only-p : requires a button argument
	set-button-read-only : sets according to flag, not always t.
			       returns the button.
	move-button : rewrote the whole thing. The old version was a
		confused mess. Why a simple linked-list insertion needed
		two for loops is beyond me. Simplified and generalized the
		argument checking.

  Changed a lot of the function defines in epoch.el to fset's. I think this
  makes a lot more sense, in addition to being more efficient.

  Removed the DENYS_EVENT_HANDLING stuff - not much point, with the new event
  stuff.

  Added defines for allowing the gap to be moved by bcopy(). Can define it
  for right or left overlap independently.

  Changed the way epoch.el deals with re-mapping the minibuffer. Seems that
  the previous method would fail if the user used user positioning for the
  first edit screen and took too long to do it. Now an (on-unmap-do) is used
  to deal with it better.

  Put (undo-boundary) into mouse::paste-button. Before you couldn't undo
  mouse pasting.

  Bumped up the OBARRAY_SIZE again, this time to 2053. Wish there was some
  way of telling what the utilization looks like. A check with mapatom gives
  a total of ~2666 symbols in the obarray.

BUGS: 
	Changed the way XY pairs are converted to points. The old method
	was broken, it didn't deal with wrapped lines correctly. (I
	finally understand what the (current-column) was doing in the
	original source). It should now work correctly. This includes a
	fix to the motion code too. Should handle wrapped lines and scrolled
	text now.

	Fixed the button printing bug reported by Danny. If the buffer name
	of a button was too long, it would overwrite the print buffer and
	crash Epoch.

5/20/90

  Added epoch::dispatch-events. Causes all events up to the next key to
  be dispatched. Implicitly called by sit-for and input-pending-p.

  Event.el changed to deal with the new event dispatch described below.

  Event dispatch all different now. Every queued event now puts a psuedo-key
  into the raw keyboard buffer. When that gets read (by get_char, sit-for,
  and input-pending-p), all events up to the next actual key are read and
  dispatched. For each one, the global variable epoch::event is bound to
  the event, and then the handler (in epoch::event-handler) is called.
  Note that the event is pulled from the queue even if there is no event
  handler, so the queue is guaranteed to empty.

  Fixed kbd_buffer_get_char() to call epoch_event_dispatch() when an event
  psuedo key is read from the keyboard buffer.

  Removing all special event code from wait_reading_process_input(). Shouldn't
  be needed at all.

  Changed the raw keyboard buffers to be unsigned shorts instead of chars.
  This was done by typedef'ing a new type, kbd_char_t, which is is what is
  used now, and is currently defined as unsigned short in termchar.h.

BUGS:
	There's definitely a bad bug in here somewhere. I got a BAD DATA TYPE
	error, which I tracked down to a string object with a length of
	0x7ffff7d8, which looks like a stack address.
	[ could it have been the following? ]

	The cached_rb stuff Denys put into internal_socket_read could be a
	problem, especially on SysV machines. They were statics inside
	functions, which is bad news (on SysV, static is ifdef'd out, so they
	were actually auto's!). Also, the cached rb & window values could have
	been GC'd since the last time internal_socket_read was called, so we
	need to force a clean start every time the function is entered.

  Finally removed that stupid key mapping crap from x11term.c, that gives back
  the wierd ESC [ garbage stuff for function keys. Now, if they are not
  rebound with epoch::rebind-key, then they are ignored entirely.

  Changed (numchars-nbytes > 0) to (numchars > nbytes) in internal_socket_read.

5/19/90

BUGS:
	Fixed epoch::select-screen so that it in the default case, it looks
	for a mapped screen, and if that fails then it looks for an
	unmapped screen.

  Changed the default buffer for screen creation to just reuse *scratch*.

5/18/90

  Fixed motion code to not flicker as much if the mouse stays at the same
  character.

  Delete-screen now looks for a mapped screen first, and then (if none) looks
  for an unmapped one, and fails only if there is only 1 edit screen.

BUGS:
	Added missing select-screen to create-screen

	cursor-to-screen now raises when auto-raise is set.

5/11/90

+ Changed the button display algorithm so that buttons with zero attributes
  (which are by definition invisible) are never selected over non-zero
  attribute buttons, even if the zero attribute one starts further to the
  right.

BUGS:
	Mode alist stuff fixed - broke when create-screen was passed a string
	that named a non-existent buffer.

	send-client-message now uses a (hopefully) correct bit mask

+ Client message values are now of the form (TYPE WINDOW . DATA)

5/9/90

BUGS:
	Errors in epoch.el about setting the WM_PROTOCOLS property. Seems to
	work now.

	Removed BLOCK_INPUT() from x_internal_block_handler() because it was
	causing failures under BSD.

+ Removed some of the extraneous marker/integer conversions in motion.el

+ Added handler for the WM_DELETE_WINDOW client message. Seems to work.

+ Removed BLOCK_INPUT()'s from send-client-message.

5/8/90

BUGS:
	The XSync() in wait_reading_process_output needs to have input blocked
	around it. Also, the count was bumped to 1000 instead of 100.

	The raw_get_property() call in xdefault for the RESOURCE_MANAGER
	property should have the second call with a plane of 0, not XD_plane
	(we've already checked that one)

+ Sole mapped screen deletion - screw the variable, I can't think of a good
  name for it, so I got rid of it. Deleting the sole mapped screen is now
  the way it works.

5/6/90

+ Fixed FormatStringProperty to drop empty strings.

+ Changed send-client-message to take a SOURCE parameter. I think that this
  is necessary.

+ Put a spin_check var into wait_reading_process_output that does a Sync every
  hundred times through the loop without an exit. This may also solve the
  SysV sub-process lockup bug.

+ epoch::screen-information now accepts X-window resources. The internal border
  value for non-Epoch X-windows is always 0.

+ internal_block_handler changed, so that as many as possible of the handler
  cases now accept X-window resources.

+ Client messages changed. Events now use the code that get-property uses
  to convert X to Elisp data. Sending messages is cleaner, with the call
  (epoch::send-client-message dest [data] [type] [format]), where it tries
  to deduce as much as possible from the data, and the type and format
  can be used to over ride.

Changes 5/5/90

+ X-util changes: Denys is right, we need to be more consistent about X
  coordinates and screen coordinates. However, I don't like the way he's
  set it up, so here's the way I'm going to do it. "mouse" will mean
  "screen" coordinates, e.g., character offsets. "pointer" will mean X
  coordinates, without regard to borders, i.e. just the raw data. This
  applies to query-pointer, query-mouse, warp-pointer, warp-mouse. Note that
  this implies that the -mouse calls can _not_ take X-window resources, as
  character coordinates only make sense for Epoch screens.
  Denys' query-mouse has been changed to query-set-mouse, but it's only there
  if DENYS_EVENT_HANDLING was defined during compilation.
  This means that calls to epoch::query-pointer should be changed to
  epoch::query-mouse, and epoch::warp-pointer to epoch::warp-mouse.

+ Spinning bug still eludes solution. Changed XSetIOErrorHandler to
  XExitGracefully instead of XIgnoreError. This works unless you've actually
  edited with Epoch, in which case it still spins. Problem seems to be that
  XPending() doesn't notice that the socket has gone south.

+ Property handling basically rewritten. Much more general. Externally, the
  interface is the same, except that set-property and get-property are more
  generous in the types of arguments they will take. In particular, they
  will now both accept X-window resources for screen arguments, and X-atom
  resources for property name arguments.

  Properties can now be sequences of items, so a property can be set to
  (for example) the list ("joe" "bob"). Arrays are considered equivalent to
  lists for settting, and multiple values are always returned in lists.
  Arrays and lists must have elements that are all the same type.

  All property stuff was removed from xevent.c (why was it there anyway?)
  and put into a new file, property.c (which is 15K, and so deserving of a
  file of its own).

  The primary results of this are
  	1) A much cleaner internal interface
	2) The ability to move to a much more complete ICCCM compatibility.

+ Cleaned up stuff for X-resources. Bug for (equal) fixed.
  epoch::resource-p changed to epoch::resourcep for naming consistency.
  epoch::id-of-screen changed to epoch::xid-of-screen for same reason.
  added
	epoch::resource-to-string resource [ base ]
	epoch::set-resource-type resource resource-atom

+ Added epoch::query-tree, which returns a list (ROOT PARENT . CHILDREN).
  accepts screens or X-window resources.

+ Changed create_screen and change_screen_size to do screen size clipping.
  Should solve the window-too-small -> core dump problem.

+ Physically removed all references to sigio_critical, not just #define'ing
  them out.

5/1/90

+ All basic Epoch Lisp files replaced with new versions. See manual for
  details.

AMC changes to 3.2alpha to run under 386/ix

+ added additional SIGIO_CRITICAL_OK to process.c

+ added s-386ix.h file for creating special stuff. Just includes s-ugs5-3.h
  and then defines _386ix.
  Added conditionals to process.c to include sys/time.h if _386ix is defined
  instead of time.h (the sys version includes the latter)

+ added conditionals to sysdep for TIOC thingies
	#if defined(TIOCGETC) && !defined(TIOCLGET)
	#undef TIOCGETC
	#endif

+ Added #ifdef SIGIO_CRITICAL_OK around sigio_critical in keyboard.c

+ added MAXHOSTNAMELEN to xdefault.c (conditional define)

+ added #ifdef HAVE_TIMEVAL stuff to x11term.c : CXTFlash()

+ added line to ymakefile : CC = gcc

+ changed COED references to CB
	dispepoch.c

+ commented out garbage after the end of #endif's in
	lisp.h
	dispepoch.c

+ Removed HAVE_UNIX_DOMAIN from config.h
+ used s-usg5-3.h
+ used m-intel386.h
*/
