mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
IDEA-58130 Improve editor performance during working with large files written in a single line
Make logicalPositionToOffset calculations faster for long lines (when soft wraps are enabled). Position calculations are more consistent now so this is also supposed to fix EA-53787.
This commit is contained in:
@@ -33,6 +33,7 @@ import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiLiteralExpression
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.testFramework.EditorTestUtil
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||
|
||||
@@ -1087,6 +1088,35 @@ class Foo {
|
||||
assertEquals 0, expandedFoldRegionsCount
|
||||
}
|
||||
|
||||
public void "test processing of tabs inside fold regions"() {
|
||||
String text = """public class Foo {
|
||||
\tpublic static void main(String[] args) {
|
||||
\t\tjavax.swing.SwingUtilities.invokeLater(new Runnable() {
|
||||
\t\t\t@Override
|
||||
\t\t\tpublic void run() {
|
||||
\t\t\t\tSystem.out.println();
|
||||
\t\t\t}
|
||||
\t\t});
|
||||
\t}
|
||||
}""";
|
||||
configure text
|
||||
assert myFixture.editor.getFoldingModel().getCollapsedRegionAtOffset(text.indexOf("new"))
|
||||
myFixture.editor.settings.useTabCharacter = true
|
||||
EditorTestUtil.configureSoftWraps(myFixture.editor, 1000)
|
||||
myFixture.editor.caretModel.moveToOffset(text.indexOf("System"))
|
||||
myFixture.performEditorAction(IdeActions.ACTION_EDITOR_TAB)
|
||||
myFixture.checkResult("""public class Foo {
|
||||
\tpublic static void main(String[] args) {
|
||||
\t\tjavax.swing.SwingUtilities.invokeLater(new Runnable() {
|
||||
\t\t\t@Override
|
||||
\t\t\tpublic void run() {
|
||||
\t\t\t\t\t<caret>System.out.println();
|
||||
\t\t\t}
|
||||
\t\t});
|
||||
\t}
|
||||
}""");
|
||||
}
|
||||
|
||||
private int getFoldRegionsCount() {
|
||||
return myFixture.editor.foldingModel.allFoldRegions.length
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user