diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java index 071d416cdb28..ff93824ca5c7 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java @@ -523,6 +523,10 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica } public void setCharset(final Charset charset, @Nullable Runnable whenChanged) { + setCharset(charset, whenChanged, false); + } + + public void setCharset(final Charset charset, @Nullable Runnable whenChanged, boolean suppressEvents) { final Charset old = getStoredCharset(); storeCharset(charset); if (Comparing.equal(charset, old)) return; @@ -535,7 +539,9 @@ public abstract class VirtualFile extends UserDataHolderBase implements Modifica if (old != null) { //do not send on detect if (whenChanged != null) whenChanged.run(); - VirtualFileManager.getInstance().notifyPropertyChanged(this, PROP_ENCODING, old, charset); + if (!suppressEvents) { + VirtualFileManager.getInstance().notifyPropertyChanged(this, PROP_ENCODING, old, charset); + } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java index d154510c8740..3f8f55c681ab 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java @@ -638,7 +638,7 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt documentEx.setReadOnly(false); LoadTextUtil.setCharsetWasDetectedFromBytes(file, null); file.setBOM(null); // reset BOM in case we had one and the external change stripped it away - file.setCharset(null); + file.setCharset(null, null, true); if (!isBinaryWithoutDecompiler(file)) { documentEx.replaceText(LoadTextUtil.loadText(file), file.getModificationStamp()); documentEx.setReadOnly(!wasWritable);