/** Builds a new instance of {@link IgnoreFile}. */ public IgnoreFile(@NotNull FileViewProvider viewProvider, @NotNull IgnoreFileType fileType) { super(viewProvider); this.fileType = fileType; this.language = findLanguage(fileType.getLanguage(), viewProvider); final ParserDefinition parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(this.language); if (parserDefinition == null) { throw new RuntimeException( "PsiFileBase: language.getParserDefinition() returned null for: " + this.language ); } this.parserDefinition = parserDefinition; final IFileElementType nodeType = parserDefinition.getFileNodeType(); init(nodeType, nodeType); }
@Override public void configureFromParserDefinition(@NotNull com.intellij.lang.ParserDefinition parserDefinition, @NotNull String extension) { myLanguage = parserDefinition.getFileNodeType().getLanguage(); myFileExt = extension; addExplicitExtension(LanguageParserDefinitions.INSTANCE, myLanguage, parserDefinition); registerExtensionPoint(FileTypeRegistrator.EP_NAME, FileTypeRegistrator.class); MutablePicoContainer picoContainer = getApplication().getPicoContainer(); MessageBus messageBus = messageBus(picoContainer); registerApplicationService(PropertiesComponent.class, new AppPropertiesComponentImpl()); registerExtensionPoint(EmbeddedTokenTypesProvider.EXTENSION_POINT_NAME, EmbeddedTokenTypesProvider.class); unregisterAutoDetectionCacheAttribute(); FileTypeManagerImpl fileTypeManager = new FileTypeManagerImpl(messageBus, new MockSchemeManagerFactory(), new AppPropertiesComponentImpl()); registerFileType(fileTypeManager, HtmlFileType.INSTANCE); registerFileType(fileTypeManager, Type.INSTANCE); registerComponentInstance(picoContainer, FileTypeManager.class, fileTypeManager); } }
@Nullable protected PsiFile createFile(@NotNull String name, @NotNull String text, @NotNull ParserDefinition definition) { Language language = definition.getFileNodeType().getLanguage(); Init.addKeyedExtension(LanguageParserDefinitions.INSTANCE, language, definition, getProject()); return ((PsiFileFactoryImpl)PsiFileFactory.getInstance(myProject)).trySetupPsiForFile(new LightVirtualFile(name, language, text), language, true, false); }
@NotNull protected ASTNode createAST(@NotNull String text, @NotNull ParserDefinition definition) { PsiParser parser = definition.createParser(getProject()); Lexer lexer = definition.createLexer(getProject()); PsiBuilderImpl psiBuilder = new PsiBuilderImpl(getProject(), null, definition, lexer, new CharTableImpl(), text, null, null); return parser.parse(definition.getFileNodeType(), psiBuilder); }
@NotNull protected SyntaxTraverser<LighterASTNode> parseLight(@NotNull String text, @NotNull ParserDefinition definition) { LightPsiParser parser = (LightPsiParser)definition.createParser(getProject()); Lexer lexer = definition.createLexer(getProject()); PsiBuilderImpl psiBuilder = new PsiBuilderImpl(getProject(), null, definition, lexer, new CharTableImpl(), text, null, null); parser.parseLight(definition.getFileNodeType(), psiBuilder); return SyntaxTraverser.lightTraverser(psiBuilder); }
parser.parse(parserDefinition.getFileNodeType(), builder); return true;