package org.elixir_lang.configuration; import com.intellij.openapi.components.*; import com.intellij.openapi.project.Project; import org.elixir_lang.jps.model.ElixirCompilerOptions; import org.elixir_lang.jps.model.JpsElixirCompilerOptionsSerializer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Created by zyuyou on 15/7/6. */ @State( name = JpsElixirCompilerOptionsSerializer.COMPILER_OPTIONS_COMPONENT_NAME, storages = { @Storage(file = StoragePathMacros.PROJECT_FILE), @Storage(file = StoragePathMacros.PROJECT_CONFIG_DIR + "/compiler.xml", scheme = StorageScheme.DIRECTORY_BASED) } ) public class ElixirCompilerSettings implements PersistentStateComponent<ElixirCompilerOptions>{ private ElixirCompilerOptions myCompilerOptions = new ElixirCompilerOptions(); @Nullable @Override public ElixirCompilerOptions getState() { return myCompilerOptions; } @Override public void loadState(ElixirCompilerOptions state) { myCompilerOptions = state; } @NotNull public static ElixirCompilerSettings getInstance(@NotNull Project project){ ElixirCompilerSettings persisted = ServiceManager.getService(project, ElixirCompilerSettings.class); return persisted != null ? persisted : new ElixirCompilerSettings(); } /* use mix-compiler */ public boolean isUseMixCompilerEnabled(){ return myCompilerOptions.myUseMixCompiler; } public void setUseMixCompilerEnabled(boolean useMixCompiler){ myCompilerOptions.myUseMixCompiler = useMixCompiler; } /* attach docs */ public boolean isAttachDocsEnabled(){ return myCompilerOptions.myAttachDocsEnabled; } public void setAttachDocsEnabled(boolean useDocs){ myCompilerOptions.myAttachDocsEnabled = useDocs; } /* attach debug-info */ public boolean isAttachDebugInfoEnabled(){ return myCompilerOptions.myAttachDebugInfoEnabled; } public void setAttachDebugInfoEnabled(boolean useDebugInfo){ myCompilerOptions.myAttachDebugInfoEnabled = useDebugInfo; } /* warnings-as-errors */ public boolean isWarningsAsErrorsEnabled(){ return myCompilerOptions.myWarningsAsErrorsEnabled; } public void setWarningsAsErrorsEnabled(boolean useWarningsAsErrors){ myCompilerOptions.myWarningsAsErrorsEnabled = useWarningsAsErrors; } /* ignore-module-conflict */ public boolean isIgnoreModuleConflictEnabled(){ return myCompilerOptions.myIgnoreModuleConflictEnabled; } public void setIgnoreModuleConflictEnabled(boolean useIgnoreModuleConflict){ myCompilerOptions.myIgnoreModuleConflictEnabled = useIgnoreModuleConflict; } }