public void addMessage(PsiElement context, String message, int type) { if (message != null && message.length() > 0) { if (context instanceof XmlTag && XmlExtension.getExtension(context.getContainingFile()) .shouldBeHighlightedAsTag((XmlTag) context)) { HighlightInfoType infoType = type == ERROR ? HighlightInfoType.ERROR : type == WARNING ? HighlightInfoType.WARNING : HighlightInfoType.WEAK_WARNING; addElementsForTag((XmlTag) context, message, infoType, null); } else { addToResults( HighlightInfo.createHighlightInfo(HighlightInfoType.WRONG_REF, context, message)); } } }
public void addMessage( final PsiElement context, final String message, final ErrorType type, final IntentionAction... fixes) { if (message != null && message.length() > 0) { final PsiFile containingFile = context.getContainingFile(); final HighlightInfoType defaultInfoType = type == ErrorType.ERROR ? HighlightInfoType.ERROR : type == ErrorType.WARNING ? HighlightInfoType.WARNING : HighlightInfoType.WEAK_WARNING; if (context instanceof XmlTag && XmlExtension.getExtension(containingFile).shouldBeHighlightedAsTag((XmlTag) context)) { addElementsForTagWithManyQuickFixes((XmlTag) context, message, defaultInfoType, fixes); } else { final PsiElement contextOfFile = containingFile.getContext(); final HighlightInfo highlightInfo; if (contextOfFile != null) { TextRange range = InjectedLanguageManager.getInstance(context.getProject()) .injectedToHost(context, context.getTextRange()); highlightInfo = HighlightInfo.createHighlightInfo(defaultInfoType, range, message); } else { highlightInfo = HighlightInfo.createHighlightInfo(HighlightInfoType.WRONG_REF, context, message); } if (fixes != null) { for (final IntentionAction quickFixAction : fixes) { if (quickFixAction == null) continue; QuickFixAction.registerQuickFixAction(highlightInfo, quickFixAction); } } addToResults(highlightInfo); } } }
@Override protected Boolean compute(PsiElement parent, Object p) { OuterLanguageElement element = PsiTreeUtil.getChildOfType(parent, OuterLanguageElement.class); if (element == null) { // JspOuterLanguageElement is located under XmlText for (PsiElement child = parent.getFirstChild(); child != null; child = child.getNextSibling()) { if (child instanceof XmlText) { element = PsiTreeUtil.getChildOfType(child, OuterLanguageElement.class); if (element != null) { break; } } } } if (element == null) return false; PsiFile containingFile = parent.getContainingFile(); return containingFile.getViewProvider().getBaseLanguage() != containingFile.getLanguage(); }