diff --git a/json/src/com/jetbrains/jsonSchema/JsonSchemaVfsListener.java b/json/src/com/jetbrains/jsonSchema/JsonSchemaVfsListener.java index 66d51f6217d5..dab691f98614 100644 --- a/json/src/com/jetbrains/jsonSchema/JsonSchemaVfsListener.java +++ b/json/src/com/jetbrains/jsonSchema/JsonSchemaVfsListener.java @@ -18,16 +18,16 @@ package com.jetbrains.jsonSchema; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.json.JsonFileType; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.EditorFactory; +import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.ZipperUpdater; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.*; import com.intellij.openapi.vfs.impl.BulkVirtualFileListenerAdapter; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; -import com.intellij.psi.search.FileTypeIndex; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.Alarm; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl; @@ -53,23 +53,29 @@ public class JsonSchemaVfsListener extends BulkVirtualFileListenerAdapter { if (scope.isEmpty()) return; final DaemonCodeAnalyzer analyzer = DaemonCodeAnalyzer.getInstance(project); - ApplicationManager.getApplication().runReadAction(() -> { - FileTypeIndex.processFiles(JsonFileType.INSTANCE, jsonFile -> { - final Collection> collection = myService.getSchemaFilesByFile(jsonFile); - if (collection != null && !collection.isEmpty()) { - for (Pair pair : collection) { - if (scope.contains(pair.getFirst())) { - final PsiFile psiFile = PsiManager.getInstance(project).findFile(jsonFile); - if (psiFile != null) { - analyzer.restart(psiFile); + final PsiManager psiManager = PsiManager.getInstance(project); + final Editor[] editors = EditorFactory.getInstance().getAllEditors(); + for (Editor editor : editors) { + if (editor instanceof EditorEx) { + final VirtualFile file = ((EditorEx)editor).getVirtualFile(); + if (JsonFileType.INSTANCE.equals(file.getFileType())) { + final Collection> collection = myService.getSchemaFilesByFile(file); + if (collection != null && !collection.isEmpty()) { + for (Pair pair : collection) { + if (scope.contains(pair.getFirst())) { + ApplicationManager.getApplication().runReadAction(() -> { + final PsiFile psiFile = psiManager.findFile(file); + if (psiFile != null) { + analyzer.restart(psiFile); + } + }); + break; } - return true; } } } - return true; - }, GlobalSearchScope.projectScope(project)); - }); + } + } }; @Override @@ -105,10 +111,8 @@ public class JsonSchemaVfsListener extends BulkVirtualFileListenerAdapter { private void onFileChange(@NotNull final VirtualFile schemaFile) { if (myMappingsProjectConfiguration.isRegisteredSchemaFile(schemaFile)) { myService.dropProviderFromCache(schemaFile); - if (Registry.is("json.schema.fast.annotation.update")) { - myDirtySchemas.add(schemaFile); - myUpdater.queue(myRunnable); - } + myDirtySchemas.add(schemaFile); + myUpdater.queue(myRunnable); } } }); diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 226cec12b9e1..e18b56e2c4a9 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -913,5 +913,3 @@ build.manager.async.fs.events.description=Experimental: TranslatingCompilerFiles batch.inspections.use.psi.as.ref.table.key=false batch.inspections.use.psi.as.ref.table.key.description=Use PsiElement as key for RefManager's table -json.schema.fast.annotation.update=false -json.schema.fast.annotation.update.description=Restart highlighting for all json files matching json schema on json schema fiel change \ No newline at end of file