@Override public boolean acceptInput(@NotNull final VirtualFile file) { if (!file.isInLocalFileSystem()) { return false; // do not index TODOs in library sources } final FileType fileType = file.getFileType(); if (fileType instanceof LanguageFileType) { final Language lang = ((LanguageFileType)fileType).getLanguage(); final ParserDefinition parserDef = LanguageParserDefinitions.INSTANCE.forLanguage(lang); final TokenSet commentTokens = parserDef != null ? parserDef.getCommentTokens() : null; return commentTokens != null; } return PlatformIdTableBuilding.isTodoIndexerRegistered(fileType) || fileType instanceof CustomSyntaxTableFileType; }
@Nullable public static Lexer getLexerBasedOnLexerHighlighter(CharSequence text, VirtualFile virtualFile, Project project) { EditorHighlighter highlighter = null; PsiFile psiFile = virtualFile != null ? PsiManager.getInstance(project).findFile(virtualFile) : null; final Document document = psiFile != null ? PsiDocumentManager.getInstance(project).getDocument(psiFile) : null; final EditorHighlighter cachedEditorHighlighter; boolean alreadyInitializedHighlighter = false; if (document != null && (cachedEditorHighlighter = getEditorHighlighterForCachesBuilding(document)) != null && PlatformIdTableBuilding.checkCanUseCachedEditorHighlighter(text, cachedEditorHighlighter)) { highlighter = cachedEditorHighlighter; alreadyInitializedHighlighter = true; } else if (virtualFile != null) { highlighter = EditorHighlighterFactory.getInstance().createEditorHighlighter(project, virtualFile); } if (highlighter != null) { return new LexerEditorHighlighterLexer(highlighter, alreadyInitializedHighlighter); } return null; }
@Override public boolean acceptInput(final VirtualFile file) { if (!(file.getFileSystem() instanceof LocalFileSystem)) { return false; // do not index TODOs in library sources } final FileType fileType = file.getFileType(); if (fileType instanceof LanguageFileType) { final Language lang = ((LanguageFileType)fileType).getLanguage(); final ParserDefinition parserDef = LanguageParserDefinitions.INSTANCE.forLanguage(lang); final TokenSet commentTokens = parserDef != null ? parserDef.getCommentTokens() : null; return commentTokens != null; } return PlatformIdTableBuilding.isTodoIndexerRegistered(fileType) || fileType instanceof CustomSyntaxTableFileType; }
@Override @NotNull public Map<TodoIndexEntry,Integer> map(@NotNull final FileContent inputData) { final VirtualFile file = inputData.getFile(); final DataIndexer<TodoIndexEntry, Integer, FileContent> indexer = PlatformIdTableBuilding .getTodoIndexer(inputData.getFileType(), file); if (indexer != null) { return indexer.map(inputData); } return Collections.emptyMap(); }
@Override public Lexer getIndexingLexer(final PsiFile file) { if (JspPsiUtil.isInJspFile(file)) { EditorHighlighter highlighter = null; final Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file); final EditorHighlighter cachedEditorHighlighter; boolean alreadyInitializedHighlighter = false; if ((cachedEditorHighlighter = EditorHighlighterCache.getEditorHighlighterForCachesBuilding(document)) != null && PlatformIdTableBuilding.checkCanUseCachedEditorHighlighter(file.getText(), cachedEditorHighlighter)) { highlighter = cachedEditorHighlighter; alreadyInitializedHighlighter = true; } else { final VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile != null) { highlighter = EditorHighlighterFactory.getInstance().createEditorHighlighter(file.getProject(), virtualFile); } } if (highlighter != null) { return new LexerEditorHighlighterLexer(highlighter, alreadyInitializedHighlighter); } } return null; }
@Override @NotNull public Map<TodoIndexEntry,Integer> map(final FileContent inputData) { final VirtualFile file = inputData.getFile(); final DataIndexer<TodoIndexEntry, Integer, FileContent> indexer = PlatformIdTableBuilding .getTodoIndexer(inputData.getFileType(), file); if (indexer != null) { return indexer.map(inputData); } return Collections.emptyMap(); }