From fcd92c3c8b031fa71777baf59c282c1d9c96b61a Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Tue, 22 May 2018 18:54:58 +0300 Subject: [PATCH] Add setMainProjectCodeStyle() to CodeStyle API --- .../application/options/CodeStyle.java | 19 ++++++++++++++++--- .../commandLine/FileSetFormatter.java | 6 ++---- .../importWizard/EclipseImportBuilder.java | 7 ++----- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/platform/lang-api/src/com/intellij/application/options/CodeStyle.java b/platform/lang-api/src/com/intellij/application/options/CodeStyle.java index 9538878f65bc..c8e4eacd055e 100644 --- a/platform/lang-api/src/com/intellij/application/options/CodeStyle.java +++ b/platform/lang-api/src/com/intellij/application/options/CodeStyle.java @@ -138,12 +138,12 @@ public class CodeStyle { } /** - * Returns indent options for the given PSI file. The method attempts to use {@link com.intellij.psi.codeStyle.FileIndentOptionsProvider} + * Returns indent options for the given PSI file. The method attempts to use {@link FileIndentOptionsProvider} * if applicable to the file. If there are no suitable indent options providers, it takes configurable language indent options or * retrieves indent options by file type. * @param file The file to get indent options for. * @return The file indent options. - * @see com.intellij.psi.codeStyle.FileIndentOptionsProvider + * @see FileIndentOptionsProvider */ @NotNull public static CommonCodeStyleSettings.IndentOptions getIndentOptions(@NotNull PsiFile file) { @@ -268,10 +268,23 @@ public class CodeStyle { if (documentManager != null) { PsiFile file = documentManager.getPsiFile(document); if (file != null) { - CommonCodeStyleSettings.IndentOptions indentOptions = CodeStyle.getSettings(file).getIndentOptionsByFile(file, null, true, null); + CommonCodeStyleSettings.IndentOptions indentOptions = getSettings(file).getIndentOptionsByFile(file, null, true, null); indentOptions.associateWithDocument(document); } } } } + + /** + * Assign main project-wide code style settings and force the project to use its own code style instead of a global (application) one. + * + * @param project The project to assign the settings to. + * @param settings The settings to use with the project. + */ + public static void setMainProjectSettings(@NotNull Project project, @NotNull CodeStyleSettings settings) { + @SuppressWarnings("deprecation") + CodeStyleSettingsManager codeStyleSettingsManager = CodeStyleSettingsManager.getInstance(project); + codeStyleSettingsManager.setMainProjectCodeStyle(settings); + codeStyleSettingsManager.USE_PER_PROJECT_SETTINGS = true; + } } diff --git a/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java b/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java index 8708ab4df1c5..22dd9bf46a0f 100644 --- a/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java +++ b/platform/lang-impl/src/com/intellij/formatting/commandLine/FileSetFormatter.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.formatting.commandLine; +import com.intellij.application.options.CodeStyle; import com.intellij.ide.impl.ProjectUtil; import com.intellij.lang.LanguageFormatting; import com.intellij.openapi.command.WriteCommandAction; @@ -19,7 +20,6 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.util.PlatformUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -61,9 +61,7 @@ public class FileSetFormatter extends FileSetProcessor { myProject = projectManager.createProject(myProjectUID, projectDir.getPath()); if (myProject != null) { projectManager.openProject(myProject); - CodeStyleSettingsManager codeStyleSettingsManager = CodeStyleSettingsManager.getInstance(myProject); - codeStyleSettingsManager.setMainProjectCodeStyle(mySettings); - codeStyleSettingsManager.USE_PER_PROJECT_SETTINGS = true; + CodeStyle.setMainProjectSettings(myProject, mySettings); } } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java index a9a5ab549bf1..b6b6bb312d86 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java @@ -15,6 +15,7 @@ */ package org.jetbrains.idea.eclipse.importWizard; +import com.intellij.application.options.CodeStyle; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; @@ -56,8 +57,6 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packaging.artifacts.ModifiableArtifactModel; import com.intellij.projectImport.ProjectImportBuilder; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CodeStyleSettingsManager; -import java.util.HashMap; import gnu.trove.THashMap; import gnu.trove.THashSet; import icons.EclipseIcons; @@ -405,9 +404,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder implement if (codeStyleData != null) { CodeStyleSettings projectSettings = codeStyleData.importCodeStyle(); if (projectSettings != null) { - CodeStyleSettingsManager manager = CodeStyleSettingsManager.getInstance(project); - manager.USE_PER_PROJECT_SETTINGS = true; - manager.setMainProjectCodeStyle(projectSettings); + CodeStyle.setMainProjectSettings(project, projectSettings); } } }