mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
PY-29655 Use newer file-based code style API in PyCharm where possible
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>)");
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user