KT-1235 Indent size in IDEA is always 4?

This commit is contained in:
Nikolay Krasko
2012-02-13 14:39:45 +04:00
parent f0d4742957
commit 936144a193
6 changed files with 135 additions and 42 deletions
+3 -1
View File
@@ -59,6 +59,9 @@
<lang.findUsagesProvider language="jet" implementationClass="org.jetbrains.jet.plugin.findUsages.JetFindUsagesProvider"/>
<lang.refactoringSupport language="jet" implementationClass="org.jetbrains.jet.plugin.refactoring.JetRefactoringSupportProvider"/>
<codeStyleSettingsProvider implementation="org.jetbrains.jet.plugin.formatter.JetCodeStyleSettingsProvider"/>
<langCodeStyleSettingsProvider implementation="org.jetbrains.jet.plugin.formatter.JetLanguageCodeStyleSettingsProvider"/>
<templateParameterTraversalPolicy implementation="org.jetbrains.jet.plugin.completion.JetTemplateParameterTraversalPolicy"/>
<codeInsight.parameterInfo language="jet" implementationClass="org.jetbrains.jet.plugin.parameterInfo.JetFunctionParameterInfoHandler"/>
@@ -100,7 +103,6 @@
<configurationProducer implementation="org.jetbrains.jet.plugin.run.JetRunConfigurationProducer"/>
<codeInsight.lineMarkerProvider language="jet" implementationClass="org.jetbrains.jet.plugin.annotations.JetLineMarkerProvider"/>
<iconProvider implementation="org.jetbrains.jet.plugin.JetIconProvider"/>
<fileTypeIndentOptionsProvider implementation="org.jetbrains.jet.plugin.formatter.JetIndentOptionsProvider"/>
<elementDescriptionProvider implementation="org.jetbrains.jet.plugin.findUsages.JetElementDescriptionProvider"/>
<debugger.positionManagerFactory implementation="org.jetbrains.jet.plugin.debugger.JetPositionManagerFactory"/>
<codeInsight.implementMethod language="jet" implementationClass="org.jetbrains.jet.plugin.codeInsight.ImplementMethodsHandler"/>
@@ -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);
}
}
@@ -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;
}
};
}
}
@@ -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) {
@@ -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) {
}
}
@@ -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;
}
}