@NotNull private List<AnAction> getAdjustCaretActions(@NotNull DocumentEvent e) { final int delta = e.getOffset() - oldOffset; if (oldOffset >= 0 && delta != 0) { final List<AnAction> positionCaretActions = new ArrayList<>(); final String motionName = delta < 0 ? "VimMotionLeft" : "VimMotionRight"; final AnAction action = ActionManager.getInstance().getAction(motionName); final int count = Math.abs(delta); for (int i = 0; i < count; i++) { positionCaretActions.add(action); } return positionCaretActions; } return Collections.emptyList(); } }
oldOffset = e.getOffset() + newFragmentLength;
/** * This event indicates that a document was just changed. We use this event to update all the editor's * marks if text was just added. * * @param event The change event */ public void documentChanged(@NotNull DocumentEvent event) { if (!VimPlugin.isEnabled()) return; if (logger.isDebugEnabled()) logger.debug("MarkUpdater after, event = " + event); if (event.getNewLength() == 0 || (event.getNewLength() == 1 && event.getNewFragment().charAt(0) != '\n')) return; Document doc = event.getDocument(); updateMarkFromInsert(getAnEditor(doc), VimPlugin.getMark().getAllFileMarks(doc), event.getOffset(), event.getNewLength()); // TODO - update jumps }
/** * This event indicates that a document is about to be changed. We use this event to update all the * editor's marks if text is about to be deleted. * * @param event The change event */ public void beforeDocumentChange(@NotNull DocumentEvent event) { if (!VimPlugin.isEnabled()) return; if (logger.isDebugEnabled()) logger.debug("MarkUpdater before, event = " + event); if (event.getOldLength() == 0) return; Document doc = event.getDocument(); updateMarkFromDelete(getAnEditor(doc), VimPlugin.getMark().getAllFileMarks(doc), event.getOffset(), event.getOldLength()); // TODO - update jumps }
int soff = event.getOffset(); int eoff = soff + event.getNewLength();