This version of Edwin requires microcode 11.125 or later. It should
authorChris Hanson <org/chris-hanson/cph>
Sat, 9 Jan 1993 01:16:25 +0000 (01:16 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 9 Jan 1993 01:16:25 +0000 (01:16 +0000)
commitacd7822e6420f7003071974acecdba5ff77779fd
tree8d4c49844a01ce782d27647fc4d182c9ea7ff8fd
parent66f243d3b07d42938df7307e90063fadac72354c
This version of Edwin requires microcode 11.125 or later.  It should
be compiled with compiler version 4.97 or later, because its
performance depends on several new compiler optimizations.

* Major redesign of low-level insert and delete operations, the
  primary aim of which is to greatly improve performance:

  * Insert, delete, and move-point daemons flushed.

  * Limits that track the extent of the changes to a buffer between
    display updates are now per-buffer rather than per-window.  The
    windows are notified of these changes at display update rather
    than while the changes are occurring.

  * Calls to the primitives STRING-ALLOCATE, SUBSTRING-MOVE-RIGHT!,
    and SUBSTRING-MOVE-LEFT! have been replaced with calls to Scheme
    procedures that perform the same functions.  These new procedures
    avoid the cost of calling C code, which can be very high.  The
    latter two procedures use heuristics to decide whether it is
    better to call the C primitive or to do the operation in line.

* The undo subsystem has been reimplemented.  The new implementation
  is a near-exact translation of the new undo code from Emacs 18.56.
  The major features of this implementation are: unlimited undo memory
  for one undo step; significantly better performance; and much
  clearer implementation, reducing probability of bugs (the previous
  implementation is known to be buggy).

* The new implementation of STRING-ALLOCATE fixes the bug that caused
  the editor to go into an infinite loop when reading in a file that
  was too large to fit in memory.

* The MOVE-TO-COLUMN procedure had a problem because it was searching
  for the end of line in order to pass it as a limit argument to
  GROUP-COLUMN->INDEX.  In some cases, particularly paragraph fill,
  this changed a linear algorithm to quadratic.  This has been fixed
  by changing GROUP-COLUMN->INDEX to stop at end of line even if that
  is not the given limit.

* The DEFINE-NAMED-STRUCTURE macro has been changed to create an
  object like those created by DEFINE-STRUCTURE, so that the printer
  and pretty-printer will treat them in the usual way.

* The LINE-START and LINE-END procedures have been rewritten to make
  them faster.  These procedures are used in many places in the editor
  and must be fast.  The associated MOVE-VERTICALLY has been
  eliminated as it's no longer used.

* TRANSPOSE-THINGS has been rewritten so that it doesn't leave
  permanent marks attached to the buffer.

* HORIZONTAL-SPACE-START and HORIZONTAL-SPACE-END no longer look for
  the nearest line limit, since that was completely unnecessary.  The
  procedures that they call automatically stop at the line edge.

* BOCHSER code, which was not being loaded, is now also not compiled
  since it depended on the move-point daemons.
19 files changed:
v7/src/edwin/buffrm.scm
v7/src/edwin/bufwin.scm
v7/src/edwin/bufwiu.scm
v7/src/edwin/bufwmc.scm
v7/src/edwin/comred.scm
v7/src/edwin/curren.scm
v7/src/edwin/decls.scm
v7/src/edwin/edtfrm.scm
v7/src/edwin/edwin.pkg
v7/src/edwin/fileio.scm
v7/src/edwin/grpops.scm
v7/src/edwin/image.scm
v7/src/edwin/macros.scm
v7/src/edwin/make.scm
v7/src/edwin/motion.scm
v7/src/edwin/struct.scm
v7/src/edwin/things.scm
v7/src/edwin/undo.scm
v7/src/edwin/utils.scm