MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: v6: still no multiple undo?

OK, I answered the question (at least in principle) for myself.

If one defines a function called, say, EvaluateCellsWithTracking[]
(not a coincidence that that is similar to the name of the function in, then if one sets the options for
a notebook nb as:

 NotebookEventActions :> {{"MenuCommand", "EvaluateCells"} :>

this will do the trick.  Of course it depends on what
EvaluateCellsWithTracking[] is defined to do, but you could create
your own bit of code within a Module and place it whre
EvaluateWithTracking[]  appears in the above bit of code.

There is a bit of trickyness here (which had be restart mathematica
several times when I got into an infinite loop, but it is doable.

One thing though, when I tried something at the level of the FrontEnd

 FrontEndEventActions :> {{"MenuCommand", "EvaluateCells"} :>

I encountered a nasty bug or two, so I would not recommend this as a
global FrontEnd approach just yet, but rather use the notebook-level
approach in the first snippet of code.  As always I will track it down
in a simple example and report it to  bugs at

An example of what you might use for EvaluateCellsWithTracking is
(this is a rarified version of what is in A WorkLife FrameWork--for
this tow rk you will need to create a file on disk to store the
evaluatons and specify the parameter
$CurrentEvaluationTrackingNotebookFile as its file path):


EvaluateCellsWithTracking[nb_NotebookObject] :=

  Module[{nbr, currentEvaluationTrackingNotebook},

   SelectionMove[nb, All, Cell];

   nbr = NotebookRead[nb];

   currentEvaluationTrackingNotebook =
     Visible -> False];

   SelectionMove[currentEvaluationTrackingNotebook, After, Notebook,
    AutoScroll -> False];

   NotebookWrite[currentEvaluationTrackingNotebook, nbr];



   FrontEndExecute[FrontEnd`FrontEndToken[nb, "Evaluate"]];



EvaluateCellsWithTracking[] :=

Now Mathematica 6 compatible

On Jun 8, 5:50 am, "Barthelet, Luc" <l... at> wrote:
> While I strongly support that multipleundois a feature we need to see
> soon, it will take some real work to get there.
> The editor, and the kernels are linked in an efficient exchange of messages
> and information about what needs to be displayed where and when.
> While implementing multipleundo-redo in a stand alone editor usually
> requires only to implement a tokenizedundo-redo, in the v6 font end, it
> will require a more complex model. It is a bit like if you were trying to
> implement multipleundoon a wiki site like wikipedia where they are
> multiple contributors.
> We probably do not want the kernel to "undo", just the front end. So one
> solution would be to make the kernel and the user to appear as a single
> contributor, and toundoboth effects on the front end. So oneundomight
> remove an output created by the kernel.
> Even that is challenging, because Dynamics now create a lot of updates and
> you will not want to roll those back.
> Anyway, the front end team is obviously smart enough to find a solution for
> all those things, but it is not going to be easy.
> A cheap thing that I would like to see, is a text buffer of all my input and
> all the code I deleted saved as a log on disk. It might be ugly, but it
> would be VERY USEFUL.
> Cheers,
> Luc
> On 6/7/07 3:34 AM, "David Bailey" <dave at> wrote:
> > David wrote:
> >> Will Robertson wrote:
> >>> Hello,
> >>> I am baffled that technical software is released in 2007 with only a
> >>> singleundolevel. Am I missing something here? Is it because I'm
> >>> using a student license? How hard can anundostack really be in the
> >>> notebook interface?
> >>> I've been irritated a few times in v5.2 from clumsy keypresses losing
> >>> me work that I would expect to be two "undo"s away. Alas not. Still.
> >>> Will Robertson
> >> Good point! I've wondered the same thing for a long time. This is the
> >> only app I run that doesn't happen multiple levels ofundo. I think it's
> >> time WRI spent some time on this issue.
> > How much time could it possibly take! Once you have a 1-levelundo
> > working, all you need to do is spill the relevant data into a structure
> > - possibly on disk - and retrieve it as needed!
> > David Bailey
> >

  • Prev by Date: Re: Can anybody help me solving such a system of nonlinear equations?
  • Next by Date: Re: Pattern Matching Mathematica 6 versus 5.2?
  • Previous by thread: Re: v6: still no multiple undo?
  • Next by thread: comments