public void OnAction(ConsoleAction action) { switch (action) { case ConsoleAction.DeletePreviousChar: if (_input.Selection.HasSelection) { _input.Remove(_input.Selection.SelectionStart, _input.Selection.SelectionLength); } else if (_input.Length > 0 && _input.CaretIndex > 0) { _input.Remove(Math.Max(0, _input.CaretIndex - 1), 1); } break; case ConsoleAction.DeleteCurrentChar: if (_input.Selection.HasSelection) { _input.Remove(_input.Selection.SelectionStart, _input.Selection.SelectionLength); } else if (_input.Length > _input.CaretIndex) { _input.Remove(_input.CaretIndex, 1); } break; } }
public void OnAction(ConsoleAction action) { switch (action) { case ConsoleAction.Cut: if (_input.Selection.HasSelection) { Native.SetClipboardText(_input.Selection.SelectionValue); _input.Remove(_input.Selection.SelectionStart, _input.Selection.SelectionLength); } break; case ConsoleAction.Copy: if (_input.Selection.HasSelection) { Native.SetClipboardText(_input.Selection.SelectionValue); } break; case ConsoleAction.Paste: // Clear any selected input. if (_input.Selection.HasSelection) { _input.Remove(_input.Selection.SelectionStart, _input.Selection.SelectionLength); } string clipboardVal = Native.GetClipboardText().Replace("\n", _input.Console.NewlineSymbol); clipboardVal = clipboardVal.Replace("\t", _input.Console.TabSymbol); _singleElementArray[0] = _input.Console.NewlineSymbol; string[] newlineSplits = clipboardVal.Split(_singleElementArray, StringSplitOptions.None); if (newlineSplits.Length > 1) { for (int i = 0; i < newlineSplits.Length - 1; i++) { string entry = newlineSplits[i]; if (i == 0) { entry = _input.Substring(0, _input.Caret.Index) + entry; } _input.Console.ConsoleOutput.AddCommandEntry(entry); } _input.Remove(0, _input.Caret.Index); } _input.Append(newlineSplits[newlineSplits.Length - 1]); break; } }
public void RemoveTab() { bool isTab = true; int counter = 0; string tabSymbol = _input.Console.TabSymbol; for (int i = _input.Caret.Index - 1; i >= 0; i--) { if (counter >= tabSymbol.Length) { break; } if (_input[i] != tabSymbol[tabSymbol.Length - counter++ - 1]) { isTab = false; break; } } int numToRemove = counter; if (isTab) { _input.Remove(Math.Max(0, _input.Caret.Index - tabSymbol.Length), numToRemove); } }