diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java index 0640b0d0da2d..6d5477e406f2 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/MemberInplaceRenamer.java @@ -206,10 +206,6 @@ public class MemberInplaceRenamer extends VariableInplaceRenamer { } finally { FinishMarkAction.finish(myProject, myEditor, markAction); - if (myBeforeRevert != null) { - myEditor.getCaretModel().moveToOffset(myBeforeRevert.getEndOffset()); - myBeforeRevert.dispose(); - } } } } @@ -219,7 +215,17 @@ public class MemberInplaceRenamer extends VariableInplaceRenamer { final RenameProcessor renameProcessor = new RenameProcessor(myProject, element, newName, elementProcessor.isToSearchInComments(element), - elementProcessor.isToSearchForTextOccurrences(element)); + elementProcessor.isToSearchForTextOccurrences(element)){ + @Override + public void doRun() { + try { + super.doRun(); + } + finally { + restoreCaretOffsetAfterRename(); + } + } + }; for (AutomaticRenamerFactory factory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { if (factory.getOptionName() != null && factory.isApplicable(element)) { renameProcessor.addRenamerFactory(factory); @@ -228,6 +234,13 @@ public class MemberInplaceRenamer extends VariableInplaceRenamer { renameProcessor.run(); } + protected void restoreCaretOffsetAfterRename() { + if (myBeforeRevert != null) { + myEditor.getCaretModel().moveToOffset(myBeforeRevert.getEndOffset()); + myBeforeRevert.dispose(); + } + } + @Override protected void collectAdditionalElementsToRename(List> stringUsages) { //do not highlight non-code usages in file