mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-12409 Automatically reformat statements modified during "Inline local" refactoring
This commit is contained in:
@@ -29,18 +29,19 @@ import com.intellij.openapi.editor.markup.TextAttributes;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.wm.WindowManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.refactoring.util.RefactoringMessageDialog;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.Query;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.PythonLanguage;
|
||||
@@ -62,7 +63,7 @@ import java.util.List;
|
||||
*/
|
||||
public class PyInlineLocalHandler extends InlineActionHandler {
|
||||
private static final Logger LOG = Logger.getInstance(PyInlineLocalHandler.class.getName());
|
||||
|
||||
|
||||
private static final String REFACTORING_NAME = RefactoringBundle.message("inline.variable.title");
|
||||
private static final Pair<PyStatement, Boolean> EMPTY_DEF_RESULT = Pair.create(null, false);
|
||||
private static final String HELP_ID = "python.reference.inline";
|
||||
@@ -206,6 +207,16 @@ public class PyInlineLocalHandler extends InlineActionHandler {
|
||||
PyPsiUtils.removeElements(next);
|
||||
}
|
||||
PyPsiUtils.removeElements(def);
|
||||
|
||||
final List<TextRange> ranges = ContainerUtil.mapNotNull(exprs, new Function<PsiElement, TextRange>() {
|
||||
@Override
|
||||
public TextRange fun(PsiElement element) {
|
||||
final PyStatement parentalStatement = PsiTreeUtil.getParentOfType(element, PyStatement.class, false);
|
||||
return parentalStatement != null ? parentalStatement.getTextRange() : null;
|
||||
}
|
||||
});
|
||||
CodeStyleManager.getInstance(project).reformatText(workingFile, ranges);
|
||||
|
||||
if (editor != null && !ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
highlightManager.addOccurrenceHighlights(editor, exprs, attributes, true, null);
|
||||
WindowManager.getInstance().getStatusBar(project)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
def foo(arg):
|
||||
print arg
|
||||
|
||||
|
||||
foo(('a', 'b'))
|
||||
@@ -0,0 +1,3 @@
|
||||
result = '123456789|123456789|123456789|123456789|123456789|' + \
|
||||
'123456789|123456789|123456789|123456789|123456789|' + \
|
||||
'123456789|123456789|123456789|123456789|123456789|'
|
||||
@@ -0,0 +1,3 @@
|
||||
s = '123456789|123456789|123456789|123456789|123456789|'
|
||||
|
||||
result = s + s + s
|
||||
@@ -18,6 +18,9 @@ package com.jetbrains.python.refactoring;
|
||||
import com.intellij.codeInsight.TargetElementUtilBase;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.jetbrains.python.PythonLanguage;
|
||||
import com.jetbrains.python.fixtures.PyTestCase;
|
||||
import com.jetbrains.python.refactoring.inline.PyInlineLocalHandler;
|
||||
|
||||
@@ -90,4 +93,12 @@ public class PyInlineLocalTest extends PyTestCase {
|
||||
public void testReferenceInParenthesis() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
// PY-12409
|
||||
public void testResultExceedsRightMargin() {
|
||||
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(myFixture.getProject());
|
||||
settings.WRAP_LONG_LINES = true;
|
||||
settings.setRightMargin(PythonLanguage.getInstance(), 80);
|
||||
doTest();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user