Le 19/08/2015 20:26, Dimitris Chloupis a écrit :
> > > On Wed, Aug 19, 2015 at 5:51 PM Sean P. DeNigris <[hidden email] > <mailto:[hidden email]>> wrote: > > kilon.alios wrote > > > For example, let's say your project has a class that implements a > generically-named method, like #asMorph. If you try to rename that > method > via Refactoring, Pharo will try to rename all #asMorph methods, and > update > all senders, in the entire system, not just yours. But if you scope the > browser first to your package or class, you can restrict the > environment to > which the refactoring is applied > > > This sounds useful indeed. Is just the browser aware of the scope or is > also the pharo environment aware of the scope too ? It would be nice if > the scope could expand to include multiple packages , or is this > something left to groups ? What is happening is that many commands linked to the IDE (refactorings, searches) have an environment entity. By default, this environment is Smalltalk, but it can be a subset of it, and any subset of it. Have a look into the RBBrowserEnvironment class and subclasses and you will see all the variants. For example, a RBPackageEnvironment will scope to one or multiple packages. Thierry |
In reply to this post by EstebanLM
Sorry but reading code is really important and now assistant is
taking too much space.
And your proposal does not take into account hierarchy and I use it all the time. The same way we use all the time variables. Stef Le 19/8/15 11:50, Esteban Lorenzano a
écrit :
|
In reply to this post by Thierry Goubier
For example why protocol get the same space than method. We could
split the protocol by half and use the space for
soemthing useful. I would like the coding area to expand a bit when a method is too long. I do it all the time by hand. Stef Le 19/8/15 13:13, Thierry Goubier a
écrit :
|
Protocol names can be long... Yes, especially with Seaside renderOn: Phil > |
In reply to this post by stepharo
Maybe there is something to do with line numbers in the code area for the assistant.
Something like : - No ctiric, do not show anything - Critic to show about a line -> activate the line numbers and put a warning on this line in the left column. Franck Date: Thu, 20 Aug 2015 09:13:09 +0200 From: [hidden email] To: [hidden email] Subject: Re: [Pharo-dev] Nautilus questions Sorry but reading code is really important and now assistant is taking too much space. And your proposal does not take into account hierarchy and I use it all the time. The same way we use all the time variables. Stef Le 19/8/15 11:50, Esteban Lorenzano a
écrit :
|
Le 20/8/15 09:49, Franck Warlouzet a
écrit :
yes
|
In reply to this post by philippeback
yes but 99% of the time you do not care. And methods are way more important. In fact protocol could just the tag (as in the catalog browser) after the method names. Stef
|
In reply to this post by stepharo
2015-08-20 9:14 GMT+02:00 stepharo <[hidden email]>:
An example to illustrate the empty space in the protocol area:
Same example with AltBrowser, exact same bounds: It's interesting to see the difference in displayed information between the two (which one gives the feeling the method is too long?). As shown, the second screenshot provides less context (i.e. no package name) but is this information available? Thierry
|
In reply to this post by stepharo
2015-08-20 10:19 GMT+02:00 stepharo <[hidden email]>:
I'm not sure of that. On classes with a lot of methods (Object, Morph, any class with over 20 methods), I believe one rely on protocols to avoid being overwhelmed by the sheer number, and that most of them are irrelevant to the task at hand (the method you're writing and reading, and the same class methods it is using). I wonder if the fact Nautilus shows us by default the 'all' method list is not inciting us, by pure laziness, to disregard protocols...
Then you could use the message list GUI instead of the system browser. Thierry
|
In reply to this post by kilon.alios
no, you can select and then browse scoped : - multiple packages - groups (btw, current scoped button does not takes that into account) - a single class (you have to use the context menu on classes for it) it is really powerful :) Esteban |
In reply to this post by stepharo
for me code is as important as the other functionality. the size of the code area (and the default size of the browser) can be easily increased, if needed.
my “proposal” is just a fast sketch made to illustrate how I would like to show certain functionality, it does not take into account any other functionality… If I finish my browser proposal ever, it will have a lot more buttons in the toolbar :) about hierarchy I think it should spawn a new browser, as before… but it is still something we need to play with it.
*we* use them all the time, but most people does not use them never :) anyway: an option in a tab is one click, same as with a button: not hard… and we can play with the information we show in auxiliary panels better :) Esteban
|
In reply to this post by stepharo
not just a bit: I would like a button (and a key combination) to expand the full area to occupy all browser space when needed. and not just the code area: the different panels too: no matter how much you reduce the size of protocols and/or packages, there will always be methods and classes with bigger names… I think an “expand” function is better solution than arbitrary change panel sizes.
|
In reply to this post by stepharo
On Thu, Aug 20, 2015 at 10:19 AM, stepharo <[hidden email]> wrote:
FWIW, protocols allow to have nice segregation of methods without inflating the number of classes (hey, Java, I am looking at you). I have a number of cases where I do have *myproject-someaspect1", *myproject-someaspect2", "*myproject-someaspect3" ... in the classes. Protocols also help in making sense of the methods. It is also something different about the way we do code. Protocol really work well with the "messaging" concept. "We can talk because we understand that protocol". Not because we have a full dictionary of sentences. Phil
|
In reply to this post by Thierry Goubier
I took a look at the class you recommended and now I see what you mean.I am glad this is not deeply tied to the system browser and is something other tools can use as well with ease. Very flexible too. Looks like the tools only expose a fraction of the power of the environment . Makes me wonder whether environment would be a good idea to be used as some sort of namespaces. On Thu, Aug 20, 2015 at 9:08 AM Thierry Goubier <[hidden email]> wrote: Le 19/08/2015 20:26, Dimitris Chloupis a écrit : |
In reply to this post by EstebanLM
On Thu, Aug 20, 2015 at 11:08 AM, Esteban Lorenzano <[hidden email]> wrote:
Right thing to do if you ask me. Or like TWM, have a bunch of icons to put the part where you want it. Or like on Windows applications: drag and drop the panes around and save the layout with a given name (now, this one would be harder) Phil
|
In reply to this post by EstebanLM
NOoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
We could have a set up for normal dev and one for indiana jones.
|
In reply to this post by EstebanLM
Le 20/8/15 11:08, Esteban Lorenzano a
écrit :
I want an accordeon like.....
|
In reply to this post by kilon.alios
2015-08-20 11:51 GMT+02:00 Dimitris Chloupis <[hidden email]>:
Well, behind all things RB (the Refactoring Browser[1]) you have a complete model of Smalltalk code. It allows refactoring tools to work on live code but also on non-live code. For example, in SmaCC, which is implemented by the same guys, the code for a parser is generated entirely as refactorings (i.e. non-live code), then refactored for optimisations for both code performance and to minimize the number of refactorings (but still non-live), then split to fit the Cog Jit limits (my work!), and then compiled to the live system in one (large) step. But why am I saying that? To show that those environments are very flexible (and the tools around as well), that they may work on non-live code (for example, a non-loaded package) and that most of the IDE needed functions in practice apply on a model linked to the live code, including when using them through Nautilus.
The difference between an environment and a namespace is at the compiler level: can you make the compiler use an environment when compiling a method? I think that Marcus has done things in that direction recently (such as allowing you to add "virtual" instance variables before compiling a method). Also an environment never "renames" stuff, it only "restricts" what is visible. At the programmer level, a Namespace is the ability to have two pieces of code where the class named Morph is an entirely different class, and that you can't understand the code anymore because you're never sure of what a global refers to (since it may be renamed via an import statement)... Some will say it's a feature ;) Thierry
|
In reply to this post by stepharo
2015-08-20 11:53 GMT+02:00 stepharo <[hidden email]>:
I'll put you in the Indiana Jones category :) Whip-enabled system browser! Thierry
|
In reply to this post by Thierry Goubier
Wow that pdf is very deep. Amazing abilities. Pity there is not much documentation and much exposure about these features. Thank you , I am studying it.
On Thu, Aug 20, 2015 at 2:52 PM Thierry Goubier <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |