mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEA-64687 Impossible to add an import statement when import section is collapsed
This commit is contained in:
+24
-8
@@ -15,8 +15,10 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.folding;
|
||||
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
|
||||
|
||||
import com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl
|
||||
import com.intellij.openapi.application.ex.PathManagerEx
|
||||
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase
|
||||
|
||||
/**
|
||||
* @author Denis Zhdanov
|
||||
@@ -25,12 +27,26 @@ import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
|
||||
public class JavaFoldingTest extends CodeInsightFixtureTestCase {
|
||||
|
||||
public void testEndOfLineComments() {
|
||||
doTest();
|
||||
myFixture.testFolding("$PathManagerEx.testDataPath/codeInsight/folding/${getTestName(false)}.java");
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
StringBuilder path = new StringBuilder(PathManagerEx.getTestDataPath()).append("/codeInsight/folding/")
|
||||
.append(getTestName(false)).append(".java");
|
||||
myFixture.testFolding(path.toString());
|
||||
|
||||
public void testEditingImports() {
|
||||
myFixture.configureByText "a.java", """\
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
<caret>
|
||||
|
||||
class Foo { List a; Map b; }
|
||||
"""
|
||||
|
||||
CodeFoldingManagerImpl.getInstance(getProject()).buildInitialFoldings(myFixture.editor);
|
||||
myFixture.doHighlighting()
|
||||
assert myFixture.editor.foldingModel.getCollapsedRegionAtOffset(10)
|
||||
|
||||
myFixture.type 'import '
|
||||
myFixture.doHighlighting()
|
||||
assert !myFixture.editor.foldingModel.getCollapsedRegionAtOffset(10)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+7
-1
@@ -18,6 +18,7 @@ package com.intellij.codeInsight.folding.impl;
|
||||
|
||||
import com.intellij.lang.folding.FoldingDescriptor;
|
||||
import com.intellij.lang.injection.InjectedLanguageManager;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.FoldRegion;
|
||||
import com.intellij.openapi.editor.FoldingGroup;
|
||||
@@ -124,7 +125,12 @@ class UpdateFoldRegionsOperation implements Runnable {
|
||||
}
|
||||
|
||||
private boolean shouldExpandNewRegion(PsiElement element, TextRange range, Map<TextRange, Boolean> rangeToExpandStatusMap) {
|
||||
boolean caretInside = FoldingUtil.caretInsideRange(myEditor, range);
|
||||
final Document document = myEditor.getDocument();
|
||||
final int firstLine = document.getLineNumber(range.getStartOffset());
|
||||
final int lastLine = document.getLineNumber(range.getEndOffset());
|
||||
final int currentLine = document.getLineNumber(myEditor.getCaretModel().getOffset());
|
||||
boolean caretInside = firstLine <= currentLine && currentLine <= lastLine;
|
||||
|
||||
if (myApplyDefaultState) {
|
||||
return caretInside || !FoldingPolicy.isCollapseByDefault(element);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user