// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de
package net.sf.eclipsefp.haskell.core.preferences;
import net.sf.eclipsefp.haskell.core.HaskellCorePlugin;
import net.sf.eclipsefp.haskell.core.cabalmodel.CabalSyntax;
import net.sf.eclipsefp.haskell.util.FileUtil;
import net.sf.eclipsefp.haskell.util.PlatformUtil;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
/** <p>initializer for the core preferences (declared in the
* <code>plugin.xml</code>).</p>
*
* @author Leif Frenzel
*/
public class CorePreferenceInitializer extends AbstractPreferenceInitializer
implements ICorePreferenceNames {
@Override
public void initializeDefaultPreferences() {
IEclipsePreferences coreNode = HaskellCorePlugin.instanceScopedPreferences();
coreNode.put( SELECTED_COMPILER, "ghcCompiler" ); //$NON-NLS-1$
coreNode.put( FOLDERS_SRC, FileUtil.DEFAULT_FOLDER_SRC );
// coreNode.put( FOLDERS_DOC, FileUtil.DEFAULT_FOLDER_DOC );
// coreNode.put( FOLDERS_OUT, "out" ); //$NON-NLS-1$
// coreNode.put( TARGET_BINARY, "bin/theResult" ); //$NON-NLS-1$
coreNode.putBoolean( FOLDERS_IN_NEW_PROJECT, true );
coreNode.putBoolean( DEBUG_BREAK_ON_ERROR, false );
coreNode.putBoolean( DEBUG_BREAK_ON_EXCEPTION, false );
coreNode.putBoolean( DEBUG_PRINT_WITH_SHOW, true );
coreNode.putInt( RUN_COMMAND_HISTORY_MAX, 20 );
/**
* default code templates
*/
coreNode.put( TEMPLATE_CABAL,
CabalSyntax.FIELD_NAME.getCabalName()+": ${"+TemplateVariables.PROJECT_NAME+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
CabalSyntax.FIELD_VERSION.getCabalName()+": 0.1"+PlatformUtil.NL+ //$NON-NLS-1$
CabalSyntax.FIELD_CABAL_VERSION.getCabalName()+": >=1.2"+PlatformUtil.NL+ //$NON-NLS-1$
CabalSyntax.FIELD_BUILD_TYPE.getCabalName()+": Simple"+PlatformUtil.NL+ //$NON-NLS-1$
CabalSyntax.FIELD_AUTHOR.getCabalName()+": ${"+TemplateVariables.USER_NAME+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
""+PlatformUtil.NL+ //$NON-NLS-1$
"${"+TemplateVariables.LIBRARY+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"${"+TemplateVariables.EXECUTABLE+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
""); //$NON-NLS-1$
coreNode.put( TEMPLATE_CABAL_LIBRARY,
CabalSyntax.SECTION_LIBRARY.getCabalName()+PlatformUtil.NL+
" "+CabalSyntax.FIELD_HS_SOURCE_DIRS.getCabalName()+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_BUILD_DEPENDS.getCabalName()+": base >= 4" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_GHC_OPTIONS.getCabalName()+": -Wall" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
""); //$NON-NLS-1$
coreNode.put( TEMPLATE_CABAL_EXE,
CabalSyntax.SECTION_EXECUTABLE.getCabalName()+" ${"+TemplateVariables.PROJECT_NAME+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_HS_SOURCE_DIRS+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_MAIN_IS+": Main.hs"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_BUILD_DEPENDS+": base >= 4"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_GHC_OPTIONS+": -Wall"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
""); //$NON-NLS-1$
coreNode.put( TEMPLATE_CABAL_SETUP,
"import Distribution.Simple"+PlatformUtil.NL+"main = defaultMain"+PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_CABAL_HTF,
CabalSyntax.SECTION_TESTSUITE+ " ${"+TemplateVariables.SECTION_NAME+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_TYPE+": "+CabalSyntax.VALUE_EXITCODE_STDIO_1_0+ PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
//" "+CabalSyntax.FIELD_HS_SOURCE_DIRS+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_MAIN_IS+": Main.hs"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_GHC_OPTIONS+": -Wall -rtsopts" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_BUILD_DEPENDS+": base >= 4, HTF > 0.9"+PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_CABAL_TASTY,
CabalSyntax.SECTION_TESTSUITE+ " ${"+TemplateVariables.SECTION_NAME+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_TYPE+": "+CabalSyntax.VALUE_EXITCODE_STDIO_1_0+ PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
//" "+CabalSyntax.FIELD_HS_SOURCE_DIRS+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_MAIN_IS+": Main.hs"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_GHC_OPTIONS+": -Wall -rtsopts" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_BUILD_DEPENDS+": base >= 4, tasty > 0.10, tasty-hunit, HUnit, tasty-quickcheck, QuickCheck "+PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_CABAL_TF,
CabalSyntax.SECTION_TESTSUITE+ " ${"+TemplateVariables.SECTION_NAME+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_TYPE+": "+CabalSyntax.VALUE_EXITCODE_STDIO_1_0 + PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
//" "+CabalSyntax.FIELD_HS_SOURCE_DIRS+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_X_USES_TEST_FRAMEWORK+": true" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_GHC_OPTIONS+": -Wall -rtsopts" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_BUILD_DEPENDS+": base >= 4, HUnit >= 1.2 && < 2, QuickCheck >= 2.4, test-framework >= 0.4.1, test-framework-quickcheck2, test-framework-hunit"+PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_CABAL_STDIO,
CabalSyntax.SECTION_TESTSUITE+ " ${"+TemplateVariables.SECTION_NAME+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_TYPE+": "+CabalSyntax.VALUE_EXITCODE_STDIO_1_0 + PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
// " "+CabalSyntax.FIELD_HS_SOURCE_DIRS+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_GHC_OPTIONS+": -Wall -rtsopts" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_BUILD_DEPENDS+": base >= 4"+PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_CABAL_DETAILED,
CabalSyntax.SECTION_TESTSUITE+ " ${"+TemplateVariables.SECTION_NAME+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_TYPE+": "+CabalSyntax.VALUE_DETAILED_0_9 + PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
// " "+CabalSyntax.FIELD_HS_SOURCE_DIRS+": ${"+TemplateVariables.SRC+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
" "+CabalSyntax.FIELD_GHC_OPTIONS+": -Wall -rtsopts" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
" "+CabalSyntax.FIELD_BUILD_DEPENDS+": base >= 4"+PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_MODULE,
"module ${"+TemplateVariables.MODULE_NAME+"} where"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"${"+TemplateVariables.IMPORTS+"}" +PlatformUtil.NL //$NON-NLS-1$ //$NON-NLS-2$
);
coreNode.put( TEMPLATE_MAIN,
"${"+TemplateVariables.MODULE+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"${"+TemplateVariables.IMPORTS+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"main::IO()"+PlatformUtil.NL+ //$NON-NLS-1$
"main = undefined" //$NON-NLS-1$
);
coreNode.put( TEMPLATE_GTK,
"${"+TemplateVariables.MODULE+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"import Graphics.UI.Gtk"+PlatformUtil.NL+PlatformUtil.NL+ //$NON-NLS-1$
"main :: IO ()"+PlatformUtil.NL+ //$NON-NLS-1$
"main = do"+PlatformUtil.NL+ //$NON-NLS-1$
" initGUI"+PlatformUtil.NL+ //$NON-NLS-1$
" window <- windowNew"+PlatformUtil.NL+ //$NON-NLS-1$
" button <- buttonNew"+PlatformUtil.NL+ //$NON-NLS-1$
" set window [ containerBorderWidth := 10,"+PlatformUtil.NL+ //$NON-NLS-1$
" containerChild := button ]"+PlatformUtil.NL+ //$NON-NLS-1$
" set button [ buttonLabel := \"Hello World\" ]"+PlatformUtil.NL+ //$NON-NLS-1$
" onClicked button (putStrLn \"Hello World\")"+PlatformUtil.NL+ //$NON-NLS-1$
" onDestroy window mainQuit"+PlatformUtil.NL+ //$NON-NLS-1$
" widgetShowAll window"+PlatformUtil.NL+ //$NON-NLS-1$
" mainGUI"+PlatformUtil.NL //$NON-NLS-1$
);
coreNode.put( TEMPLATE_MODULE_HTF,
"{-# OPTIONS_GHC -F -pgmF htfpp #-}"+PlatformUtil.NL+ //$NON-NLS-1$
"${"+TemplateVariables.MODULE+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"import Test.Framework" +PlatformUtil.NL //$NON-NLS-1$
);
coreNode.put( TEMPLATE_MODULE_TASTY,
"${"+TemplateVariables.MODULE+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"import Test.Tasty" +PlatformUtil.NL+ //$NON-NLS-1$
"import Test.Tasty.QuickCheck as QC" +PlatformUtil.NL+ //$NON-NLS-1$
"import Test.Tasty.HUnit" +PlatformUtil.NL //$NON-NLS-1$
);
coreNode.put( TEMPLATE_MAIN_HTF,
"${"+TemplateVariables.MODULE_HTF+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"${"+TemplateVariables.IMPORTS_HTF+"}" +PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"main :: IO()"+PlatformUtil.NL+ //$NON-NLS-1$
"main = htfMain htf_importedTests"+PlatformUtil.NL //$NON-NLS-1$
);
coreNode.put( TEMPLATE_MAIN_TASTY,
"${"+TemplateVariables.MODULE_TASTY+"}"+PlatformUtil.NL+ //$NON-NLS-1$ //$NON-NLS-2$
"main :: IO()"+PlatformUtil.NL+ //$NON-NLS-1$
"main = defaultMain tests"+PlatformUtil.NL+PlatformUtil.NL+ //$NON-NLS-1$
"tests :: TestTree"+PlatformUtil.NL+ //$NON-NLS-1$
"tests = testGroup \"Tests\" []"+PlatformUtil.NL //$NON-NLS-1$
);
coreNode.put( TEMPLATE_IMPORT_HTF,
"import {-@ HTF_TESTS @-} ${"+TemplateVariables.MODULE_NAME+"}" +PlatformUtil.NL //$NON-NLS-1$" //$NON-NLS-2$"
);
}
}