From ec53bdf06f17b42a630d2623ab81c3bf583cd469 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 21 Feb 2024 17:51:57 +0400 Subject: [PATCH] EA-772883 - T: DirectoryIndexImpl.getInfoForFile GitOrigin-RevId: 6d6b63d5f55ffd119e9b6c973329654c9628b2ff --- .../editor/EditorConfigEditorProvider.java | 32 ++++++++++--------- .../editor/EditorConfigStatusListener.java | 21 +++++------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigEditorProvider.java b/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigEditorProvider.java index 7c12555f76a0..c45e64d5d4d1 100644 --- a/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigEditorProvider.java +++ b/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigEditorProvider.java @@ -25,6 +25,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; import org.editorconfig.language.filetype.EditorConfigFileType; import org.editorconfig.settings.EditorConfigSettings; @@ -32,13 +33,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; +import java.util.Set; final class EditorConfigEditorProvider implements AsyncFileEditorProvider, DumbAware { private static final String EDITOR_TYPE_ID = "org.editorconfig.configmanagement.editor"; static final int MAX_PREVIEW_LENGTH = 10000; - private static final PsiAwareTextEditorProvider myMainEditorProvider = new PsiAwareTextEditorProvider(); + private static final PsiAwareTextEditorProvider ourMainEditorProvider = new PsiAwareTextEditorProvider(); @Override public @NotNull Builder createEditorAsync(@NotNull Project project, @NotNull VirtualFile file) { @@ -66,35 +68,35 @@ final class EditorConfigEditorProvider implements AsyncFileEditorProvider, DumbA } private static final class MyEditorBuilder extends Builder { - private final Project myProject; - private final VirtualFile myFile; + final Project myProject; + final VirtualFile myFile; + final Set myEncodings; private MyEditorBuilder(Project project, VirtualFile file) { myProject = project; myFile = file; + myEncodings = EditorConfigStatusListener.extractEncodings(project, file); } @Override public @NotNull FileEditor build() { + FileEditor result; VirtualFile contextFile = EditorConfigPreviewManager.getInstance(myProject).getAssociatedPreviewFile(myFile); - EditorConfigStatusListener statusListener = new EditorConfigStatusListener(myProject, myFile); if (contextFile != null && CodeStyle.getSettings(myProject).getCustomSettings(EditorConfigSettings.class).ENABLED) { - Document document =EditorFactory.getInstance().createDocument(getPreviewText(contextFile)); - Disposable previewDisposable = Disposer.newDisposable(); - final EditorConfigPreviewFile previewFile = new EditorConfigPreviewFile(myProject, contextFile, document, previewDisposable); + Document document = EditorFactory.getInstance().createDocument(getPreviewText(contextFile)); + Disposable disposable = Disposer.newDisposable(); + EditorConfigPreviewFile previewFile = new EditorConfigPreviewFile(myProject, contextFile, document, disposable); FileEditor previewEditor = createPreviewEditor(document, previewFile); TextEditor ecTextEditor = (TextEditor)TextEditorProvider.getInstance().createEditor(myProject, myFile); - final EditorConfigEditorWithPreview splitEditor = new EditorConfigEditorWithPreview( - myFile, myProject, ecTextEditor, previewEditor); - Disposer.register(splitEditor, previewDisposable); - Disposer.register(splitEditor, statusListener); - return splitEditor; + result = new EditorConfigEditorWithPreview(myFile, myProject, ecTextEditor, previewEditor); + Disposer.register(result, disposable); } else { - FileEditor fileEditor = myMainEditorProvider.createEditor(myProject, myFile); - Disposer.register(fileEditor, statusListener); - return fileEditor; + result = ourMainEditorProvider.createEditor(myProject, myFile); } + EditorConfigStatusListener statusListener = new EditorConfigStatusListener(myProject, myFile, myEncodings); + CodeStyleSettingsManager.getInstance(myProject).subscribe(statusListener, result); + return result; } private FileEditor createPreviewEditor(@NotNull Document document, @NotNull EditorConfigPreviewFile previewFile) { diff --git a/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigStatusListener.java b/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigStatusListener.java index db043fa9c160..a825942ab16b 100644 --- a/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigStatusListener.java +++ b/plugins/editorconfig/src/org/editorconfig/configmanagement/editor/EditorConfigStatusListener.java @@ -3,7 +3,6 @@ package org.editorconfig.configmanagement.editor; import com.intellij.application.options.CodeStyle; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; -import com.intellij.openapi.Disposable; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.FileEditorManager; @@ -13,7 +12,6 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CodeStyleSettingsChangeEvent; import com.intellij.psi.codeStyle.CodeStyleSettingsListener; -import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.ui.EditorNotifications; import org.editorconfig.Utils; import org.editorconfig.configmanagement.ConfigEncodingCharsetUtil; @@ -28,18 +26,19 @@ import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; -final class EditorConfigStatusListener implements CodeStyleSettingsListener, Disposable { +final class EditorConfigStatusListener implements CodeStyleSettingsListener { private boolean myEnabledStatus; private final VirtualFile myVirtualFile; private final Project myProject; private Set myEncodings; - EditorConfigStatusListener(@NotNull Project project, @NotNull VirtualFile virtualFile) { + EditorConfigStatusListener(@NotNull Project project, + @NotNull VirtualFile virtualFile, + @NotNull Set encodings) { myProject = project; myEnabledStatus = Utils.INSTANCE.isEnabled(project); myVirtualFile = virtualFile; - myEncodings = extractEncodings(); - CodeStyleSettingsManager.getInstance(project).subscribe(this, this); + myEncodings = encodings; } @Override @@ -55,7 +54,7 @@ final class EditorConfigStatusListener implements CodeStyleSettingsListener, Dis myEnabledStatus = newEnabledStatus; onEditorConfigEnabled(newEnabledStatus); } - Set newEncodings = extractEncodings(); + Set newEncodings = extractEncodings(myProject, myVirtualFile); if (!myEncodings.equals(newEncodings)) { if (containsValidEncodings(newEncodings)) { onEncodingChanged(); @@ -78,10 +77,6 @@ final class EditorConfigStatusListener implements CodeStyleSettingsListener, Dis } } - @Override - public void dispose() { - } - private static void onEncodingChanged() { EditorConfigEncodingCache.Companion.getInstance().reset(); } @@ -95,9 +90,9 @@ final class EditorConfigStatusListener implements CodeStyleSettingsListener, Dis return true; } - private @NotNull Set extractEncodings() { + static @NotNull Set extractEncodings(@NotNull Project project, @NotNull VirtualFile file) { Set charsets = new HashSet<>(); - PsiFile psiFile = PsiManager.getInstance(myProject).findFile(myVirtualFile); + PsiFile psiFile = PsiManager.getInstance(project).findFile(file); if (psiFile == null) { return charsets; }