diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 6c494ab326c..f8b8aeaaf52 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -59,6 +59,9 @@
+
+
+
@@ -100,7 +103,6 @@
-
diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java
new file mode 100644
index 00000000000..4c861e549df
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettings.java
@@ -0,0 +1,16 @@
+package org.jetbrains.jet.plugin.formatter;
+
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.codeStyle.CodeStyleSettings;
+import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
+import com.intellij.psi.codeStyle.CustomCodeStyleSettings;
+
+public class JetCodeStyleSettings extends CustomCodeStyleSettings {
+ public static JetCodeStyleSettings getInstance(Project project) {
+ return CodeStyleSettingsManager.getSettings(project).getCustomSettings(JetCodeStyleSettings.class);
+ }
+
+ public JetCodeStyleSettings(CodeStyleSettings container) {
+ super("JetCodeStyleSettings", container);
+ }
+}
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettingsProvider.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettingsProvider.java
new file mode 100644
index 00000000000..b072a59740c
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetCodeStyleSettingsProvider.java
@@ -0,0 +1,52 @@
+package org.jetbrains.jet.plugin.formatter;
+
+import com.intellij.application.options.CodeStyleAbstractConfigurable;
+import com.intellij.application.options.CodeStyleAbstractPanel;
+import com.intellij.application.options.TabbedLanguageCodeStylePanel;
+import com.intellij.lang.Language;
+import com.intellij.openapi.options.Configurable;
+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.jet.plugin.JetLanguage;
+
+public class JetCodeStyleSettingsProvider extends CodeStyleSettingsProvider {
+
+ @Override
+ public String getConfigurableDisplayName() {
+ return "Kotlin";
+ }
+
+ @Override
+ public Language getLanguage() {
+ return JetLanguage.INSTANCE;
+ }
+
+ @Override
+ public CustomCodeStyleSettings createCustomSettings(CodeStyleSettings settings) {
+ return new JetCodeStyleSettings(settings);
+ }
+
+ @NotNull
+ @Override
+ public Configurable createSettingsPage(CodeStyleSettings settings, CodeStyleSettings originalSettings) {
+ return new CodeStyleAbstractConfigurable(settings, originalSettings, "Kotlin") {
+ @Override
+ protected CodeStyleAbstractPanel createPanel(CodeStyleSettings settings) {
+ return new TabbedLanguageCodeStylePanel(JetLanguage.INSTANCE, getCurrentSettings(), settings) {
+ @Override
+ protected void initTabs(CodeStyleSettings settings) {
+ // TODO: activate all parent tabs
+ addIndentOptionsTab(settings);
+ }
+ };
+ }
+
+ @Override
+ public String getHelpTopic() {
+ return null;
+ }
+ };
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java
index 7386683e649..7c6ae1c2ed3 100644
--- a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java
+++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java
@@ -18,9 +18,12 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder {
@NotNull
@Override
public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) {
- final JetBlock block = new JetBlock(element.getNode(), null, Indent.getNoneIndent(), null, settings,
- createSpacingBuilder(settings));
- return FormattingModelProvider.createFormattingModelForPsiFile(element.getContainingFile(), block, settings);
+ final JetBlock block = new JetBlock(
+ element.getNode(), null, Indent.getNoneIndent(), null, settings,
+ createSpacingBuilder(settings));
+
+ return FormattingModelProvider.createFormattingModelForPsiFile(
+ element.getContainingFile(), block, settings);
}
private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) {
diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetIndentOptionsProvider.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetIndentOptionsProvider.java
deleted file mode 100644
index eed4b2bd647..00000000000
--- a/idea/src/org/jetbrains/jet/plugin/formatter/JetIndentOptionsProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.jetbrains.jet.plugin.formatter;
-
-import com.intellij.application.options.IndentOptionsEditor;
-import com.intellij.application.options.SmartIndentOptionsEditor;
-import com.intellij.openapi.fileTypes.FileType;
-import com.intellij.psi.PsiFile;
-import com.intellij.psi.codeStyle.CodeStyleSettings;
-import com.intellij.psi.codeStyle.FileTypeIndentOptionsProvider;
-import org.jetbrains.jet.plugin.JetFileType;
-
-/**
- * @author yole
- */
-public class JetIndentOptionsProvider implements FileTypeIndentOptionsProvider {
- @Override
- public CodeStyleSettings.IndentOptions createIndentOptions() {
- return new CodeStyleSettings.IndentOptions();
- }
-
- @Override
- public FileType getFileType() {
- return JetFileType.INSTANCE;
- }
-
- @Override
- public IndentOptionsEditor createOptionsEditor() {
- return new SmartIndentOptionsEditor();
- }
-
- @Override
- public String getPreviewText() {
- return "";
- }
-
- @Override
- public void prepareForReformat(PsiFile psiFile) {
- }
-}
diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java
new file mode 100644
index 00000000000..1526fe8788c
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetLanguageCodeStyleSettingsProvider.java
@@ -0,0 +1,58 @@
+package org.jetbrains.jet.plugin.formatter;
+
+import com.intellij.application.options.IndentOptionsEditor;
+import com.intellij.application.options.SmartIndentOptionsEditor;
+import com.intellij.lang.Language;
+import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable;
+import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
+import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.plugin.JetLanguage;
+
+/**
+ * @author Nikolay Krasko
+ */
+public class JetLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider {
+ @NotNull
+ @Override
+ public Language getLanguage() {
+ return JetLanguage.INSTANCE;
+ }
+
+ @Override
+ public String getCodeSample(@NotNull SettingsType settingsType) {
+ return
+ "class Some {\n" +
+ "fun foo() : Int {\n" +
+ "return 0\n" +
+ "}\n" +
+ "}";
+ }
+
+ @Override
+ public String getLanguageName() {
+ return "Kotlin";
+ }
+
+ @Override
+ public void customizeSettings(@NotNull CodeStyleSettingsCustomizable consumer, @NotNull SettingsType settingsType) {
+ consumer.showAllStandardOptions();
+ }
+
+ @Override
+ public IndentOptionsEditor getIndentOptionsEditor() {
+ return new SmartIndentOptionsEditor();
+ }
+
+ @Override
+ public boolean usesSharedPreview() {
+ return false;
+ }
+
+ @Override
+ public CommonCodeStyleSettings getDefaultCommonSettings() {
+ CommonCodeStyleSettings commonCodeStyleSettings = new CommonCodeStyleSettings(getLanguage());
+ commonCodeStyleSettings.initIndentOptions();
+ return commonCodeStyleSettings;
+ }
+}