/** * Begin insert at the location of the previous insert * * @param editor The editor to insert into */ public void insertAtPreviousInsert(@NotNull Editor editor, @NotNull DataContext context) { editor.getCaretModel().removeSecondaryCarets(); final Caret caret = editor.getCaretModel().getPrimaryCaret(); final int offset = VimPlugin.getMotion().moveCaretToMark(editor, '^', false); if (offset != -1) { MotionGroup.moveCaret(editor, caret, offset); } insertAfterCursor(editor, context); }
public void resetVisual(@NotNull final Editor editor, final boolean removeSelection) { final boolean wasVisualBlock = CommandState.inVisualBlockMode(editor); final SelectionType selectionType = SelectionType.fromSubMode(CommandState.getInstance(editor).getSubMode()); EditorData.setLastSelectionType(editor, selectionType); final TextRange visualMarks = VimPlugin.getMark().getVisualSelectionMarks(editor); if (visualMarks != null) { EditorData.setLastVisualRange(editor, visualMarks); } if (removeSelection) { if (!EditorData.isKeepingVisualOperatorAction(editor)) { for (Caret caret : editor.getCaretModel().getAllCarets()) { caret.removeSelection(); } } if (wasVisualBlock) { editor.getCaretModel().removeSecondaryCarets(); } } CommandState.getInstance(editor).setSubMode(CommandState.SubMode.NONE); }
public boolean selectPreviousVisualMode(@NotNull Editor editor) { final SelectionType lastSelectionType = EditorData.getLastSelectionType(editor); if (lastSelectionType == null) { return false; } final TextRange visualMarks = VimPlugin.getMark().getVisualSelectionMarks(editor); if (visualMarks == null) { return false; } editor.getCaretModel().removeSecondaryCarets(); CommandState.getInstance(editor) .pushState(CommandState.Mode.VISUAL, lastSelectionType.toSubMode(), MappingMode.VISUAL); Caret primaryCaret = editor.getCaretModel().getPrimaryCaret(); CaretData.setVisualStart(primaryCaret, visualMarks.getStartOffset()); CaretData.setVisualEnd(primaryCaret, visualMarks.getEndOffset()); CaretData.setVisualOffset(primaryCaret, visualMarks.getEndOffset()); updateSelection(editor, primaryCaret, visualMarks.getEndOffset()); primaryCaret.moveToOffset(visualMarks.getEndOffset()); editor.getScrollingModel().scrollToCaret(ScrollType.CENTER); return true; }
public boolean swapVisualSelections(@NotNull Editor editor) { final SelectionType lastSelectionType = EditorData.getLastSelectionType(editor); final TextRange lastVisualRange = EditorData.getLastVisualRange(editor); if (lastSelectionType == null || lastVisualRange == null) { return false; } final SelectionType selectionType = SelectionType.fromSubMode(CommandState.getInstance(editor).getSubMode()); EditorData.setLastSelectionType(editor, selectionType); editor.getCaretModel().removeSecondaryCarets(); Caret primaryCaret = editor.getCaretModel().getPrimaryCaret(); CaretData.setVisualStart(primaryCaret, lastVisualRange.getStartOffset()); CaretData.setVisualEnd(primaryCaret, lastVisualRange.getEndOffset()); CaretData.setVisualOffset(primaryCaret, lastVisualRange.getEndOffset()); CommandState.getInstance(editor).setSubMode(lastSelectionType.toSubMode()); updateSelection(editor, primaryCaret, lastVisualRange.getEndOffset()); primaryCaret.moveToOffset(lastVisualRange.getEndOffset()); editor.getScrollingModel().scrollToCaret(ScrollType.CENTER); return true; }
caretModel.removeSecondaryCarets();
/** * @return all carets offsets. Secondary carets removed */ protected List<Integer> getAndRemoveCarets() { CaretModel caretModel = getEditor().getCaretModel(); List<Integer> caretsOffsets = ContainerUtil.map(caretModel.getAllCarets(), Caret::getOffset); caretModel.removeSecondaryCarets(); return caretsOffsets; } protected void doTestWorldSelector() {