protected boolean setMarkCommand() { if (count < 0) { regionActive = RegionType.NONE; return true; } regionMark = buf.cursor(); regionActive = RegionType.CHAR; return true; }
private int findbol() { int x = buf.cursor(); while (x > 0 && buf.atChar(x - 1) != '\n') { x--; } return x; }
protected boolean viBeginningOfLine() { buf.cursor(findbol()); return true; }
private int findeol() { int x = buf.cursor(); while (x < buf.length() && buf.atChar(x) != '\n') { x++; } return x; }
protected boolean viEndOfLine() { if (count < 0) { return false; } while (count-- > 0) { buf.cursor(findeol() + 1); } buf.move(-1); return true; }
protected boolean backwardDeleteChar() { if (count < 0) { return callNeg(this::deleteChar); } if (buf.cursor() == 0) { return false; } buf.backspace(count); return true; }
protected boolean beginningOfBufferOrHistory() { if (findbol() != 0) { buf.cursor(0); return true; } else { return beginningOfHistory(); } }
protected boolean viChangeEol() { return viChange(buf.cursor(), buf.length()) && setKeyMap(VIINS); }
protected boolean deleteChar() { if (count < 0) { return callNeg(this::backwardDeleteChar); } if (buf.cursor() == buf.length()) { return false; } buf.delete(count); return true; }
protected boolean insertClose(String s) { putString(s); long blink = getLong(BLINK_MATCHING_PAREN, DEFAULT_BLINK_MATCHING_PAREN); if (blink <= 0) { return true; } int closePosition = buf.cursor(); buf.move(-1); doViMatchBracket(); redisplay(); peekCharacter(blink); buf.cursor(closePosition); return true; }
protected boolean backwardDeleteWord() { if (count < 0) { return callNeg(this::deleteWord); } int cursor = buf.cursor(); while (count-- > 0) { while (cursor > 0 && !isWord(buf.atChar(cursor - 1))) { cursor--; } while (cursor > 0 && isWord(buf.atChar(cursor - 1))) { cursor--; } } buf.backspace(buf.cursor() - cursor); return true; }
protected boolean viPutBefore() { if (yankBuffer.indexOf('\n') >= 0) { while (buf.move(-1) == -1 && buf.prevChar() != '\n'); putString(yankBuffer); buf.move(- yankBuffer.length()); } else if (yankBuffer.length () != 0) { if (buf.cursor() > 0) { buf.move(-1); } for (int i = 0; i < count; i++) { putString(yankBuffer); } buf.move(-1); } return true; }
protected boolean endOfBufferOrHistory() { if (findeol() != buf.length()) { buf.cursor(buf.length()); return true; } else { return endOfHistory(); } }
protected boolean deleteCharOrList() { if (buf.cursor() != buf.length() || buf.length() == 0) { return deleteChar(); } else { return doComplete(CompletionType.List, isSet(Option.MENU_COMPLETE), false); } }
protected boolean viFirstNonBlank() { beginningOfLine(); while (buf.cursor() < buf.length() && isWhitespace(buf.currChar())) { buf.move(1); } return true; }