diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompilerEncodingServiceImpl.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompilerEncodingServiceImpl.java index db458420d1cc..d50063d77a90 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompilerEncodingServiceImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompilerEncodingServiceImpl.java @@ -18,7 +18,9 @@ package com.intellij.compiler.impl; import com.intellij.compiler.CompilerEncodingService; import com.intellij.openapi.compiler.CompilerManager; import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; @@ -95,6 +97,20 @@ public class CompilerEncodingServiceImpl extends CompilerEncodingService { } set.add(charset); } + //todo[nik,jeka] perhaps we should take into account encodings of source roots only not individual files + for (Module module : ModuleManager.getInstance(myProject).getModules()) { + for (VirtualFile file : ModuleRootManager.getInstance(module).getSourceRoots(true)) { + Charset encoding = EncodingProjectManager.getInstance(myProject).getEncoding(file, true); + if (encoding != null) { + Set charsets = map.get(module); + if (charsets == null) { + charsets = new LinkedHashSet(); + map.put(module, charsets); + } + charsets.add(encoding); + } + } + } return map; }