当前位置: 首页>>代码示例>>Java>>正文


Java EditorUtil.calcSurroundingRange方法代码示例

本文整理汇总了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);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:21,代码来源:NamedElementDuplicateHandler.java

示例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);
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:27,代码来源:PyExecuteSelectionAction.java

示例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());
}
 
开发者ID:vsch,项目名称:MissingInActions,代码行数:40,代码来源:EditHelpers.java

示例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());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:30,代码来源:DuplicateAction.java

示例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();
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:15,代码来源:PyExecuteSelectionAction.java


注:本文中的com.intellij.openapi.editor.ex.util.EditorUtil.calcSurroundingRange方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。