diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java index 495d72e63178..826028cdd21b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java @@ -210,17 +210,22 @@ public class EncodingProjectManagerImpl extends EncodingProjectManager { @Override public void setEncoding(@Nullable final VirtualFile virtualFileOrDir, @Nullable final Charset charset) { + Charset oldCharset; + if (charset == null) { - myMapping.remove(virtualFileOrDir); + oldCharset = myMapping.remove(virtualFileOrDir); } else { - myMapping.put(virtualFileOrDir, charset); + oldCharset = myMapping.put(virtualFileOrDir, charset); } - myModificationCount++; - if (virtualFileOrDir != null) { - virtualFileOrDir.setCharset(virtualFileOrDir.getBOM() == null ? charset : null); + + if (!Comparing.equal(oldCharset, charset)) { + myModificationCount++; + if (virtualFileOrDir != null) { + virtualFileOrDir.setCharset(virtualFileOrDir.getBOM() == null ? charset : null); + } + reloadAllFilesUnder(virtualFileOrDir); } - reloadAllFilesUnder(virtualFileOrDir); } private static void clearAndReload(@NotNull VirtualFile virtualFileOrDir) { diff --git a/platform/util/src/com/intellij/util/ArrayUtil.java b/platform/util/src/com/intellij/util/ArrayUtil.java index 3f1470ad9a56..40e3f84ede22 100644 --- a/platform/util/src/com/intellij/util/ArrayUtil.java +++ b/platform/util/src/com/intellij/util/ArrayUtil.java @@ -685,6 +685,21 @@ public class ArrayUtil extends ArrayUtilRt { return indexOf(objects, o) >= 0; } + public static boolean contains(@Nullable final String s, final String... strings) { + if (s == null) { + for (String str : strings) { + if (str == null) return true; + } + } + else { + for (String str : strings) { + if (s.equals(str)) return true; + } + } + + return false; + } + @NotNull public static int[] newIntArray(int count) { return count == 0 ? EMPTY_INT_ARRAY : new int[count];