From 33b8e048709d5aa8d5898918e5d4047662c7a6e1 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 6 Mar 2017 15:08:26 +0300 Subject: [PATCH] merge: extract method --- .../intellij/diff/merge/TextMergeViewer.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/merge/TextMergeViewer.java b/platform/diff-impl/src/com/intellij/diff/merge/TextMergeViewer.java index 26c5edfd2a1f..7a17322825d0 100644 --- a/platform/diff-impl/src/com/intellij/diff/merge/TextMergeViewer.java +++ b/platform/diff-impl/src/com/intellij/diff/merge/TextMergeViewer.java @@ -791,7 +791,17 @@ public class TextMergeViewer implements MergeTool.MergeViewer { if (changeFragment.getStartLine(ThreeSide.BASE) == changeFragment.getEndLine(ThreeSide.BASE)) return null; if (changeFragment.getStartLine(ThreeSide.RIGHT) == changeFragment.getEndLine(ThreeSide.RIGHT)) return null; + if (isChangeRangeModified(change)) return null; + List texts = ThreeSide.map(side -> { + return DiffUtil.getLinesContent(getEditor(side).getDocument(), change.getStartLine(side), change.getEndLine(side)); + }); + + return ComparisonMergeUtil.tryResolveConflict(texts.get(0), texts.get(1), texts.get(2)); + } + + private boolean isChangeRangeModified(@NotNull TextMergeChange change) { + MergeLineFragment changeFragment = change.getFragment(); int baseStartLine = changeFragment.getStartLine(ThreeSide.BASE); int baseEndLine = changeFragment.getEndLine(ThreeSide.BASE); DiffContent baseDiffContent = ThreeSide.BASE.select(myMergeRequest.getContents()); @@ -803,14 +813,7 @@ public class TextMergeViewer implements MergeTool.MergeViewer { CharSequence baseContent = DiffUtil.getLinesContent(baseDocument, baseStartLine, baseEndLine); CharSequence resultContent = DiffUtil.getLinesContent(resultDocument, resultStartLine, resultEndLine); - if (!StringUtil.equals(baseContent, resultContent)) return null; - - - List texts = ThreeSide.map((side) -> { - return DiffUtil.getLinesContent(getEditor(side).getDocument(), change.getStartLine(side), change.getEndLine(side)); - }); - - return ComparisonMergeUtil.tryResolveConflict(texts.get(0), texts.get(1), texts.get(2)); + return !StringUtil.equals(baseContent, resultContent); } public boolean canResolveConflictedChange(@NotNull TextMergeChange change) {