diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateGroup.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateGroup.java index 51faa4ab489b..e86ac895ea47 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateGroup.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateGroup.java @@ -17,12 +17,22 @@ package com.intellij.codeInsight.template.impl; import com.intellij.openapi.options.CompoundScheme; +import org.jetbrains.annotations.Nullable; public class TemplateGroup extends CompoundScheme { + private final String myReplace; public TemplateGroup(final String name) { - super(name); + this(name, null); } + public TemplateGroup(String name, @Nullable String replace) { + super(name); + myReplace = replace; + } + + public String getReplace() { + return myReplace; + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java index 41c49b33a83e..a3f82a0e2f0c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java @@ -487,7 +487,14 @@ public class TemplateSettings implements PersistentStateComponent, Expo String templateName = getDefaultTemplateName(defTemplate); InputStream inputStream = DecodeDefaultsUtil.getDefaultsInputStream(provider, defTemplate); if (inputStream != null) { - readDefTemplateFile(inputStream, templateName, provider.getClass().getClassLoader(), registerTemplate); + TemplateGroup group = + readTemplateFile(JDOMUtil.loadDocument(inputStream), templateName, true, registerTemplate, provider.getClass().getClassLoader()); + if (group != null && group.getReplace() != null) { + Collection templates = myTemplates.get(group.getReplace()); + for (TemplateImpl template : templates) { + removeTemplate(template); + } + } } } @@ -495,10 +502,6 @@ public class TemplateSettings implements PersistentStateComponent, Expo return defTemplate.substring(defTemplate.lastIndexOf("/") + 1); } - private void readDefTemplateFile(InputStream inputStream, String defGroupName, ClassLoader classLoader, boolean registerTemplate) throws JDOMException, InvalidDataException, IOException { - readTemplateFile(JDOMUtil.loadDocument(inputStream), defGroupName, true, registerTemplate, classLoader); - } - @Nullable private TemplateGroup readTemplateFile(Document document, @NonNls String defGroupName, boolean isDefault, boolean registerTemplate, ClassLoader classLoader) throws InvalidDataException { if (document == null) { @@ -512,7 +515,7 @@ public class TemplateSettings implements PersistentStateComponent, Expo String groupName = root.getAttributeValue(GROUP); if (groupName == null || groupName.length() == 0) groupName = defGroupName; - TemplateGroup result = new TemplateGroup(groupName); + TemplateGroup result = new TemplateGroup(groupName, root.getAttributeValue("REPLACE")); Map created = new LinkedHashMap();