diff --git a/de.leiffrenzel.fp.haskell.ui/META-INF/MANIFEST.MF b/de.leiffrenzel.fp.haskell.ui/META-INF/MANIFEST.MF
index 73c9be1c9..a983a3385 100644
--- a/de.leiffrenzel.fp.haskell.ui/META-INF/MANIFEST.MF
+++ b/de.leiffrenzel.fp.haskell.ui/META-INF/MANIFEST.MF
@@ -23,6 +23,7 @@ Eclipse-AutoStart: true
Provide-Package: de.leiffrenzel.fp.haskell.ui;x-friends:="net.sf.eclipsefp.haskell.ui.test",
de.leiffrenzel.fp.haskell.ui.dialog,
de.leiffrenzel.fp.haskell.ui.launch,
+ de.leiffrenzel.fp.haskell.ui.preferences.editor;x-friends:="net.sf.eclipsefp.haskell.ui.test",
de.leiffrenzel.fp.haskell.ui.util,
de.leiffrenzel.fp.haskell.ui.util.preferences,
de.leiffrenzel.fp.haskell.ui.util.text
diff --git a/de.leiffrenzel.fp.haskell.ui/src/de/leiffrenzel/fp/haskell/ui/util/preferences/HaskellPreferenceProvider.java b/de.leiffrenzel.fp.haskell.ui/src/de/leiffrenzel/fp/haskell/ui/util/preferences/HaskellPreferenceProvider.java
new file mode 100644
index 000000000..24924eb45
--- /dev/null
+++ b/de.leiffrenzel.fp.haskell.ui/src/de/leiffrenzel/fp/haskell/ui/util/preferences/HaskellPreferenceProvider.java
@@ -0,0 +1,20 @@
+package de.leiffrenzel.fp.haskell.ui.util.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import de.leiffrenzel.fp.haskell.ui.HaskellUIPlugin;
+import de.leiffrenzel.fp.haskell.ui.preferences.editor.IEditorPreferenceNames;
+
+public class HaskellPreferenceProvider implements IHaskellPreferenceProvider,
+ IEditorPreferenceNames
+{
+
+ public int getTabSize() {
+ return getPreferenceStore().getInt(EDITOR_TAB_WIDTH);
+ }
+
+ private IPreferenceStore getPreferenceStore() {
+ return HaskellUIPlugin.getDefault().getPreferenceStore();
+ }
+
+}
diff --git a/net.sf.eclipsefp.haskell.core.jparser/antlr-src/haskell-lexer.g b/net.sf.eclipsefp.haskell.core.jparser/antlr-src/haskell-lexer.g
index 047cbce7e..f344c1115 100644
--- a/net.sf.eclipsefp.haskell.core.jparser/antlr-src/haskell-lexer.g
+++ b/net.sf.eclipsefp.haskell.core.jparser/antlr-src/haskell-lexer.g
@@ -12,6 +12,7 @@
header {
package net.sf.eclipsefp.haskell.core.jparser;
+import de.leiffrenzel.fp.haskell.ui.util.preferences.HaskellPreferenceProvider;
import de.leiffrenzel.fp.haskell.ui.util.preferences.IHaskellPreferenceProvider;
}
@@ -52,6 +53,15 @@ tokens {
}
{
+ {
+ try {
+ this.setTabSize(new HaskellPreferenceProvider().getTabSize());
+ } catch(NullPointerException e) {
+ //happens when the eclipse platform isn't loaded
+ //in this case, ignore the default preference provider
+ }
+ }
+
public HaskellLexer(Reader reader, IHaskellPreferenceProvider prefs) {
this(reader);
this.setTabSize(prefs.getTabSize());
diff --git a/net.sf.eclipsefp.haskell.ui.test/.classpath b/net.sf.eclipsefp.haskell.ui.test/.classpath
new file mode 100644
index 000000000..751c8f2e5
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/net.sf.eclipsefp.haskell.ui.test/.project b/net.sf.eclipsefp.haskell.ui.test/.project
new file mode 100644
index 000000000..213be62dc
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/.project
@@ -0,0 +1,28 @@
+
+
+ net.sf.eclipsefp.haskell.ui.test
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/net.sf.eclipsefp.haskell.ui.test/META-INF/MANIFEST.MF b/net.sf.eclipsefp.haskell.ui.test/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..8bbd0e506
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Haskell UI Test Plug-in
+Bundle-SymbolicName: net.sf.eclipsefp.haskell.ui.test
+Bundle-Version: 0.9.1
+Bundle-Vendor: eclipsefp.sourceforge.net
+Bundle-Localization: plugin
+Require-Bundle: org.junit,
+ org.eclipse.ui,
+ de.leiffrenzel.fp.haskell.ui
+Export-Package: net.sf.eclipsefp.haskell.ui.test
diff --git a/net.sf.eclipsefp.haskell.ui.test/build.properties b/net.sf.eclipsefp.haskell.ui.test/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/AllAllTests_PDESuite.java b/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/AllAllTests_PDESuite.java
new file mode 100644
index 000000000..f84679b2b
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/AllAllTests_PDESuite.java
@@ -0,0 +1,18 @@
+package net.sf.eclipsefp.haskell.ui.test;
+
+import net.sf.eclipsefp.haskell.ui.test.util.preferences.AllTests_PDESuite;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllAllTests_PDESuite {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(
+ "Test for de.leiffrenzel.fp.haskell.ui");
+ //$JUnit-BEGIN$
+ suite.addTest(AllTests_PDESuite.suite());
+ //$JUnit-END$
+ return suite;
+ }
+
+}
diff --git a/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/util/preferences/AllTests_PDESuite.java b/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/util/preferences/AllTests_PDESuite.java
new file mode 100644
index 000000000..08ead88e6
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/util/preferences/AllTests_PDESuite.java
@@ -0,0 +1,17 @@
+package net.sf.eclipsefp.haskell.ui.test.util.preferences;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTests_PDESuite {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(
+ "Test for de.leiffrenzel.fp.haskell.ui.test.util.preferences");
+ //$JUnit-BEGIN$
+ suite.addTestSuite(HaskellPreferenceProvider_PDETest.class);
+ //$JUnit-END$
+ return suite;
+ }
+
+}
diff --git a/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/util/preferences/HaskellPreferenceProvider_PDETest.java b/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/util/preferences/HaskellPreferenceProvider_PDETest.java
new file mode 100644
index 000000000..99c7b71a8
--- /dev/null
+++ b/net.sf.eclipsefp.haskell.ui.test/src/net/sf/eclipsefp/haskell/ui/test/util/preferences/HaskellPreferenceProvider_PDETest.java
@@ -0,0 +1,37 @@
+package net.sf.eclipsefp.haskell.ui.test.util.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import de.leiffrenzel.fp.haskell.ui.HaskellUIPlugin;
+import de.leiffrenzel.fp.haskell.ui.preferences.editor.IEditorPreferenceNames;
+import de.leiffrenzel.fp.haskell.ui.util.preferences.HaskellPreferenceProvider;
+import de.leiffrenzel.fp.haskell.ui.util.preferences.IHaskellPreferenceProvider;
+import junit.framework.TestCase;
+
+public class HaskellPreferenceProvider_PDETest extends TestCase
+ implements IEditorPreferenceNames
+{
+
+ public void testTabSize() {
+ final IHaskellPreferenceProvider prefs = new HaskellPreferenceProvider();
+
+ int tabSize = 6;
+ setPreferenceValue(EDITOR_TAB_WIDTH, tabSize);
+
+ assertEquals(tabSize, prefs.getTabSize());
+
+ tabSize = 4;
+ setPreferenceValue(EDITOR_TAB_WIDTH, tabSize);
+ assertEquals(tabSize, prefs.getTabSize());
+ }
+
+ private void setPreferenceValue(String key, int value) {
+ getPreferenceStore().setValue(key, value);
+ }
+
+ private IPreferenceStore getPreferenceStore() {
+ return HaskellUIPlugin.getDefault().getPreferenceStore();
+ }
+
+
+}
diff --git a/net.sf.eclipsefp.test/META-INF/MANIFEST.MF b/net.sf.eclipsefp.test/META-INF/MANIFEST.MF
index ff2195ea9..2cecdcb6f 100644
--- a/net.sf.eclipsefp.test/META-INF/MANIFEST.MF
+++ b/net.sf.eclipsefp.test/META-INF/MANIFEST.MF
@@ -8,4 +8,5 @@ Bundle-Localization: plugin
Require-Bundle: org.junit,
net.sf.eclipsefp.common.ui.test,
net.sf.eclipsefp.haskell.core.parser.test,
- net.sf.eclipsefp.haskell.core.jparser.test
+ net.sf.eclipsefp.haskell.core.jparser.test,
+ net.sf.eclipsefp.haskell.ui.test
diff --git a/net.sf.eclipsefp.test/src/net/sf/eclipsefp/test/AllAllTests_PDESuite.java b/net.sf.eclipsefp.test/src/net/sf/eclipsefp/test/AllAllTests_PDESuite.java
index 232d2de2d..637b81517 100644
--- a/net.sf.eclipsefp.test/src/net/sf/eclipsefp/test/AllAllTests_PDESuite.java
+++ b/net.sf.eclipsefp.test/src/net/sf/eclipsefp/test/AllAllTests_PDESuite.java
@@ -11,6 +11,7 @@ public static Test suite() {
suite.addTest(net.sf.eclipsefp.common.ui.test.AllTests_PDESuite.suite());
suite.addTest(net.sf.eclipsefp.haskell.core.parser.AllTests_PDESuite.suite());
suite.addTest(net.sf.eclipsefp.haskell.core.jparser.test.AllAllTests_PDESuite.suite());
+ suite.addTest(net.sf.eclipsefp.haskell.ui.test.AllAllTests_PDESuite.suite());
//$JUnit-END$
return suite;
}