PY-29655 Use newer file-based code style API in PyCharm where possible

This commit is contained in:
Mikhail Golubev
2018-06-20 23:21:18 +03:00
parent dd8411913e
commit f76c824a02
17 changed files with 64 additions and 82 deletions

View File

@@ -2,6 +2,7 @@
package com.jetbrains.python.edu;
import com.google.common.collect.Sets;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.CodeInsightSettings;
import com.intellij.codeInsight.intention.IntentionActionBean;
import com.intellij.codeInsight.intention.IntentionManager;
@@ -54,8 +55,6 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
import com.intellij.projectImport.ProjectAttachProcessor;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiManager;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.ui.treeStructure.Tree;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.messages.MessageBus;
@@ -168,8 +167,7 @@ public class PyCharmEduInitialConfigurator {
EditorSettingsExternalizable.getInstance().setVirtualSpace(false);
EditorSettingsExternalizable.getInstance().getOptions().ARE_LINE_NUMBERS_SHOWN = true;
final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance().getCurrentSettings();
settings.getCommonSettings(PythonLanguage.getInstance()).ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
CodeStyle.getDefaultSettings().getCommonSettings(PythonLanguage.getInstance()).ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
uiSettings.setShowDirectoryForNonUniqueFilenames(true);
uiSettings.setShowMemoryIndicator(false);
final String ignoredFilesList = fileTypeManager.getIgnoredFilesList();

View File

@@ -46,25 +46,25 @@ public class PyConstructorArgumentCompletionContributor extends CompletionContri
if (calleeExpression instanceof PyReferenceExpression) {
final PsiElement callee = ((PyReferenceExpression)calleeExpression).getReference().resolve();
if (callee instanceof PsiClass) {
addSettersAndListeners(result, (PsiClass)callee);
addSettersAndListeners(result, (PsiClass)callee, parameters.getOriginalFile());
}
else if (callee instanceof PsiMethod && ((PsiMethod) callee).isConstructor()) {
final PsiClass containingClass = ((PsiMethod)callee).getContainingClass();
assert containingClass != null;
addSettersAndListeners(result, containingClass);
addSettersAndListeners(result, containingClass, parameters.getOriginalFile());
}
}
}
});
}
private static void addSettersAndListeners(CompletionResultSet result, PsiClass containingClass) {
private static void addSettersAndListeners(CompletionResultSet result, PsiClass containingClass, PsiFile origin) {
// see PyJavaType.init() in Jython source code for matching logic
for (PsiMethod method : containingClass.getAllMethods()) {
final Project project = containingClass.getProject();
if (PropertyUtilBase.isSimplePropertySetter(method)) {
final String propName = PropertyUtilBase.getPropertyName(method);
result.addElement(PyUtil.createNamedParameterLookup(propName, project));
result.addElement(PyUtil.createNamedParameterLookup(propName, origin));
}
else if (method.getName().startsWith("add") && method.getName().endsWith("Listener") && PsiType.VOID.equals(method.getReturnType())) {
final PsiParameter[] parameters = method.getParameterList().getParameters();
@@ -73,9 +73,9 @@ public class PyConstructorArgumentCompletionContributor extends CompletionContri
if (type instanceof PsiClassType) {
final PsiClass parameterClass = ((PsiClassType)type).resolve();
if (parameterClass != null) {
result.addElement(PyUtil.createNamedParameterLookup(StringUtil.decapitalize(parameterClass.getName()), project));
result.addElement(PyUtil.createNamedParameterLookup(StringUtil.decapitalize(parameterClass.getName()), origin));
for (PsiMethod parameterMethod : parameterClass.getMethods()) {
result.addElement(PyUtil.createNamedParameterLookup(parameterMethod.getName(), project));
result.addElement(PyUtil.createNamedParameterLookup(parameterMethod.getName(), origin));
}
}
}

View File

@@ -1,11 +1,11 @@
// Copyright 2000-2017 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.jetbrains.python.codeInsight.imports;
import com.intellij.application.options.CodeStyle;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
@@ -13,7 +13,6 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.QualifiedName;
import com.intellij.util.ArrayUtil;
@@ -87,11 +86,12 @@ public class AddImportHelper {
* Creates and return comparator for import statements that compares them according to the rules specified in the code style settings.
* It's intended to be used for imports that have the same import priority in order to sort them within the corresponding group.
*
* @param settingsAnchor file to use as an anchor to detect settings of Optimize Imports
* @see ImportPriority
*/
@NotNull
public static Comparator<PyImportStatementBase> getSameGroupImportsComparator(@NotNull Project project) {
final PyCodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project).getCustomSettings(PyCodeStyleSettings.class);
public static Comparator<PyImportStatementBase> getSameGroupImportsComparator(@NotNull PsiFile settingsAnchor) {
final PyCodeStyleSettings settings = CodeStyle.getCustomSettings(settingsAnchor, PyCodeStyleSettings.class);
if (settings.OPTIMIZE_IMPORTS_SORT_BY_TYPE_FIRST) {
return IMPORT_TYPE_COMPARATOR.thenComparing(IMPORT_NAMES_COMPARATOR);
}
@@ -253,7 +253,7 @@ public class AddImportHelper {
if (newImport == null) {
return false;
}
return getSameGroupImportsComparator(existingImport.getProject()).compare(newImport, existingImport) < 0;
return getSameGroupImportsComparator(existingImport.getContainingFile()).compare(newImport, existingImport) < 0;
}
@NotNull

View File

@@ -16,6 +16,7 @@
package com.jetbrains.python.codeInsight.imports;
import com.google.common.collect.Ordering;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInspection.LocalInspectionToolSession;
import com.intellij.lang.ImportOptimizer;
import com.intellij.openapi.diagnostic.Logger;
@@ -23,9 +24,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Couple;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.ContainerUtil;
@@ -111,7 +114,7 @@ public class PyImportOptimizer implements ImportOptimizer {
private ImportSorter(@NotNull PyFile file) {
myFile = file;
myPySettings = CodeStyleSettingsManager.getSettings(myFile.getProject()).getCustomSettings(PyCodeStyleSettings.class);
myPySettings = CodeStyle.getCustomSettings(myFile, PyCodeStyleSettings.class);
myImportBlock = myFile.getImportBlock();
myGroups = new EnumMap<>(ImportPriority.class);
for (ImportPriority priority : ImportPriority.values()) {
@@ -165,8 +168,7 @@ public class PyImportOptimizer implements ImportOptimizer {
private List<PyImportStatementBase> transformImportStatements(@NotNull List<PyImportStatementBase> imports) {
final List<PyImportStatementBase> result = new ArrayList<>();
final Project project = myFile.getProject();
final PyElementGenerator generator = PyElementGenerator.getInstance(project);
final PyElementGenerator generator = PyElementGenerator.getInstance(myFile.getProject());
final LanguageLevel langLevel = LanguageLevel.forElement(myFile);
for (PyImportStatementBase statement : imports) {
@@ -179,7 +181,7 @@ public class PyImportOptimizer implements ImportOptimizer {
ContainerUtil.map(importElements, e -> generator.createImportStatement(langLevel, e.getText(), null));
final PyImportStatement topmostImport;
if (myPySettings.OPTIMIZE_IMPORTS_SORT_IMPORTS) {
topmostImport = Collections.min(newImports, AddImportHelper.getSameGroupImportsComparator(project));
topmostImport = Collections.min(newImports, AddImportHelper.getSameGroupImportsComparator(myFile));
}
else {
topmostImport = newImports.get(0);
@@ -282,7 +284,7 @@ public class PyImportOptimizer implements ImportOptimizer {
return false;
}
final Ordering<PyImportStatementBase> importOrdering =
Ordering.from(AddImportHelper.getSameGroupImportsComparator(myFile.getProject()));
Ordering.from(AddImportHelper.getSameGroupImportsComparator(myFile));
return ContainerUtil.exists(myGroups.values(), imports -> !importOrdering.isOrdered(imports));
}
@@ -294,7 +296,7 @@ public class PyImportOptimizer implements ImportOptimizer {
if (myPySettings.OPTIMIZE_IMPORTS_SORT_IMPORTS) {
for (ImportPriority priority : myGroups.keySet()) {
final List<PyImportStatementBase> imports = myGroups.get(priority);
Collections.sort(imports, AddImportHelper.getSameGroupImportsComparator(myFile.getProject()));
Collections.sort(imports, AddImportHelper.getSameGroupImportsComparator(myFile));
myGroups.put(priority, imports);
}
}

View File

@@ -17,15 +17,12 @@ package com.jetbrains.python.console
import com.intellij.codeInsight.hint.HintManager
import com.intellij.execution.console.LanguageConsoleView
import com.intellij.execution.console.ProcessBackedConsoleExecuteActionHandler
import com.intellij.execution.process.ProcessHandler
import com.intellij.execution.ui.ConsoleViewContentType
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.editor.markup.TextAttributes
import com.intellij.psi.codeStyle.CodeStyleSettingsManager
import com.intellij.psi.util.PsiTreeUtil
import com.jetbrains.python.PythonFileType
import com.jetbrains.python.console.pydev.ConsoleCommunication
import com.jetbrains.python.console.pydev.ConsoleCommunicationListener
import com.jetbrains.python.psi.LanguageLevel
@@ -169,9 +166,6 @@ open class PydevConsoleExecuteActionHandler(private val myConsoleView: LanguageC
isEnabled = true
}
val pythonIndent: Int
get() = CodeStyleSettingsManager.getSettings(project).getIndentSize(PythonFileType.INSTANCE)
override val cantExecuteMessage: String
get() {
if (!isEnabled) {

View File

@@ -15,6 +15,7 @@
*/
package com.jetbrains.python.editor;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.editorActions.emacs.EmacsProcessingHandler;
import com.intellij.formatting.IndentInfo;
import com.intellij.lang.ASTNode;
@@ -24,8 +25,6 @@ import com.intellij.openapi.editor.SelectionModel;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.PsiTreeUtil;
@@ -355,8 +354,7 @@ public class PyEmacsHandler implements EmacsProcessingHandler {
public CommonCodeStyleSettings.IndentOptions getIndentOptions() {
if (myIndentOptions == null) {
CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getInstance(project).getCurrentSettings();
myIndentOptions = codeStyleSettings.getIndentOptions(file.getFileType());
myIndentOptions = CodeStyle.getIndentOptions(file);
}
return myIndentOptions;

View File

@@ -15,6 +15,7 @@
*/
package com.jetbrains.python.editor;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.editorActions.JoinRawLinesHandlerDelegate;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.util.TextRange;
@@ -22,7 +23,6 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.PyTokenTypes;
@@ -316,7 +316,7 @@ public class PyJoinLinesHandler implements JoinRawLinesHandlerDelegate {
private static int getStringToJoinMaxLength(Request request, int symbolsToSkip) {
int leftLineStartOffset = getLeftLineStartOffset(request);
final int margin = CodeStyleSettingsManager.getInstance().getCurrentSettings().getRightMargin(PythonLanguage.getInstance());
final int margin = CodeStyle.getLanguageSettings(request.leftElem.getContainingFile(), PythonLanguage.getInstance()).RIGHT_MARGIN;
int leftLineLength = request.document.getLineEndOffset(request.document.getLineNumber(leftLineStartOffset)) - leftLineStartOffset;
return margin - leftLineLength - symbolsToSkip;
}

View File

@@ -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.jetbrains.python.formatter;
import com.intellij.application.options.CodeStyle;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.project.Project;
@@ -8,8 +9,6 @@ import com.intellij.openapi.util.Couple;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.impl.source.codeStyle.PreFormatProcessor;
import com.jetbrains.python.PythonLanguage;
import com.jetbrains.python.psi.LanguageLevel;
@@ -38,9 +37,7 @@ public class PyPreFormatProcessor implements PreFormatProcessor {
PsiFile file = psiElement.isValid() ? psiElement.getContainingFile() : null;
if (file == null) return range;
Project project = psiElement.getProject();
return new PyCommentFormatter(project).process(psiElement, range);
return new PyCommentFormatter(file).process(psiElement, range);
}
/**
@@ -48,16 +45,14 @@ public class PyPreFormatProcessor implements PreFormatProcessor {
*/
public static class PyCommentFormatter extends PyRecursiveElementVisitor {
private final Project myProject;
private final CodeStyleSettings mySettings;
private final PyCodeStyleSettings myPyCodeStyleSettings;
private final List<Couple<PsiComment>> myCommentReplacements = new ArrayList<>();
private TextRange myRange;
private int myDelta = 0;
public PyCommentFormatter(Project project) {
myProject = project;
mySettings = CodeStyleSettingsManager.getSettings(project);
myPyCodeStyleSettings = mySettings.getCustomSettings(PyCodeStyleSettings.class);
public PyCommentFormatter(@NotNull PsiFile file) {
myProject = file.getProject();
myPyCodeStyleSettings = CodeStyle.getCustomSettings(file, PyCodeStyleSettings.class);
}
public TextRange process(PsiElement element, TextRange range) {

View File

@@ -15,16 +15,15 @@
*/
package com.jetbrains.python.formatter;
import com.intellij.application.options.CodeStyle;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.impl.source.codeStyle.PostFormatProcessor;
import com.jetbrains.python.PythonLanguage;
import org.jetbrains.annotations.NotNull;
@@ -94,8 +93,7 @@ public class PyTrailingBlankLinesPostFormatProcessor implements PostFormatProces
@NotNull
private static TextRange replaceOrDeleteTrailingWhitespaces(@NotNull final PsiFile pyFile, @NotNull final TextRange whitespaceRange) {
final Project project = pyFile.getProject();
final PyCodeStyleSettings customSettings = CodeStyleSettingsManager.getSettings(project).getCustomSettings(PyCodeStyleSettings.class);
final PyCodeStyleSettings customSettings = CodeStyle.getCustomSettings(pyFile, PyCodeStyleSettings.class);
final boolean addLineFeed = customSettings.BLANK_LINE_AT_FILE_END || EditorSettingsExternalizable.getInstance().isEnsureNewLineAtEOF();
final String realWhitespace = whitespaceRange.substring(pyFile.getText());
@@ -103,7 +101,7 @@ public class PyTrailingBlankLinesPostFormatProcessor implements PostFormatProces
// Do not add extra blank line in empty file
if (!realWhitespace.equals(desiredWhitespace) && (desiredWhitespace.isEmpty() || whitespaceRange.getStartOffset() != 0)) {
final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(pyFile.getProject());
final Document document = documentManager.getDocument(pyFile);
if (document != null) {
documentManager.doPostponedOperationsAndUnblockDocument(document);

View File

@@ -16,6 +16,7 @@
package com.jetbrains.python.psi;
import com.google.common.collect.Iterables;
import com.intellij.application.options.CodeStyle;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
@@ -142,8 +143,7 @@ public class PyIndentUtil {
}
public static boolean areTabsUsedForIndentation(@NotNull Project project) {
final CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getInstance(project).getCurrentSettings();
return codeStyleSettings.useTabCharacter(PythonFileType.INSTANCE);
return CodeStyle.getSettings(project).useTabCharacter(PythonFileType.INSTANCE);
}
public static char getIndentCharacter(@NotNull Project project) {

View File

@@ -3,6 +3,7 @@ package com.jetbrains.python.psi;
import com.google.common.collect.Collections2;
import com.google.common.collect.Maps;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.FileModificationService;
import com.intellij.codeInsight.completion.PrioritizedLookupElement;
import com.intellij.codeInsight.lookup.LookupElement;
@@ -42,7 +43,6 @@ import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.stubs.StubElement;
import com.intellij.psi.util.*;
import com.intellij.ui.awt.RelativePoint;
@@ -1124,14 +1124,14 @@ public class PyUtil {
/**
* Constructs new lookup element for completion of keyword argument with equals sign appended.
*
* @param name name of the parameter
* @param project project instance to check code style settings and surround equals sign with spaces if necessary
* @param name name of the parameter
* @param settingsAnchor file to check code style settings and surround equals sign with spaces if necessary
* @return lookup element
*/
@NotNull
public static LookupElement createNamedParameterLookup(@NotNull String name, @Nullable Project project) {
public static LookupElement createNamedParameterLookup(@NotNull String name, @NotNull PsiFile settingsAnchor) {
final String suffix;
if (CodeStyleSettingsManager.getSettings(project).getCustomSettings(PyCodeStyleSettings.class).SPACE_AROUND_EQ_IN_KEYWORD_ARGUMENT) {
if (CodeStyle.getCustomSettings(settingsAnchor, PyCodeStyleSettings.class).SPACE_AROUND_EQ_IN_KEYWORD_ARGUMENT) {
suffix = " = ";
}
else {

View File

@@ -54,7 +54,7 @@ public class KeywordArgumentCompletionUtil {
final List<LookupElement> extra = PyTypeUtil.toStream(calleeType)
.select(PyCallableType.class)
.flatMap(type -> collectParameterNamesFromType(type, callExpr, context).stream())
.map(name -> PyUtil.createNamedParameterLookup(name, element.getProject()))
.map(name -> PyUtil.createNamedParameterLookup(name, element.getContainingFile()))
.toList();
ret.addAll(extra);

View File

@@ -17,6 +17,7 @@ package com.jetbrains.python.validation;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeHighlighting.HighlightDisplayLevel;
import com.intellij.codeInsight.daemon.HighlightDisplayKey;
import com.intellij.codeInsight.intention.IntentionAction;
@@ -46,8 +47,6 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
@@ -182,8 +181,8 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator<Pep8ExternalAnnotat
return null;
}
final PyPep8Inspection inspection = (PyPep8Inspection)profile.getUnwrappedTool(PyPep8Inspection.KEY.toString(), file);
final CodeStyleSettings commonSettings = CodeStyleSettingsManager.getInstance(file.getProject()).getCurrentSettings();
final PyCodeStyleSettings customSettings = commonSettings.getCustomSettings(PyCodeStyleSettings.class);
final CommonCodeStyleSettings commonSettings = CodeStyle.getLanguageSettings(file);
final PyCodeStyleSettings customSettings = CodeStyle.getCustomSettings(file, PyCodeStyleSettings.class);
final List<String> ignoredErrors = Lists.newArrayList(inspection.ignoredErrors);
if (!customSettings.SPACE_AFTER_NUMBER_SIGN) {
@@ -195,9 +194,8 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator<Pep8ExternalAnnotat
ignoredErrors.add("E261"); // At least two spaces before inline comment
}
final int margin = commonSettings.getRightMargin(file.getLanguage());
return new State(homePath, file.getText(), profile.getErrorLevel(key, file),
ignoredErrors, margin, customSettings.HANG_CLOSING_BRACKETS);
return new State(homePath, file.getText(), profile.getErrorLevel(key, file),
ignoredErrors, commonSettings.RIGHT_MARGIN, customSettings.HANG_CLOSING_BRACKETS);
}
private static void reportMissingInterpreter() {
@@ -276,7 +274,7 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator<Pep8ExternalAnnotat
problemElement = file.findElementAt(Math.max(0, offset - 1));
}
if (ignoreDueToSettings(project, problem, problemElement) || ignoredDueToProblemSuppressors(problem, file, problemElement)) {
if (ignoreDueToSettings(file, problem, problemElement) || ignoredDueToProblemSuppressors(problem, file, problemElement)) {
continue;
}
@@ -352,7 +350,7 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator<Pep8ExternalAnnotat
return StringUtil.offsetToLineNumber(text, start) != StringUtil.offsetToLineNumber(text, end);
}
private static boolean ignoreDueToSettings(Project project, Problem problem, @Nullable PsiElement element) {
private static boolean ignoreDueToSettings(PsiFile file, Problem problem, @Nullable PsiElement element) {
final EditorSettingsExternalizable editorSettings = EditorSettingsExternalizable.getInstance();
if (!editorSettings.getStripTrailingSpaces().equals(EditorSettingsExternalizable.STRIP_TRAILING_SPACES_NONE)) {
// ignore trailing spaces errors if they're going to disappear after save
@@ -361,9 +359,8 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator<Pep8ExternalAnnotat
}
}
final CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project);
final CommonCodeStyleSettings commonSettings = codeStyleSettings.getCommonSettings(PythonLanguage.getInstance());
final PyCodeStyleSettings pySettings = codeStyleSettings.getCustomSettings(PyCodeStyleSettings.class);
final CommonCodeStyleSettings commonSettings = CodeStyle.getLanguageSettings(file, PythonLanguage.getInstance());
final PyCodeStyleSettings pySettings = CodeStyle.getCustomSettings(file, PyCodeStyleSettings.class);
if (element instanceof PsiWhiteSpace) {
// E303 too many blank lines (num)
@@ -402,7 +399,7 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator<Pep8ExternalAnnotat
}
// W191 (indentation contains tabs) is reported also for indents inside multiline string literals,
// thus underlying PSI element is not necessarily a whitespace
if (problem.myCode.equals("W191") && codeStyleSettings.useTabCharacter(PythonFileType.INSTANCE)) {
if (problem.myCode.equals("W191") && CodeStyle.getIndentOptions(file).USE_TAB_CHARACTER) {
return true;
}
return false;

View File

@@ -15,8 +15,8 @@
*/
package com.jetbrains.python;
import com.intellij.application.options.CodeStyle;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.jetbrains.python.fixtures.PyTestCase;
import com.jetbrains.python.psi.LanguageLevel;
import org.jetbrains.annotations.NotNull;
@@ -305,8 +305,8 @@ public class PyIndentTest extends PyTestCase {
}
public void testAlignInCall() { // PY-6360
CodeStyleSettingsManager.getSettings(myFixture.getProject())
.getCommonSettings(PythonLanguage.getInstance()).ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
CodeStyle.getSettings(myFixture.getProject())
.getCommonSettings(PythonLanguage.getInstance()).ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
doTest("list(a,<caret>)",
"list(a,\n" +
" <caret>)");

View File

@@ -15,9 +15,9 @@
*/
package com.jetbrains.python;
import com.intellij.application.options.CodeStyle;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.jetbrains.python.fixtures.PyTestCase;
/**
@@ -35,7 +35,7 @@ public class PyJoinLinesTest extends PyTestCase {
private void doTestWithCodeStyleSettings() {
CodeStyleSettings settings = new CodeStyleSettings();
settings.setRightMargin(PythonLanguage.getInstance(), 79);
CodeStyleSettingsManager.getInstance().setTemporarySettings(settings);
CodeStyle.setTemporarySettings(myFixture.getProject(), settings);
doTest();
}

View File

@@ -15,10 +15,10 @@
*/
package com.jetbrains.python;
import com.intellij.application.options.CodeStyle;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.jetbrains.python.fixtures.PyTestCase;
@@ -32,7 +32,7 @@ public class PyWrapTest extends PyTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance(myFixture.getProject()).getCurrentSettings();
final CodeStyleSettings settings = CodeStyle.getSettings(myFixture.getProject());
final CommonCodeStyleSettings pythonSettings = settings.getCommonSettings(PythonLanguage.getInstance());
myOldWrap = settings.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN;
myOldMargin = pythonSettings.RIGHT_MARGIN;
@@ -42,7 +42,7 @@ public class PyWrapTest extends PyTestCase {
@Override
protected void tearDown() throws Exception {
final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance(myFixture.getProject()).getCurrentSettings();
final CodeStyleSettings settings = CodeStyle.getSettings(myFixture.getProject());
final CommonCodeStyleSettings pythonSettings = settings.getCommonSettings(PythonLanguage.getInstance());
settings.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN = myOldWrap;
pythonSettings.RIGHT_MARGIN = myOldMargin;
@@ -90,7 +90,7 @@ public class PyWrapTest extends PyTestCase {
public void testWrapRightMargin() {
final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance(myFixture.getProject()).getCurrentSettings();
final CodeStyleSettings settings = CodeStyle.getSettings(myFixture.getProject());
final CommonCodeStyleSettings pythonSettings = settings.getCommonSettings(PythonLanguage.getInstance());
int oldValue = pythonSettings.RIGHT_MARGIN;
boolean oldMarginValue = settings.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN;

View File

@@ -16,6 +16,7 @@
package com.jetbrains.python.fixtures;
import com.google.common.base.Joiner;
import com.intellij.application.options.CodeStyle;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupEx;
import com.intellij.execution.actions.ConfigurationContext;
@@ -47,7 +48,6 @@ import com.intellij.platform.DirectoryProjectConfigurator;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.refactoring.RefactoringActionHandler;
@@ -435,7 +435,7 @@ public abstract class PyTestCase extends UsefulTestCase {
@NotNull
protected CodeStyleSettings getCodeStyleSettings() {
return CodeStyleSettingsManager.getSettings(myFixture.getProject());
return CodeStyle.getSettings(myFixture.getProject());
}
@NotNull