Thanks, Bob.  I&#39;ll try the occasional approach.  That indeed seems to do what I want.<div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 15, 2012 at 5:40 AM, Bob Arning <span dir="ltr">&lt;<a href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <font face="Georgia">If you want speed, then why not limit the
      visual updates to something you can see:<br>
      <br>
      doStepSeveral<br>
      <br>
          | n t lastDisplay |<br>
          t := [<br>
              (n := 500) timesRepeat: [<br>
                  self doStep.<br>
              ].<br>
          ] timeToRun.<br>
          Transcript show: t asString,&#39; ms for &#39;,n asString,&#39; steps
      without display&#39;; cr.<br>
          <br>
          t := [<br>
              (n := 500) timesRepeat: [<div class="im"><br>
                  self doStep.<br>
                  self changed: #contentsSelection.<br>
                  World displayWorldSafely.<br></div>
              ].<br>
          ] timeToRun.<br>
          Transcript show: t asString,&#39; ms for &#39;,n asString,&#39; steps with
      display&#39;; cr.<br>
          <br>
          lastDisplay := Time millisecondClockValue.<br>
          t := [<br>
              (n := 500) timesRepeat: [<br>
                  self doStep.<br>
                  (lastDisplay - Time millisecondClockValue) abs &gt; 20
      ifTrue: [<br>
                      lastDisplay := Time millisecondClockValue.<div class="im"><br>
                      self changed: #contentsSelection.<br>
                      World displayWorldSafely.<br></div>
                  ].<br>
              ].<br>
          ] timeToRun.<br>
          Transcript show: t asString,&#39; ms for &#39;,n asString,&#39; steps with
      occasional display&#39;; cr.<br>
          <br>
      yields:<br>
      <br>
      68 ms for 500 steps without display<br>
      4290 ms for 500 steps with display<br>
      101 ms for 500 steps with occasional display<br>
      <br>
      Cheers,<br>
      Bob<br>
      <br>
    </font><div><div class="h5">
    <div>On 11/15/12 3:16 AM, Eliot Miranda
      wrote:<br>
    </div>
    <blockquote type="cite">Hi Bob,
      <div><br>
      </div>
      <div>   thanks, but no thanks &lt;blush&gt;.  I want to see the
        update as fast as possible, even if it flickers like crazy.  I
        don&#39;t want to display the whole world, just the text morph in
        question. </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On Wed, Nov 14, 2012 at 11:13 AM, Bob
          Arning <span dir="ltr">&lt;<a href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF"> <font face="Georgia">This
                works for me:<br>
                <br>
                doStepSeveral<br>
                <br>
                    10 timesRepeat: [<br>
                        self doStep.<br>
                        self changed: #contentsSelection.<br>
                        World displayWorldSafely.<br>
                        (Delay forMilliseconds: 100) wait.    &quot;in case
                you want to see each step&quot;<br>
                    ]<br>
                    <br>
                    <br>
                Cheers,<br>
                Bob<br>
                <br>
              </font>
              <div>
                <div>
                  <div>On 11/14/12 1:26 PM, Eliot Miranda wrote:<br>
                  </div>
                  <blockquote type="cite">Hi All,
                    <div><br>
                    </div>
                    <div>    I submitted a run until feature for the
                      debugger to the Squeak inbox recently and would
                      commit it to trunk except that I&#39;d like the option
                      of having the selection update on each step.  But
                      I can&#39;t see how to do that.  I *think* selection
                      update is done with a callback here in
                      Debugger&gt;&gt;contents:selection:</div>
                    <div><br>
                    </div>
                    <div>
                      <div><br>
                      </div>
                      <div><span style="white-space:pre-wrap"> </span>Smalltalk

                        isMorphic ifTrue:</div>
                      <div><span style="white-space:pre-wrap"> </span>[World</div>
                      <div><span style="white-space:pre-wrap"> </span>addAlarm:

                        #changed:</div>
                      <div><span style="white-space:pre-wrap"> </span>withArguments:

                        #(contentsSelection)</div>
                      <div><span style="white-space:pre-wrap"> </span>for:
                        self</div>
                      <div><span style="white-space:pre-wrap"> </span>at:
                        (Time millisecondClockValue + 200)].</div>
                    </div>
                    <div><br clear="all">
                      <div>And I&#39;m not sure how this causes the
                        selection to update.  Is it part of text morph
                        draw or a separate thing?  This is too
                        convoluted to look through.  So perhaps someone
                        can help e.  If I want the selection to redraw
                        what&#39;s the minimum action necessary.  This is as
                        part of a loop that looks like</div>
                      <div><br>
                      </div>
                      <div>
                        <div><span style="white-space:pre-wrap"> </span>[self

                          selectedContext == context</div>
                        <div><span style="white-space:pre-wrap"> </span>
                          and: [(value := receiver with: context
                          executeMethod: method) == false]] whileTrue:</div>
                        <div><span style="white-space:pre-wrap"> </span>[self

                          doStep].</div>
                      </div>
                      <div><br>
                      </div>
                      <div>i.e. after the doStep I&#39;d like to force the
                        code pane to update its selection.</div>
                      <div><br>
                      </div>
                      <div>AdvThanksance</div>
                      -- <br>
                      best,
                      <div>Eliot</div>
                      <br>
                    </div>
                    <br>
                    <fieldset></fieldset>
                    <br>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
            <br>
            <br>
            <br>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <div><br>
        </div>
        -- <br>
        best,
        <div>Eliot</div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre></pre>
    </blockquote>
    <br>
  </div></div></div>

<br><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div><br>
</div>