mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
convenience method Segment.contains
GitOrigin-RevId: e2ded31d577c1aaa627482dcef557bce2fcaaefc
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3fa289a400
commit
71082f6f3c
+1
-1
@@ -93,7 +93,7 @@ final class JavaDeclarationMover extends LineMover {
|
||||
}
|
||||
|
||||
private static boolean contains(RangeMarker rangeMarker, int index) {
|
||||
return rangeMarker.getStartOffset() <= index && rangeMarker.getEndOffset() >= index;
|
||||
return rangeMarker.getTextRange().containsInclusive(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ public final class FieldFromParameterUtils {
|
||||
PsiParameter[] parameters = parameterList.getParameters();
|
||||
for (PsiParameter parameter : parameters) {
|
||||
TextRange range = parameter.getTextRange();
|
||||
if (range.getStartOffset() <= offset && offset <= range.getEndOffset()) return parameter;
|
||||
if (range.containsInclusive(offset)) return parameter;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ public class IndexPatternSearcher extends QueryExecutorBase<IndexPatternOccurren
|
||||
int start = fitToRange(matcher.start(), commentPrefixLength, suffixStartOffset) + commentStart - commentPrefixLength;
|
||||
int end = fitToRange(matcher.end(), commentPrefixLength, suffixStartOffset) + commentStart - commentPrefixLength;
|
||||
if (start != end) {
|
||||
if ((range == null || range.getStartOffset() <= start && end <= range.getEndOffset()) && !matches.contains(start)) {
|
||||
if ((range == null || range.containsRange(start, end)) && !matches.contains(start)) {
|
||||
List<TextRange> additionalRanges = multiLine ? findContinuation(start, chars, allIndexPatterns, commentRanges, commentNum)
|
||||
: Collections.emptyList();
|
||||
if (range != null && !additionalRanges.isEmpty() &&
|
||||
|
||||
+1
-1
@@ -171,7 +171,7 @@ class IdentifierHighlightingManagerImpl(private val myProject: Project) : Identi
|
||||
|
||||
// true if this Result is valid when the caret is at offset
|
||||
private fun containsTargetOffset(result: IdentifierHighlightingResult, offset: Int): Boolean {
|
||||
return result.targets.any { t -> t.getStartOffset() <= offset && offset <= t.getEndOffset() }
|
||||
return result.targets.any { t -> t.containsInclusive(offset) }
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
+2
-16
@@ -185,7 +185,7 @@ final class MoverWrapper {
|
||||
private static FoldRegion findTopLevelRegionInRange(Editor editor, RangeMarker range) {
|
||||
FoldRegion result = null;
|
||||
for (FoldRegion foldRegion : editor.getFoldingModel().getAllFoldRegions()) {
|
||||
if (foldRegion.isValid() && contains(range, foldRegion) && !contains(result, foldRegion)) {
|
||||
if (foldRegion.isValid() && contains(range, foldRegion) && (result==null||!contains(result, foldRegion))) {
|
||||
result = foldRegion;
|
||||
}
|
||||
}
|
||||
@@ -201,21 +201,7 @@ final class MoverWrapper {
|
||||
* of the given fold region; {@code false} otherwise
|
||||
*/
|
||||
private static boolean contains(@NotNull RangeMarker rangeMarker, @NotNull FoldRegion foldRegion) {
|
||||
return rangeMarker.getStartOffset() <= foldRegion.getStartOffset() && rangeMarker.getEndOffset() >= foldRegion.getEndOffset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows to check if given {@code 'region2'} is nested to {@code 'region1'}
|
||||
*
|
||||
* @param region1 'outer' region candidate
|
||||
* @param region2 'inner' region candidate
|
||||
* @return {@code true} if 'region2' is nested to 'region1'; {@code false} otherwise
|
||||
*/
|
||||
private static boolean contains(@Nullable FoldRegion region1, @NotNull FoldRegion region2) {
|
||||
if (region1 == null) {
|
||||
return false;
|
||||
}
|
||||
return region1.getStartOffset() <= region2.getStartOffset() && region1.getEndOffset() >= region2.getEndOffset();
|
||||
return rangeMarker.getTextRange().contains(foldRegion.getTextRange());
|
||||
}
|
||||
|
||||
private static void indentLinesIn(final Editor editor, final PsiFile file, final Document document, final Project project, RangeMarker range) {
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ public final class SaveAsTemplateAction extends AnAction {
|
||||
for (RangeMarker m1 : rangeToText.keySet()) {
|
||||
boolean nested = false;
|
||||
for (RangeMarker m2 : rangeToText.keySet()) {
|
||||
if (m1 != m2 && m2.getStartOffset() <= m1.getStartOffset() && m1.getEndOffset() <= m2.getEndOffset()) {
|
||||
if (m1 != m2 && m2.getTextRange().contains(m1.getTextRange())) {
|
||||
nested = true;
|
||||
break;
|
||||
}
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ public class SelectAllHandler extends EditorActionHandler {
|
||||
if (templateState != null && !templateState.isFinished()) {
|
||||
final TextRange range = templateState.getCurrentVariableRange();
|
||||
final int caretOffset = editor.getCaretModel().getOffset();
|
||||
if (range != null && range.getStartOffset() <= caretOffset && caretOffset <= range.getEndOffset()) {
|
||||
if (range != null && range.containsInclusive(caretOffset)) {
|
||||
editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -116,7 +116,9 @@ public final class ConsoleTokenUtil {
|
||||
RangeMarker[] marker = new RangeMarker[1];
|
||||
MarkupModelEx model = (MarkupModelEx)DocumentMarkupModel.forDocument(editor.getDocument(), project, true);
|
||||
model.processRangeHighlightersOverlappingWith(offset, offset, m->{
|
||||
if (getTokenType(m) == null || m.getStartOffset() > offset || offset + 1 > m.getEndOffset()) return true;
|
||||
if (getTokenType(m) == null || !m.getTextRange().contains(offset)) {
|
||||
return true;
|
||||
}
|
||||
marker[0] = m;
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -852,7 +852,7 @@ public final class ShowUsagesAction extends AnAction implements PopupAction, Hin
|
||||
|
||||
for (UsageInfo info : adapter.getMergedInfos()) {
|
||||
Segment range = doIfNotNull(info.getPsiFileRange(), it -> ReadAction.compute(it::getRange));
|
||||
if (range != null && range.getStartOffset() <= offset && offset <= range.getEndOffset()) {
|
||||
if (range != null && range.containsInclusive(offset)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -978,7 +978,7 @@ public abstract class InplaceRefactoring {
|
||||
range = myRenameOffset.getTextRange();
|
||||
}
|
||||
myBeforeRevert =
|
||||
range != null && range.getEndOffset() >= currentOffset && range.getStartOffset() <= currentOffset
|
||||
range != null && range.containsInclusive(currentOffset)
|
||||
? myEditor.getDocument().createRangeMarker(range.getStartOffset(), currentOffset)
|
||||
: null;
|
||||
if (myBeforeRevert != null) {
|
||||
|
||||
+1
-1
@@ -262,7 +262,7 @@ public class VariableInplaceRenamer extends InplaceRefactoring {
|
||||
|
||||
static int restoreCaretOffset(@NotNull RangeMarker caretRangeMarker, int offset) {
|
||||
if (caretRangeMarker.isValid()) {
|
||||
if (caretRangeMarker.getStartOffset() <= offset && caretRangeMarker.getEndOffset() >= offset) {
|
||||
if (caretRangeMarker.getTextRange().containsInclusive(offset)) {
|
||||
return offset;
|
||||
}
|
||||
return caretRangeMarker.getEndOffset();
|
||||
|
||||
@@ -43,7 +43,7 @@ public final class FoldingUtil {
|
||||
List<FoldRegion> list = new ArrayList<>();
|
||||
FoldRegion[] allRegions = editor.getFoldingModel().getAllFoldRegions();
|
||||
for (FoldRegion region : allRegions) {
|
||||
if (region.getStartOffset() <= offset && offset <= region.getEndOffset()) {
|
||||
if (region.getTextRange().containsInclusive(offset)) {
|
||||
list.add(region);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4094,7 +4094,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
p.x = x - p.x;
|
||||
p.y = y - p.y;
|
||||
int pos = logicalPositionToOffset(xyToLogicalPosition(p));
|
||||
if (composedRangeMarker.getStartOffset() <= pos && pos <= composedRangeMarker.getEndOffset()) {
|
||||
if (composedRangeMarker.getTextRange().containsInclusive(pos)) {
|
||||
return TextHitInfo.leading(pos - composedRangeMarker.getStartOffset());
|
||||
}
|
||||
}
|
||||
@@ -5386,7 +5386,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
|
||||
int caretOffset = editor.getCaretModel().getOffset();
|
||||
if (editor.myDraggedRange != null
|
||||
&& editor.myDraggedRange.getStartOffset() <= caretOffset && caretOffset < editor.myDraggedRange.getEndOffset()) {
|
||||
&& editor.myDraggedRange.getTextRange().contains(caretOffset)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -170,7 +170,7 @@ public class InvokeCompletion extends ActionOnFile {
|
||||
Editor hostEditor = InjectedLanguageEditorUtil.getTopLevelEditor(editor);
|
||||
List<HighlightInfo> infos = InvokeIntention.highlightErrors(getProject(), hostEditor);
|
||||
int caretOffset = hostEditor.getCaretModel().getOffset();
|
||||
boolean hasErrors = ContainerUtil.exists(infos, i -> i.getStartOffset() <= caretOffset && caretOffset <= i.getEndOffset());
|
||||
boolean hasErrors = ContainerUtil.exists(infos, i -> i.containsInclusive(caretOffset));
|
||||
if (hasErrors) {
|
||||
env.logMessage("Found syntax errors at the completion point, skipping expected completion check for '" + expectedVariant + "'");
|
||||
return false;
|
||||
|
||||
@@ -20,6 +20,8 @@ c:com.intellij.openapi.progress.ProcessCanceledException
|
||||
com.intellij.openapi.util.Segment
|
||||
- sf:BY_START_OFFSET_THEN_END_OFFSET:java.util.Comparator
|
||||
- sf:EMPTY_ARRAY:com.intellij.openapi.util.Segment[]
|
||||
- contains(I):Z
|
||||
- containsInclusive(I):Z
|
||||
- a:getEndOffset():I
|
||||
- a:getStartOffset():I
|
||||
c:com.intellij.openapi.util.TextRange
|
||||
|
||||
@@ -20,4 +20,19 @@ public interface Segment {
|
||||
if (result == 0) result = r1.getEndOffset() - r2.getEndOffset();
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* @return true if {@link #getStartOffset()} {@code <= offset && offset < } {@link #getEndOffset()}
|
||||
*/
|
||||
@Contract(pure = true)
|
||||
default boolean contains(int offset) {
|
||||
return getStartOffset() <= offset && offset < getEndOffset();
|
||||
}
|
||||
/**
|
||||
* @return true if {@link #getStartOffset()} {@code <= offset && offset <= } {@link #getEndOffset()}
|
||||
*/
|
||||
@Contract(pure = true)
|
||||
default boolean containsInclusive(int offset) {
|
||||
return getStartOffset() <= offset && offset <= getEndOffset();
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -67,7 +67,7 @@ class RestoreCaret<T : PsiElement>(beforeElement: T, val editor: Editor?) {
|
||||
if (singleCaret != null) {
|
||||
val caretOffset = singleCaret.offset
|
||||
val textRange = element.textRange
|
||||
if (textRange.startOffset <= caretOffset && caretOffset <= textRange.endOffset) {
|
||||
if (textRange.containsInclusive(caretOffset)) {
|
||||
val relative = caretOffset - element.startOffset
|
||||
if (relative >= 0) {
|
||||
return relative
|
||||
|
||||
+1
-1
@@ -419,7 +419,7 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase(), Q
|
||||
val editor = myFixture.editor
|
||||
//DaemonCodeAnalyzerImpl.waitForUnresolvedReferencesQuickFixesUnderCaret(file, editor)
|
||||
for (highlight in highlightInfos) {
|
||||
if (highlight.startOffset <= caretOffset && caretOffset <= highlight.endOffset) {
|
||||
if (highlight.containsInclusive(caretOffset)) {
|
||||
val group = highlight.problemGroup
|
||||
if (group is SuppressableProblemGroup) {
|
||||
val at = file.findElementAt(highlight.actualStartOffset) ?: continue
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ internal class TerminalTextHighlighterTest {
|
||||
for (documentOffset in 0 until outputManager.document.textLength) {
|
||||
val iterator = outputManager.terminalOutputHighlighter.createIterator(documentOffset)
|
||||
Assert.assertTrue(!iterator.atEnd())
|
||||
val expectedTextRange = ranges.find { it.startOffset <= documentOffset && documentOffset < it.endOffset }
|
||||
val expectedTextRange = ranges.find { it.contains(documentOffset) }
|
||||
Assert.assertNotNull(expectedTextRange)
|
||||
Assert.assertEquals(expectedTextRange, TextRange(iterator.start, iterator.end))
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class XmlParameterInfoHandler implements ParameterInfoHandler<XmlTag,XmlE
|
||||
|
||||
for (PsiElement child : children) {
|
||||
final TextRange range = child.getTextRange();
|
||||
if (range.getStartOffset() <= offset && range.getEndOffset() > offset) return tag;
|
||||
if (range.contains(offset)) return tag;
|
||||
|
||||
if (child instanceof XmlToken token) {
|
||||
if (token.getTokenType() == XmlTokenType.XML_TAG_END) return null;
|
||||
|
||||
@@ -247,8 +247,7 @@ public class XmlTagBlock extends AbstractXmlBlock {
|
||||
result.add(reg);
|
||||
i++;
|
||||
}
|
||||
else if (injRange.getStartOffset() <= regRange.getStartOffset()
|
||||
&& regRange.getEndOffset() <= injRange.getEndOffset()) {
|
||||
else if (injRange.contains(regRange)) {
|
||||
// Regular block completely within injected - skip
|
||||
i++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user