Like in the top of the menu, along with a shortcut... Now, Renaming a class exists in Refactoring>Class Refactoring>Rename/Remove and also as Rename below the refactoring. For method refactoring, there is not the rename in the refactorings menu. So, all right, there is a whole slew of improvements possible in there as "First Impressions Count". So, how do I rename a method without refactorings? I had a look at RBChangeMethodNameRefactoring>>renameImplementors self implementors do: [:each | | parseTree | parseTree := each parseTreeFor: oldSelector. parseTree isNil ifTrue: [self refactoringFailure: 'Could not parse source code.']. self implementorsCanBePrimitives ifFalse: [parseTree isPrimitive ifTrue: [self refactoringFailure: ('<1p>''s implementation of #<2s> is a primitive' expandMacrosWith: each with: oldSelector)]]. self modifyImplementorParseTree: parseTree in: each. (each methodFor: oldSelector) compileTree: parseTree] but then saw: transform self renameImplementors. self renameMessageSends. self removeRenamedImplementors Really so complicated for a rename? Is there any place to look at? Phil 2013/2/20 Esteban Lorenzano <estebanlm@gmail.com>:
he... yeah, probably there are a lot of theory that says that you should have them in separated places or whatever. But in practice, people does refactors all the time and they need to have them close to their use, not lost in some paper-defined place :)
Esteban
On Feb 20, 2013, at 11:06 AM, Fernando Olivero <fernando.olivero@usi.ch> wrote:
Hi, i had the same misconception once, but i recall Lukas pointed out that the refactoring engine is built on the original refactoring's from Fowler's book, and implemented in Smalltalk by Roberts and Johnson [1].
So the semantics of the refactoring are preserved in the implementation.
If you just want a method rename, not a method refactoring rename, maybe is best have an option for that in the menu [2].
Fernando
[1] http://st-www.cs.illinois.edu/users/droberts/tapos.pdf [2] or use a better widget for editing methods, than a simple code editor within the pane of the browser, as in Gaucho..which i'm working on.
On Wed, Feb 20, 2013 at 11:03 AM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
and you are right, scoped browsing is a very powerful feature that can be tricky to newcomers... but at least now with nautilus it is there, as first option (in OB it was there, but more or less hidden in a submenu)... It is a small step, but is something... and well... we can improve in next releases, one step at a time :)
Esteban
On Feb 20, 2013, at 10:52 AM, "phil@highoctane.be" <phil@highoctane.be> wrote:
Yes, thanks, I figured that out. A newcomer wouldn't... and renaming is pretty common.
What will happen is that people will remove the method and recreate a new one. Version history will then go away.
Or is the system smart enough to find out about these things?
Phil
2013/2/20 Esteban Lorenzano <estebanlm@gmail.com>:
hi,
yes, you are right.. but that is a "nice to have", not a bug... so it will wait to 3.0 :) In the mean time, you can do a scoped rename: you select the packages you want, then right click and "browse scoped", then you apply you rename, and it will apply the refactor in the scoped selection, not all the image.
cheers, Esteban
On Feb 20, 2013, at 10:21 AM, "phil@highoctane.be" <phil@highoctane.be> wrote:
Well, look at the screenshot then tell me that this is what I want.
It is definitively *not* what I want. Especially unchecking that endless list of methods.
Adding a "Uncheck all" "Check all" button to the Changes Browser list would help...
Regards Phil
2013/2/20 Camillo Bruni <camillobruni@gmail.com>:
there is 1 certain bug, that is that you cannot see the changes of the refactoring:
https://code.google.com/p/pharo/issues/detail?id=7547
the rest I would consider a bug as well. But in the terms of refactoring it might be "valid". It does preserve behavior by renaming also all implementors.
How about this reasoning:
Rename method => rename all senders (since you refactor) => you have to rename all implementors as well since you renamed all send sites otherwise you'll run for sure into a DNU
I think I just convinced myself :D
On 2013-02-20, at 09:26, "phil@highoctane.be" <phil@highoctane.be> wrote:
I was doing a Refactoring>rename of the initialize method in Nautilus for the ClassMethodBrowser and then the changes browser proposed me to change all classes with initialize. WTF?
Phil
<PharoScreenshot.3.png>