Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 3 participants
- 144636 messages
[pharo-project/pharo-core]
by GitHub
Branch: refs/tags/50450
Home: https://github.com/pharo-project/pharo-core
Nov. 17, 2015
[pharo-project/pharo-core] 963a0e: 50450
by GitHub
Branch: refs/heads/5.0
Home: https://github.com/pharo-project/pharo-core
Commit: 963a0ec0c4110667e41b8a9e0a2efc4cffd2bc4d
https://github.com/pharo-project/pharo-core/commit/963a0ec0c4110667e41b8a9e…
Author: Jenkins Build Server <board(a)pharo-project.org>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M NECompletion-Tests.package/NECContextTest.class/instance/tests/testCreateModel.st
M NECompletion.package/NECContext.class/instance/accessing/createModel.st
A NECompletion.package/NECPreferences.class/class/accessing/overrideModel.st
A NECompletion.package/NECPreferences.class/class/accessing/overrideModel_.st
M NECompletion.package/NECPreferences.class/class/class initialization/initialize.st
M NECompletion.package/NECPreferences.class/class/settings/settingsOn_.st
M Nautilus.package/NautilusUI.class/instance/system announcements/metaLinkModified_.st
A Reflectivity.package/MetaLink.class/instance/accessing/methods.st
M Reflectivity.package/extension/CompiledMethod/instance/installLink_.st
M Rubric.package/RubSmalltalkEditor.class/class/accessing/menuOn_.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50449.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50450.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50449.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50450.st
M ScriptLoader50.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
A SmartSuggestions.package/SugsMenuBuilder.class/class/builder/buildContextMenuOn_.st
Log Message:
-----------
50450
17034 Improve discoverability of the smart Suggestions
https://pharo.fogbugz.com/f/cases/17034
17036 BreakPoints: fix browser refresh after adding a breakpoint
https://pharo.fogbugz.com/f/cases/17036
17031 add preference completing whole method. off by default
https://pharo.fogbugz.com/f/cases/17031
http://files.pharo.org/image/50/50450.zip
Nov. 17, 2015
Re: [Pharo-dev] A Question about Metacello's #repository:
by Dale Henrichs
Sven,
I've read through the follow-on messages to this post and I'm not quite
sure I know what you are asking, so I will just reply here ...
On 11/17/2015 06:12 AM, Sven Van Caekenberghe wrote:
> Hi,
>
> I have a question about the way repositories are specified in Metacello (i.e. by means on #repository:).
>
> Say I use FileTree where the files come from a classic VCS or just from some archive. Using ZeroConf I can get an image+vm, etc. I can use the config command line handler to load the configuration from a local file directory (I haven't tried this yet, but I assume no scheme results in a MCDirectoryRepository). So far so good.
Okay I'll put in some examples here to make sure that we're on the same
page. First here's a linek[1] to the documentation for the various
schemes that can be used as Metacello repository descriptions (the arg
to the #repository: message).
If you want to use FileTree for your local repository then the
repository description has the form:
filtree://<full path to directory>
For an MCDirectoryRepository, the repository description has the form:
client://<full path to directory>
or
<full path to directory>
[1]
https://github.com/dalehenrich/metacello-work/blob/master/docs/MetacelloScr…
>
> The question is, what do I put in as argument to #repository: in my baseline ?
>
> baseline1: spec
> <version: '1-baseline'>
>
> spec for: #common do: [
> spec
> blessing: #baseline;
> repository: 'http://mc.stfx.eu/Neo';
> package: 'Neo-Console-Core';
> group: 'default' with: #('Neo-Console-Core');
> group: 'Core' with: #('Neo-Console-Core') ]
Okay, the baseline1: above is from your ConfigurationOfNeo
configuration, correct?
Since you are referencing `http://mc.stfx.eu/Neo`, I assume that the
primary repository is on http://mc.stfx.eu, correct?
When you ask "what do I put in as argument to #repository: in my
baseline?", I am confused ...
Perhaps my assumptions are incorrect? I assume that the above came from
a ConfigurationOfNeo and that the primary location is
`http://mc.stfx.eu/Neo`.
> Obviously not a remote http repository. But also not an absolute path, since I do not know where the user placed the files.
If the Neo project's primary repository is `http://mc.stfx.eu/Neo`, then
how does the user get a local copy of the repository - filetree:// or
client://?
> Ideally, it should be possible to leave out repository and let it resolve to wherever the configuration was located. Can that be done ? Or is there another way to do this ?
>
The BaselineOf was invented to solve this particular problem and I will
talk about github/git scenario, since the question of "how does the user
get a local copy of the repository?" has a straightforward answer....
To start with let's use the Sample project[2] as an example and lets
look how the project is specified in the BaselineOfSample>>baseline:[3]:
baseline: spec
<baseline>
spec
for: #'common'
do: [
spec package: 'Sample-Core'.
spec package: 'Sample-Tests' with: [ spec requires:
'Sample-Core' ].
spec
group: 'default' with: #('Core');
group: 'Core' with: #('Sample-Core');
group: 'Tests' with: #('Sample-Tests') ]
Note that there is no repository: specification .... which makes me
think that this is the answer to the question that you are asking:
> It should be possible to leave out repository and let it resolve to
> wherever the configuration was located.
A BaselineOf sets the internal repository: to the location where the
BaselineOfSample spec was loaded from. So you use the following
expression to load a BaselineOf into your image:
Metacello new
baseline: 'Sample';
repository: 'filetree://<fulll-path-to-directory>;
load.
Given that the user knows where she's cloned the
https://github.com/dalehenrich/sample.git repository, then it is
reasonable for the developer to know how to load the project from that
location ...
However, this is not a complete answer to the the overall problem ...
For example a corollary to your question is:
> How do I ensure that other projects that reference the Sample project
> load from my local clone?
So If you have a reference to the Sample project in another project, the
reference is likely to look like the following:
spec
baseline: 'Sample';
repository: 'github://dalehenrich/sample:master/repository';
loads: 'Core'.
Here we've got a reference to the github repo, but we'd like to use the
local filetree:// clone. There is a Metacello Scripting API command that
you can use to inform Metacello that the local filetree:// clone should
be used:
Metacello new
baseline: 'Sample';
repository: 'filetree://<fulll-path-to-directory>;
lock.
Again we're using the full-path, but the developer is the one that knows
a) the path to the local clone and b) whether or not the local clone
should be used ...
Now I will admit that having to remember and keep track of making sure
that the `lock` expression get's run in each image, can be a bit
difficult ....
In tODE I've addressed this issue by creating a project entry object
that is shared by "all images" and specifies not only the particulars of
project locking but includes additional information about what how you
want a particlar project loaded in "all images" (i.e., a specification
for the `loads` expression as well) ...
So I think I've addressed your question, but maybe I've completely
missed your point:)
Dale
[2] https://github.com/dalehenrich/sample
[3]
https://github.com/dalehenrich/sample/blob/master/repository/BaselineOfSamp…
Nov. 17, 2015
[pharo-project/pharo-core]
by GitHub
Branch: refs/tags/50449
Home: https://github.com/pharo-project/pharo-core
Nov. 17, 2015
[pharo-project/pharo-core] eff1b4: 50449
by GitHub
Branch: refs/heads/5.0
Home: https://github.com/pharo-project/pharo-core
Commit: eff1b4d0186ccd36e289d30ce167224b34ec2fbf
https://github.com/pharo-project/pharo-core/commit/eff1b4d0186ccd36e289d30c…
Author: Jenkins Build Server <board(a)pharo-project.org>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M Kernel.package/ClassDescription.class/instance/accessing/instanceVariables.st
R Kernel.package/ClassDescription.class/instance/accessing/instanceVariables_.st
M Nautilus.package/AbstractNautilusUI.class/instance/announcement registration/registerToSystemAnnouncements.st
M Nautilus.package/AbstractNautilusUI.class/instance/build ui text/buildNewCodeSourceAreaRubric.st
M Nautilus.package/Nautilus.class/instance/history/package_class_protocol_method_.st
A Nautilus.package/Nautilus.class/instance/styling/addIconStyle.st
A Nautilus.package/NautilusUI.class/instance/system announcements/metaLinkModified_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/README.md
A Reflectivity-Examples.package/AbstractIconStyler.class/class/options/shouldStyle.st
A Reflectivity-Examples.package/AbstractIconStyler.class/class/style/style_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/definition.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/accessing/iconProvider.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/accessing/textModel.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/accessing/textModel_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/defaults/borderColor.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/defaults/highlightColor.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/defaults/icon.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/defaults/iconBlock_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/defaults/iconLabel.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/styling/addIconMethodStyle_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/styling/addIconStyle_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/styling/addIconStyle_from_to_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/styling/addIconStyle_from_to_color_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/testing/shouldStyleNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitArgumentNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitArrayNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitAssignmentNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitBlockNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitCascadeNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitGlobalNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitInstanceVariableNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitLiteralArrayNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitLiteralNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitMessageNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitMethodNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitParseErrorNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitPragmaNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitReturnNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitSelfNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitSequenceNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitSuperNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitTemporaryNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitThisContextNode_.st
A Reflectivity-Examples.package/AbstractIconStyler.class/instance/visiting/visitVariableNode_.st
A Reflectivity-Examples.package/BreakpointIconStyler.class/README.md
A Reflectivity-Examples.package/BreakpointIconStyler.class/definition.st
A Reflectivity-Examples.package/BreakpointIconStyler.class/instance/defaults/highlightColor.st
A Reflectivity-Examples.package/BreakpointIconStyler.class/instance/defaults/icon.st
A Reflectivity-Examples.package/BreakpointIconStyler.class/instance/defaults/iconBlock_.st
A Reflectivity-Examples.package/BreakpointIconStyler.class/instance/defaults/iconLabel.st
A Reflectivity-Examples.package/BreakpointIconStyler.class/instance/testing/shouldStyleNode_.st
M Reflectivity-Examples.package/CoverageDemo.class/README.md
A Reflectivity-Examples.package/CoverageRubricStyler.class/instance/styling/addIconStyle_from_to_.st
R Reflectivity-Examples.package/CoverageRubricStyler.class/instance/styling/addMetalinkStyle_from_to_.st
M Reflectivity-Examples.package/MetalinkIconStyler.class/README.md
A Reflectivity-Examples.package/MetalinkIconStyler.class/class/options/shouldStyle.st
M Reflectivity-Examples.package/MetalinkIconStyler.class/definition.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/accessing/iconProvider.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/accessing/textModel.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/accessing/textModel_.st
A Reflectivity-Examples.package/MetalinkIconStyler.class/instance/defaults/icon.st
A Reflectivity-Examples.package/MetalinkIconStyler.class/instance/defaults/iconBlock_.st
A Reflectivity-Examples.package/MetalinkIconStyler.class/instance/defaults/iconLabel.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/styling/addMetalinkMethodStyle_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/styling/addMetalinkStyle_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/styling/addMetalinkStyle_from_to_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/styling/addMetalinkStyle_from_to_color_.st
A Reflectivity-Examples.package/MetalinkIconStyler.class/instance/testing/shouldStyleNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitArgumentNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitArrayNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitAssignmentNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitBlockNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitCascadeNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitGlobalNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitInstanceVariableNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitLiteralArrayNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitLiteralNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitMessageNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitMethodNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitParseErrorNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitPragmaNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitReturnNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitSelfNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitSequenceNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitSuperNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitTemporaryNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitThisContextNode_.st
R Reflectivity-Examples.package/MetalinkIconStyler.class/instance/visiting/visitVariableNode_.st
R Reflectivity-Examples.package/MetalinkTextSegmentMorph.class/README.md
R Reflectivity-Examples.package/MetalinkTextSegmentMorph.class/definition.st
A Reflectivity.package/MetalinkChanged.class/README.md
A Reflectivity.package/MetalinkChanged.class/definition.st
A Reflectivity.package/MetalinkChanged.class/instance/accessing/link.st
A Reflectivity.package/MetalinkChanged.class/instance/accessing/link_.st
M Reflectivity.package/ReflectiveMethod.class/instance/testing/installLink_.st
M Reflectivity.package/extension/CompiledMethod/instance/hasBreakpoint.st
A Reflectivity.package/extension/RBProgramNode/instance/hasBreakpoint.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50448.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - scripts/script50449.st
R ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50448.st
A ScriptLoader50.package/ScriptLoader.class/instance/pharo - updates/update50449.st
M ScriptLoader50.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
M Tool-ExternalBrowser.package/ExternalBrowser.class/instance/initialize/initializePresenter.st
M Tool-ExternalBrowser.package/ExternalBrowser.class/instance/initialize/initializeWidgets.st
R Traits.package/TClassDescription.class/instance/accessing/instanceVariables_.st
R Traits.package/TraitDescription.class/instance/accessing/instanceVariables_.st
Log Message:
-----------
50449
17027 nil out instanceVariables and remove accessor
https://pharo.fogbugz.com/f/cases/17027
17033 Visualization of Breakpoints
https://pharo.fogbugz.com/f/cases/17033
17030 ExternalBrowser can not switch back to the instance side
https://pharo.fogbugz.com/f/cases/17030
http://files.pharo.org/image/50/50449.zip
Nov. 17, 2015
Re: [Pharo-dev] EyeInspector with subclasses of ProtoObject
by Nicolas Cellier
Inspector: a surgery tool to see inside the objects
Debugger: a surgery tool to see inside the processes - or maybe to see how
the object live from the inside ;)
2015-11-17 18:37 GMT+01:00 Eliot Miranda <eliot.miranda(a)gmail.com>:
> Hi Esteban,
>
> I think EyeInspector needs to handle classes that don't inherit from
> Object specially. Instead of asking the instance it should ask the class.
> You should be able to use the Context methods for mirror primitives to
> extract state without sending messages to the instance. Then the special
> version of EyeInspector for ProtoObject subclasses can ask this like
>
> (thisContext objectClass: object) isIndexable ifTrue:
> [size := thisContext objectSize: object]
>
> Basically both the Inspector and the Debugger's execution simulation
> machinery need to treat encapsulators such as MessageArchiver with kid
> gloves. One *must not* cause inspecting or debugging to send messages
> through the encapsulator. Instead, all access to the object should be
> through primitives that don't send messages to the objects.
>
> HTH
>
>
> On Tue, Nov 17, 2015 at 7:05 AM, Esteban A. Maringolo <
> emaringolo(a)gmail.com> wrote:
>
>> I'm dealing with the MessageArchiver of GLORP which is a subclass of
>> ProtoObject and handles the "transparent" creation of expressions vÃa
>> a DNU resolution.
>>
>> The problem I'm facing is that the EyeInspector expects the value in
>> its value holder to respond to #basicSize, and because MessageArchiver
>> inherits from ProtoObject it doesn't understand it.
>>
>> The problem is here:
>> EyeInspector>>#variableFieldsToShow
>> "Answers the indexes of the variable fields of the object to show.
>> Shorten the list for very long collection (cf limit1 and limit2)"
>> |bSize|
>> bSize := self objectVariableSize.
>> ^ bSize <= (self limit1 + self limit2) ifTrue: [1 to: bSize] ifFalse:
>> [(1 to: self limit1) , (bSize - self limit2 + 1 to: bSize)].
>>
>> If I implement #basicSize in MessageArchiver things go bananas. If I
>> doesn't, and because #objectVariableSize is sent to MessageAchiver
>> "proxy", bSize ends up with an instance of the MessageArchiver instead
>> of an integer.
>>
>> I implemented #inspectorClass in MessageArchiver class to return
>> EyeBasicInspector, but it is the same.
>>
>> Question: Is it documented what I should define/override in my classes
>> to support EyeInspector?
>>
>> Regards,
>>
>> Esteban A. Maringolo
>>
>> pd: Stack trace
>> ===========
>>
>> UndefinedObject(Object)>>error:
>> MessageArchiver>>mustBeBoolean
>> EyeBasicInspector(EyeInspector)>>variableFieldsToShow
>> EyeBasicInspector(EyeInspector)>>addVariableFields:
>> EyeBasicInspector(EyeInspector)>>generateElements
>> EyeBasicInspector(EyeInspector)>>updateList
>> EyeBasicInspector(EyeInspector)>>objectChanged
>> [ self objectChanged ] in
>> EyeBasicInspector(EyeAbstractInspector)>>initializePresenter in Block:
>> [ self objectChanged ]
>> BlockClosure>>cull:
>> BlockClosure>>cull:cull:
>> BlockClosure>>cull:cull:cull:
>> BlockClosure>>cull:cull:cull:cull:
>>
>>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
Nov. 17, 2015
Re: [Pharo-dev] EyeInspector with subclasses of ProtoObject
by Eliot Miranda
Hi Esteban,
I think EyeInspector needs to handle classes that don't inherit from
Object specially. Instead of asking the instance it should ask the class.
You should be able to use the Context methods for mirror primitives to
extract state without sending messages to the instance. Then the special
version of EyeInspector for ProtoObject subclasses can ask this like
(thisContext objectClass: object) isIndexable ifTrue:
[size := thisContext objectSize: object]
Basically both the Inspector and the Debugger's execution simulation
machinery need to treat encapsulators such as MessageArchiver with kid
gloves. One *must not* cause inspecting or debugging to send messages
through the encapsulator. Instead, all access to the object should be
through primitives that don't send messages to the objects.
HTH
On Tue, Nov 17, 2015 at 7:05 AM, Esteban A. Maringolo <emaringolo(a)gmail.com>
wrote:
> I'm dealing with the MessageArchiver of GLORP which is a subclass of
> ProtoObject and handles the "transparent" creation of expressions vÃa
> a DNU resolution.
>
> The problem I'm facing is that the EyeInspector expects the value in
> its value holder to respond to #basicSize, and because MessageArchiver
> inherits from ProtoObject it doesn't understand it.
>
> The problem is here:
> EyeInspector>>#variableFieldsToShow
> "Answers the indexes of the variable fields of the object to show.
> Shorten the list for very long collection (cf limit1 and limit2)"
> |bSize|
> bSize := self objectVariableSize.
> ^ bSize <= (self limit1 + self limit2) ifTrue: [1 to: bSize] ifFalse:
> [(1 to: self limit1) , (bSize - self limit2 + 1 to: bSize)].
>
> If I implement #basicSize in MessageArchiver things go bananas. If I
> doesn't, and because #objectVariableSize is sent to MessageAchiver
> "proxy", bSize ends up with an instance of the MessageArchiver instead
> of an integer.
>
> I implemented #inspectorClass in MessageArchiver class to return
> EyeBasicInspector, but it is the same.
>
> Question: Is it documented what I should define/override in my classes
> to support EyeInspector?
>
> Regards,
>
> Esteban A. Maringolo
>
> pd: Stack trace
> ===========
>
> UndefinedObject(Object)>>error:
> MessageArchiver>>mustBeBoolean
> EyeBasicInspector(EyeInspector)>>variableFieldsToShow
> EyeBasicInspector(EyeInspector)>>addVariableFields:
> EyeBasicInspector(EyeInspector)>>generateElements
> EyeBasicInspector(EyeInspector)>>updateList
> EyeBasicInspector(EyeInspector)>>objectChanged
> [ self objectChanged ] in
> EyeBasicInspector(EyeAbstractInspector)>>initializePresenter in Block:
> [ self objectChanged ]
> BlockClosure>>cull:
> BlockClosure>>cull:cull:
> BlockClosure>>cull:cull:cull:
> BlockClosure>>cull:cull:cull:cull:
>
>
--
_,,,^..^,,,_
best, Eliot
Nov. 17, 2015
Re: [Pharo-dev] A Question about Metacello's #repository:
by Thierry Goubier
2015-11-17 16:21 GMT+01:00 Sven Van Caekenberghe <sven(a)stfx.eu>:
>
> > On 17 Nov 2015, at 15:44, Thierry Goubier <thierry.goubier(a)gmail.com>
> wrote:
> >
> >
> >
> > 2015-11-17 15:37 GMT+01:00 Sven Van Caekenberghe <sven(a)stfx.eu>:
> >
> > > On 17 Nov 2015, at 15:30, Thierry Goubier <thierry.goubier(a)gmail.com>
> wrote:
> > >
> > >
> > >
> > > 2015-11-17 15:12 GMT+01:00 Sven Van Caekenberghe <sven(a)stfx.eu>:
> > > Hi,
> > >
> > > I have a question about the way repositories are specified in
> Metacello (i.e. by means on #repository:).
> > >
> > > Say I use FileTree where the files come from a classic VCS or just
> from some archive. Using ZeroConf I can get an image+vm, etc. I can use the
> config command line handler to load the configuration from a local file
> directory (I haven't tried this yet, but I assume no scheme results in a
> MCDirectoryRepository). So far so good.
> > >
> > > The question is, what do I put in as argument to #repository: in my
> baseline ?
> > >
> > > baseline1: spec
> > > <version: '1-baseline'>
> > >
> > > spec for: #common do: [
> > > spec
> > > blessing: #baseline;
> > > repository: 'http://mc.stfx.eu/Neo';
> > > package: 'Neo-Console-Core';
> > > group: 'default' with: #('Neo-Console-Core');
> > > group: 'Core' with: #('Neo-Console-Core') ]
> > >
> > > Obviously not a remote http repository. But also not an absolute path,
> since I do not know where the user placed the files. Ideally, it should be
> possible to leave out repository and let it resolve to wherever the
> configuration was located. Can that be done ? Or is there another way to do
> this ?
> > >
> > > I'm not sure it can be done that way.
> > >
> > > Loading from a local repository can be done on the command line, by
> using Metacello directly with a local path. This is what I do for projects
> where the repository is cloned before the start of Pharo.
> >
> > How do you do that ?
> >
> > "Loading from a local repository can be done on the command line, by
> using Metacello directly with a local path."
> >
> > Suppose I have a repository that contains both my Configuration and my
> code (except for the dependencies), let's say at $WORKDIR/repository.
> >
> > $ pharo Pharo.image config $WORKDIR/repository/ ConfigurationOfMyProject
> --install
> >
> > $ pharo Pharo.image eval --save Metacello new configuration:
> \'MyProject\'\; repository: \'$WORKDIR/repository\'\; load
> >
> > (Not sure about the way to designate just a file repository for
> Metacello)
>
> Yes, but that is basically the same as what I was doing. It loads the
> Metacello configuration from the directory and invokes load. The question
> is, how can I specify in the configuration that it has to load its own code
> from the same repo (which I cannot know absolutely when writing the
> configuration).
>
> I think I asked Dale about that once, and I now consider that it can't be
done.
Thierry
Nov. 17, 2015
Re: [Pharo-dev] A Question about Metacello's #repository:
by Sven Van Caekenberghe
> On 17 Nov 2015, at 15:44, Thierry Goubier <thierry.goubier(a)gmail.com> wrote:
>
>
>
> 2015-11-17 15:37 GMT+01:00 Sven Van Caekenberghe <sven(a)stfx.eu>:
>
> > On 17 Nov 2015, at 15:30, Thierry Goubier <thierry.goubier(a)gmail.com> wrote:
> >
> >
> >
> > 2015-11-17 15:12 GMT+01:00 Sven Van Caekenberghe <sven(a)stfx.eu>:
> > Hi,
> >
> > I have a question about the way repositories are specified in Metacello (i.e. by means on #repository:).
> >
> > Say I use FileTree where the files come from a classic VCS or just from some archive. Using ZeroConf I can get an image+vm, etc. I can use the config command line handler to load the configuration from a local file directory (I haven't tried this yet, but I assume no scheme results in a MCDirectoryRepository). So far so good.
> >
> > The question is, what do I put in as argument to #repository: in my baseline ?
> >
> > baseline1: spec
> > <version: '1-baseline'>
> >
> > spec for: #common do: [
> > spec
> > blessing: #baseline;
> > repository: 'http://mc.stfx.eu/Neo';
> > package: 'Neo-Console-Core';
> > group: 'default' with: #('Neo-Console-Core');
> > group: 'Core' with: #('Neo-Console-Core') ]
> >
> > Obviously not a remote http repository. But also not an absolute path, since I do not know where the user placed the files. Ideally, it should be possible to leave out repository and let it resolve to wherever the configuration was located. Can that be done ? Or is there another way to do this ?
> >
> > I'm not sure it can be done that way.
> >
> > Loading from a local repository can be done on the command line, by using Metacello directly with a local path. This is what I do for projects where the repository is cloned before the start of Pharo.
>
> How do you do that ?
>
> "Loading from a local repository can be done on the command line, by using Metacello directly with a local path."
>
> Suppose I have a repository that contains both my Configuration and my code (except for the dependencies), let's say at $WORKDIR/repository.
>
> $ pharo Pharo.image config $WORKDIR/repository/ ConfigurationOfMyProject --install
>
> $ pharo Pharo.image eval --save Metacello new configuration: \'MyProject\'\; repository: \'$WORKDIR/repository\'\; load
>
> (Not sure about the way to designate just a file repository for Metacello)
Yes, but that is basically the same as what I was doing. It loads the Metacello configuration from the directory and invokes load. The question is, how can I specify in the configuration that it has to load its own code from the same repo (which I cannot know absolutely when writing the configuration).
> How do I tell ConfigurationOfMyProject to load its code from $WORKDIR/repository ? Maybe this is really simple and I just don't see it ?
>
> Maybe there is a simpler way than the one I use.
>
> Thierry
>
>
> > Thierry
> >
> >
> >
> >
> > Thanks,
> >
> > Sven
> >
> >
> >
> >
>
>
>
Nov. 17, 2015
EyeInspector with subclasses of ProtoObject
by Esteban A. Maringolo
I'm dealing with the MessageArchiver of GLORP which is a subclass of
ProtoObject and handles the "transparent" creation of expressions vÃa
a DNU resolution.
The problem I'm facing is that the EyeInspector expects the value in
its value holder to respond to #basicSize, and because MessageArchiver
inherits from ProtoObject it doesn't understand it.
The problem is here:
EyeInspector>>#variableFieldsToShow
"Answers the indexes of the variable fields of the object to show.
Shorten the list for very long collection (cf limit1 and limit2)"
|bSize|
bSize := self objectVariableSize.
^ bSize <= (self limit1 + self limit2) ifTrue: [1 to: bSize] ifFalse:
[(1 to: self limit1) , (bSize - self limit2 + 1 to: bSize)].
If I implement #basicSize in MessageArchiver things go bananas. If I
doesn't, and because #objectVariableSize is sent to MessageAchiver
"proxy", bSize ends up with an instance of the MessageArchiver instead
of an integer.
I implemented #inspectorClass in MessageArchiver class to return
EyeBasicInspector, but it is the same.
Question: Is it documented what I should define/override in my classes
to support EyeInspector?
Regards,
Esteban A. Maringolo
pd: Stack trace
===========
UndefinedObject(Object)>>error:
MessageArchiver>>mustBeBoolean
EyeBasicInspector(EyeInspector)>>variableFieldsToShow
EyeBasicInspector(EyeInspector)>>addVariableFields:
EyeBasicInspector(EyeInspector)>>generateElements
EyeBasicInspector(EyeInspector)>>updateList
EyeBasicInspector(EyeInspector)>>objectChanged
[ self objectChanged ] in
EyeBasicInspector(EyeAbstractInspector)>>initializePresenter in Block:
[ self objectChanged ]
BlockClosure>>cull:
BlockClosure>>cull:cull:
BlockClosure>>cull:cull:cull:
BlockClosure>>cull:cull:cull:cull:
Nov. 17, 2015