mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
enable stripping policy per file (IDEA-118760)
This commit is contained in:
+10
-3
@@ -19,7 +19,6 @@ import com.intellij.ide.DataManager;
|
||||
import com.intellij.injected.editor.DocumentWindow;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
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;
|
||||
@@ -31,17 +30,23 @@ import com.intellij.openapi.editor.impl.DocumentImpl;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManagerAdapter;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.ShutDownTracker;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Set;
|
||||
|
||||
public final class TrailingSpacesStripper extends FileDocumentManagerAdapter {
|
||||
|
||||
public static final Key<String> OVERRIDE_STRIP_TRAILING_SPACES_KEY = Key.create("OVERRIDE_TRIM_TRAILING_SPACES_KEY");
|
||||
public static final Key<Boolean> OVERRIDE_ENSURE_NEWLINE_KEY = Key.create("OVERRIDE_ENSURE_NEWLINE_KEY");
|
||||
|
||||
private final Set<Document> myDocumentsToStripLater = new THashSet<Document>();
|
||||
|
||||
@Override
|
||||
@@ -67,9 +72,11 @@ public final class TrailingSpacesStripper extends FileDocumentManagerAdapter {
|
||||
final EditorSettingsExternalizable settings = EditorSettingsExternalizable.getInstance();
|
||||
if (settings == null) return;
|
||||
|
||||
String stripTrailingSpaces = settings.getStripTrailingSpaces();
|
||||
final String overrideStripTrailingSpacesData = file.getUserData(OVERRIDE_STRIP_TRAILING_SPACES_KEY);
|
||||
final Boolean overrideEnsureNewlineData = file.getUserData(OVERRIDE_ENSURE_NEWLINE_KEY);
|
||||
final String stripTrailingSpaces = overrideStripTrailingSpacesData != null ? overrideStripTrailingSpacesData : settings.getStripTrailingSpaces();
|
||||
final boolean doStrip = !stripTrailingSpaces.equals(EditorSettingsExternalizable.STRIP_TRAILING_SPACES_NONE);
|
||||
final boolean ensureEOL = settings.isEnsureNewLineAtEOF();
|
||||
final boolean ensureEOL = overrideEnsureNewlineData != null ? overrideEnsureNewlineData.booleanValue() : settings.isEnsureNewLineAtEOF();
|
||||
|
||||
if (doStrip) {
|
||||
final boolean inChangedLinesOnly = !stripTrailingSpaces.equals(EditorSettingsExternalizable.STRIP_TRAILING_SPACES_WHOLE);
|
||||
|
||||
+22
-1
@@ -171,4 +171,25 @@ public class StripTrailingSpacesTest extends LightPlatformCodeInsightTestCase {
|
||||
FileDocumentManager.getInstance().saveAllDocuments();
|
||||
checkResultByText(" xxx <caret>\nyyy\n\t\t\t\n");
|
||||
}
|
||||
}
|
||||
|
||||
public void testOverrideStripTrailingSpaces() throws IOException {
|
||||
EditorSettingsExternalizable settings = EditorSettingsExternalizable.getInstance();
|
||||
settings.setStripTrailingSpaces(EditorSettingsExternalizable.STRIP_TRAILING_SPACES_NONE);
|
||||
configureFromFileText("x.txt", "xxx<caret>\n 222 \nyyy");
|
||||
myVFile.putUserData(TrailingSpacesStripper.OVERRIDE_STRIP_TRAILING_SPACES_KEY,
|
||||
EditorSettingsExternalizable.STRIP_TRAILING_SPACES_WHOLE);
|
||||
type(' ');
|
||||
FileDocumentManager.getInstance().saveAllDocuments();
|
||||
checkResultByText("xxx <caret>\n 222\nyyy");
|
||||
}
|
||||
|
||||
public void testOverrideEnsureNewline() throws IOException {
|
||||
EditorSettingsExternalizable settings = EditorSettingsExternalizable.getInstance();
|
||||
settings.setEnsureNewLineAtEOF(false);
|
||||
configureFromFileText("x.txt", "XXX<caret>\nYYY");
|
||||
myVFile.putUserData(TrailingSpacesStripper.OVERRIDE_ENSURE_NEWLINE_KEY, Boolean.TRUE);
|
||||
type(' ');
|
||||
FileDocumentManager.getInstance().saveAllDocuments();
|
||||
checkResultByText("XXX <caret>\nYYY\n");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user