@Override public void visitFile(@NotNull PsiFile file) { super.visitFile(file); for (PsiElement psiElement : file.getChildren()) { psiElement.accept(this); ProgressIndicatorProvider.checkCanceled(); } } }
private Optional<JsonObject> getRootObject(final PsiFile psiFile) { return Arrays.stream(psiFile.getChildren()) .filter(el -> el instanceof JsonObject) .map(JsonObject.class::cast) .findFirst(); }
private Optional<YAMLMapping> getRootMapping(final PsiFile psiFile) { return Arrays.stream(psiFile.getChildren()) .filter(el -> el instanceof YAMLDocument) .findFirst() .map(PsiElement::getChildren) .map( children -> Arrays.stream(children) .filter(el -> el instanceof YAMLMapping) .map(YAMLMapping.class::cast) .findFirst() .orElse(null)); }
@Nullable @Override public PsiElement getCustomDocumentationElement(@NotNull Editor editor, @NotNull PsiFile file, @Nullable PsiElement contextElement) { if (contextElement instanceof PsiFile) { PsiFile podFile = ((PsiFile)contextElement).getViewProvider().getPsi(PodLanguage.INSTANCE); if (podFile != null && podFile.getChildren().length == 1 && podFile.getFirstChild().getNode().getElementType() == PodElementTypes.POD_OUTER) { return null; } return podFile; } else if (contextElement != null) { return getCustomDocumentationElement(editor, file, contextElement.getParent()); } return null; } }
FileViewProvider viewProvider = ((PerlFile)psiElement).getViewProvider(); PsiFile podFile = viewProvider.getPsi(PodLanguage.INSTANCE); if (podFile != null && podFile.getChildren().length > 1) { result.add(new PodStructureViewElement(podFile));