void (final boolean toUseNormalSelection, final @NotNull Editor editor, final boolean toSelectLine, final TextRange textRange) { int startOffset = textRange.getStartOffset(); int endOffset = textRange.getEndOffset(); if (toUseNormalSelection) { DocumentEx doc = (DocumentEx) editor.getDocument(); if (toSelectLine){ int lineNumber = doc.getLineNumber(startOffset); if (lineNumber >= 0 && lineNumber < doc.getLineCount()) { editor.getSelectionModel().setSelection(doc.getLineStartOffset(lineNumber), doc.getLineEndOffset(lineNumber) + doc.getLineSeparatorLength(lineNumber)); } } else { editor.getSelectionModel().setSelection(startOffset, endOffset); } return; } releaseAll(); if (toSelectLine){ DocumentEx doc = (DocumentEx) editor.getDocument(); int lineNumber = doc.getLineNumber(startOffset); if (lineNumber >= 0 && lineNumber < doc.getLineCount()){ mySegmentHighlighter = editor.getMarkupModel().addRangeHighlighter(EditorColors.SEARCH_RESULT_ATTRIBUTES, doc.getLineStartOffset(lineNumber), doc.getLineEndOffset(lineNumber) + doc.getLineSeparatorLength(lineNumber), HighlighterLayer.LAST + 1, HighlighterTargetArea.EXACT_RANGE); } } else{ mySegmentHighlighter = editor.getMarkupModel().addRangeHighlighter(EditorColors.SEARCH_RESULT_ATTRIBUTES, startOffset, endOffset, HighlighterLayer.LAST + 1, HighlighterTargetArea.EXACT_RANGE); } myEditor = editor; myEditor.getContentComponent().addFocusListener(this); myEditor.getCaretModel().addCaretListener(this); }