Re: Multiple Selections in Notebook
- To: mathgroup at smc.vnet.net
- Subject: [mg65220] Re: Multiple Selections in Notebook
- From: "David Reiss" <dbreiss at gmail.com>
- Date: Sat, 18 Mar 2006 06:40:43 -0500 (EST)
- References: <dv8vqf$ng9$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Neal, Here is one strategy for a function that will do what you want. (Then number string "578208455191942" is just a random tag). The function uses the Kernel exclusively. It can probably be rewritten to work using only the FrontEnd. Thanks for this question. I think that I may include this function in the New Mathematica Package that I am in the midst of finishing off.... but of course it's yourse for the using.... Best, David (* **************************** *) CelarAll[EvaluateToHere]; EvaluateToHere::usage = "EvaluateToHere[nb] evaluates all Input cells in the notebook nb up to and including the current selection in nb. \ EvaluateToHere[] does this or the current InputNotebook. "; EvaluateToHere[nb_NotebookObject] := Module[{hasTag, selection}, SelectionMove[nb, After, Cell, AutoScroll -> False]; NotebookWrite[nb, Cell["", "Input", CellTags -> {"578208455191942"}, CellOpen -> False]]; SelectionMove[nb, Before, Notebook, AutoScroll -> False]; selection = NotebookFind[nb, "Input", Next, CellStyle, AutoScroll -> False]; hasTag = MemberQ[Flatten[{CellTags /. Options[selection]}], "578208455191942"]; While[! hasTag, SelectionEvaluateCreateCell[nb]; selection = NotebookFind[nb, "Input", Next, CellStyle, AutoScroll -> False]; hasTag = MemberQ[Flatten[{CellTags /. Options[selection]}], "578208455191942"]; ]; NotebookFind[nb, "578208455191942", All, CellTags]; NotebookDelete[nb] ]; EvaluateToHere[] := EvaluateToHere[InputNotebook[ ]] (* **************************** *) Neal Tornberg wrote: > I'd like to create an "Execute to Here" button in one of my homebrew > palettes. My instinct is to do it by selecting all cells previous to the > cursor position and "Evaluate Cells". SelectionMove apparently can't be > made to select more than one cell at once. Is there a way to do that or is > there a better way to accomplish what I want?