Community
Participate
Working Groups
Pushed first shot to master. The steps being taken are roughly: 1) Spot the declaration of the element to be refactored (the target) and get a document for it. We use the document API to apply the changes, as it's considered more robust as models could have syntax errors. If the element is not loaded within an editor we create a new file based document for it. 2) Determine all elements whose name depends on the targets name. References to these will have to be refactored, too. 3) Find all references to the target and the dependent elements in the index and locally and store their offsets. 4) Apply the change in the document, reparse and retrieve the renamed target. The URI might have been changed by the renaming, so we use its offset to find the element. 5) Iterate the collected references (by document), use the ICrossRefSerializer to calculate the new link texts, create Changes. 6) Apply these changes. I also pushed some tests but will now head for more. Still to be done: - Currently we expect the declaration and all references to be in the same language. We should try to use RefatoringParticipants to decouple the actions to be taken in models of other languages. - All model files are currently loaded eagerly which could limit scalability. - Add more tests. - Inplace refactoring. Currently we only have a wizard based version.
nice! I'll make sure to ask you for a demo the next days :)
This one was pushed in M5. We should track refinements in new tickets.
Closing all bugs that were set to RESOLVED before Neon.0