From c2eec741813f9f27c1434e1de8a6ca7367a249df Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 4 Jun 2012 19:42:45 +0400 Subject: [PATCH] restore caret position and dispose rangemarker after rename performed --- .../rename/inplace/MemberInplaceRenamer.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) 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