From 1136b0df05fd6546890ba1a1636db3c8c8bc84ae Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 6 Oct 2016 14:55:25 +0300 Subject: [PATCH] trim selection to the template boundaries, so we won't delete extra chars while renaming #WEB-23455 fixed --- .../rename/inplace/VariableInplaceRenamer.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java index 773d6859835d..d0c686fcede9 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java @@ -15,6 +15,8 @@ */ package com.intellij.refactoring.rename.inplace; +import com.intellij.codeInsight.template.impl.TemplateManagerImpl; +import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.lang.Language; import com.intellij.lang.LanguageExtension; import com.intellij.openapi.application.ApplicationManager; @@ -46,7 +48,6 @@ import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory; import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.refactoring.util.TextOccurrencesUtil; import com.intellij.usageView.UsageInfo; -import com.intellij.util.PairProcessor; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; @@ -158,6 +159,17 @@ public class VariableInplaceRenamer extends InplaceRefactoring { @Override protected void restoreSelection() { if (mySelectedRange != null) { + TemplateState state = TemplateManagerImpl.getTemplateState(InjectedLanguageUtil.getTopLevelEditor(myEditor)); + if (state != null) { + for (int i = 0; i < state.getSegmentsCount(); i++) { + final TextRange segmentRange = state.getSegmentRange(i); + TextRange intersection = segmentRange.intersection(mySelectedRange); + if (intersection != null) { + myEditor.getSelectionModel().setSelection(intersection.getStartOffset(), intersection.getEndOffset()); + return; + } + } + } myEditor.getSelectionModel().setSelection(mySelectedRange.getStartOffset(), mySelectedRange.getEndOffset()); } else if (!shouldSelectAll()) {