From xemacs-m  Sun Feb  2 10:30:09 1997
Received: from crystal.WonderWorks.COM (crystal.WonderWorks.com [192.203.206.1])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id KAA13495
	for <xemacs-beta@xemacs.org>; Sun, 2 Feb 1997 10:30:07 -0600 (CST)
Received: by crystal.WonderWorks.COM 
	id QQcbed05534; Sun, 2 Feb 1997 10:58:49 -0500 (EST)
Date: Sun, 2 Feb 1997 10:58:49 -0500 (EST)
Message-Id: <QQcbed05534.199702021558@crystal.WonderWorks.COM>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
From: Kyle Jones <kyle_jones@wonderworks.com>
To: xemacs-beta@xemacs.org
Subject: Re: Undo!
In-Reply-To: <kig3evfqzvm.fsf@jagor.srce.hr>
References: <199702010502.AAA03861@localhost.interport.net>
	<kign2tozwpd.fsf@jagor.srce.hr>
	<QQcbcr19912.199702020628@crystal.WonderWorks.COM>
	<199702020758.CAA04094@localhost.interport.net>
	<kig3evfqzvm.fsf@jagor.srce.hr>

Hrvoje Niksic writes:
 > Peter Pezaris <pez@dwwc.com> writes:
 > 
 > > change.  You hit undo 47 times to get back to that point, and change
 > > the thing that needs to get changed.  Wouldn't it be nice to hit
 > > "redo" 47 times to get back to where you really want to be?
 > 
 > I don't think any redo mechanism works that way.  Once you actually
 > change anything, the redo possibility is lost.
 > 
 > The way redo works, e.g. in `joe' editor is that you can press undo n
 > times, then move around all you want, and then press redo m times (m
 > <= n) to undo the undo itself.
 > 
 > In Emacs when you start moving around, the undo-s are recorded as just
 > a set of changes to the buffer, which is often annoying.
 > 

Now THAT doesn't seem hard to do at all, and in a given editing
situation I have no trouble at all figuring out what the editor
going to do.

Given the way Emacs undo is implemented, the only changes that
would be required are

   a) to not automatically move the undo record pointer back to
      the top of the stack until a buffer
      modification occurs,
   b) to keep a record of where point was after the last
      undo/redo in case the user wants to continue, and
   c) to add a redo command.

