void (@NotNull Project project) { ProgressManager.progress(IndexingBundle.message("progress.text.loading.indexes")); FileBasedIndexImpl fileBasedIndex = (FileBasedIndexImpl)FileBasedIndex.getInstance(); PushedFilePropertiesUpdater propertiesUpdater = PushedFilePropertiesUpdater.getInstance(project); if (propertiesUpdater instanceof PushedFilePropertiesUpdaterImpl) { ((PushedFilePropertiesUpdaterImpl)propertiesUpdater).initializeProperties(); } fileBasedIndex.registerProjectFileSets(project); // load indexes while in dumb mode, otherwise someone from read action may hit `FileBasedIndex.getIndex` and hang (IDEA-316697) fileBasedIndex.loadIndexes(); fileBasedIndex.waitUntilIndicesAreInitialized(); // schedule dumb mode start after the read action we're currently in boolean suspended = IndexInfrastructure.isIndexesInitializationSuspended(); UnindexedFilesScanner.scanAndIndexProjectAfterOpen(project, suspended, "On project open"); // done mostly for tests. In real life this is no-op, because the set was removed on project closing Disposer.register(project, () -> removeProjectIndexableSet(project)); }