Hi list,
first some context:
I was trying to put some blocks of executable notes in something like the "Terse Guide to Squeak"... the Terse Guide is implemented as a class called TerseGuideHelp, and I was working on a modified copy of that class, that I called EdrxGuideHelp... but then I saw that the window that shows the content of a topic in a help browser treats local variables in a way that is different than the one in workspaces - if I run "a := 42" in the window with the contents of a topic I get a dialog window whose title is:
Unknown variable: a! please correct, or cancel:
Now a more basic question. I sort of know where the "local variables" of a workspace are stored... if I start with a single workspace and I run this on it,
w := Workspace new. w buildAndOpen.
and then I run this on the second workspace,
a := 2. b := a + 3.
and then go back to the first workspace and "print it" this,
w bindings.
I get:
a Dictionary('a'->2 'b'->5 )
My first guess was that "do it"s and "print it"s in a workspace use a dictionary of bindings, but "do it"s and "print it"s in the mini-workspace of a help browser do not. I tried to understand "real" workspaces first, and after setting a breakpoint in
TextEditor >> #printIt
and doing lots of single-steppings I arrived at this method,
TextEditor >> #evaluateSelectionAndDo:
that has this:
result := [ rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt to: rcvr environment: (model environment ifNil: [Smalltalk globals]) notifying: self ifFail: [self flash. ^ nil] logged: true. ] on: OutOfScopeNotification do: [ :ex | ex resume: true].
but when that code calls this method
Compiler >> #evaluate:in:to:environment:notifying:ifFail:logged:
the "rcvr class evaluatorClass new" is simply a "Compiler new", "self selectionAsStream" is "a := 2. b := a + 3." as a stream, the ctxt and the rcvr are nil, and the environment is just "Smalltalk"... where does the dictionary of local bindings enter the story? Am I doing something wrong in the debugger?...
Thanks in advance! Eduardo Ochs http://angg.twu.net/eev-squeak.html
On Mon, Feb 27, 2023 at 2:09 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi list,
first some context:
I was trying to put some blocks of executable notes in something like the "Terse Guide to Squeak"... the Terse Guide is implemented as a class called TerseGuideHelp, and I was working on a modified copy of that class, that I called EdrxGuideHelp... but then I saw that the window that shows the content of a topic in a help browser treats local variables in a way that is different than the one in workspaces - if I run "a := 42" in the window with the contents of a topic I get a dialog window whose title is:
Unknown variable: a! please correct, or cancel:
In HelpBrowser you must declare the variables before using them. You use vertical lines like this: | a | a := 42. You must select both lines before selecting doIt.
Now a more basic question. I sort of know where the "local variables" of a workspace are stored... if I start with a single workspace and I run this on it,
w := Workspace new. w buildAndOpen.
and then I run this on the second workspace,
a := 2. b := a + 3.
and then go back to the first workspace and "print it" this,
w bindings.
I get:
a Dictionary('a'->2 'b'->5 )
HelpBrowser does not implement dynamic binding of variables. You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences. Also browse class Workspace and look at access to variable 'bindings'.
[image: image.png]
Best, Karl
My first guess was that "do it"s and "print it"s in a workspace use a dictionary of bindings, but "do it"s and "print it"s in the mini-workspace of a help browser do not. I tried to understand "real" workspaces first, and after setting a breakpoint in
TextEditor >> #printIt
and doing lots of single-steppings I arrived at this method,
TextEditor >> #evaluateSelectionAndDo:
that has this:
result := [ rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt to: rcvr environment: (model environment ifNil: [Smalltalk globals]) notifying: self ifFail: [self flash. ^ nil] logged: true. ] on: OutOfScopeNotification do: [ :ex | ex resume: true].
but when that code calls this method
Compiler >> #evaluate:in:to:environment:notifying:ifFail:logged:
the "rcvr class evaluatorClass new" is simply a "Compiler new", "self selectionAsStream" is "a := 2. b := a + 3." as a stream, the ctxt and the rcvr are nil, and the environment is just "Smalltalk"... where does the dictionary of local bindings enter the story? Am I doing something wrong in the debugger?...
Thanks in advance! Eduardo Ochs http://angg.twu.net/eev-squeak.html
Hi Karl,
In HelpBrowser you must declare the variables before using them. (...) HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
Also browse class Workspace and look at access to variable 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
In HelpBrowser you must declare the variables before using them. (...) HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
Also browse class Workspace and look at access to variable 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
In HelpBrowser you must declare the variables before using them. (...) HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
Also browse class Workspace and look at access to variable 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
Hi, Try executing this: HelpBrowser initialize
Best, Karl
On Tue, Feb 28, 2023 at 8:18 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
In HelpBrowser you must declare the variables before using them. (...) HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
Also browse class Workspace and look at access to variable 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
Hi, I sent the wrong version. This should work
Best, Karl
On Tue, Feb 28, 2023 at 12:40 PM karl ramberg karlramberg@gmail.com wrote:
Hi, Try executing this: HelpBrowser initialize
Best, Karl
On Tue, Feb 28, 2023 at 8:18 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
In HelpBrowser you must declare the variables before using them. (...) HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
Also browse class Workspace and look at access to variable 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
Hi! Thanks, your fix for nil bindings is better than mine! =) I am trying to convert your code into a subclass of HelpBrowser called HelpBrowserB, that has bindings and that in the future may have other hacks too. My code is attached, but when I run this
hb := HelpBrowserB openOn: TerseGuideHelp. hb model.
I see that its model is a HelpBrowser, not a HelpBrowserB... Any idea of how to fix that? Cheers & thanks in advance, Eduardo
On Tue, 28 Feb 2023 at 15:06, karl ramberg karlramberg@gmail.com wrote:
Hi, I sent the wrong version. This should work
Best, Karl
On Tue, Feb 28, 2023 at 12:40 PM karl ramberg karlramberg@gmail.com wrote:
Hi, Try executing this: HelpBrowser initialize
Best, Karl
On Tue, Feb 28, 2023 at 8:18 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
In HelpBrowser you must declare the variables before using them. (...) HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
You can right click on a Workspace window and a HelpBrowser window and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
Also browse class Workspace and look at access to variable 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
Hi Karl, solved! See: http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-March/223594.htm... [[]], E.
On Tue, 28 Feb 2023 at 15:29, Eduardo Ochs eduardoochs@gmail.com wrote:
Hi! Thanks, your fix for nil bindings is better than mine! =) I am trying to convert your code into a subclass of HelpBrowser called HelpBrowserB, that has bindings and that in the future may have other hacks too. My code is attached, but when I run this
hb := HelpBrowserB openOn: TerseGuideHelp. hb model.
I see that its model is a HelpBrowser, not a HelpBrowserB... Any idea of how to fix that? Cheers & thanks in advance, Eduardo
On Tue, 28 Feb 2023 at 15:06, karl ramberg karlramberg@gmail.com wrote:
Hi, I sent the wrong version. This should work
Best, Karl
On Tue, Feb 28, 2023 at 12:40 PM karl ramberg karlramberg@gmail.com wrote:
Hi, Try executing this: HelpBrowser initialize
Best, Karl
On Tue, Feb 28, 2023 at 8:18 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
> In HelpBrowser you must declare the variables before using them. > (...) > HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
> You can right click on a Workspace window and a HelpBrowser window > and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
> Also browse class Workspace and look at access to variable > 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
Nice
Best, Karl
On Wed, Mar 1, 2023 at 4:39 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl, solved! See:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-March/223594.htm... [[]], E.
On Tue, 28 Feb 2023 at 15:29, Eduardo Ochs eduardoochs@gmail.com wrote:
Hi! Thanks, your fix for nil bindings is better than mine! =) I am trying to convert your code into a subclass of HelpBrowser called HelpBrowserB, that has bindings and that in the future may have other hacks too. My code is attached, but when I run this
hb := HelpBrowserB openOn: TerseGuideHelp. hb model.
I see that its model is a HelpBrowser, not a HelpBrowserB... Any idea of how to fix that? Cheers & thanks in advance, Eduardo
On Tue, 28 Feb 2023 at 15:06, karl ramberg karlramberg@gmail.com wrote:
Hi, I sent the wrong version. This should work
Best, Karl
On Tue, Feb 28, 2023 at 12:40 PM karl ramberg karlramberg@gmail.com wrote:
Hi, Try executing this: HelpBrowser initialize
Best, Karl
On Tue, Feb 28, 2023 at 8:18 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
> Hi Karl, > > > In HelpBrowser you must declare the variables before using them. > > (...) > > HelpBrowser does not implement dynamic binding of variables. > > Yes - my first idea was to ask here what I needed to change in my > class TerseGuideHelp to make the "workspace" of its help browser use > dynamic biding of variables... but then I spent some hours trying to > find the answer myself, and I stumbled on a more low-level question > that I found much more askworthy... > > > You can right click on a Workspace window and a HelpBrowser window > > and inspect the model and see the differences. > > I did that. Are these differences obvious to a trained eye? They > weren't to me. > > > Also browse class Workspace and look at access to variable > > 'bindings'. > > This may be a pointer to searching tools that I need to learn. I saw > that if I click on "variables" and then on "bindings" I get a list of > the methods in Workspace that access the variable "bindings"... I > also > tried to fileOut the class Workspace and to read it in Emacs, and I > found the same occurrences. > > Here is an educated guess. Is the method "hasBindingOf:" the main > piece needed to make a mini-workspace support dynamic variables? If > so, how, exactly? Is there a part of the compiler that calls > "hasBindingOf:" when it sees an unknown variable? I couldn't find > it... > > Cheers, > Eduardo Ochs > > >
It is also possible to add extension methods to the existing HelpBrowser with Monticello instead of subclassing. It depends on what modifications you would like to implement.
Best, Karl
On Tue, Feb 28, 2023 at 7:29 PM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi! Thanks, your fix for nil bindings is better than mine! =) I am trying to convert your code into a subclass of HelpBrowser called HelpBrowserB, that has bindings and that in the future may have other hacks too. My code is attached, but when I run this
hb := HelpBrowserB openOn: TerseGuideHelp. hb model.
I see that its model is a HelpBrowser, not a HelpBrowserB... Any idea of how to fix that? Cheers & thanks in advance, Eduardo
On Tue, 28 Feb 2023 at 15:06, karl ramberg karlramberg@gmail.com wrote:
Hi, I sent the wrong version. This should work
Best, Karl
On Tue, Feb 28, 2023 at 12:40 PM karl ramberg karlramberg@gmail.com wrote:
Hi, Try executing this: HelpBrowser initialize
Best, Karl
On Tue, Feb 28, 2023 at 8:18 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Wow! Thanks!!! =) =) =) But I've tried to put these five lines
sm := SimpleSwitchMorph new. sm openInWorld. bm := SimpleButtonMorph new. bm openInWorld. bm position: bm position + (0@32).
in a topic window, and then execute the first four lines in a "do it", then the fifth line in another "do it"... when I tried that I got an error in this method,
HelpBrowser >> bindingOf:
because it tried to execute
bindings includesKey: aString
with bindings being nil... can you fix that?
Thanks in advance! =) Eduardo Ochs
On Tue, 28 Feb 2023 at 03:27, karl ramberg karlramberg@gmail.com wrote:
See change set in attachment for adding dynamic bindings to HelpBrowser. It's a proof of concept :-)
Best, Karl
On Mon, Feb 27, 2023 at 9:42 AM Eduardo Ochs eduardoochs@gmail.com wrote:
Hi Karl,
> In HelpBrowser you must declare the variables before using them. > (...) > HelpBrowser does not implement dynamic binding of variables.
Yes - my first idea was to ask here what I needed to change in my class TerseGuideHelp to make the "workspace" of its help browser use dynamic biding of variables... but then I spent some hours trying to find the answer myself, and I stumbled on a more low-level question that I found much more askworthy...
> You can right click on a Workspace window and a HelpBrowser window > and inspect the model and see the differences.
I did that. Are these differences obvious to a trained eye? They weren't to me.
> Also browse class Workspace and look at access to variable > 'bindings'.
This may be a pointer to searching tools that I need to learn. I saw that if I click on "variables" and then on "bindings" I get a list of the methods in Workspace that access the variable "bindings"... I also tried to fileOut the class Workspace and to read it in Emacs, and I found the same occurrences.
Here is an educated guess. Is the method "hasBindingOf:" the main piece needed to make a mini-workspace support dynamic variables? If so, how, exactly? Is there a part of the compiler that calls "hasBindingOf:" when it sees an unknown variable? I couldn't find it...
Cheers, Eduardo Ochs
squeak-dev@lists.squeakfoundation.org