下面列出了怎么用com.intellij.psi.SingleRootFileViewProvider的API类实例代码及写法,或者点击链接到github查看源代码。
@Nonnull
public static CSharpFragmentFileImpl createExpressionFragment(Project project, String text, @Nullable final PsiElement context)
{
LightVirtualFile virtualFile = new LightVirtualFile("dummy.cs", CSharpFileType.INSTANCE, text, System.currentTimeMillis());
SingleRootFileViewProvider viewProvider = new SingleRootFileViewProvider(PsiManager.getInstance(project), virtualFile, true)
{
@Nonnull
@Override
public SingleRootFileViewProvider createCopy(@Nonnull final VirtualFile copy)
{
SingleRootFileViewProvider provider = new SingleRootFileViewProvider(getManager(), copy, false);
CSharpFragmentFileImpl psiFile = new CSharpFragmentFileImpl(ourExpressionFileElementType, ourExpressionFileElementType, provider, context);
provider.forceCachedPsi(psiFile);
psiFile.getNode();
return provider;
}
};
CSharpFragmentFileImpl file = new CSharpFragmentFileImpl(ourExpressionFileElementType, ourExpressionFileElementType, viewProvider, context);
viewProvider.forceCachedPsi(file);
file.getNode();
return file;
}
public HaxeExpressionCodeFragmentImpl(Project project,
@NonNls String name,
CharSequence text,
boolean isPhysical) {
super(new SingleRootFileViewProvider(PsiManager.getInstance(project),
new LightVirtualFile(name, FileTypeManager.getInstance().getFileTypeByFileName(name), text),
isPhysical) {
@Override
public boolean supportsIncrementalReparse(@NotNull Language rootLanguage) {
return false;
}
});
myPhysical = isPhysical;
((SingleRootFileViewProvider)getViewProvider()).forceCachedPsi(this);
final MyHaxeFileElementType type = new MyHaxeFileElementType();
init(type, type);
}
@Override
public boolean shouldInspect(@Nonnull PsiElement psiRoot) {
if (ApplicationManager.getApplication().isUnitTestMode()) return true;
if (!shouldHighlight(psiRoot)) return false;
final Project project = psiRoot.getProject();
final VirtualFile virtualFile = psiRoot.getContainingFile().getVirtualFile();
if (virtualFile == null || !virtualFile.isValid()) return false;
if (ProjectCoreUtil.isProjectOrWorkspaceFile(virtualFile)) return false;
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
if (ProjectScope.getLibrariesScope(project).contains(virtualFile) && !fileIndex.isInContent(virtualFile)) return false;
if (SingleRootFileViewProvider.isTooLargeForIntelligence(virtualFile)) return false;
final FileHighlightingSetting settingForRoot = getHighlightingSettingForRoot(psiRoot);
return settingForRoot != FileHighlightingSetting.SKIP_INSPECTION;
}
public static boolean shouldInspect(@Nonnull PsiElement psiRoot) {
if (ApplicationManager.getApplication().isUnitTestMode()) return true;
if (!shouldHighlight(psiRoot)) return false;
final Project project = psiRoot.getProject();
final VirtualFile virtualFile = psiRoot.getContainingFile().getVirtualFile();
if (virtualFile == null || !virtualFile.isValid()) return false;
if (ProjectCoreUtil.isProjectOrWorkspaceFile(virtualFile)) return false;
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
if (ProjectScope.getLibrariesScope(project).contains(virtualFile) && !fileIndex.isInContent(virtualFile)) return false;
if (SingleRootFileViewProvider.isTooLargeForIntelligence(virtualFile)) return false;
final HighlightingSettingsPerFile component = HighlightingSettingsPerFile.getInstance(project);
if (component == null) return true;
final FileHighlightingSetting settingForRoot = component.getHighlightingSettingForRoot(psiRoot);
return settingForRoot != FileHighlightingSetting.SKIP_INSPECTION;
}
protected PsiFile createPsiFileFromSource(final Language language, CharSequence sourceCode, PsiManager manager) {
@NonNls final LightVirtualFile virtualFile = new LightVirtualFile("foo", createTemplateFakeFileType(language), sourceCode, LocalTimeCounter.currentTime());
FileViewProvider viewProvider = new SingleRootFileViewProvider(manager, virtualFile, false) {
@Override
@Nonnull
public Language getBaseLanguage() {
return language;
}
};
// Since we're already inside a template language PSI that was built regardless of the file size (for whatever reason),
// there should also be no file size checks for template data files.
SingleRootFileViewProvider.doNotCheckFileSizeLimit(virtualFile);
return viewProvider.getPsi(language);
}
SkylarkExpressionCodeFragment(Project project, String fileName, String text, boolean isPhysical) {
super(
PsiManagerEx.getInstanceEx(project)
.getFileManager()
.createFileViewProvider(
new LightVirtualFile(fileName, BuildFileType.INSTANCE, text), isPhysical));
this.isPhysical = isPhysical;
((SingleRootFileViewProvider) getViewProvider()).forceCachedPsi(this);
}
@Nonnull
public static CSharpFragmentFileImpl createTypeFragment(Project project, String text, @Nullable final PsiElement context)
{
LightVirtualFile virtualFile = new LightVirtualFile("dummy.cs", CSharpFileType.INSTANCE, text, System.currentTimeMillis());
SingleRootFileViewProvider viewProvider = new SingleRootFileViewProvider(PsiManager.getInstance(project), virtualFile, true);
CSharpFragmentFileImpl file = new CSharpFragmentFileImpl(ourTypeFileElementType, ourTypeFileElementType, viewProvider, context);
viewProvider.forceCachedPsi(file);
file.getNode();
return file;
}
@Override
public boolean accept(@NotNull Project project, @NotNull VirtualFile file) {
return CsvHelper.isCsvFile(project, file) && !SingleRootFileViewProvider.isTooLargeForContentLoading(file);
}
@Override
public boolean accept(@NotNull Project project, @NotNull VirtualFile file) {
return CsvEditorSettings.getInstance().getEditorPrio() != CsvEditorSettings.EditorPrio.TEXT_ONLY &&
CsvHelper.isCsvFile(project, file) &&
!SingleRootFileViewProvider.isTooLargeForIntelligence(file);
}
@Override
public boolean accept(@Nonnull Project project, @Nonnull VirtualFile file) {
return isTextFile(file) && !SingleRootFileViewProvider.isTooLargeForContentLoading(file);
}
@Override
public boolean accept(@Nonnull Project project, @Nonnull VirtualFile file) {
return TextEditorProvider.isTextFile(file) && SingleRootFileViewProvider.isTooLargeForContentLoading(file);
}
@Override
public boolean accept(@Nonnull Project project, @Nonnull VirtualFile file) {
return isTextFile(file) && !SingleRootFileViewProvider.isTooLargeForContentLoading(file);
}
@Override
@Nonnull
public FileViewProvider createFileViewProvider(@Nonnull final VirtualFile file, final boolean physical) {
return new SingleRootFileViewProvider(myManager, file, physical);
}
public MockFileManager(final PsiManagerEx manager) {
myManager = manager;
myViewProviders = FactoryMap.create(key -> new SingleRootFileViewProvider(manager, key));
}
@Override
@Nonnull
public FileViewProvider createFileViewProvider(@Nonnull final VirtualFile file, final boolean physical) {
return new SingleRootFileViewProvider(myManager, file, physical);
}
private boolean isTooLarge(@Nonnull VirtualFile file) {
if (SingleRootFileViewProvider.isTooLargeForIntelligence(file)) {
return !myNoLimitCheckTypes.contains(file.getFileType()) || SingleRootFileViewProvider.isTooLargeForContentLoading(file);
}
return false;
}
private boolean isTooLarge(@Nonnull VirtualFile file, long contentSize) {
if (SingleRootFileViewProvider.isTooLargeForIntelligence(file, contentSize)) {
return !myNoLimitCheckTypes.contains(file.getFileType()) || SingleRootFileViewProvider.isTooLargeForContentLoading(file, contentSize);
}
return false;
}
public CppCodeFragment(@NotNull FileViewProvider fileViewProvider) {
super(fileViewProvider);
((SingleRootFileViewProvider)fileViewProvider).forceCachedPsi(this);
}