[formatter] simplification: changed context reformat api

This commit is contained in:
Yaroslav Lepenkin
2016-07-15 16:15:01 +03:00
parent afbd09789c
commit 1c25166cee
6 changed files with 18 additions and 19 deletions
@@ -17,7 +17,6 @@ package com.intellij.psi.formatter.java;
import com.intellij.JavaTestUtil;
import com.intellij.codeInsight.actions.ReformatCodeProcessor;
import com.intellij.formatting.DiffInfoImpl;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
@@ -95,7 +94,7 @@ public abstract class AbstractJavaFormatterTest extends LightIdeaTestCase {
void run(PsiFile psiFile, int startOffset, int endOffset);
}
private static final Map<Action, TestFormatAction> ACTIONS = new EnumMap<Action, TestFormatAction>(Action.class);
private static final Map<Action, TestFormatAction> ACTIONS = new EnumMap<>(Action.class);
static {
ACTIONS.put(Action.REFORMAT, new TestFormatAction() {
@Override
@@ -121,8 +120,7 @@ public abstract class AbstractJavaFormatterTest extends LightIdeaTestCase {
public void run(PsiFile psiFile, int startOffset, int endOffset) {
TextRange range = new TextRange(startOffset, endOffset);
List<TextRange> ranges = ContainerUtil.newArrayList(range);
DiffInfo info = new DiffInfoImpl(ranges);
CodeStyleManager.getInstance(getProject()).reformatTextWithContext(psiFile, ranges, info);
CodeStyleManager.getInstance(getProject()).reformatTextWithContext(psiFile, ranges, ranges);
}
});
}
@@ -154,7 +154,7 @@ public abstract class CodeStyleManager {
*/
public abstract void reformatTextWithContext(@NotNull PsiFile file,
@NotNull Collection<TextRange> ranges,
@Nullable DiffInfo diffInfo) throws IncorrectOperationException;
@Nullable Collection<TextRange> insertedRanges) throws IncorrectOperationException;
public void reformatTextWithContext(@NotNull PsiFile file, @NotNull Collection<TextRange> ranges) throws IncorrectOperationException {
@@ -17,7 +17,6 @@
package com.intellij.codeInsight.actions;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.formatting.DiffInfoImpl;
import com.intellij.formatting.FormattingProgressTask;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
@@ -32,7 +31,6 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.ChangedRangesInfo;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.DiffInfo;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.diff.FilesTooBigForDiffException;
@@ -40,8 +38,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.util.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.FutureTask;
public class ReformatCodeProcessor extends AbstractLayoutCodeProcessor {
@@ -123,11 +123,9 @@ public class ReformatCodeProcessor extends AbstractLayoutCodeProcessor {
CaretVisualPositionKeeper caretPositionKeeper = new CaretVisualPositionKeeper(document);
if (processChangedTextOnly) {
ChangedRangesInfo helper = FormatChangedTextUtil.getInstance().getChangedRangesInfo(file);
if (helper != null) {
List<TextRange> ranges = helper.allChangedRanges;
DiffInfo info = helper.insertedRanges != null ? new DiffInfoImpl(helper.insertedRanges) : null;
CodeStyleManager.getInstance(myProject).reformatTextWithContext(file, ranges, info);
ChangedRangesInfo info = FormatChangedTextUtil.getInstance().getChangedRangesInfo(file);
if (info != null) {
CodeStyleManager.getInstance(myProject).reformatTextWithContext(file, info.allChangedRanges, info.insertedRanges);
}
}
else {
@@ -56,7 +56,7 @@ interface BlockProcessor {
fun processCompositeBlock(block: Block)
}
class DiffInfoImpl(private val insertedRanges: List<TextRange>): DiffInfo {
class DiffInfoImpl(private val insertedRanges: Collection<TextRange>): DiffInfo {
override fun isOnInsertedLine(offset: Int) = insertedRanges.find { it.contains(offset) } != null
}
@@ -164,8 +164,12 @@ public class CodeStyleManagerImpl extends CodeStyleManager {
}
@Override
public void reformatTextWithContext(@NotNull PsiFile file, @NotNull Collection<TextRange> ranges, @Nullable DiffInfo info) throws IncorrectOperationException {
FormatTextRanges formatRanges = new FormatTextRanges(info);
public void reformatTextWithContext(@NotNull PsiFile file,
@NotNull Collection<TextRange> ranges,
@Nullable Collection<TextRange> insertedRanges) throws IncorrectOperationException
{
DiffInfo diffInfo = insertedRanges != null ? new DiffInfoImpl(insertedRanges) : null;
FormatTextRanges formatRanges = new FormatTextRanges(diffInfo);
ranges.forEach((range) -> formatRanges.add(range, true));
reformatText(file, formatRanges, null, true);
}
@@ -25,7 +25,6 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.codeStyle.DiffInfo;
import com.intellij.psi.codeStyle.Indent;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.ThrowableRunnable;
@@ -75,7 +74,7 @@ public class MockCodeStyleManager extends CodeStyleManager {
@Override
public void reformatTextWithContext(@NotNull PsiFile file,
@NotNull Collection<TextRange> ranges,
@Nullable DiffInfo diffInfo) throws IncorrectOperationException {
@Nullable Collection<TextRange> insertedRanges) throws IncorrectOperationException {
reformatText(file, ranges);
}