private static void ViReplaceToBeforeChar(char keyChar, ConsoleKeyInfo?key = null, object arg = null) { _singleton._groupUndoHelper.StartGroup(ReplaceChar, arg); ViCharacterSearcher.Set(keyChar, isBackward: false, isBackoff: true); if (ViCharacterSearcher.SearchDelete(keyChar, arg, backoff: true, instigator: (_key, _arg) => ViReplaceToBeforeChar(keyChar, _key, _arg))) { ViInsertMode(key, arg); } }
private static void ViReplaceToChar(char keyChar, ConsoleKeyInfo?key = null, object arg = null) { int initialCurrent = _singleton._current; _singleton._groupUndoHelper.StartGroup(ReplaceChar, arg); ViCharacterSearcher.Set(keyChar, isBackward: false, isBackoff: false); if (ViCharacterSearcher.SearchDelete(keyChar, arg, backoff: false, instigator: (_key, _arg) => ViReplaceToChar(keyChar, _key, _arg))) { if (_singleton._current < initialCurrent || _singleton._current >= _singleton._buffer.Length) { ViInsertWithAppend(key, arg); } else { ViInsertMode(key, arg); } } }
/// <summary> /// Deletes until given character. /// </summary> public static void ViDeleteToBeforeChar(char keyChar, ConsoleKeyInfo?key = null, object arg = null) { ViCharacterSearcher.Set(keyChar, isBackward: false, isBackoff: true); ViCharacterSearcher.SearchDelete(keyChar, arg, backoff: true, instigator: (_key, _arg) => ViDeleteToBeforeChar(keyChar, _key, _arg)); }