EA-772883 - T: DirectoryIndexImpl.getInfoForFile

GitOrigin-RevId: 6d6b63d5f55ffd119e9b6c973329654c9628b2ff
This commit is contained in:
Gregory.Shrago
2024-02-21 17:51:57 +04:00
committed by intellij-monorepo-bot
parent 75cadec822
commit ec53bdf06f
2 changed files with 25 additions and 28 deletions

View File

@@ -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<String> 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) {

View File

@@ -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<String> myEncodings;
EditorConfigStatusListener(@NotNull Project project, @NotNull VirtualFile virtualFile) {
EditorConfigStatusListener(@NotNull Project project,
@NotNull VirtualFile virtualFile,
@NotNull Set<String> 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<String> newEncodings = extractEncodings();
Set<String> 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<String> extractEncodings() {
static @NotNull Set<String> extractEncodings(@NotNull Project project, @NotNull VirtualFile file) {
Set<String> charsets = new HashSet<>();
PsiFile psiFile = PsiManager.getInstance(myProject).findFile(myVirtualFile);
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
if (psiFile == null) {
return charsets;
}