From 331e04794898892177b7b94629c9b722726adfc1 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 17 Aug 2011 15:27:16 +0400 Subject: [PATCH] decouple DocumentImpl from Editor and action system: move editor-dependent part of trailing spaces stripping to TrailingSpacesStripper --- .../codeInsight/GenerateJavadocTest.java | 4 +- .../java/AbstractJavaFormatterTest.java | 3 +- .../codeInsight/CodeInsightTestCase.java | 5 +- .../injected/editor/DocumentWindowImpl.java | 4 - .../openapi/editor/ex/DocumentEx.java | 4 - .../openapi/editor/impl/DocumentImpl.java | 104 ++++++++++-------- .../impl/TrailingSpacesStripper.java | 52 +++++++-- .../editor/StripTrailingSpacesTest.java | 4 +- .../src/com/intellij/mock/MockDocument.java | 5 - .../LightPlatformCodeInsightTestCase.java | 5 +- .../impl/CodeInsightTestFixtureImpl.java | 4 +- .../updown/GroovyMoveStatementTest.java | 4 +- 12 files changed, 113 insertions(+), 85 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/GenerateJavadocTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/GenerateJavadocTest.java index 1668696059c3..9df55fdaa25f 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/GenerateJavadocTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/GenerateJavadocTest.java @@ -4,7 +4,7 @@ import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.editor.actionSystem.EditorActionHandler; import com.intellij.openapi.editor.actionSystem.EditorActionManager; -import com.intellij.openapi.editor.ex.DocumentEx; +import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.testFramework.PlatformTestCase; /** @@ -29,6 +29,6 @@ public class GenerateJavadocTest extends CodeInsightTestCase { EditorActionManager actionManager = EditorActionManager.getInstance(); EditorActionHandler actionHandler = actionManager.getActionHandler(IdeActions.ACTION_EDITOR_ENTER); actionHandler.execute(myEditor, DataManager.getInstance().getDataContext()); - ((DocumentEx)myEditor.getDocument()).stripTrailingSpaces(false); + ((DocumentImpl)myEditor.getDocument()).stripTrailingSpaces(); } } diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/AbstractJavaFormatterTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/AbstractJavaFormatterTest.java index 6a3ec80568de..662b34b00e92 100644 --- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/AbstractJavaFormatterTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/AbstractJavaFormatterTest.java @@ -21,7 +21,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.EditorFactory; -import com.intellij.openapi.editor.ex.DocumentEx; import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.roots.LanguageLevelProjectExtension; @@ -200,7 +199,7 @@ public abstract class AbstractJavaFormatterTest extends LightIdeaTestCase { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - ((DocumentEx)doc).stripTrailingSpaces(false); + ((DocumentImpl)doc).stripTrailingSpaces(); } }); } diff --git a/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java b/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java index 0238f601e11b..5f3e20cfa075 100644 --- a/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java @@ -32,6 +32,7 @@ import com.intellij.openapi.editor.actionSystem.EditorActionHandler; import com.intellij.openapi.editor.actionSystem.EditorActionManager; import com.intellij.openapi.editor.actionSystem.TypedAction; import com.intellij.openapi.editor.ex.DocumentEx; +import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.editor.impl.EditorImpl; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; @@ -480,7 +481,7 @@ public abstract class CodeInsightTestCase extends PsiTestCase { public void run() { getProject().getComponent(PostprocessReformattingAspect.class).doPostponedFormatting(); if (stripTrailingSpaces) { - ((DocumentEx)myEditor.getDocument()).stripTrailingSpaces(false); + ((DocumentImpl)myEditor.getDocument()).stripTrailingSpaces(); } PsiDocumentManager.getInstance(myProject).commitAllDocuments(); @@ -522,7 +523,7 @@ public abstract class CodeInsightTestCase extends PsiTestCase { String newFileText1 = newFileText; if (stripTrailingSpaces) { Document document1 = EditorFactory.getInstance().createDocument(newFileText); - ((DocumentEx)document1).stripTrailingSpaces(false); + ((DocumentImpl)document1).stripTrailingSpaces(); newFileText1 = document1.getText(); } diff --git a/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java b/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java index a5392a045d51..14230eb50657 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java @@ -490,10 +490,6 @@ public class DocumentWindowImpl extends UserDataHolderBase implements Disposable return new RangeMarkerWindow(this, (RangeMarkerEx)hostMarker); } - public boolean stripTrailingSpaces(final boolean inChangedLinesOnly) { - return myDelegate.stripTrailingSpaces(inChangedLinesOnly); - } - public void setStripTrailingSpacesEnabled(final boolean isEnabled) { myDelegate.setStripTrailingSpacesEnabled(isEnabled); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java index dcf483585a12..03b7d51b4229 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/DocumentEx.java @@ -24,10 +24,6 @@ import org.jetbrains.annotations.NotNull; import java.util.List; public interface DocumentEx extends Document { - /** - * @return true if stripping was completed successfully, false if the document prevented stripping by e.g. caret being in the way - */ - boolean stripTrailingSpaces(boolean inChangedLinesOnly); void setStripTrailingSpacesEnabled(boolean isEnabled); @NotNull LineIterator createLineIterator(); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java index ba565fea87c3..79e59fba86be 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java @@ -15,32 +15,33 @@ */ package com.intellij.openapi.editor.impl; -import com.intellij.ide.DataManager; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.editor.*; +import com.intellij.openapi.editor.DocumentRunnable; +import com.intellij.openapi.editor.RangeMarker; +import com.intellij.openapi.editor.ReadOnlyFragmentModificationException; +import com.intellij.openapi.editor.ReadOnlyModificationException; import com.intellij.openapi.editor.actionSystem.DocCommandGroupId; import com.intellij.openapi.editor.actionSystem.ReadonlyFragmentModificationHandler; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.editor.event.DocumentListener; import com.intellij.openapi.editor.ex.*; import com.intellij.openapi.editor.impl.event.DocumentEventImpl; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.ShutDownTracker; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.LocalTimeCounter; import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.text.CharArrayUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import java.beans.PropertyChangeListener; @@ -120,60 +121,67 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { public void setStripTrailingSpacesEnabled(boolean isEnabled) { isStripTrailingSpacesEnabled = isEnabled; } + + @TestOnly + public boolean stripTrailingSpaces() { + return stripTrailingSpaces(null, false, false, -1, -1); + } - public boolean stripTrailingSpaces(boolean inChangedLinesOnly) { + /** + * @return true if stripping was completed successfully, false if the document prevented stripping by e.g. caret being in the way + */ + public boolean stripTrailingSpaces(@Nullable final Project project, + boolean inChangedLinesOnly, + boolean virtualSpaceEnabled, + int caretLine, + int caretOffset) { if (!isStripTrailingSpacesEnabled) { return true; } - DataContext dataContext = DataManager.getInstance().getDataContext(IdeFocusManager.getGlobalInstance().getFocusOwner()); - Editor activeEditor = PlatformDataKeys.EDITOR.getData(dataContext); - - // when virtual space enabled, we can strip whitespace anywhere - boolean isVirtualSpaceEnabled = activeEditor == null || activeEditor.getSettings().isVirtualSpace(); - - VisualPosition visualCaret = activeEditor == null ? null : activeEditor.getCaretModel().getVisualPosition(); - int caretLine = activeEditor == null ? -1 : activeEditor.getCaretModel().getLogicalPosition().line; - boolean markAsNeedsStrippingLater = false; CharSequence text = myText.getCharArray(); - for (int line = 0; line < myLineSet.getLineCount(); line++) { - if (inChangedLinesOnly && !myLineSet.isModified(line)) continue; - int whiteSpaceStart = -1; - final int lineEnd = myLineSet.getLineEnd(line) - myLineSet.getSeparatorLength(line); - int lineStart = myLineSet.getLineStart(line); - for (int offset = lineEnd - 1; offset >= lineStart; offset--) { - char c = text.charAt(offset); - if (c != ' ' && c != '\t') { - break; - } - whiteSpaceStart = offset; - } - if (whiteSpaceStart == -1) continue; - if (!isVirtualSpaceEnabled && caretLine == line && activeEditor != null && whiteSpaceStart < activeEditor.getCaretModel().getOffset()) { - // mark this as a document that needs stripping later - // otherwise the caret would jump madly - markAsNeedsStrippingLater = true; - } - else { - final int finalStart = whiteSpaceStart; - ApplicationManager.getApplication().runWriteAction(new DocumentRunnable(this, activeEditor == null ? null : activeEditor.getProject()) { - public void run() { - CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() { - public void run() { - deleteString(finalStart, lineEnd); - } - }); + RangeMarker caretMarker = caretOffset < 0 ? null : createRangeMarker(caretOffset, caretOffset); + try { + for (int line = 0; line < myLineSet.getLineCount(); line++) { + if (inChangedLinesOnly && !myLineSet.isModified(line)) continue; + int whiteSpaceStart = -1; + final int lineEnd = myLineSet.getLineEnd(line) - myLineSet.getSeparatorLength(line); + int lineStart = myLineSet.getLineStart(line); + for (int offset = lineEnd - 1; offset >= lineStart; offset--) { + char c = text.charAt(offset); + if (c != ' ' && c != '\t') { + break; } - }); - text = myText.getCharArray(); + whiteSpaceStart = offset; + } + if (whiteSpaceStart == -1) continue; + if (!virtualSpaceEnabled && caretLine == line && caretMarker != null && + caretMarker.getStartOffset() >= 0 && whiteSpaceStart < caretMarker.getStartOffset()) { + // mark this as a document that needs stripping later + // otherwise the caret would jump madly + markAsNeedsStrippingLater = true; + } + else { + final int finalStart = whiteSpaceStart; + ApplicationManager + .getApplication().runWriteAction(new DocumentRunnable(this, project) { + public void run() { + CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() { + public void run() { + deleteString(finalStart, lineEnd); + } + }); + } + }); + text = myText.getCharArray(); + } } } - - if (!ShutDownTracker.isShutdownHookRunning() && activeEditor != null) { - activeEditor.getCaretModel().moveToVisualPosition(visualCaret); + finally { + if (caretMarker != null) caretMarker.dispose(); } - return !markAsNeedsStrippingLater; + return markAsNeedsStrippingLater; } public void setReadOnly(boolean isReadOnly) { diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/TrailingSpacesStripper.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/TrailingSpacesStripper.java index d4638958e31c..c56a02ee7b84 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/TrailingSpacesStripper.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/TrailingSpacesStripper.java @@ -15,28 +15,36 @@ */ package com.intellij.openapi.fileEditor.impl; +import com.intellij.ide.DataManager; +import com.intellij.injected.editor.DocumentWindow; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.DocumentRunnable; -import com.intellij.openapi.editor.ex.DocumentEx; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.VisualPosition; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; +import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.fileEditor.FileDocumentManagerAdapter; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.ShutDownTracker; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.text.CharArrayUtil; import gnu.trove.THashSet; -import org.jetbrains.annotations.TestOnly; import java.util.Set; public final class TrailingSpacesStripper extends FileDocumentManagerAdapter { - private final Set myDocumentsToStripLater = new THashSet(); + private final Set myDocumentsToStripLater = new THashSet(); @Override public void beforeAllDocumentsSaving() { - Set documentsToStrip = new THashSet(myDocumentsToStripLater); + Set documentsToStrip = new THashSet(myDocumentsToStripLater); myDocumentsToStripLater.clear(); - for (DocumentEx documentEx : documentsToStrip) { - strip(documentEx); + for (Document document : documentsToStrip) { + strip(document); } } @@ -57,10 +65,9 @@ public final class TrailingSpacesStripper extends FileDocumentManagerAdapter { if (doStrip) { final boolean inChangedLinesOnly = !stripTrailingSpaces.equals(EditorSettingsExternalizable.STRIP_TRAILING_SPACES_WHOLE); - DocumentEx ex = (DocumentEx)document; - boolean success = ex.stripTrailingSpaces(inChangedLinesOnly); + boolean success = stripIfNotCurrentLine((DocumentImpl)document, inChangedLinesOnly); if (!success) { - myDocumentsToStripLater.add(ex); + myDocumentsToStripLater.add(document); } } @@ -88,6 +95,33 @@ public final class TrailingSpacesStripper extends FileDocumentManagerAdapter { } } + public static boolean stripIfNotCurrentLine(Document document, boolean inChangedLinesOnly) { + if (document instanceof DocumentWindow) { + document = ((DocumentWindow) document).getDelegate(); + } + if (!(document instanceof DocumentImpl)) { + return true; + } + DataContext dataContext = DataManager.getInstance().getDataContext(IdeFocusManager.getGlobalInstance().getFocusOwner()); + Editor activeEditor = PlatformDataKeys.EDITOR.getData(dataContext); + + // when virtual space enabled, we can strip whitespace anywhere + boolean isVirtualSpaceEnabled = activeEditor == null || activeEditor.getSettings().isVirtualSpace(); + + VisualPosition visualCaret = activeEditor == null ? null : activeEditor.getCaretModel().getVisualPosition(); + int caretLine = activeEditor == null ? -1 : activeEditor.getCaretModel().getLogicalPosition().line; + int caretOffset = activeEditor == null ? -1 : activeEditor.getCaretModel().getOffset(); + + final Project project = activeEditor == null ? null : activeEditor.getProject(); + boolean markAsNeedsStrippingLater = ((DocumentImpl) document).stripTrailingSpaces(project, inChangedLinesOnly, isVirtualSpaceEnabled, + caretLine, caretOffset); + + if (!ShutDownTracker.isShutdownHookRunning() && activeEditor != null) { + activeEditor.getCaretModel().moveToVisualPosition(visualCaret); + } + return !markAsNeedsStrippingLater; + } + @Override public void unsavedDocumentsDropped() { myDocumentsToStripLater.clear(); diff --git a/platform/platform-impl/testSrc/com/intellij/openapi/editor/StripTrailingSpacesTest.java b/platform/platform-impl/testSrc/com/intellij/openapi/editor/StripTrailingSpacesTest.java index 52c63cd251f4..aba277b13774 100644 --- a/platform/platform-impl/testSrc/com/intellij/openapi/editor/StripTrailingSpacesTest.java +++ b/platform/platform-impl/testSrc/com/intellij/openapi/editor/StripTrailingSpacesTest.java @@ -3,7 +3,7 @@ package com.intellij.openapi.editor; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.ex.DocumentEx; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; -import com.intellij.openapi.editor.impl.DocumentImpl; +import com.intellij.openapi.fileEditor.impl.TrailingSpacesStripper; import com.intellij.testFramework.LightPlatformCodeInsightTestCase; import org.jdom.Element; @@ -90,7 +90,7 @@ public class StripTrailingSpacesTest extends LightPlatformCodeInsightTestCase { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - ((DocumentImpl)getEditor().getDocument()).stripTrailingSpaces(true); + TrailingSpacesStripper.stripIfNotCurrentLine(getEditor().getDocument(), true); } }); } diff --git a/platform/testFramework/src/com/intellij/mock/MockDocument.java b/platform/testFramework/src/com/intellij/mock/MockDocument.java index 2ccc4c9a2704..61d9405d3272 100644 --- a/platform/testFramework/src/com/intellij/mock/MockDocument.java +++ b/platform/testFramework/src/com/intellij/mock/MockDocument.java @@ -184,11 +184,6 @@ public class MockDocument implements DocumentEx { myUserData.put(key, value); } - @Override - public boolean stripTrailingSpaces(boolean inChangedLinesOnly) { - return true; - } - @Override public void setStripTrailingSpacesEnabled(boolean isEnabled) { } diff --git a/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java index 8efbc44eb958..7cc4887342bd 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightPlatformCodeInsightTestCase.java @@ -27,7 +27,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.*; import com.intellij.openapi.editor.actionSystem.EditorActionHandler; import com.intellij.openapi.editor.actionSystem.EditorActionManager; -import com.intellij.openapi.editor.ex.DocumentEx; import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.editor.impl.EditorImpl; @@ -267,7 +266,7 @@ public abstract class LightPlatformCodeInsightTestCase extends LightPlatformTest getProject().getComponent(PostprocessReformattingAspect.class).doPostponedFormatting(); if (ignoreTrailingSpaces) { final Editor editor = myEditor; - ((DocumentEx) editor.getDocument()).stripTrailingSpaces(false); + ((DocumentImpl) editor.getDocument()).stripTrailingSpaces(); EditorUtil.fillVirtualSpaceUntilCaret(editor); } @@ -321,7 +320,7 @@ public abstract class LightPlatformCodeInsightTestCase extends LightPlatformTest : null; if (ignoreTrailingSpaces) { - ((DocumentEx)document).stripTrailingSpaces(false); + ((DocumentImpl)document).stripTrailingSpaces(); } if (caretMarker != null) { diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index c6d533e7d8df..3399e62fb327 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -62,9 +62,9 @@ import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.*; import com.intellij.openapi.editor.actionSystem.DocCommandGroupId; import com.intellij.openapi.editor.actionSystem.EditorActionManager; -import com.intellij.openapi.editor.ex.DocumentEx; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.editor.ex.util.EditorUtil; +import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.editor.impl.DocumentMarkupModel; import com.intellij.openapi.editor.markup.GutterIconRenderer; import com.intellij.openapi.editor.markup.RangeHighlighter; @@ -1634,7 +1634,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig private static String stripTrailingSpaces(String actualText) { final Document document = EditorFactory.getInstance().createDocument(actualText); - ((DocumentEx)document).stripTrailingSpaces(false); + ((DocumentImpl)document).stripTrailingSpaces(); actualText = document.getText(); return actualText; } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/actions/updown/GroovyMoveStatementTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/actions/updown/GroovyMoveStatementTest.java index a5b799e1031b..8edfa884ea4c 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/actions/updown/GroovyMoveStatementTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/actions/updown/GroovyMoveStatementTest.java @@ -18,7 +18,7 @@ package org.jetbrains.plugins.groovy.lang.actions.updown; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; -import com.intellij.openapi.editor.ex.DocumentEx; +import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import org.jetbrains.plugins.groovy.GroovyFileType; import org.jetbrains.plugins.groovy.util.TestUtils; @@ -119,7 +119,7 @@ public class GroovyMoveStatementTest extends LightCodeInsightFixtureTestCase { new WriteCommandAction(getProject()) { @Override protected void run(Result result) throws Throwable { - ((DocumentEx)myFixture.getEditor().getDocument()).stripTrailingSpaces(false); + ((DocumentImpl)myFixture.getEditor().getDocument()).stripTrailingSpaces(); } }.execute(); }