diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java b/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..c531ee6ff2af2ed2ed92661dc02d699e24464320
--- /dev/null
+++ b/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java
@@ -0,0 +1,12 @@
+package org.jastadd.tooling;
+
+import com.intellij.psi.codeStyle.CodeStyleSettings;
+  import com.intellij.psi.codeStyle.CustomCodeStyleSettings;
+
+public class RelAstGrammarCodeStyleSettings extends CustomCodeStyleSettings {
+
+  public RelAstGrammarCodeStyleSettings(CodeStyleSettings settings) {
+    super("RelAstGrammarCodeStyleSettings", settings);
+  }
+
+}
diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettingsProvider.java b/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettingsProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed57139d1595a5e95f09b8ecc25a0d465d29cbb1
--- /dev/null
+++ b/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettingsProvider.java
@@ -0,0 +1,44 @@
+package org.jastadd.tooling;
+
+import com.intellij.application.options.CodeStyleAbstractConfigurable;
+  import com.intellij.application.options.CodeStyleAbstractPanel;
+  import com.intellij.application.options.TabbedLanguageCodeStylePanel;
+  import com.intellij.psi.codeStyle.CodeStyleConfigurable;
+  import com.intellij.psi.codeStyle.CodeStyleSettings;
+  import com.intellij.psi.codeStyle.CodeStyleSettingsProvider;
+  import com.intellij.psi.codeStyle.CustomCodeStyleSettings;
+  import org.jetbrains.annotations.NotNull;
+  import org.jetbrains.annotations.Nullable;
+
+public class RelAstGrammarCodeStyleSettingsProvider extends CodeStyleSettingsProvider {
+
+  @Override
+  public CustomCodeStyleSettings createCustomSettings(CodeStyleSettings settings) {
+    return new RelAstGrammarCodeStyleSettings(settings);
+  }
+
+  @Nullable
+  @Override
+  public String getConfigurableDisplayName() {
+    return "RelAst Grammar";
+  }
+
+  @NotNull
+  public CodeStyleConfigurable createConfigurable(@NotNull CodeStyleSettings settings, @NotNull CodeStyleSettings modelSettings) {
+    return new CodeStyleAbstractConfigurable(settings, modelSettings, this.getConfigurableDisplayName()) {
+      @Override
+      protected CodeStyleAbstractPanel createPanel(CodeStyleSettings settings) {
+        return new SimpleCodeStyleMainPanel(getCurrentSettings(), settings);
+      }
+    };
+  }
+
+  private static class SimpleCodeStyleMainPanel extends TabbedLanguageCodeStylePanel {
+
+    public SimpleCodeStyleMainPanel(CodeStyleSettings currentSettings, CodeStyleSettings settings) {
+      super(RelAstGrammar.INSTANCE, currentSettings, settings);
+    }
+
+  }
+
+}
diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java b/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java
index fc3a2efafb363b222d9c6fb24f10e9853599d2e9..4424b6000fd05825c5b34416d50c0ce714087111 100644
--- a/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java
+++ b/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java
@@ -28,8 +28,7 @@ public class RelAstGrammarFormattingModelBuilder implements FormattingModelBuild
       .between(RelAstGrammarTypes.COMPONENT, RelAstGrammarTypes.COMPONENT).spaces(1)
       .around(RelAstGrammarTypes.DOT).none()
       .before(roleMultiplicityTokens).spaceIf(commonSettings.SPACE_AROUND_UNARY_OPERATOR)
-      .beforeInside(RelAstGrammarTypes.COL, RelAstGrammarTypes.TYPE_DECL).spaceIf(commonSettings.SPACE_BEFORE_COLON)
-      .afterInside(RelAstGrammarTypes.COL, RelAstGrammarTypes.TYPE_DECL).spaceIf(commonSettings.SPACE_AFTER_COLON)
+      .aroundInside(RelAstGrammarTypes.COL, RelAstGrammarTypes.TYPE_DECL).spaceIf(commonSettings.SPACE_AROUND_ADDITIVE_OPERATORS)
       .aroundInside(RelAstGrammarTypes.COL, RelAstGrammarTypes.COMPONENT).none()
       .withinPair(RelAstGrammarTypes.LT, RelAstGrammarTypes.GT).spaceIf(commonSettings.SPACE_WITHIN_CAST_PARENTHESES)
       .withinPair(RelAstGrammarTypes.LBRACKET, RelAstGrammarTypes.RBRACKET).spaceIf(commonSettings.SPACE_WITHIN_BRACKETS)
diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarLanguageCodeStyleSettingsProvider.java b/src/main/java/org/jastadd/tooling/RelAstGrammarLanguageCodeStyleSettingsProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..51e717ef3df6c37af8c2787031e6d4d48a484c97
--- /dev/null
+++ b/src/main/java/org/jastadd/tooling/RelAstGrammarLanguageCodeStyleSettingsProvider.java
@@ -0,0 +1,55 @@
+package org.jastadd.tooling;
+
+import com.intellij.lang.Language;
+import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable;
+import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider;
+import org.jetbrains.annotations.NotNull;
+
+public class RelAstGrammarLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider {
+
+  @NotNull
+  @Override
+  public Language getLanguage() {
+    return RelAstGrammar.INSTANCE;
+  }
+
+  @Override
+  public void customizeSettings(@NotNull CodeStyleSettingsCustomizable consumer, @NotNull SettingsType settingsType) {
+    if (settingsType == SettingsType.SPACING_SETTINGS) {
+      consumer.showStandardOptions("SPACE_AROUND_ASSIGNMENT_OPERATORS");
+      consumer.renameStandardOption("SPACE_AROUND_ASSIGNMENT_OPERATORS", "Production Symbol (::=)");
+
+      consumer.showStandardOptions("SPACE_BEFORE_SEMICOLON");
+      consumer.renameStandardOption("SPACE_BEFORE_SEMICOLON", "Before semicolon");
+
+      consumer.showStandardOptions("SPACE_AROUND_RELATIONAL_OPERATORS");
+      consumer.renameStandardOption("SPACE_AROUND_RELATIONAL_OPERATORS", "Relation Directions (->,<->,<-)");
+
+      consumer.showStandardOptions("SPACE_AROUND_UNARY_OPERATOR");
+      consumer.renameStandardOption("SPACE_AROUND_UNARY_OPERATOR", "Multiplicity Operators (*,?)");
+
+      consumer.showStandardOptions("SPACE_AROUND_ADDITIVE_OPERATORS");
+      consumer.renameStandardOption("SPACE_AROUND_ADDITIVE_OPERATORS", "Superclass separator (:)");
+
+      consumer.showStandardOptions("SPACE_WITHIN_CAST_PARENTHESES");
+      consumer.renameStandardOption("SPACE_WITHIN_CAST_PARENTHESES", "Tokens");
+
+      consumer.showStandardOptions("SPACE_WITHIN_BRACKETS");
+      consumer.renameStandardOption("SPACE_WITHIN_BRACKETS", "Optional components");
+    } else if (settingsType == SettingsType.BLANK_LINES_SETTINGS) {
+      consumer.showStandardOptions("KEEP_BLANK_LINES_IN_CODE");
+    }
+  }
+
+  @Override
+  public String getCodeSample(@NotNull SettingsType settingsType) {
+    return "Program ::= GrammarFile* <NameList:java.util.Map<String,String>>;\n" +
+      "abstract Grammar ::= Declaration*; /* good rule! */\n" +
+      "GrammarFile : Grammar ::= <FileName> ; // also good rule\n" +
+      "/** the best rule */\n" +
+      "abstract Declaration ::= Comment*  /Comment/;\n" +
+      "TypeDecl:Declaration ::= <Name> <Abstract:boolean> Component* [Comment];\n\n\n" +
+      "rel TypeDecl.SuperType? <-> TypeDecl.SubType*;\n";
+  }
+
+}
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index f591fa9116d3d4208895a73a5922b1ceff5ef111..17362f084a33b376e7e2e962de5658089782a73e 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -48,6 +48,11 @@
 
         <lang.formatter language="JastAddGrammar"
                         implementationClass="org.jastadd.tooling.RelAstGrammarFormattingModelBuilder"/>
+
+        <codeStyleSettingsProvider implementation="org.jastadd.tooling.RelAstGrammarCodeStyleSettingsProvider"/>
+
+        <langCodeStyleSettingsProvider
+            implementation="org.jastadd.tooling.RelAstGrammarLanguageCodeStyleSettingsProvider"/>
     </extensions>
 
     <actions>