mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 13:11:39 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -26,6 +26,8 @@
|
||||
<concatenationAwareInjector implementation="org.intellij.plugins.intelliLang.inject.java.ConcatenationInjector"/>
|
||||
|
||||
<psi.referenceContributor implementation="org.intellij.plugins.intelliLang.inject.java.LanguageReferenceProvider"/>
|
||||
|
||||
<daemon.highlightInfoFilter implementation="org.intellij.plugins.intelliLang.inject.CustomErrorElementFilter"/>
|
||||
</extensions>
|
||||
|
||||
<extensions defaultExtensionNs="org.intellij.intelliLang">
|
||||
|
||||
+24
-2
@@ -15,20 +15,42 @@
|
||||
*/
|
||||
package org.intellij.plugins.intelliLang.inject;
|
||||
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfoFilter;
|
||||
import com.intellij.codeInsight.highlighting.HighlightErrorFilter;
|
||||
import com.intellij.lang.annotation.HighlightSeverity;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiErrorElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Gregory.Shrago
|
||||
*/
|
||||
public class CustomErrorElementFilter extends HighlightErrorFilter {
|
||||
public class CustomErrorElementFilter extends HighlightErrorFilter implements HighlightInfoFilter {
|
||||
public boolean shouldHighlightErrorElement(@NotNull final PsiErrorElement element) {
|
||||
return !value(element);
|
||||
}
|
||||
|
||||
public static boolean value(final PsiErrorElement psiErrorElement) {
|
||||
return Boolean.TRUE.equals(psiErrorElement.getContainingFile().getUserData(InjectedLanguageUtil.FRANKENSTEIN_INJECTION));
|
||||
return isFrankenstein(psiErrorElement.getContainingFile());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(@NotNull HighlightInfo highlightInfo, @Nullable PsiFile file) {
|
||||
if (highlightInfo.getSeverity() != HighlightSeverity.WARNING &&
|
||||
highlightInfo.getSeverity() != HighlightSeverity.WEAK_WARNING) return true;
|
||||
if (!isFrankenstein(file)) return true;
|
||||
int start = highlightInfo.getStartOffset();
|
||||
int end = highlightInfo.getEndOffset();
|
||||
// the bad news are: offsets may be in host file or in injected file
|
||||
String text = (end < file.getTextLength() ? file.getText() : file.getContext().getContainingFile().getText()).substring(start, end);
|
||||
return !"missingValue".equals(text);
|
||||
}
|
||||
|
||||
private static boolean isFrankenstein(PsiFile file) {
|
||||
return file != null && Boolean.TRUE.equals(file.getUserData(InjectedLanguageUtil.FRANKENSTEIN_INJECTION));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,6 +223,7 @@ public class InjectorUtils {
|
||||
String prefix = ObjectUtils.notNull(map.get("prefix"), "");
|
||||
String suffix = ObjectUtils.notNull(map.get("suffix"), "");
|
||||
BaseInjection injection = new BaseInjection(supportId);
|
||||
injection.setDisplayName(text);
|
||||
injection.setInjectedLanguageId(languageId);
|
||||
injection.setPrefix(prefix);
|
||||
injection.setSuffix(suffix);
|
||||
|
||||
Reference in New Issue
Block a user