本文整理汇总了Java中com.intellij.psi.templateLanguages.OuterLanguageElement类的典型用法代码示例。如果您正苦于以下问题:Java OuterLanguageElement类的具体用法?Java OuterLanguageElement怎么用?Java OuterLanguageElement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
OuterLanguageElement类属于com.intellij.psi.templateLanguages包,在下文中一共展示了OuterLanguageElement类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: isAvailable
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Override
public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) {
if (!element.isWritable()) return false;
boolean isTwigFile = GravFileTemplateUtil.isTwigTemplateFile(element.getContainingFile()) || element.getContainingFile() instanceof HtmlFileImpl;
boolean isXmlAttribute = false;
if (!isTwigFile) return false;
if (element.getParent() instanceof XmlAttributeValueImpl) {
XmlAttributeValueImpl parent0 = ((XmlAttributeValueImpl) element.getParent());
boolean hasTwigElement = PsiTreeUtil.findChildOfType(parent0, OuterLanguageElement.class) != null;
if (!hasTwigElement && parent0.getParent() instanceof XmlAttributeImpl) {
XmlAttributeImpl parent1 = (XmlAttributeImpl) parent0.getParent();
if (parent1.getName().equalsIgnoreCase("href") || parent1.getName().equalsIgnoreCase("src"))
isXmlAttribute = true;
}
}
return isXmlAttribute;
}
示例2: findElementAt
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Override
@Nullable
public PsiElement findElementAt(int offset, @NotNull Class<? extends Language> lang) {
final PsiFile mainRoot = getPsi(getBaseLanguage());
PsiElement ret = null;
for (final Language language : getLanguages()) {
if (!ReflectionUtil.isAssignable(lang, language.getClass())) continue;
if (lang.equals(Language.class) && !getLanguages().contains(language)) continue;
final PsiFile psiRoot = getPsi(language);
final PsiElement psiElement = findElementAt(psiRoot, offset);
if (psiElement == null || psiElement instanceof OuterLanguageElement) continue;
if (ret == null || psiRoot != mainRoot) {
ret = psiElement;
}
}
return ret;
}
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:19,代码来源:MultiplePsiFilesPerDocumentFileViewProvider.java
示例3: findReferenceAt
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Nullable
public static PsiReference findReferenceAt(PsiElement thisElement, int offset, @Nullable Language lang) {
if (thisElement == null) return null;
PsiElement element = lang != null ? thisElement.getContainingFile().getViewProvider().findElementAt(offset, lang) :
thisElement.findElementAt(offset);
if (element == null || element instanceof OuterLanguageElement) return null;
offset = thisElement.getTextRange().getStartOffset() + offset - element.getTextRange().getStartOffset();
List<PsiReference> referencesList = new ArrayList<PsiReference>();
while (element != null) {
addReferences(offset, element, referencesList);
offset = element.getStartOffsetInParent() + offset;
if (element instanceof PsiFile) break;
element = element.getParent();
}
if (referencesList.isEmpty()) return null;
if (referencesList.size() == 1) return referencesList.get(0);
return new PsiMultiReference(referencesList.toArray(new PsiReference[referencesList.size()]),
referencesList.get(referencesList.size() - 1).getElement());
}
示例4: testSelectionForNonComments
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
private boolean testSelectionForNonComments() {
if (!myCaret.hasSelection()) {
return true;
}
TextRange range
= new TextRange(myCaret.getSelectionStart(), myCaret.getSelectionEnd() - 1);
for (PsiElement element = myFile.findElementAt(range.getStartOffset()); element != null && range.intersects(element.getTextRange());
element = element.getNextSibling()) {
if (element instanceof OuterLanguageElement) {
if (!isInjectedWhiteSpace(range, (OuterLanguageElement)element)) {
return false;
}
}
else {
if (!isWhiteSpaceOrComment(element, range)) {
return false;
}
}
}
return true;
}
示例5: findReferenceAt
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
/**
* Overrides the findReferenceAt() logic in order to provide a resolve context with origin file for returned references.
* The findReferenceAt() is usually invoked from UI operations, and it helps to be able to do deeper analysis in the
* current file for such operations.
*
* @param offset the offset to find the reference at
* @return the reference or null.
*/
@Override
public PsiReference findReferenceAt(int offset) {
// copy/paste from SharedPsiElementImplUtil
PsiElement element = findElementAt(offset);
if (element == null || element instanceof OuterLanguageElement) return null;
offset = getTextRange().getStartOffset() + offset - element.getTextRange().getStartOffset();
List<PsiReference> referencesList = new ArrayList<PsiReference>();
final PsiFile file = element.getContainingFile();
final PyResolveContext resolveContext = file != null ?
PyResolveContext.defaultContext().withTypeEvalContext(TypeEvalContext.codeAnalysis(file.getProject(), file)) :
PyResolveContext.defaultContext();
while (element != null) {
addReferences(offset, element, referencesList, resolveContext);
offset = element.getStartOffsetInParent() + offset;
if (element instanceof PsiFile) break;
element = element.getParent();
}
if (referencesList.isEmpty()) return null;
if (referencesList.size() == 1) return referencesList.get(0);
return new PsiMultiReference(referencesList.toArray(new PsiReference[referencesList.size()]),
referencesList.get(referencesList.size() - 1).getElement());
}
示例6: buildVisitor
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Override
@NotNull
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
return new XmlElementVisitor() {
@Override public void visitXmlToken(final XmlToken token) {
if (token.getTokenType() == XmlTokenType.XML_NAME) {
PsiElement element = token.getPrevSibling();
while(element instanceof PsiWhiteSpace) element = element.getPrevSibling();
if (element instanceof XmlToken && ((XmlToken)element).getTokenType() == XmlTokenType.XML_START_TAG_START) {
PsiElement parent = element.getParent();
if (parent instanceof XmlTag && !(token.getNextSibling() instanceof OuterLanguageElement)) {
XmlTag tag = (XmlTag)parent;
checkTag(tag, holder, isOnTheFly);
}
}
}
}
@Override public void visitXmlAttribute(final XmlAttribute attribute) {
checkAttribute(attribute, holder, isOnTheFly);
}
};
}
示例7: compute
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@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();
}
示例8: visitXmlProcessingInstruction
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Override
public void visitXmlProcessingInstruction(XmlProcessingInstruction processingInstruction) {
super .visitXmlProcessingInstruction(processingInstruction);
PsiElement parent = processingInstruction.getParent();
if (parent instanceof XmlProlog && processingInstruction.getText().startsWith("<?xml")) {
for(PsiElement e = PsiTreeUtil.prevLeaf(processingInstruction); e != null; e = PsiTreeUtil.prevLeaf(e)) {
if (e instanceof PsiWhiteSpace && PsiTreeUtil.prevLeaf(e) != null ||
e instanceof OuterLanguageElement) {
continue;
}
PsiElement eParent = e.getParent();
if (eParent instanceof PsiComment) e = eParent;
if (eParent instanceof XmlProcessingInstruction) break;
String description = XmlErrorMessages.message("xml.declaration.should.precede.all.document.content");
addToResults(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(e).descriptionAndTooltip(description).create());
}
}
checkReferences(processingInstruction);
}
示例9: createLeafBlocks
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
private void createLeafBlocks(ASTNode node, List<Block> result) {
if (node instanceof OuterLanguageElement) {
processChild(result, node, null, null, null);
return;
}
ASTNode child = node.getFirstChildNode();
if (child == null && !(node instanceof PsiWhiteSpace) && node.getElementType() != TokenType.ERROR_ELEMENT && node.getTextLength() > 0) {
result.add(new ReadOnlyBlock(node));
return;
}
while (child != null) {
createLeafBlocks(child, result);
child = child.getTreeNext();
}
}
示例10: splitComment
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
protected List<Block> splitComment() {
if (myNode.getElementType() != XmlElementType.XML_COMMENT) return EMPTY;
final ArrayList<Block> result = new ArrayList<Block>(3);
ASTNode child = myNode.getFirstChildNode();
boolean hasOuterLangElements = false;
while (child != null) {
if (child instanceof OuterLanguageElement) {
hasOuterLangElements = true;
}
result.add(new XmlBlock(child, null, null, myXmlFormattingPolicy, getChildIndent(), null, isPreserveSpace()));
child = child.getTreeNext();
}
if (hasOuterLangElements) {
return result;
}
else {
return EMPTY;
}
}
示例11: suggestImport
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
private static boolean suggestImport(PsiElement context) {
if (context.getParent() != null &&
!(context.getParent() instanceof PsiErrorElement) &&
GroovyCompletionUtil.isNewStatement(context, false) &&
context.getParent().getParent() instanceof GroovyFile) {
return true;
}
final PsiElement leaf = GroovyCompletionUtil.getLeafByOffset(context.getTextRange().getStartOffset() - 1, context);
if (leaf != null) {
PsiElement parent = leaf.getParent();
if (parent instanceof GroovyFile) {
return GroovyCompletionUtil.isNewStatement(context, false);
}
}
return context.getTextRange().getStartOffset() == 0 && !(context instanceof OuterLanguageElement);
}
示例12: checkApplicability
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Override
public void checkApplicability(final PsiFile psiFile, final Editor editor) throws IncorrectOperationException {
final JspFile jspFile = (JspFile)psiFile;
final TextRange selectedRange = JavaI18nUtil.getSelectedRange(editor, jspFile);
// must contain no or balanced tags only
// must not contain scriptlets or custom tags
PsiFile root = jspFile.getBaseLanguageRoot();
root.accept(new PsiRecursiveElementVisitor(){
@Override public void visitElement(PsiElement element) {
TextRange elementRange = element.getTextRange();
if (elementRange.intersectsStrict(selectedRange)) {
// in JSPX base language root is a Jspx file itself
if (jspFile.getLanguage() != StdLanguages.JSPX && element instanceof OuterLanguageElement ||
element instanceof XmlTag
&& !selectedRange.contains(elementRange)
&& (!elementRange.contains(selectedRange) || !((XmlTag)element).getValue().getTextRange().contains(selectedRange))) {
throw new IncorrectOperationException(CodeInsightBundle.message("i18nize.jsp.error"));
}
}
super.visitElement(element);
}
});
}
示例13: findElementAt
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
@Override
@Nullable
public PsiElement findElementAt(int offset, @NotNull Class<? extends Language> lang) {
final PsiFile mainRoot = getPsi(getBaseLanguage());
PsiElement ret = null;
for (final Language language : getLanguages()) {
if (!ReflectionCache.isAssignable(lang, language.getClass())) continue;
if (lang.equals(Language.class) && !getLanguages().contains(language)) continue;
final PsiFile psiRoot = getPsi(language);
final PsiElement psiElement = findElementAt(psiRoot, offset);
if (psiElement == null || psiElement instanceof OuterLanguageElement) continue;
if (ret == null || psiRoot != mainRoot) {
ret = psiElement;
}
}
return ret;
}
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:19,代码来源:MultiplePsiFilesPerDocumentFileViewProvider.java
示例14: testSelectionForNonComments
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
private boolean testSelectionForNonComments() {
SelectionModel model = myEditor.getSelectionModel();
if (!model.hasSelection()) {
return true;
}
TextRange range
= new TextRange(model.getSelectionStart(), model.getSelectionEnd() - 1);
for (PsiElement element = myFile.findElementAt(range.getStartOffset()); element != null && range.intersects(element.getTextRange());
element = element.getNextSibling()) {
if (element instanceof OuterLanguageElement) {
if (!isInjectedWhiteSpace(range, (OuterLanguageElement)element)) {
return false;
}
}
else {
if (!isWhiteSpaceOrComment(element, range)) {
return false;
}
}
}
return true;
}
示例15: createLeafBlocks
import com.intellij.psi.templateLanguages.OuterLanguageElement; //导入依赖的package包/类
private void createLeafBlocks(ASTNode node, List<Block> result) {
if (node instanceof OuterLanguageElement) {
processChild(result, node, null, null, null);
return;
}
ASTNode child = node.getFirstChildNode();
if (child == null && !(node instanceof PsiWhiteSpace) && node.getElementType() != TokenType.ERROR_ELEMENT) {
result.add(new ReadOnlyBlock(node));
return;
}
while (child != null) {
createLeafBlocks(child, result);
child = child.getTreeNext();
}
}