Re: v6: still no multiple undo?
- To: mathgroup at smc.vnet.net
- Subject: [mg77462] Re: v6: still no multiple undo?
- From: David Reiss <dbreiss at gmail.com>
- Date: Sat, 9 Jun 2007 05:36:07 -0400 (EDT)
- References: <f4b8pl$3s9$1@smc.vnet.net>
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 http://scientificarts.com/worklife), then if one sets the options for a notebook nb as: SetOptions[nb, NotebookEventActions :> {{"MenuCommand", "EvaluateCells"} :> EvaluateCellsWithTracking[]}] 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 like SetOptions[$FrontEnd, FrontEndEventActions :> {{"MenuCommand", "EvaluateCells"} :> EvaluateCellsWithTracking[]}] 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 wolfram.com. 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): ClearAll[EvaluateCellsWithTracking]; EvaluateCellsWithTracking[nb_NotebookObject] := Module[{nbr, currentEvaluationTrackingNotebook}, SelectionMove[nb, All, Cell]; nbr = NotebookRead[nb]; currentEvaluationTrackingNotebook = NotebookOpen[$CurrentEvaluationTrackingNotebookFile, Visible -> False]; SelectionMove[currentEvaluationTrackingNotebook, After, Notebook, AutoScroll -> False]; NotebookWrite[currentEvaluationTrackingNotebook, nbr]; NotebookSave[currentEvaluationTrackingNotebook]; NotebookClose[currentEvaluationTrackingNotebook]; FrontEndExecute[FrontEnd`FrontEndToken[nb, "Evaluate"]]; nb ]; EvaluateCellsWithTracking[] := EvaluateCellsWithTracking[EvaluationNotebook[]] --David http://scientificarts.com/worklife Now Mathematica 6 compatible On Jun 8, 5:50 am, "Barthelet, Luc" <l... at ea.com> 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 Remove_Thisdbailey.co.uk> 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 > >http://www.dbaileyconsultancy.co.uk