diff --git a/tools/tui/readline/actions.go b/tools/tui/readline/actions.go index 555b348fd..db3756d91 100644 --- a/tools/tui/readline/actions.go +++ b/tools/tui/readline/actions.go @@ -584,12 +584,12 @@ func (self *Readline) perform_action(ac Action, repeat_count uint) error { return nil } case ActionHistoryPreviousOrCursorUp: - if self.perform_action(ActionCursorUp, repeat_count) != nil { + if self.perform_action(ActionCursorUp, repeat_count) == ErrCouldNotPerformAction { return self.perform_action(ActionHistoryPrevious, repeat_count) } return nil case ActionHistoryNextOrCursorDown: - if self.perform_action(ActionCursorDown, repeat_count) != nil { + if self.perform_action(ActionCursorDown, repeat_count) == ErrCouldNotPerformAction { return self.perform_action(ActionHistoryNext, repeat_count) } return nil @@ -643,6 +643,10 @@ func (self *Readline) perform_action(ac Action, repeat_count uint) error { if self.yank(repeat_count, true) { return nil } + case ActionAbortCurrentLine: + self.loop.QueueWriteString("\r\n") + self.ResetText() + return nil } return ErrCouldNotPerformAction } diff --git a/tools/tui/readline/api.go b/tools/tui/readline/api.go index bac784e92..a97e75335 100644 --- a/tools/tui/readline/api.go +++ b/tools/tui/readline/api.go @@ -60,6 +60,7 @@ const ( ActionHistoryLast ActionClearScreen ActionAddText + ActionAbortCurrentLine ActionStartKillActions ActionKillToEndOfLine diff --git a/tools/tui/readline/keys.go b/tools/tui/readline/keys.go index 4176c6803..7227075a9 100644 --- a/tools/tui/readline/keys.go +++ b/tools/tui/readline/keys.go @@ -49,10 +49,14 @@ var default_shortcuts = map[string]Action{ "ctrl+y": ActionYank, "alt+y": ActionPopYank, + "up": ActionHistoryPreviousOrCursorUp, + "down": ActionHistoryNextOrCursorDown, "ctrl+p": ActionHistoryPrevious, "ctrl+n": ActionHistoryNext, "alt+<": ActionHistoryFirst, "alt+>": ActionHistoryLast, + + "ctrl+c": ActionAbortCurrentLine, } func action_for_key_event(event *loop.KeyEvent, shortcuts map[string]Action) Action {