mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
inject to global cfg by default, don't keep trivial injections
This commit is contained in:
+3
-2
@@ -51,6 +51,7 @@ import org.intellij.plugins.intelliLang.Configuration;
|
||||
import org.intellij.plugins.intelliLang.inject.AbstractLanguageInjectionSupport;
|
||||
import org.intellij.plugins.intelliLang.inject.EditInjectionSettingsAction;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectLanguageAction;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectorUtils;
|
||||
import org.intellij.plugins.intelliLang.inject.config.BaseInjection;
|
||||
import org.intellij.plugins.intelliLang.inject.config.InjectionPlace;
|
||||
import org.intellij.plugins.intelliLang.inject.config.MethodParameterInjection;
|
||||
@@ -114,7 +115,7 @@ public class JavaLanguageInjectionSupport extends AbstractLanguageInjectionSuppo
|
||||
final String placeText = getPatternStringForJavaPlace(pair.first, pair.second);
|
||||
final BaseInjection newInjection = injection.copy();
|
||||
newInjection.setPlaceEnabled(placeText, false);
|
||||
return newInjection;
|
||||
return InjectorUtils.canBeRemoved(newInjection)? null : newInjection;
|
||||
}
|
||||
});
|
||||
configuration.replaceInjectionsWithUndo(project, newInjections, originalInjections, annotations);
|
||||
@@ -307,7 +308,7 @@ public class JavaLanguageInjectionSupport extends AbstractLanguageInjectionSuppo
|
||||
}
|
||||
|
||||
private static void doEditInjection(final Project project, final MethodParameterInjection template, final PsiMethod contextMethod) {
|
||||
final Configuration configuration = Configuration.getProjectInstance(project);
|
||||
final Configuration configuration = InjectorUtils.getEditableInstance(project);
|
||||
final BaseInjection baseTemplate = new BaseInjection(template.getSupportId()).copyFrom(template);
|
||||
final MethodParameterInjection allMethodParameterInjection = createFrom(project, baseTemplate, contextMethod, true);
|
||||
// find existing injection for this class.
|
||||
|
||||
@@ -19,14 +19,18 @@ package org.intellij.plugins.intelliLang.inject;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.injection.MultiHostRegistrar;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.Trinity;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import com.intellij.psi.impl.source.tree.injected.MultiHostRegistrarImpl;
|
||||
import com.intellij.psi.impl.source.tree.injected.Place;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import org.intellij.plugins.intelliLang.Configuration;
|
||||
import org.intellij.plugins.intelliLang.inject.config.BaseInjection;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -166,4 +170,16 @@ public class InjectorUtils {
|
||||
psiFile.putUserData(LanguageInjectionSupport.SETTINGS_EDITOR, support);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnusedParameters")
|
||||
public static Configuration getEditableInstance(Project project) {
|
||||
return Configuration.getInstance();
|
||||
}
|
||||
|
||||
public static boolean canBeRemoved(BaseInjection injection) {
|
||||
if (injection.isEnabled()) return false;
|
||||
if (StringUtil.isNotEmpty(injection.getPrefix()) || StringUtil.isNotEmpty(injection.getSuffix())) return false;
|
||||
if (StringUtil.isNotEmpty(injection.getValuePattern())) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-2
@@ -40,6 +40,7 @@ import org.intellij.plugins.intelliLang.Configuration;
|
||||
import org.intellij.plugins.intelliLang.inject.AbstractLanguageInjectionSupport;
|
||||
import org.intellij.plugins.intelliLang.inject.EditInjectionSettingsAction;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectLanguageAction;
|
||||
import org.intellij.plugins.intelliLang.inject.InjectorUtils;
|
||||
import org.intellij.plugins.intelliLang.inject.config.*;
|
||||
import org.intellij.plugins.intelliLang.inject.config.ui.AbstractInjectionPanel;
|
||||
import org.intellij.plugins.intelliLang.inject.config.ui.XmlAttributePanel;
|
||||
@@ -109,6 +110,8 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
|
||||
for (BaseInjection injection : injections) {
|
||||
final BaseInjection newInjection = injection.copy();
|
||||
newInjection.setPlaceEnabled(null, false);
|
||||
if (InjectorUtils.canBeRemoved(newInjection)) continue;
|
||||
newInjections.add(newInjection);
|
||||
}
|
||||
configuration.replaceInjectionsWithUndo(
|
||||
project, newInjections, injections, Collections.<PsiElement>emptyList());
|
||||
@@ -274,7 +277,7 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
|
||||
}
|
||||
|
||||
private static void doEditInjection(final Project project, final XmlTagInjection template) {
|
||||
final Configuration configuration = Configuration.getProjectInstance(project);
|
||||
final Configuration configuration = InjectorUtils.getEditableInstance(project);
|
||||
final AbstractTagInjection originalInjection = (AbstractTagInjection)configuration.findExistingInjection(template);
|
||||
|
||||
final XmlTagInjection newInjection = originalInjection == null? template : new XmlTagInjection().copyFrom(originalInjection);
|
||||
@@ -304,7 +307,7 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
|
||||
}
|
||||
|
||||
private static void doEditInjection(final Project project, final XmlAttributeInjection template) {
|
||||
final Configuration configuration = Configuration.getProjectInstance(project);
|
||||
final Configuration configuration = InjectorUtils.getEditableInstance(project);
|
||||
final BaseInjection originalInjection = configuration.findExistingInjection(template);
|
||||
final BaseInjection newInjection = originalInjection == null ? template : originalInjection.copy();
|
||||
if (InjectLanguageAction.doEditConfigurable(project, new XmlAttributeInjectionConfigurable((XmlAttributeInjection)newInjection, null, project))) {
|
||||
|
||||
Reference in New Issue
Block a user