From b0e362055cb615d5eb1d0e15c8a3cd65a5baa218 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 21 Feb 2011 15:50:02 +0100 Subject: [PATCH] don't let the live templates overwrite the identifier --- .../lookup/impl/actions/ChooseItemReplaceAction.java | 6 ++++-- .../codeInsight/template/impl/ListTemplatesHandler.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java index 54c84064dc0a..53a3fe3acd77 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java @@ -22,6 +22,7 @@ import com.intellij.codeInsight.completion.CompletionService; import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.codeInsight.lookup.impl.LookupImpl; +import com.intellij.codeInsight.template.impl.ListTemplatesHandler; import com.intellij.codeInsight.template.impl.LiveTemplateCompletionContributor; import com.intellij.codeInsight.template.impl.TemplateImpl; import com.intellij.codeInsight.template.impl.TemplateSettings; @@ -51,6 +52,8 @@ public class ChooseItemReplaceAction extends EditorAction { public boolean isEnabled(Editor editor, DataContext dataContext) { LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor); if (lookup != null) { + lookup.refreshUi(); // to bring the list model up to date + CompletionProcess completion = CompletionService.getCompletionService().getCurrentCompletion(); if (completion != null && completion.isAutopopupCompletion() && hasTemplatePrefix(lookup, TemplateSettings.TAB_CHAR)) { return false; @@ -60,7 +63,6 @@ public class ChooseItemReplaceAction extends EditorAction { return true; } - lookup.refreshUi(); // to bring the list model up to date return !lookup.getItems().isEmpty(); } return false; @@ -76,7 +78,7 @@ public class ChooseItemReplaceAction extends EditorAction { final int end = editor.getCaretModel().getOffset(); final int start = lookup.getLookupStart(); - final String prefix = editor.getDocument().getText(TextRange.create(start, end)); + final String prefix = !lookup.getItems().isEmpty() ? editor.getDocument().getText(TextRange.create(start, end)) : ListTemplatesHandler.getPrefix(editor.getDocument(), end); final TemplateImpl template = LiveTemplateCompletionContributor.findApplicableTemplate(file, end, prefix); return template != null && shortcutChar == TemplateSettings.getInstance().getShortcutChar(template); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java index 2d2e49487640..12a3b0760a57 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java @@ -107,7 +107,7 @@ public class ListTemplatesHandler implements CodeInsightActionHandler { return true; } - private static String getPrefix(Document document, int offset) { + public static String getPrefix(Document document, int offset) { CharSequence chars = document.getCharsSequence(); int start = offset; while (true) {