From ec0778064ab49a9a90290fd49ff66feea28ac72e Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 16 Dec 2011 15:26:32 +0100 Subject: [PATCH] rename: replace the whole expression if lookup is chosen --- .../rename/inplace/VariableInplaceRenamer.java | 18 +++++++++++++++++- 1 file changed, 17 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 5d19eb3a39eb..3d55f6b6d605 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.completion.InsertHandler; +import com.intellij.codeInsight.completion.InsertionContext; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; import com.intellij.codeInsight.highlighting.HighlightManager; @@ -824,7 +826,21 @@ public class VariableInplaceRenamer { myLookupItems = new LookupElement[names.size()]; final Iterator iterator = names.iterator(); for (int i = 0; i < myLookupItems.length; i++) { - myLookupItems[i] = LookupElementBuilder.create(iterator.next()); + final String suggestion = iterator.next(); + myLookupItems[i] = LookupElementBuilder.create(suggestion).setInsertHandler(new InsertHandler() { + @Override + public void handleInsert(InsertionContext context, LookupElement item) { + if (shouldSelectAll()) return; + final Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(myEditor); + final TemplateState templateState = TemplateManagerImpl.getTemplateState(topLevelEditor); + if (templateState != null) { + final TextRange range = templateState.getCurrentVariableRange(); + if (range != null) { + myEditor.getDocument().replaceString(range.getStartOffset(), range.getEndOffset(), suggestion); + } + } + } + }); } }