diff --git a/pkg/gui/controllers/suggestions_controller.go b/pkg/gui/controllers/suggestions_controller.go index 0553050e509..fa447278685 100644 --- a/pkg/gui/controllers/suggestions_controller.go +++ b/pkg/gui/controllers/suggestions_controller.go @@ -49,6 +49,7 @@ func (self *SuggestionsController) GetKeybindings(opts types.KeybindingsOpts) [] Handler: func() error { return self.context().State.OnDeleteSuggestion() }, + GetDisabledReason: self.require(self.singleItemSelected()), }, { Keys: opts.GetKeys(opts.Config.Universal.Edit), diff --git a/pkg/integration/tests/shell_commands/delete_suggestion_when_none_selected.go b/pkg/integration/tests/shell_commands/delete_suggestion_when_none_selected.go new file mode 100644 index 00000000000..d7165a8417b --- /dev/null +++ b/pkg/integration/tests/shell_commands/delete_suggestion_when_none_selected.go @@ -0,0 +1,36 @@ +package shell_commands + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var DeleteSuggestionWhenNoneSelected = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Press the delete key again after deleting the last entry in the shell command history", + ExtraCmdArgs: []string{}, + Skip: false, + SetupRepo: func(shell *Shell) {}, + SetupConfig: func(cfg *config.AppConfig) {}, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.GlobalPress(keys.Universal.ExecuteShellCommand) + t.ExpectPopup().Prompt(). + Title(Equals("Shell command:")). + Type("echo 1"). + Confirm() + + // Deleting the only suggestion leaves the list focused but empty, so + // there is nothing for a second delete to act on. + t.GlobalPress(keys.Universal.ExecuteShellCommand) + t.ExpectPopup().Prompt(). + Title(Equals("Shell command:")). + SuggestionLines(Contains("echo 1")). + DeleteSuggestion(Contains("echo 1")) + + t.Views().Suggestions(). + IsFocused(). + IsEmpty(). + Press(keys.Universal.Remove) + + t.ExpectToast(Equals("Disabled: No item selected")) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 5ac4bdcba3d..044caaf3619 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -411,6 +411,7 @@ var tests = []*components.IntegrationTest{ shell_commands.BasicShellCommand, shell_commands.ComplexShellCommand, shell_commands.DeleteFromHistory, + shell_commands.DeleteSuggestionWhenNoneSelected, shell_commands.EditHistory, shell_commands.History, shell_commands.OmitFromHistory,