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; + } +}