mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
optimize imports inserts blank lines between groups also when we don't have any missorted imports (PY-8355)
This commit is contained in:
@@ -107,11 +107,19 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
prioritize(importStatement, toImport);
|
||||
}
|
||||
}
|
||||
if (myMissorted) {
|
||||
if (myMissorted || needBlankLinesBetweenGroups()) {
|
||||
applyResults();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean needBlankLinesBetweenGroups() {
|
||||
int nonEmptyGroups = 0;
|
||||
if (myBuiltinImports.size() > 0) nonEmptyGroups++;
|
||||
if (myThirdPartyImports.size() > 0) nonEmptyGroups++;
|
||||
if (myProjectImports.size() > 0) nonEmptyGroups++;
|
||||
return nonEmptyGroups > 1;
|
||||
}
|
||||
|
||||
private void prioritize(PyImportStatementBase importStatement, @Nullable PsiElement toImport) {
|
||||
if (toImport != null && !(toImport instanceof PsiFileSystemItem)) {
|
||||
toImport = toImport.getContainingFile();
|
||||
@@ -143,7 +151,10 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
addImports(myThirdPartyImports);
|
||||
addImports(myProjectImports);
|
||||
PsiElement lastElement = myImportBlock.get(myImportBlock.size()-1);
|
||||
myFile.deleteChildRange(findFirstNonFutureImport(), lastElement);
|
||||
PyImportStatementBase firstNonFutureImport = findFirstNonFutureImport();
|
||||
if (firstNonFutureImport != null) {
|
||||
myFile.deleteChildRange(firstNonFutureImport, lastElement);
|
||||
}
|
||||
for (PyImportStatementBase anImport : myBuiltinImports) {
|
||||
anImport.putCopyableUserData(PyBlock.IMPORT_GROUP_BEGIN, null);
|
||||
}
|
||||
@@ -155,7 +166,7 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
return importStatement;
|
||||
}
|
||||
}
|
||||
return myImportBlock.get(0);
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void markGroupBegin(List<PyImportStatementBase> imports) {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
from __future__ import with_statement
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
import foo
|
||||
from bar import *
|
||||
|
||||
|
||||
sys.path
|
||||
datetime.datetime
|
||||
@@ -0,0 +1,9 @@
|
||||
from __future__ import with_statement
|
||||
import sys
|
||||
import datetime
|
||||
import foo
|
||||
from bar import *
|
||||
|
||||
|
||||
sys.path
|
||||
datetime.datetime
|
||||
@@ -63,6 +63,10 @@ public class PyOptimizeImportsTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testInsertBlankLines() { // PY-8355
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
myFixture.configureByFile("optimizeImports/" + getTestName(true) + ".py");
|
||||
OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));
|
||||
|
||||
Reference in New Issue
Block a user