<div dir="ltr"><bump></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 12, 2019 at 2:27 AM Phil B <<a href="mailto:pbpublist@gmail.com">pbpublist@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">OK, I think this version addresses the items from the previous version[1] and your feedback. There were about half a dozen methods with breaking changes (i.e. either needed to be redefined or renamed) to align CodeFileBrowser->SystemDictionary and PseudoClass->ClassDescription but I didn't see any obvious users of them other than CodeFileBrowser so I don't think this impacts anything else.<div><br></div><div>[1] The one exception was item 2... this can't be 'fixed' without doing a rather convoluted 3-way diff with the image which may, or may not, make sense depending on what you're looking at. So for now at least, I'm leaving it as is.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 5, 2019 at 2:59 PM Phil B <<a href="mailto:pbpublist@gmail.com" target="_blank">pbpublist@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>Juan,<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 5, 2019, 9:57 AM Juan Vuletich <<a href="mailto:juan@jvuletich.org" target="_blank">juan@jvuletich.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div bgcolor="#ffffff">
Hi Phil,<br>
<br>
I really like what you are doing here.<br></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Thanks... it's taken a couple attempts to get something that didn't turn into a mess</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#ffffff">
<br>
However there is one detail I think can be improved. You call the
stuff that can be compared 'target' and 'source'. The problem is
that 'source' means 'source code' in many places and this could be
confusing. Besides, 'target' doesn't obviously mean 'the reference
we are comparing against'. DifferenceFinder calls them 'base' and
'case'. This sounds clearer to me. Or may be there are better names
to be found.<br></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I wasn't wild about the naming either. So baseCodeSource and caseCodeSource? (I'm not crazy about the CodeSource part of the name either but wanted to come up with a convention that would hint at how future implementations/interfaces might be named)</div><div dir="auto"><br></div><div dir="auto">Also, are you OK with the conditional logic on the menu items? I wanted to check on this before doing something similar with the button bar (i.e. when an image isn't the target/base (or is it case?) most of the items should probably be disabled)</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#ffffff">
<br>
Thanks,<br>
<pre cols="72">--
Juan Vuletich
<a href="http://www.cuis-smalltalk.org" rel="noreferrer" target="_blank">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" rel="noreferrer" target="_blank">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" rel="noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Thanks,</div><div dir="auto">Phil</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#ffffff">
<br>
<br>
On 12/5/2019 6:34 AM, Phil B wrote:
<blockquote type="cite">
<div dir="ltr">I finally had some time to work on this and got
something working. I wanted to throw it out there for feedback
before going any further with it as there are a few outstanding
issues.
<div><br>
</div>
<div>What this changeset should allow for is any pairing of
Smalltalk image/changeset/package in a CodeFileBrowserWindow
(though most of the changes are actually in CodeFileBrowser)
By default, you can still open a browser window from a
FileListWindow as always. But now when you want a
non-standard browser you can 'CodeFileBrowser
browseCodeSource: (CodePackageFile newFromFile: someFileEntry)
target: (CodePackageFile newFromFile: someOtherFileEntry)'
(you can also either leave one of the arguments as nil or pass
Smalltalk to use the image as your source/target... see 3
below) You should also be able to add arbitrary other code
sources (i.e. remote images as sources/targets are a
possibility) as well.</div>
<div><br>
</div>
<div>Here are a few notes on where things stand:</div>
<div><br>
</div>
<div>1) One of the things that I ran into doing this that I
really liked was disabling the 'false color' diff formatting
of the browser so I made this an optional flag. This is handy
when you're looking at a piece of code and want to see missing
methods/classes in the image. It's far from perfect (i.e. it
is very dumb as methods defined in the source aren't taken
into account), but I still find it handy and if it makes sense
this could be made a UI toggle.</div>
<div><br>
</div>
<div>2) Related to 1 is that the existing diffing code doesn't
know what to do in non-standard configurations (i.e. when
target is not the Smalltalk image) so view as source always
appears to be running with 'false color' off (this is a bug)</div>
<div><br>
</div>
<div>3) Currently the image can only be a target (work in
progress)</div>
<div><br>
</div>
<div>4) There was one breaking method change:
PseudoClass>>includesSelector: so if I've missed any
senders that depend on the old behavior (I only saw one
obvious one) they will need minor changes.</div>
<div><br>
</div>
<div>5) Pane menus are a bit more complex since some of the
options don't make sense if either the image isn't the target
or a changeset/package isn't the source.</div>
<div><br>
</div>
<div>6) Related to 5, the button pane needs conditional work
(still thinking about how to best deal with this)</div>
<div><br>
</div>
<div>So what do you think? Anything obvious I missed?</div>
<div><br>
</div>
<div>Phil</div>
<div><br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Nov 2, 2019 at 2:50 PM
Phil B <<a href="mailto:pbpublist@gmail.com" rel="noreferrer" target="_blank">pbpublist@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div dir="ltr">Juan,</div>
<div><br>
</div>
OK, that's basically what I was thinking. I just wanted to
see if you were open to it first since it will require some
rework (I'm not currently thinking a rewrite is in order...
we'll see) of the existing model classes. I'll start with
the model and if the direction makes sense then can enhance
the views to expose the functionality.
<div>
<div>
<div><br>
</div>
<div>Thanks,</div>
<div>Phil</div>
<div><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Nov 2,
2019 at 1:35 PM Juan Vuletich <<a href="mailto:juan@jvuletich.org" rel="noreferrer" target="_blank">juan@jvuletich.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 10/29/2019 2:17
PM, Phil B via Cuis-dev wrote:<br>
> I was looking into adding the ability to
easily analyze/diff two <br>
> sources of Smalltalk code (i.e. basically the
same image vs. changeset <br>
> or image vs. package functionality we
currently have but expanding the <br>
> capability to allow for any two arbitrary
sources whether changesets <br>
> vs. changeset, package vs. package, package
vs. changeset or some <br>
> other pairing entirely) and it seems a bit
harder than it needs to be <br>
> since the existing implementation assumes you
will always be comparing <br>
> the image vs. something else.<br>
><br>
> If this already exists and I'm looking in the
wrong place, pointers <br>
> are appreciated. If it doesn't, would there
be any objection to <br>
> modifying/cleaning up this code so that we
could optionally set an <br>
> 'other' Code*Browser that would be used
rather than always assuming <br>
> the image? A related enhancement could be to
make the Code*Browser <br>
> code a bit smarter so that we don't need to
explicitly determine if <br>
> 'this is a package' or 'this is a changeset'
unless you want to. <br>
> Basically I'm asking if we would be willing
to trade a (slight) <br>
> increase in implementation complexity for
increased code source <br>
> flexibility here?<br>
<br>
Hi Phil,<br>
<br>
What you want is not yet done. I think it is a
good idea. I suggest <br>
writing new (or improving existing) Model classes,
for code already <br>
loaded in the image (in base image or in
packages), and for code in <br>
files (CodePackageFile, etc). Ideally, the same
View classes (i.e. the <br>
Morphic Windows) should be the same and work on
whatever model. Models <br>
should be polymorphic enough so that comparing
works irrespectively of <br>
the models involved.<br>
<br>
This could be a nice improvement for the system.<br>
<br>
Cheers,<br>
<br>
-- <br>
Juan Vuletich<br>
<a href="http://www.cuis-smalltalk.org" rel="noreferrer noreferrer" target="_blank">www.cuis-smalltalk.org</a><br>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" rel="noreferrer noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a><br>
<a href="https://github.com/jvuletich" rel="noreferrer noreferrer" target="_blank">https://github.com/jvuletich</a><br>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" rel="noreferrer noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a><br>
@JuanVuletich<br>
<br>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote></div></div></div>
</blockquote></div>
</blockquote></div>