<div dir="ltr">Hi David, Hi Marcel,<div><br></div><div>    how about a preference that causes the root project to be entered on a drawing error?  That way all one has to do is use projects to test new morphs and keep one's root project populated with unbroken morphs.  It won't fix every situation but it is simple and natural.  If you both agree I may have a go at adapting Marcel's code.  I want to do this quickly to unblock Karl with the legacy project loading work.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 2, 2018 at 9:40 PM, David T. Lewis <span dir="ltr"><<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Eliot,<br>
<br>
Marcel had developed a way for a Morphic project to drop into a debugger<br>
in MVC, which worked when the MVC project (or other non-Morphic project)<br>
was a parent of the Morphic project. This is good, but it required that<br>
you, as a Morphic developer, think ahead to open a non-Morphic project<br>
and then work in a Morphic project that is a child of that project.<br>
<br>
The changes discussed in the thread below allow the emergency evaluator<br>
to first look for a non-Morphic project (usually MVC) that is a parent<br>
of the current project. If found, use that to host the debugger, otherwise<br>
search all known projects for any project that is not Morphic and use<br>
that to host the debugger, and if all that fails, drop into the traditional<br>
emergency evaluator.<br>
<br>
For your case, try just opening an MVC project anywhere in your project<br>
hierarchy. Assuming the mechanism below works as advertised, you will<br>
be able to work in a Morphic project and have it drop into that MVC<br>
debugger when things go wrong. If the error is such that it breaks<br>
MVC also, then you will then find yourself back in the old emergency<br>
evaluator.<br>
<br>
There are no preferences involved, just make sure there is some MVC<br>
project opened in your image, and hopefully it will just work.<br>
<br>
Dave<br>
<div class="HOEnZb"><div class="h5"><br>
On Wed, May 02, 2018 at 08:25:47PM -0700, Eliot Miranda wrote:<br>
> Hi David,<br>
> <br>
> see below on the thread about loading od projects.  Currently the system<br>
> freezes with drawing errors.  I'm reminded that you were developing changes<br>
> to exit a project on drawing errors.  That would make debugging a lot<br>
> easier.  Specifically I mean the following message.  But I can't find a<br>
> preference that causes drawing errors to exit the project.  Did I<br>
> misunderstand?  If you have such code could you post it here?  If not, how<br>
> much effort would it be to get drawing errors to exit a sub-project if a<br>
> suitable preference were set?<br>
> <br>
> <br>
> On Thu, Dec 14, 2017 at 7:00 PM, David T. Lewis <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> wrote:<br>
> <br>
> > Marcel,<br>
> ><br>
> > Much better, thanks :-)<br>
> ><br>
> > After moving the EmergencyRecoveryRequested recursion guard reset from<br>
> > #finalExitActions: to #enter:revert:saveForRevert: the Morphic and ST80<br>
> > dependencies are gone. The end result is a total of three changed methods<br>
> > in Project, plus the new EmergencyRecoveryRequested class variable.<br>
> ><br>
> > Since they are no longer needed, I moved the Morphic and ST80 parts from<br>
> > inbox to treated inbox. All of the remaining changes are in the inbox<br>
> > as System-dtl.985.<br>
> ><br>
> > To summarize the changes: The original behavior of seaching for a parent<br>
> > MVCProject or MorphicProject to host the emergency evaluator works as<br>
> > originally designed. If no project is found, then search for any suitable<br>
> > project elsewhere in the project hierarchy. If that is not found then<br>
> > fall back on the traditional emergency evaluator. If error handling fails<br>
> > in the project for emergency evaluation, the also fall back on the<br>
> > traditional emergency evaluator.<br>
> ><br>
> > I expect this to work with other kinds of Project such as<br>
> > SqueakShellProject<br>
> > or EtoysProject, although I have not tested these so well.<br>
> ><br>
> > Dave<br>
> ><br>
> ><br>
> > On Thu, Dec 14, 2017 at 12:50:06PM -0500, David T. Lewis wrote:<br>
> > > Hi Marcel,<br>
> > ><br>
> > > Oh - now I understand what you mean (d'oh!). You are right. I will follow<br>
> > > up on your suggestion of putting it in #enter:revert:saveForRevert: (but<br>
> > > maybe not today).<br>
> > ><br>
> > > Thanks,<br>
> > > Dave<br>
> > ><br>
> > ><br>
> > > > Hi Dave,<br>
> > > ><br>
> > > > #finalExitActions: should not contain such critical code. That's what I<br>
> > > > meant. :) I see it more like a "Template Method" that does nothing<br>
> > serious<br>
> > > > by default.<br>
> > > ><br>
> > > > Maybe we could reset????<wbr>EmergencyRecoveryRequested in<br>
> > > > #enter:revert:saveForRevert: so that #finalExitActions: becomes free<br>
> > > > again. :-)<br>
> > > ><br>
> > > > Best,<br>
> > > > Marcel<br>
> ><br>
> <br>
> <br>
> <br>
> On Wed, May 2, 2018 at 7:48 PM, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com">eliot.miranda@gmail.com</a>><br>
> wrote:<br>
> <br>
> > Hi Karl,<br>
> ><br>
> > On Mon, Apr 30, 2018 at 11:17 AM, karl ramberg <<a href="mailto:karlramberg@gmail.com">karlramberg@gmail.com</a>><br>
> > wrote:<br>
> ><br>
> >> This change set make the project ALMOST load in a 32 bit 6.0 Squeak image.<br>
> >> But there are some conversion issues I have not figured out.<br>
> >><br>
> >> NOTE: Image will probably crash. USE WITH CARE<br>
> >><br>
> ><br>
> > Using all of your change set except ObjectScanner>>#scanFrom:, and the<br>
> > changes I committed to trunk today I was able to load<br>
> > <a href="http://MorphLayoutArticle.019.pr" rel="noreferrer" target="_blank">MorphLayoutArticle.019.pr</a> into a 64-bit Spur image (thanks Bert!!).  The<br>
> > image locks up due to a drawing error in GeeMailMorph(ScrollPane)>><wbr>innerBounds<br>
> > where UndefinedObject doesn't understand #-.  So things are close.  May I<br>
> > suggest that you add RenamedSourceClassReader in System-Object Storage, and<br>
> > move the other segment-specific scanning methods (ClassCategoryReader>>#<br>
> > scanFromNoCompile:[forSegment:<wbr>]) too?<br>
> ><br>
> > This is cool :-)<br>
> ><br>
> ><br>
> > BTW, there was a compiler bug with the native image segment loading code<br>
> > in 64-bit Spur.  This is fixed if you grab the last 64-bit Spur VMs from<br>
> > Travis.<br>
> ><br>
> ><br>
> >><br>
> >> Best,<br>
> >> Karl<br>
> >><br>
> >> On Mon, Apr 30, 2018 at 3:37 PM, H. Hirzel <<a href="mailto:hannes.hirzel@gmail.com">hannes.hirzel@gmail.com</a>><br>
> >> wrote:<br>
> >><br>
> >>> Unfortunately the dynamic essay <a href="http://MorphLayoutArticle.019.pr" rel="noreferrer" target="_blank">MorphLayoutArticle.019.pr</a> did not load<br>
> >>> in a fairly recent Squeak 6.0a trunk image.<br>
> >>><br>
> >>> an OrderedCollection(<wbr>ImageSegment(Object)>><wbr>doesNotUnderstand:<br>
> >>> #scanFrom: ObjectScanner>>scanFrom: [] in [] in<br>
> >>> MultiByteBinaryOrTextStream(<wbr>PositionableStream)>><wbr>fileInAnnouncing:<br>
> >>> BlockClosure>>on:do: [] in<br>
> >>> MultiByteBinaryOrTextStream(<wbr>PositionableStream)>><wbr>fileInAnnouncing: []<br>
> >>> in [] in MorphicUIManager>><wbr>displayProgress:at:from:to:<wbr>during:<br>
> >>> BlockClosure>>on:do: [] in<br>
> >>> MorphicUIManager>><wbr>displayProgress:at:from:to:<wbr>during:<br>
> >>> BlockClosure>>ensure:<br>
> >>> MorphicUIManager>><wbr>displayProgress:at:from:to:<wbr>during:<br>
> >>> ProgressInitiationException>><wbr>defaultResumeValue<br>
> >>> ProgressInitiationException(<wbr>Exception)>>resume<br>
> >>> ProgressInitiationException>><wbr>defaultAction<br>
> >>> UndefinedObject>>handleSignal: Context>>handleSignal:<br>
> >>> Context>>handleSignal: Context>>handleSignal:<br>
> >>> ProgressInitiationException(<wbr>Exception)>>signal<br>
> >>> ProgressInitiationException>><wbr>display:at:from:to:during:<br>
> >>> ProgressInitiationException class>>display:at:from:to:<wbr>during:<br>
> >>> ByteString(String)>><wbr>displayProgressAt:from:to:<wbr>during:<br>
> >>> ByteString(String)>><wbr>displayProgressFrom:to:during:<br>
> >>> MultiByteBinaryOrTextStream(<wbr>PositionableStream)>><wbr>fileInAnnouncing:<br>
> >>> MultiByteBinaryOrTextStream(<wbr>PositionableStream)>>fileIn<br>
> >>> MultiByteBinaryOrTextStream>><wbr>fileInProject<br>
> >>> MultiByteBinaryOrTextStream>><wbr>fileInObjectAndCodeForProject [] in [] in<br>
> >>> ProjectLoading class>>fileInName:archive:<wbr>morphOrList:<br>
> >>> BlockClosure>>on:do: [] in ProjectLoading<br>
> >>> class>>fileInName:archive:<wbr>morphOrList: BlockClosure>>ensure:<br>
> >>> ProjectLoading class>>fileInName:archive:<wbr>morphOrList: ProjectLoading<br>
> >>> class>>openName:stream:<wbr>fromDirectory:withProjectView:<wbr>clearOriginFlag:<br>
> >>> ProjectLoading class>>openName:stream:<wbr>fromDirectory:withProjectView:<br>
> >>> [] in ProjectLoading class>>openOn: BlockClosure>>on:do: [] in<br>
> >>> ByteString(String)>><wbr>displaySequentialProgress: [] in [] in<br>
> >>> MorphicUIManager>><wbr>displayProgress:at:from:to:<wbr>during:<br>
> >>> BlockClosure>>on:do: [] in<br>
> >>> MorphicUIManager>><wbr>displayProgress:at:from:to:<wbr>during:<br>
> >>> BlockClosure>>ensure:<br>
> >>> MorphicUIManager>><wbr>displayProgress:at:from:to:<wbr>during:<br>
> >>> ProgressInitiationException>><wbr>defaultResumeValue<br>
> >>> ProgressInitiationException(<wbr>Exception)>>resume<br>
> >>> ProgressInitiationException>><wbr>defaultAction<br>
> >>> UndefinedObject>>handleSignal:<br>
> >>> ProgressInitiationException(<wbr>Exception)>>signal<br>
> >>> ProgressInitiationException>><wbr>display:at:from:to:during:<br>
> >>> ProgressInitiationException class>>display:at:from:to:<wbr>during:<br>
> >>> ProgressInitiationException class>>display:from:to:during:<br>
> >>> ByteString(String)>><wbr>displaySequentialProgress: ProjectLoading<br>
> >>> class>>openOn: [] in ExternalDropHandler class>>defaultProjectHandler<br>
> >>> ExternalDropHandler>>handle:<wbr>in:dropEvent:<br>
> >>> PasteUpMorph>><wbr>handleDroppedItem:event: [] in PasteUpMorph>>dropFiles:<br>
> >>> BlockClosure>>ensure: PasteUpMorph>>dropFiles:<br>
> >>> PasteUpMorph(Morph)>><wbr>handleDropFiles: DropFilesEvent>>sentTo:<br>
> >>> PasteUpMorph(Morph)>><wbr>handleEvent:<br>
> >>> MorphicEventDispatcher>><wbr>dispatchEvent:withHandler:<wbr>withMorph:<br>
> >>> MorphicEventDispatcher>><wbr>dispatchDefault:with:<br>
> >>> MorphicEventDispatcher>><wbr>dispatchEvent:with:<br>
> >>> PasteUpMorph(Morph)>><wbr>processEvent:using: [] in<br>
> >>> PasteUpMorph>>processEvent:<wbr>using: BlockClosure>>ensure:<br>
> >>> PasteUpMorph>>processEvent:<wbr>using: PasteUpMorph(Morph)>><wbr>processEvent:<br>
> >>> [] in [] in [] in HandMorph>>sendEvent:focus:<wbr>clear:<br>
> >>> BlockClosure>>ensure:<br>
> >>> DropFilesEvent(MorphicEvent)>><wbr>becomeActiveDuring: [] in [] in<br>
> >>> HandMorph>>sendEvent:focus:<wbr>clear: BlockClosure>>ensure:<br>
> >>> HandMorph>>becomeActiveDuring: [] in HandMorph>>sendEvent:focus:<wbr>clear:<br>
> >>> BlockClosure>>ensure: PasteUpMorph>><wbr>becomeActiveDuring:<br>
> >>> HandMorph>>sendEvent:focus:<wbr>clear: HandMorph>>sendEvent:focus:<br>
> >>> HandMorph>>handleEvent: HandMorph>>processEvents [] in<br>
> >>> WorldState>>doOneCycleNowFor: Array(SequenceableCollection)><wbr>>do:<br>
> >>> WorldState>>handsDo: WorldState>>doOneCycleNowFor:<br>
> >>> WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in<br>
> >>> MorphicProject>><wbr>spawnNewProcess [] in BlockClosure>>newProcess)<br>
> >>><br>
> >>> On 4/30/18, H. Hirzel <<a href="mailto:hannes.hirzel@gmail.com">hannes.hirzel@gmail.com</a>> wrote:<br>
> >>> > Hi Tim<br>
> >>> ><br>
> >>> > Implementing your suggestion [1] worked to make<br>
> >>> > <a href="http://MorphLayoutArticle.019.pr" rel="noreferrer" target="_blank">MorphLayoutArticle.019.pr</a> load into<br>
> >>> > Squeak 3.8.1, see screen shot.<br>
> >>> ><br>
> >>> > What I aiming at next  at is to load it into Squeak 6.0a trunk. I<br>
> >>> > assume this should be possible quite easily because of the<br>
> >>> > enhancements done last year [2][3].<br>
> >>> ><br>
> >>> > Regards<br>
> >>> > Hannes<br>
> >>> ><br>
> >>> ><br>
> >>> ><br>
> >>> ><br>
> >>> ><br>
> >>> > [1] Extend #initKnownRenames<br>
> >>> ><br>
> >>> > SmartRefStream>><wbr>initKnownRenames<br>
> >>> >       renamed<br>
> >>> >           at: #AlansTextPlusMorph put: #TextPlusMorph;<br>
> >>> >               at: #FlasherMorph put: #Flasher;<br>
> >>> >               yourself<br>
> >>> ><br>
> >>> > made <a href="http://MorphLayoutArticle.019.pr" rel="noreferrer" target="_blank">MorphLayoutArticle.019.pr</a> to load.<br>
> >>> ><br>
> >>> ><br>
> >>> > [2] 6502 format<br>
> >>> > <a href="http://wiki.squeak.org/squeak/6502" rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/<wbr>6502</a><br>
> >>> ><br>
> >>> > ImageFormat of the interpreter Virtual Machine.<br>
> >>> > May be loaded transparently into Squeak 6.0a through the help of<br>
> >>> > LegacyImageSegment.<br>
> >>> ><br>
> >>> > [3]<br>
> >>> > <a href="http://wiki.squeak.org/squeak/6579" rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/<wbr>6579</a><br>
> >>> > LegacyImageSegment<br>
> >>> > A new class introduced in March 2017 in Squeak 6.0a to enable the<br>
> >>> > loading of the older 6502 image segment format type .<br>
> >>> ><br>
> >>> > More see Smalltalk imageFormatVersion  <a href="http://wiki.squeak.org/squeak/" rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/</a><br>
> >>> 873<br>
> >>> ><br>
> >>> ><br>
> >>> > On 4/30/18, Tm Jhnsn <<a href="mailto:digit@sonic.net">digit@sonic.net</a>> wrote:<br>
> >>> >> Hi Hannes,<br>
> >>> >><br>
> >>> >> In 5.1 there is SmartRefStream>>#<wbr>initKnownRenames which includes:<br>
> >>> >><br>
> >>> >> at: #AlansTextPlusMorph put: #TextPlusMorph;<br>
> >>> >><br>
> >>> >> HTH,<br>
> >>> >> Tim<br>
> >>> >><br>
> >>> >><br>
> >>> >> On 4/30/2018 7:33 AM, H. Hirzel wrote:<br>
> >>> >>> Hi Bob<br>
> >>> >>><br>
> >>> >>> It still loads fine in Squeak 3.2. Thank you.<br>
> >>> >>><br>
> >>> >>> In Squeak 3.8.1 the SmartRefStream needs a new class for<br>
> >>> >>><br>
> >>> >>>       AlansTextPlusMorph<br>
> >>> >>><br>
> >>> >>><br>
> >>> >>> SmartRefStream>><br>
> >>> >>> alansTextPlusMorphbosfcebbmsop<wbr>ssrsggshtt0<br>
> >>> >>><br>
> >>> >>>     ^ PutNewClassHere<br>
> >>> >>><br>
> >>> >>><br>
> >>> >>> Any suggestions what I should put as a new class?<br>
> >>> >>><br>
> >>> >>> Regards<br>
> >>> >>> Hannes<br>
> >>> >>><br>
> >>> >>><br>
> >>> >>><br>
> >>> >>><br>
> >>> >>> On 4/30/18, Bob Arning <<a href="mailto:arning315@comcast.net">arning315@comcast.net</a>> wrote:<br>
> >>> >>>> Here is the latest one I have. It loaded fine in 3.2.<br>
> >>> >>>><br>
> >>> >>>><br>
> >>> >>>> On 4/29/18 10:20 PM, H. Hirzel wrote:<br>
> >>> >>>>> Hello<br>
> >>> >>>>><br>
> >>> >>>>> Is there a backup-copy/mirror available of the<br>
> >>> >>>>><br>
> >>> >>>>>                   MorphLayoutArticle<br>
> >>> >>>>><br>
> >>> >>>>> project which was on Bob's SuperSwiki? [1]<br>
> >>> >>>>><br>
> >>> >>>>> Regards<br>
> >>> >>>>> Hannes<br>
> >>> >>>>><br>
> >>> >>>>><br>
> >>> >>>>><br>
> >>> >>>>> ------------------------------<wbr>----<br>
> >>> >>>>> [1]<br>
> >>> >>>>> <a href="http://wiki.squeak.org/squeak/2141" rel="noreferrer" target="_blank">http://wiki.squeak.org/squeak/<wbr>2141</a><br>
> >>> >>>>><br>
> >>> >>>>> How to lay out submorphs<br>
> >>> >>>>><br>
> >>> >>>>> Please read the excellent dynamic essay project MorphLayoutArticle<br>
> >>> >>>>> (broken link) on Bob's SuperSwiki.<br>
> >>> >>>>><br>
> >>> >>>>> Every Morph now has the capability to layout it's submorphs.<br>
> >>> >>>>> (Previously, only the AlignmentMorph could implement layout<br>
> >>> policies.<br>
> >>> >>>>> AlignmentMorph is still available because of compatibility reasons<br>
> >>> and<br>
> >>> >>>>> some utility methods it implements.<br>
> >>> >>>>><br>
> >>> >>>><br>
> >>> >>>><br>
> >>> >>>><br>
> >>> >><br>
> >>> >><br>
> >>> ><br>
> >>><br>
> >>><br>
> >><br>
> >><br>
> >><br>
> >><br>
> ><br>
> ><br>
> > --<br>
> > _,,,^..^,,,_<br>
> > best, Eliot<br>
> ><br>
> <br>
> <br>
> <br>
> -- <br>
> _,,,^..^,,,_<br>
> best, Eliot<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div>