From 58efc66d8ba90638b41dd6d2780bfeb79ebcd4ea Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 14 Mar 2013 12:52:16 +0400 Subject: [PATCH] do not check for non-represenatble characters if the file was loaded in the wrong encoding --- .../LossyEncodingInspection.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java b/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java index 8e2d5144f529..229c6da16413 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/LossyEncodingInspection.java @@ -108,28 +108,32 @@ public class LossyEncodingInspection extends LocalInspectionTool { if (charset instanceof Native2AsciiCharset) return null; List descriptors = new SmartList(); - checkIfCharactersWillBeLostAfterSave(file, manager, isOnTheFly, text, charset, descriptors); - checkFileLoadedInWrongEncoding(file, manager, isOnTheFly, text, virtualFile, charset, descriptors); + boolean ok = checkFileLoadedInWrongEncoding(file, manager, isOnTheFly, text, virtualFile, charset, descriptors); + if (ok) { + checkIfCharactersWillBeLostAfterSave(file, manager, isOnTheFly, text, charset, descriptors); + } return descriptors.toArray(new ProblemDescriptor[descriptors.size()]); } - private static void checkFileLoadedInWrongEncoding(@NotNull PsiFile file, - @NotNull InspectionManager manager, - boolean isOnTheFly, - @NotNull String text, - @NotNull VirtualFile virtualFile, - @NotNull Charset charset, - @NotNull List descriptors) { + private static boolean checkFileLoadedInWrongEncoding(@NotNull PsiFile file, + @NotNull InspectionManager manager, + boolean isOnTheFly, + @NotNull String text, + @NotNull VirtualFile virtualFile, + @NotNull Charset charset, + @NotNull List descriptors) { if (FileDocumentManager.getInstance().isFileModified(virtualFile) // when file is modified, it's too late to reload it || EncodingUtil.checkCanReload(virtualFile).second != null // can't reload in another encoding, no point trying ) { - return; + return true; } if (!isGoodCharset(virtualFile, text, charset, file.getProject())) { descriptors.add(manager.createProblemDescriptor(file, "File was loaded in the wrong encoding: '"+charset+"'", RELOAD_ENCODING_FIX, ProblemHighlightType.GENERIC_ERROR, isOnTheFly)); + return false; } + return true; } // check if file was loaded in correct encoding