diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InplaceRenameInvariantTest.groovy b/java/java-tests/testSrc/com/intellij/refactoring/InplaceRenameInvariantTest.groovy index 17c4694f3b9e..a82c77d7f1e0 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InplaceRenameInvariantTest.groovy +++ b/java/java-tests/testSrc/com/intellij/refactoring/InplaceRenameInvariantTest.groovy @@ -34,7 +34,7 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { } """ - doTestPositionInvariance(text, false) + doTestPositionInvariance(text, false, false) } public void "test middle caret position"() { @@ -44,7 +44,7 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { } """ - doTestPositionInvariance(text, false) + doTestPositionInvariance(text, false, false) } public void "test end caret position"() { @@ -54,7 +54,18 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { } """ - doTestPositionInvariance(text, false) + doTestPositionInvariance(text, false, false) + } + + public void "test end caret position typing"() { + def text = """\ + class Test { + Test myTest; + } + } + """ + + doTestPositionInvariance(text, false, false) } @@ -65,7 +76,7 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { } """ - doTestPositionInvariance(text, true) + doTestPositionInvariance(text, true, false) } public void "test middle caret position preselect"() { @@ -75,7 +86,7 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { } """ - doTestPositionInvariance(text, true) + doTestPositionInvariance(text, true, false) } public void "test end caret position preselect"() { @@ -85,10 +96,10 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { } """ - doTestPositionInvariance(text, true) + doTestPositionInvariance(text, true, false) } - private doTestPositionInvariance(String text, final boolean preselect) { + private doTestPositionInvariance(String text, final boolean preselect, final boolean checkTyping) { configure text TemplateManagerImpl templateManager = (TemplateManagerImpl)TemplateManager.getInstance(project) def oldPreselectSetting = myEditor.settings.preselectRename @@ -104,6 +115,11 @@ class InplaceRenameInvariantTest extends LightCodeInsightTestCase { handler.doRename(element, editor, null); + + if (checkTyping){ + type '1' + offset++ + } assertEquals(offset, myEditor.caretModel.offset) } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java index 293ab0095f42..b7e94bc7f93d 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java @@ -716,10 +716,14 @@ public abstract class InplaceRefactoring { final TextResult value = templateState.getVariableValue(PRIMARY_VARIABLE_NAME); myInsertedName = value != null ? value.toString() : null; + TextRange range = templateState.getCurrentVariableRange(); final int currentOffset = myEditor.getCaretModel().getOffset(); + if (range == null && myRenameOffset != null) { + range = new TextRange(myRenameOffset.getStartOffset(), myRenameOffset.getEndOffset()); + } myBeforeRevert = - myRenameOffset != null && myRenameOffset.getEndOffset() >= currentOffset && myRenameOffset.getStartOffset() <= currentOffset - ? myEditor.getDocument().createRangeMarker(myRenameOffset.getStartOffset(), currentOffset) + range != null && range.getEndOffset() >= currentOffset && range.getStartOffset() <= currentOffset + ? myEditor.getDocument().createRangeMarker(range.getStartOffset(), currentOffset) : null; if (myBeforeRevert != null) { myBeforeRevert.setGreedyToRight(true);