Well, I would&#39;ve thought that the end result of executing a script should be the same whether you step trough it or not. However, I think the batch pen trails issue is most of the times irrelevant and it overly complicates the code. <div>

So, I agree with you, but I would like to hear Karl&#39;s opinion on this.</div><div><br></div><div>Cheers,</div><div>Richo<br><br><div class="gmail_quote">On Mon, Feb 6, 2012 at 9:21 PM, Scott Wallace <span dir="ltr">&lt;<a href="mailto:scott.wallace@squeakland.org">scott.wallace@squeakland.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Actually, I think that when single-line-stepping with Richo&#39;s new Scriptor debugger feature, if an object&#39;s pen is down and a line of script is executed that moves the object, a pen trail *should* be put down, even if &quot;batchPenTrails&quot; is in effect.  A semantic argument for this choice can be made, given the definition of &quot;batchPenTrails&quot;, but my preference is based just on common sense and least surprise.<br>


<br>
(And anyone with experience with debugging any live system knows that the when you single-step at leisure through something that normally is happening in a flash, you&#39;re running the code in a different context and you&#39;re going to encounter differences...).<br>


<br>
If doing turtle-graphics of the sort in Karl&#39;s example, one probably does not want &quot;batchPenTrails&quot; to be turned on in the first place.<br>
<span class="HOEnZb"><font color="#888888"><br>
  -- Scott<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Feb 3, 2012, at 11:31 PM, <a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a> wrote:<br>
<br>
&gt; Ricardo Moran uploaded a new version of Etoys to project Etoys:<br>
&gt; <a href="http://source.squeak.org/etoys/Etoys-Richo.100.mcz" target="_blank">http://source.squeak.org/etoys/Etoys-Richo.100.mcz</a><br>
&gt;<br>
&gt; ==================== Summary ====================<br>
&gt;<br>
&gt; Name: Etoys-Richo.100<br>
&gt; Author: Richo<br>
&gt; Time: 3 February 2012, 8:30:10 pm<br>
&gt; UUID: f95a393c-27a3-e541-a345-4fd66b47cd8f<br>
&gt; Ancestors: Etoys-kfr.99<br>
&gt;<br>
&gt; * Fixed step button behavior when #batchPenTrails option is on.<br>
&gt;<br>
&gt; =============== Diff against Etoys-kfr.99 ===============<br>
&gt;<br>
&gt; Item was changed:<br>
&gt;  Object subclass: #EtoysDebugger<br>
&gt; +     instanceVariableNames: &#39;scriptEditor next timesToRepeat highlighter startingPosition&#39;<br>
&gt; -     instanceVariableNames: &#39;scriptEditor next timesToRepeat highlighter&#39;<br>
&gt;       classVariableNames: &#39;&#39;<br>
&gt;       poolDictionaries: &#39;&#39;<br>
&gt;       category: &#39;Etoys-Debugger&#39;!<br>
&gt;<br>
&gt; Item was changed:<br>
&gt; + ----- Method: EtoysDebugger&gt;&gt;delete (in category &#39;initialization&#39;) -----<br>
&gt; - ----- Method: EtoysDebugger&gt;&gt;delete (in category &#39;as yet unclassified&#39;) -----<br>
&gt;  delete<br>
&gt;       highlighter ifNotNil: [:h | h delete]!<br>
&gt;<br>
&gt; Item was changed:<br>
&gt;  ----- Method: EtoysDebugger&gt;&gt;evaluateNextTile (in category &#39;evaluating&#39;) -----<br>
&gt;  evaluateNextTile<br>
&gt; +     [next = (scriptEditor tiles at: 1 ifAbsent: [nil])<br>
&gt; +             ifTrue: [&quot;We are about to evaluate the first tile&quot;<br>
&gt; +                     self updateStartingPosition].<br>
&gt; +     self trailMorph batchPenTrails<br>
&gt; +             ifTrue: [self evaluateNextTileWithBatchPenTrails]<br>
&gt; +             ifFalse: [next evaluateOn: self]]<br>
&gt; -     [next evaluateOn: self]<br>
&gt;               on: Error do: [:err || newNext |<br>
&gt;                       newNext := scriptEditor tiles at: 1 ifAbsent: [^ self].<br>
&gt;                       newNext = next<br>
&gt;                               ifTrue: [err pass]<br>
&gt;                               ifFalse: [next := newNext].<br>
&gt; +                     self evaluateNextTile]<br>
&gt; +<br>
&gt; + !<br>
&gt; -                     self evaluateNextTile]!<br>
&gt;<br>
&gt; Item was added:<br>
&gt; + ----- Method: EtoysDebugger&gt;&gt;evaluateNextTileWithBatchPenTrails (in category &#39;evaluating&#39;) -----<br>
&gt; + evaluateNextTileWithBatchPenTrails<br>
&gt; +     | penDown |<br>
&gt; +     penDown := self scriptedPlayer getPenDown.<br>
&gt; +     self scriptedPlayer setPenDown: false.<br>
&gt; +     [next evaluateOn: self]<br>
&gt; +             ensure: [self scriptedPlayer setPenDown: penDown].<br>
&gt; +     (penDown and: [next = (scriptEditor tiles at: 1 ifAbsent: [nil])])<br>
&gt; +             ifTrue: [| trailMorph tfm |<br>
&gt; +                     &quot;We&#39;ve just evaluated the last tile, we should draw pen trail&quot;<br>
&gt; +                     trailMorph := self trailMorph.<br>
&gt; +                     tfm := self scriptedPlayer costume owner transformFrom: trailMorph.<br>
&gt; +                     trailMorph<br>
&gt; +                             drawPenTrailFor: self scriptedPlayer costume<br>
&gt; +                             from: (tfm localPointToGlobal: startingPosition)<br>
&gt; +                             to: (tfm localPointToGlobal: self scriptedPlayerPosition)]!<br>
&gt;<br>
&gt; Item was changed:<br>
&gt;  ----- Method: EtoysDebugger&gt;&gt;initializeWith: (in category &#39;initialization&#39;) -----<br>
&gt;  initializeWith: aScriptEditorMorph<br>
&gt;       scriptEditor := aScriptEditorMorph.<br>
&gt;       next := scriptEditor tiles at: 1 ifAbsent: nil.<br>
&gt; +     self updateStartingPosition;<br>
&gt; +             initialize!<br>
&gt; -     self initialize!<br>
&gt;<br>
&gt; Item was added:<br>
&gt; + ----- Method: EtoysDebugger&gt;&gt;scriptedPlayer (in category &#39;accessing&#39;) -----<br>
&gt; + scriptedPlayer<br>
&gt; +     ^ scriptEditor playerScripted!<br>
&gt;<br>
&gt; Item was added:<br>
&gt; + ----- Method: EtoysDebugger&gt;&gt;scriptedPlayerPosition (in category &#39;accessing&#39;) -----<br>
&gt; + scriptedPlayerPosition<br>
&gt; +     ^ self scriptedPlayer costume<br>
&gt; +             ifNil: [0@0]<br>
&gt; +             ifNotNil: [:m | m referencePosition]!<br>
&gt;<br>
&gt; Item was added:<br>
&gt; + ----- Method: EtoysDebugger&gt;&gt;trailMorph (in category &#39;accessing&#39;) -----<br>
&gt; + trailMorph<br>
&gt; +     ^ self scriptedPlayer costume ifNil: [World] ifNotNil: [:m | m trailMorph]!<br>
&gt;<br>
&gt; Item was added:<br>
&gt; + ----- Method: EtoysDebugger&gt;&gt;updateStartingPosition (in category &#39;initialization&#39;) -----<br>
&gt; + updateStartingPosition<br>
&gt; +     startingPosition := self scriptedPlayerPosition!<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; etoys-dev mailing list<br>
&gt; <a href="mailto:etoys-dev@squeakland.org">etoys-dev@squeakland.org</a><br>
&gt; <a href="http://lists.squeakland.org/mailman/listinfo/etoys-dev" target="_blank">http://lists.squeakland.org/mailman/listinfo/etoys-dev</a><br>
<br>
_______________________________________________<br>
etoys-dev mailing list<br>
<a href="mailto:etoys-dev@squeakland.org">etoys-dev@squeakland.org</a><br>
<a href="http://lists.squeakland.org/mailman/listinfo/etoys-dev" target="_blank">http://lists.squeakland.org/mailman/listinfo/etoys-dev</a><br>
</div></div></blockquote></div><br></div>