From 27418eed88c25124118485bd0d2daa2fcb1b881b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 6 Oct 2022 21:51:21 +0530 Subject: [PATCH] Beep when action could not be performed --- tools/tui/readline/api.go | 7 ++++++- tools/tui/readline/keys.go | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tools/tui/readline/api.go b/tools/tui/readline/api.go index 4ed4fe062..062498765 100644 --- a/tools/tui/readline/api.go +++ b/tools/tui/readline/api.go @@ -104,7 +104,12 @@ func (self *Readline) End() { } func (self *Readline) OnKeyEvent(event *loop.KeyEvent) error { - return self.handle_key_event(event) + err := self.handle_key_event(event) + if err == ErrCouldNotPerformAction { + err = nil + self.loop.Beep() + } + return err } func (self *Readline) OnText(text string, from_key_event bool, in_bracketed_paste bool) error { diff --git a/tools/tui/readline/keys.go b/tools/tui/readline/keys.go index 9cbd90a73..e6dbcf4de 100644 --- a/tools/tui/readline/keys.go +++ b/tools/tui/readline/keys.go @@ -3,6 +3,7 @@ package readline import ( + "errors" "fmt" "kitty/tools/tui/loop" @@ -30,6 +31,8 @@ func action_for_key_event(event *loop.KeyEvent, shortcuts map[string]Action) Act return ActionNil } +var ErrCouldNotPerformAction = errors.New("Could not perform the specified action") + func (self *Readline) handle_key_event(event *loop.KeyEvent) error { if event.Text != "" { return nil @@ -37,7 +40,9 @@ func (self *Readline) handle_key_event(event *loop.KeyEvent) error { ac := action_for_key_event(event, default_shortcuts) if ac != ActionNil { event.Handled = true - self.perform_action(ac, 1) + if !self.perform_action(ac, 1) { + return ErrCouldNotPerformAction + } } return nil }