diff --git a/pkg/gui/controllers.go b/pkg/gui/controllers.go index 702ed826d11..8e73213c1a1 100644 --- a/pkg/gui/controllers.go +++ b/pkg/gui/controllers.go @@ -28,8 +28,8 @@ func (gui *Gui) resetHelpersAndControllers() { recordDirectoryHelper := helpers.NewRecordDirectoryHelper(helperCommon) reposHelper := helpers.NewRecentReposHelper(helperCommon, recordDirectoryHelper, gui.onSwitchToNewRepo) rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon) - refsHelper := helpers.NewRefsHelper(helperCommon, rebaseHelper) suggestionsHelper := helpers.NewSuggestionsHelper(helperCommon) + refsHelper := helpers.NewRefsHelper(helperCommon, rebaseHelper, suggestionsHelper) worktreeHelper := helpers.NewWorktreeHelper(helperCommon, reposHelper, refsHelper, suggestionsHelper) setCommitSummary := gui.getCommitMessageSetTextareaTextFn(func() *gocui.View { return gui.Views.CommitMessage }) diff --git a/pkg/gui/controllers/helpers/refs_helper.go b/pkg/gui/controllers/helpers/refs_helper.go index d52d9bbad10..9aae0493f1a 100644 --- a/pkg/gui/controllers/helpers/refs_helper.go +++ b/pkg/gui/controllers/helpers/refs_helper.go @@ -18,16 +18,19 @@ import ( type RefsHelper struct { c *HelperCommon - rebaseHelper *MergeAndRebaseHelper + rebaseHelper *MergeAndRebaseHelper + suggestionsHelper *SuggestionsHelper } func NewRefsHelper( c *HelperCommon, rebaseHelper *MergeAndRebaseHelper, + suggestionsHelper *SuggestionsHelper, ) *RefsHelper { return &RefsHelper{ - c: c, - rebaseHelper: rebaseHelper, + c: c, + rebaseHelper: rebaseHelper, + suggestionsHelper: suggestionsHelper, } } @@ -280,6 +283,24 @@ func (self *RefsHelper) CreateGitResetMenu(name string, ref string) error { } }) + menuItems = append(menuItems, &types.MenuItem{ + LabelColumns: []string{ + self.c.Tr.ResetToCustomRef, + style.FgRed.Sprint("reset --? "), + }, + OnPress: func() error { + self.c.Prompt(types.PromptOpts{ + Title: self.c.Tr.EnterRefToResetTo, + FindSuggestionsFunc: self.suggestionsHelper.GetRefsSuggestionsFunc(), + HandleConfirm: func(response string) error { + return self.CreateGitResetMenu(response, response) + }, + }) + return nil + }, + Key: 'c', + }) + return self.c.Menu(types.CreateMenuOptions{ Title: fmt.Sprintf("%s %s", self.c.Tr.ResetTo, name), Items: menuItems, diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 63ed43c5fb3..386ee12b203 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -496,6 +496,8 @@ type TranslationSet struct { ShellCommand string CommitChangesWithoutHook string ResetTo string + ResetToCustomRef string + EnterRefToResetTo string ResetSoftTooltip string ResetMixedTooltip string ResetHardTooltip string @@ -1619,6 +1621,8 @@ func EnglishTranslationSet() *TranslationSet { ShellCommand: "Shell command:", CommitChangesWithoutHook: "Commit changes without pre-commit hook", ResetTo: `Reset to`, + ResetToCustomRef: "Reset to custom ref", + EnterRefToResetTo: "Enter ref to reset to:", PressEnterToReturn: "Press enter to return to lazygit", ViewStashOptions: "View stash options", ViewStashOptionsTooltip: "View stash options (e.g. stash all, stash staged, stash unstaged).",