From 7af2a4efa4ba344bcb194c640d14901bb826cee4 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 13 Mar 2018 08:22:29 +0100 Subject: [PATCH] on VFS change, reuse PSI if any of the view provider roots is present --- .../com/intellij/psi/impl/file/impl/FileManagerImpl.java | 6 +++--- .../com/intellij/psi/impl/file/impl/PsiVFSListener.java | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java index bb3e255ac44c..3aa5d4e4fe96 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/file/impl/FileManagerImpl.java @@ -549,11 +549,11 @@ public class FileManagerImpl implements FileManager { fileDocumentManager.reloadFromDisk(document); } else { - reloadPsiAfterTextChange(file, vFile); + reloadPsiAfterTextChange(file.getViewProvider(), vFile); } } - void reloadPsiAfterTextChange(@NotNull PsiFile file, @NotNull VirtualFile vFile) { + void reloadPsiAfterTextChange(@NotNull FileViewProvider viewProvider, @NotNull VirtualFile vFile) { FileViewProvider latestProvider = createFileViewProvider(vFile, false); PsiFile psi = latestProvider.getPsi(latestProvider.getBaseLanguage()); if (psi instanceof PsiLargeFile || psi instanceof PsiBinaryFile) { @@ -561,6 +561,6 @@ public class FileManagerImpl implements FileManager { return; } - ((AbstractFileViewProvider)file.getViewProvider()).onContentReload(); + ((AbstractFileViewProvider)viewProvider).onContentReload(); } } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java index 891167d5c679..5666346236ae 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.java @@ -617,15 +617,15 @@ public class PsiVFSListener implements VirtualFileListener, BulkFileListener { private class MyFileDocumentManagerAdapter extends FileDocumentManagerAdapter { @Override public void fileWithNoDocumentChanged(@NotNull final VirtualFile file) { - final PsiFile psiFile = myFileManager.getCachedPsiFileInner(file); - if (psiFile != null) { + FileViewProvider viewProvider = myFileManager.findCachedViewProvider(file); + if (viewProvider != null) { ApplicationManager.getApplication().runWriteAction( (ExternalChangeAction)() -> { if (FileDocumentManagerImpl.recomputeFileTypeIfNecessary(file)) { myFileManager.forceReload(file); } else { - myFileManager.reloadPsiAfterTextChange(psiFile, file); + myFileManager.reloadPsiAfterTextChange(viewProvider, file); } } ); @@ -636,7 +636,7 @@ public class PsiVFSListener implements VirtualFileListener, BulkFileListener { @Override public void fileContentReloaded(@NotNull VirtualFile file, @NotNull Document document) { - PsiFile psiFile = myFileManager.getCachedPsiFileInner(file); + FileViewProvider psiFile = myFileManager.findCachedViewProvider(file); if (!file.isValid() || psiFile == null || !FileUtilRt.isTooLarge(file.getLength()) || psiFile instanceof PsiLargeFile) return; ApplicationManager.getApplication().runWriteAction((ExternalChangeAction)() -> myFileManager.reloadPsiAfterTextChange(psiFile, file)); }