From 961d892f9a3b85eabc79ae4b7ba24e26a840464a Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 23 Sep 2014 19:04:05 +0400 Subject: [PATCH] diff: LST - simplify --- .../openapi/vcs/ex/LineStatusTracker.java | 33 +++++-------------- .../com/intellij/openapi/vcs/ex/Range.java | 13 ++++++++ 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java index 86d85aa098c8..98d228eab3d5 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java @@ -651,16 +651,10 @@ public class LineStatusTracker { @Nullable public Range getNextRange(final int line) { synchronized (myLock) { - final Range currentRange = getRangeForLine(line); - if (currentRange != null) { - return getNextRange(currentRange); - } - - for (final Range range : myRanges) { - if (line > range.getLine1() || line > range.getLine2()) { - continue; + for (Range range : myRanges) { + if (line < range.getLine2() && !range.isSelectedByLine(line)) { + return range; } - return range; } return null; } @@ -669,17 +663,11 @@ public class LineStatusTracker { @Nullable public Range getPrevRange(final int line) { synchronized (myLock) { - final Range currentRange = getRangeForLine(line); - if (currentRange != null) { - return getPrevRange(currentRange); - } - - for (ListIterator iterator = myRanges.listIterator(myRanges.size()); iterator.hasPrevious(); ) { - final Range range = iterator.previous(); - if (range.getLine1() > line) { - continue; + for (int i = myRanges.size() - 1; i >= 0; i--) { + Range range = myRanges.get(i); + if (line > range.getLine1() && !range.isSelectedByLine(line)) { + return range; } - return range; } return null; } @@ -689,12 +677,7 @@ public class LineStatusTracker { public Range getRangeForLine(final int line) { synchronized (myLock) { for (final Range range : myRanges) { - if (range.getType() == Range.DELETED && line == range.getLine1()) { - return range; - } - else if (line >= range.getLine1() && line < range.getLine2()) { - return range; - } + if (range.isSelectedByLine(line)) return range; } return null; } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java index e788b1849ce3..227ffcc875ff 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java @@ -160,4 +160,17 @@ public class Range { public void invalidate() { myValid = false; } + + /* + * Check, if caret at is corresponds to the current range + */ + public boolean isSelectedByLine(int line) { + if (getType() == DELETED && line == myLine1) { + return true; + } + else if (line >= myLine1 && line < myLine2) { + return true; + } + return false; + } }