本文整理汇总了Java中com.intellij.openapi.editor.ex.util.EditorUtil.calcSurroundingRange方法的典型用法代码示例。如果您正苦于以下问题:Java EditorUtil.calcSurroundingRange方法的具体用法?Java EditorUtil.calcSurroundingRange怎么用?Java EditorUtil.calcSurroundingRange使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.intellij.openapi.editor.ex.util.EditorUtil
的用法示例。
在下文中一共展示了EditorUtil.calcSurroundingRange方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: executeWriteAction
import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
@Override
public void executeWriteAction(Editor editor, DataContext dataContext) {
Project project = editor.getProject();
if (project != null && !editor.getSelectionModel().hasSelection()) {
PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument());
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (file != null) {
VisualPosition caret = editor.getCaretModel().getVisualPosition();
Pair<LogicalPosition, LogicalPosition> lines = EditorUtil.calcSurroundingRange(editor, caret, caret);
TextRange toDuplicate = new TextRange(editor.logicalPositionToOffset(lines.first), editor.logicalPositionToOffset(lines.second));
PsiElement name = findNameIdentifier(editor, file, toDuplicate);
if (name != null && !name.getTextRange().containsOffset(editor.getCaretModel().getOffset())) {
editor.getCaretModel().moveToOffset(name.getTextOffset());
}
}
}
myOriginal.execute(editor, dataContext);
}
示例2: moveCaretDown
import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
private static void moveCaretDown(Editor editor) {
VisualPosition pos = editor.getCaretModel().getVisualPosition();
Pair<LogicalPosition, LogicalPosition> lines = EditorUtil.calcSurroundingRange(editor, pos, pos);
int offset = editor.getCaretModel().getOffset();
LogicalPosition lineStart = lines.first;
LogicalPosition nextLineStart = lines.second;
int start = editor.logicalPositionToOffset(lineStart);
int end = editor.logicalPositionToOffset(nextLineStart);
Document document = editor.getDocument();
if (nextLineStart.line < document.getLineCount()) {
int newOffset = end + offset - start;
int nextLineEndOffset = document.getLineEndOffset(nextLineStart.line);
if (newOffset >= nextLineEndOffset) {
newOffset = nextLineEndOffset;
}
editor.getCaretModel().moveToOffset(newOffset);
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
}
}
示例3: duplicateLinesRange
import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
@SuppressWarnings("WeakerAccess")
@Nullable
public static Couple<Integer> duplicateLinesRange(
Editor editor,
Document document,
@Nullable Caret caret,
int offset,
VisualPosition rangeStart,
VisualPosition rangeEnd,
boolean moveCaret
) {
Pair<LogicalPosition, LogicalPosition> lines = EditorUtil.calcSurroundingRange(editor, rangeStart, rangeEnd);
LogicalPosition lineStart = lines.first;
LogicalPosition nextLineStart = lines.second;
int start = editor.logicalPositionToOffset(lineStart);
int end = editor.logicalPositionToOffset(nextLineStart);
if (end <= start) {
return null;
}
String s = document.getCharsSequence().subSequence(start, end).toString();
final int lineToCheck = nextLineStart.line - 1;
int newOffset = end + offset - start;
if (lineToCheck == document.getLineCount() /* empty document */
|| lineStart.line == document.getLineCount() - 1 /* last line*/
|| document.getLineSeparatorLength(lineToCheck) == 0) {
s = "\n" + s;
newOffset++;
}
document.insertString(end, s);
if (moveCaret && caret != null) {
caret.moveToOffset(newOffset);
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
}
return Couple.of(end, end + s.length());
}
示例4: duplicateLinesRange
import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
@Nullable
static Couple<Integer> duplicateLinesRange(Editor editor, Document document, VisualPosition rangeStart, VisualPosition rangeEnd) {
Pair<LogicalPosition, LogicalPosition> lines = EditorUtil.calcSurroundingRange(editor, rangeStart, rangeEnd);
int offset = editor.getCaretModel().getOffset();
LogicalPosition lineStart = lines.first;
LogicalPosition nextLineStart = lines.second;
int start = editor.logicalPositionToOffset(lineStart);
int end = editor.logicalPositionToOffset(nextLineStart);
if (end <= start) {
return null;
}
String s = document.getCharsSequence().subSequence(start, end).toString();
final int lineToCheck = nextLineStart.line - 1;
int newOffset = end + offset - start;
if(lineToCheck == document.getLineCount () /* empty document */
|| lineStart.line == document.getLineCount() - 1 /* last line*/
|| document.getLineSeparatorLength(lineToCheck) == 0)
{
s = "\n"+s;
newOffset++;
}
document.insertString(end, s);
editor.getCaretModel().moveToOffset(newOffset);
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
return Couple.of(end, end + s.length());
}
示例5: getLineUnderCaret
import com.intellij.openapi.editor.ex.util.EditorUtil; //导入方法依赖的package包/类
private static String getLineUnderCaret(Editor editor) {
VisualPosition caretPos = editor.getCaretModel().getVisualPosition();
Pair<LogicalPosition, LogicalPosition> lines = EditorUtil.calcSurroundingRange(editor, caretPos, caretPos);
LogicalPosition lineStart = lines.first;
LogicalPosition nextLineStart = lines.second;
int start = editor.logicalPositionToOffset(lineStart);
int end = editor.logicalPositionToOffset(nextLineStart);
if (end <= start) {
return null;
}
return editor.getDocument().getCharsSequence().subSequence(start, end).toString();
}