private static void scrollCaretIntoView(@NotNull Editor editor) { final boolean scrollJump = (CommandState.getInstance(editor).getFlags() & Command.FLAG_IGNORE_SCROLL_JUMP) == 0; scrollPositionIntoView(editor, editor.getCaretModel().getVisualPosition(), scrollJump); }
public boolean scrollColumn(@NotNull Editor editor, int columns) { int visualColumn = EditorHelper.getVisualColumnAtLeftOfScreen(editor); visualColumn = EditorHelper .normalizeVisualColumn(editor, editor.getCaretModel().getVisualPosition().line, visualColumn + columns, false); scrollColumnToLeftOfScreen(editor, visualColumn); moveCaretToView(editor); return true; }
private void scrollColumnToScreenColumn(@NotNull Editor editor, int column) { int scrollOffset = ((NumberOption) Options.getInstance().getOption("sidescrolloff")).value(); int width = EditorHelper.getScreenWidth(editor); if (scrollOffset > width / 2) { scrollOffset = width / 2; } if (column <= width / 2) { if (column < scrollOffset + 1) { column = scrollOffset + 1; } } else { if (column > width - scrollOffset) { column = width - scrollOffset; } } int visualColumn = editor.getCaretModel().getVisualPosition().column; scrollColumnToLeftOfScreen(editor, EditorHelper .normalizeVisualColumn(editor, editor.getCaretModel().getVisualPosition().line, visualColumn - column + 1, false)); }
private static int getScrollScreenTargetCaretVisualLine(@NotNull final Editor editor, int rawCount, boolean down) { final Rectangle visibleArea = editor.getScrollingModel().getVisibleArea(); final int caretVisualLine = editor.getCaretModel().getVisualPosition().line; final int scrollOption = getScrollOption(rawCount); int targetCaretVisualLine; if (scrollOption == 0) { // Scroll up/down half window size by default. We can't use line count here because of block inlays final int offset = down ? (visibleArea.height / 2) : editor.getLineHeight() - (visibleArea.height / 2); targetCaretVisualLine = editor.yToVisualLine(editor.visualLineToY(caretVisualLine) + offset); } else { targetCaretVisualLine = down ? caretVisualLine + scrollOption : caretVisualLine - scrollOption; } return targetCaretVisualLine; }
final int lineCount = getVisualLineCount(editor); if (editor.getCaretModel().getVisualPosition().line == lineCount - 1) return -1;
final ScrollingModel scrollingModel = editor.getScrollingModel(); final Rectangle visibleArea = scrollingModel.getVisibleArea(); final int caretScreenOffset = editor.visualLineToY(editor.getCaretModel().getVisualPosition().line) - visibleArea.y;
? editor.getCaretModel().getVisualPosition().line : EditorHelper.logicalLineToVisualLine(editor, line - 1); break; if (visualLine != editor.getCaretModel().getVisualPosition().line || start) { int offset; if (start) {
public void testUpDownMove() { final Editor editor = typeTextInFile(parseKeys("2j", "k"), "one\n" + "tw<caret>o\n" + "three\n" + "four\n"); final VisualPosition position = editor.getCaretModel().getVisualPosition(); assertEquals(new VisualPosition(2, 2), position); }
final int yInitialCaret = editor.visualLineToY(caretModel.getVisualPosition().line); final int yTargetVisualLine = editor.visualLineToY(targetCaretVisualLine); if (Math.abs(yTargetVisualLine - yInitialCaret) > visibleArea.height) {
int caretVisualLine = editor.getCaretModel().getVisualPosition().line; int newline = caretVisualLine; if (caretVisualLine < topVisualLine + scrollOffset) { int col = editor.getCaretModel().getVisualPosition().column; int oldColumn = col; if (col >= EditorHelper.getLineLength(editor) - 1) {
VisualPosition vp = caretModel.getVisualPosition(); int col = EditorHelper.normalizeVisualColumn(editor, vp.line, vp.column, CommandState.getInstance(editor).getMode() == CaretData.setLastColumn(editor, caretModel.getPrimaryCaret(), caretModel.getVisualPosition().column);