<div dir="auto">Hey List,<div dir="auto"><br></div><div dir="auto">I'm using UIManager>>edit:label:accept: to open a Text for editing and I'd like to close the Workspace when the user accepts the text.</div><div dir="auto"><br></div><div dir="auto">Is there a way to pass the Workspace to the block closure?</div><div dir="auto"><br></div><div dir="auto">I tried</div><div dir="auto"><br></div><div dir="auto">| ed |</div><div dir="auto">ed := UIManager default</div><div dir="auto">   edit: o</div><div dir="auto">   label: l</div><div dir="auto">   accept: [ :new |</div><div dir="auto">      . . .</div><div dir="auto">      ed delete]</div><div dir="auto"><br></div><div dir="auto">but ed got unbound by the time the block was called.  I was kinda expecting Smalltalk to have lexical extent for block closures, not dynamic extent.¹</div><div dir="auto"><br></div><div dir="auto">I know I can use a Y-combinator to add it to a block variable², but I was wondering if there's something way more Smalltalk and less I-Learned-To-Program-With-Assembler.  I'm sure it's something obvious, but there's just so much to Morphic.  It's nice to know I can, but it seems like a bug that I would have to.</div><div dir="auto"><br></div><div dir="auto">Thanks,</div><div dir="auto">Lauren</div><div dir="auto"><br></div><div dir="auto">1.  I was studying Context to see how it worked and saw the temp stack gets dropped on return, but had a hard time studying its behavior with block closures and multithreading.</div><div dir="auto"><br></div><div dir="auto">2.  While I was examining the workings of the call stack I figured out how to bind block-local variables from outside their lexical scope.  Mostly to get a better understanding of how it worked.</div></div>