mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[collab]: Adjust lineToLocation for unified diff to return null when exact matching is not possible (#IJPL-82603)
GitOrigin-RevId: d68988bb49157c84f4d49af1f3cd12ec0648dd9d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
beab39411f
commit
bd4d43d790
+1
-1
@@ -221,7 +221,7 @@ suspend fun DiffViewerBase.showCodeReview(editorRenderer: EditorCodeReviewRender
|
||||
null,
|
||||
{ (side, lineIdx) -> viewer.transferLineToOnesideStrict(side, lineIdx).takeIf { it >= 0 } },
|
||||
{ lineIdx ->
|
||||
val (indices, side) = viewer.transferLineFromOneside(lineIdx)
|
||||
val (indices, side) = viewer.transferLineFromOnesideStrict(lineIdx) ?: return@editorRenderer null
|
||||
side.select(indices).takeIf { it >= 0 }?.let { side to it }
|
||||
},
|
||||
{ line ->
|
||||
|
||||
@@ -841,6 +841,7 @@ c:com.intellij.diff.tools.fragmented.UnifiedDiffViewer
|
||||
- scrollToLine(com.intellij.diff.util.Side,I):V
|
||||
- transferLineFromOneside(I):com.intellij.openapi.util.Pair
|
||||
- transferLineFromOneside(com.intellij.diff.util.Side,I):I
|
||||
- transferLineFromOnesideStrict(I):com.intellij.openapi.util.Pair
|
||||
- transferLineFromOnesideStrict(com.intellij.diff.util.Side,I):I
|
||||
- transferLineToOneside(com.intellij.diff.util.Side,I):I
|
||||
- transferLineToOnesideStrict(com.intellij.diff.util.Side,I):I
|
||||
|
||||
@@ -582,6 +582,17 @@ public class UnifiedDiffViewer extends ListenerDiffViewerBase implements EditorD
|
||||
* This convertor returns 'good enough' position, even if exact matching is impossible
|
||||
*/
|
||||
public @NotNull Pair<int[], @NotNull Side> transferLineFromOneside(int line) {
|
||||
return Objects.requireNonNull(transferLineFromOneside(line, false));
|
||||
}
|
||||
|
||||
/*
|
||||
* This convertor returns position strictly. Returns null if exact matching is not possible
|
||||
*/
|
||||
public @Nullable Pair<int[], @NotNull Side> transferLineFromOnesideStrict(int line) {
|
||||
return transferLineFromOneside(line, true);
|
||||
}
|
||||
|
||||
private @Nullable Pair<int[], @NotNull Side> transferLineFromOneside(int line, boolean strictConversion) {
|
||||
int[] lines = new int[2];
|
||||
|
||||
ChangedBlockData blockData = myModel.getData();
|
||||
@@ -599,6 +610,7 @@ public class UnifiedDiffViewer extends ListenerDiffViewerBase implements EditorD
|
||||
lines[1] = lineConvertor2.convert(line);
|
||||
|
||||
if (lines[0] == -1 && lines[1] == -1) {
|
||||
if(strictConversion) return null;
|
||||
lines[0] = lineConvertor1.convertApproximate(line);
|
||||
lines[1] = lineConvertor2.convertApproximate(line);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user