diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-26 16:42:56 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-26 17:22:42 +1100 |
commit | 45dab51214d7deca689279a6a162d80ee27befc8 (patch) | |
tree | fc06fe1b646f37f46ea2461f2b90f41235775ede | |
parent | 540edb0bf46df2dce32f9bcc554c482cfa0cbc7b (diff) |
add basic commits controller for handling actions that apply to all commit contexts
-rw-r--r-- | docs/keybindings/Keybindings_en.md | 21 | ||||
-rw-r--r-- | docs/keybindings/Keybindings_nl.md | 21 | ||||
-rw-r--r-- | docs/keybindings/Keybindings_pl.md | 21 | ||||
-rw-r--r-- | docs/keybindings/Keybindings_zh.md | 23 | ||||
-rw-r--r-- | pkg/gui/context/local_commits_context.go | 4 | ||||
-rw-r--r-- | pkg/gui/context/reflog_commits_context.go | 4 | ||||
-rw-r--r-- | pkg/gui/context/sub_commits_context.go | 4 | ||||
-rw-r--r-- | pkg/gui/controllers.go | 15 | ||||
-rw-r--r-- | pkg/gui/controllers/basic_commits_controller.go | 236 | ||||
-rw-r--r-- | pkg/gui/controllers/local_commits_controller.go | 166 | ||||
-rw-r--r-- | pkg/gui/controllers/reflog_controller.go | 103 | ||||
-rw-r--r-- | pkg/gui/controllers/sub_commits_controller.go | 114 | ||||
-rw-r--r-- | pkg/i18n/chinese.go | 1 | ||||
-rw-r--r-- | pkg/i18n/english.go | 2 |
14 files changed, 311 insertions, 424 deletions
diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md index 65f217f73..836bbf791 100644 --- a/docs/keybindings/Keybindings_en.md +++ b/docs/keybindings/Keybindings_en.md @@ -90,8 +90,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: copy commit SHA to clipboard <kbd>space</kbd>: checkout commit - <kbd>g</kbd>: view reset options - <kbd>n</kbd>: new branch + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: create new branch off of commit + <kbd>g</kbd>: reset to this commit <kbd>c</kbd>: copy commit (cherry-pick) <kbd>C</kbd>: copy commit range (cherry-pick) <kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection @@ -147,16 +149,16 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <kbd>ctrl+k</kbd>: move commit up one <kbd>A</kbd>: amend commit with staged changes <kbd>t</kbd>: revert commit - <kbd>n</kbd>: create new branch off of commit - <kbd>c</kbd>: copy commit (cherry-pick) - <kbd>C</kbd>: copy commit range (cherry-pick) <kbd>v</kbd>: paste commits (cherry-pick) <kbd>ctrl+l</kbd>: open log menu - <kbd>g</kbd>: reset to this commit - <kbd>space</kbd>: checkout commit <kbd>T</kbd>: tag commit + <kbd>space</kbd>: checkout commit <kbd>y</kbd>: copy commit attribute <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: create new branch off of commit + <kbd>g</kbd>: reset to this commit + <kbd>c</kbd>: copy commit (cherry-pick) + <kbd>C</kbd>: copy commit range (cherry-pick) <kbd>enter</kbd>: view selected item's files </pre> @@ -165,7 +167,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: copy commit SHA to clipboard <kbd>space</kbd>: checkout commit - <kbd>g</kbd>: view reset options + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: create new branch off of commit + <kbd>g</kbd>: reset to this commit <kbd>c</kbd>: copy commit (cherry-pick) <kbd>C</kbd>: copy commit range (cherry-pick) <kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md index bec3e35ad..8fbf16ccd 100644 --- a/docs/keybindings/Keybindings_nl.md +++ b/docs/keybindings/Keybindings_nl.md @@ -130,8 +130,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: kopieer commit SHA naar klembord <kbd>space</kbd>: checkout commit - <kbd>g</kbd>: bekijk reset opties - <kbd>n</kbd>: nieuwe branch + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: creëer nieuwe branch van commit + <kbd>g</kbd>: reset naar deze commit <kbd>c</kbd>: kopieer commit (cherry-pick) <kbd>C</kbd>: kopieer commit reeks (cherry-pick) <kbd>ctrl+r</kbd>: reset cherry-picked (gekopieerde) commits selectie @@ -187,16 +189,16 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <kbd>ctrl+k</kbd>: verplaats commit 1 naar boven <kbd>A</kbd>: wijzig commit met staged veranderingen <kbd>t</kbd>: commit ongedaan maken - <kbd>n</kbd>: creëer nieuwe branch van commit - <kbd>c</kbd>: kopieer commit (cherry-pick) - <kbd>C</kbd>: kopieer commit reeks (cherry-pick) <kbd>v</kbd>: plak commits (cherry-pick) <kbd>ctrl+l</kbd>: open log menu - <kbd>g</kbd>: reset naar deze commit - <kbd>space</kbd>: checkout commit <kbd>T</kbd>: tag commit + <kbd>space</kbd>: checkout commit <kbd>y</kbd>: copy commit attribute <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: creëer nieuwe branch van commit + <kbd>g</kbd>: reset naar deze commit + <kbd>c</kbd>: kopieer commit (cherry-pick) + <kbd>C</kbd>: kopieer commit reeks (cherry-pick) <kbd>enter</kbd>: bekijk gecommite bestanden </pre> @@ -205,7 +207,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: kopieer commit SHA naar klembord <kbd>space</kbd>: checkout commit - <kbd>g</kbd>: bekijk reset opties + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: creëer nieuwe branch van commit + <kbd>g</kbd>: reset naar deze commit <kbd>c</kbd>: kopieer commit (cherry-pick) <kbd>C</kbd>: kopieer commit reeks (cherry-pick) <kbd>ctrl+r</kbd>: reset cherry-picked (gekopieerde) commits selectie diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md index 3e9443b4e..93f91050a 100644 --- a/docs/keybindings/Keybindings_pl.md +++ b/docs/keybindings/Keybindings_pl.md @@ -60,16 +60,16 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <kbd>ctrl+k</kbd>: przenieś commit 1 w górę <kbd>A</kbd>: popraw commit zmianami z poczekalni <kbd>t</kbd>: odwróć commit - <kbd>n</kbd>: create new branch off of commit - <kbd>c</kbd>: kopiuj commit (przebieranie) - <kbd>C</kbd>: kopiuj zakres commitów (przebieranie) <kbd>v</kbd>: wklej commity (przebieranie) <kbd>ctrl+l</kbd>: open log menu - <kbd>g</kbd>: zresetuj do tego commita - <kbd>space</kbd>: checkout commit <kbd>T</kbd>: tag commit + <kbd>space</kbd>: checkout commit <kbd>y</kbd>: copy commit attribute <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: create new branch off of commit + <kbd>g</kbd>: zresetuj do tego commita + <kbd>c</kbd>: kopiuj commit (przebieranie) + <kbd>C</kbd>: kopiuj zakres commitów (przebieranie) <kbd>enter</kbd>: przeglądaj pliki commita </pre> @@ -78,7 +78,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: copy commit SHA to clipboard <kbd>space</kbd>: checkout commit - <kbd>g</kbd>: wyświetl opcje resetu + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: create new branch off of commit + <kbd>g</kbd>: zresetuj do tego commita <kbd>c</kbd>: kopiuj commit (przebieranie) <kbd>C</kbd>: kopiuj zakres commitów (przebieranie) <kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection @@ -140,8 +143,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: copy commit SHA to clipboard <kbd>space</kbd>: checkout commit - <kbd>g</kbd>: wyświetl opcje resetu - <kbd>n</kbd>: nowa gałąź + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: open commit in browser + <kbd>n</kbd>: create new branch off of commit + <kbd>g</kbd>: zresetuj do tego commita <kbd>c</kbd>: kopiuj commit (przebieranie) <kbd>C</kbd>: kopiuj zakres commitów (przebieranie) <kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection diff --git a/docs/keybindings/Keybindings_zh.md b/docs/keybindings/Keybindings_zh.md index ba672a858..7e1b1c407 100644 --- a/docs/keybindings/Keybindings_zh.md +++ b/docs/keybindings/Keybindings_zh.md @@ -126,8 +126,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: 将提交的 SHA 复制到剪贴板 <kbd>space</kbd>: 检出提交 - <kbd>g</kbd>: 查看重置选项 - <kbd>n</kbd>: 新分支 + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: 在浏览器中打开提交 + <kbd>n</kbd>: 从提交创建新分支 + <kbd>g</kbd>: 重置为此提交 <kbd>c</kbd>: 复制提交(拣选) <kbd>C</kbd>: 复制提交范围(拣选) <kbd>ctrl+r</kbd>: 重置已拣选(复制)的提交 @@ -173,7 +175,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <pre> <kbd>ctrl+o</kbd>: 将提交的 SHA 复制到剪贴板 <kbd>space</kbd>: 检出提交 - <kbd>g</kbd>: 查看重置选项 + <kbd>y</kbd>: copy commit attribute + <kbd>o</kbd>: 在浏览器中打开提交 + <kbd>n</kbd>: 从提交创建新分支 + <kbd>g</kbd>: 重置为此提交 <kbd>c</kbd>: 复制提交(拣选) <kbd>C</kbd>: 复制提交范围(拣选) <kbd>ctrl+r</kbd>: 重置已拣选(复制)的提交 @@ -199,16 +204,16 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct <kbd>ctrl+k</kbd>: 上移提交 <kbd>A</kbd>: 用已暂存的更改来修补提交 <kbd>t</kbd>: 还原提交 - <kbd>n</kbd>: 从提交创建新分支 - <kbd>c</kbd>: 复制提交(拣选) - <kbd>C</kbd>: 复制提交范围(拣选) <kbd>v</kbd>: 粘贴提交(拣选) <kbd>ctrl+l</kbd>: 打开日志菜单 - <kbd>g</kbd>: 重置为此提交 - <kbd>space</kbd>: 检出提交 <kbd>T</kbd>: 标签提交 + <kbd>space</kbd>: 检出提交 <kbd>y</kbd>: copy commit attribute - <kbd>o</kbd>: open commit in browser + <kbd>o</kbd>: 在浏览器中打开提交 + <kbd>n</kbd>: 从提交创建新分支 + <kbd>g</kbd>: 重置为此提交 + <kbd>c</kbd>: 复制提交(拣选) + <kbd>C</kbd>: 复制提交范围(拣选) <kbd>enter</kbd>: 查看提交的文件 </pre> diff --git a/pkg/gui/context/local_commits_context.go b/pkg/gui/context/local_commits_context.go index 46e3be2cd..cc7a2a0d2 100644 --- a/pkg/gui/context/local_commits_context.go +++ b/pkg/gui/context/local_commits_context.go @@ -108,3 +108,7 @@ func (self *LocalCommitsViewModel) SetShowWholeGitGraph(value bool) { func (self *LocalCommitsViewModel) GetShowWholeGitGraph() bool { return self.showWholeGitGraph } + +func (self *LocalCommitsViewModel) GetCommits() []*models.Commit { + return self.getModel() +} diff --git a/pkg/gui/context/reflog_commits_context.go b/pkg/gui/context/reflog_commits_context.go index 815805515..a1ad6cfda 100644 --- a/pkg/gui/context/reflog_commits_context.go +++ b/pkg/gui/context/reflog_commits_context.go @@ -70,3 +70,7 @@ func (self *ReflogCommitsContext) GetSelectedRefName() string { return item.RefName() } + +func (self *ReflogCommitsContext) GetCommits() []*models.Commit { + return self.getModel() +} diff --git a/pkg/gui/context/sub_commits_context.go b/pkg/gui/context/sub_commits_context.go index 93a0c3593..315093f8f 100644 --- a/pkg/gui/context/sub_commits_context.go +++ b/pkg/gui/context/sub_commits_context.go @@ -72,3 +72,7 @@ func (self *SubCommitsContext) GetSelectedRefName() string { return item.RefName() } + +func (self *SubCommitsContext) GetCommits() []*models.Commit { + return self.getModel() +} diff --git a/pkg/gui/controllers.go b/pkg/gui/controllers.go index 3e33783e1..13a0eedb5 100644 --- a/pkg/gui/controllers.go +++ b/pkg/gui/controllers.go @@ -74,9 +74,6 @@ func (gui *Gui) resetControllers() { bisectController := controllers.NewBisectController(common) - reflogController := controllers.NewReflogController(common) - subCommitsController := controllers.NewSubCommitsController(common) - getSavedCommitMessage := func() string { return gui.State.savedCommitMessage } @@ -159,13 +156,21 @@ func (gui *Gui) resetControllers() { controllers.AttachControllers(context, commitishControllerFactory.Create(context)) } + basicCommitsControllerFactory := controllers.NewBasicCommitsControllerFactory(common) + + for _, context := range []controllers.ContainsCommits{ + gui.State.Contexts.LocalCommits, + gui.State.Contexts.ReflogCommits, + gui.State.Contexts.SubCommits, + } { + controllers.AttachControllers(context, basicCommitsControllerFactory.Create(context)) + } + controllers.AttachControllers(gui.State.Contexts.Branches, branchesController, gitFlowController) controllers.AttachControllers(gui.State.Contexts.Files, gui.Controllers.Files, filesRemoveController) controllers.AttachControllers(gui.State.Contexts.Tags, gui.Controllers.Tags) controllers.AttachControllers(gui.State.Contexts.Submodules, gui.Controllers.Submodules) controllers.AttachControllers(gui.State.Contexts.LocalCommits, gui.Controllers.LocalCommits, bisectController) - controllers.AttachControllers(gui.State.Contexts.ReflogCommits, reflogController) - controllers.AttachControllers(gui.State.Contexts.SubCommits, subCommitsController) controllers.AttachControllers(gui.State.Contexts.CommitFiles, commitFilesController) controllers.AttachControllers(gui.State.Contexts.Remotes, gui.Controllers.Remotes) controllers.AttachControllers(gui.State.Contexts.Stash, stashController) diff --git a/pkg/gui/controllers/basic_commits_controller.go b/pkg/gui/controllers/basic_commits_controller.go new file mode 100644 index 000000000..c59686126 --- /dev/null +++ b/pkg/gui/controllers/basic_commits_controller.go @@ -0,0 +1,236 @@ +package controllers + +import ( + "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/commands/models" + "github.com/jesseduffield/lazygit/pkg/gui/types" +) + +// This controller is for all contexts that contain a list of commits. + +type BasicCommitsControllerFactory struct { + controllerCommon *controllerCommon +} + +var _ types.IController = &BasicCommitsController{} + +type ContainsCommits interface { + types.Context + GetSelected() *models.Commit + GetCommits() []*models.Commit + GetSelectedLineIdx() int +} + +type BasicCommitsController struct { + baseController + *controllerCommon + context ContainsCommits +} + +func NewBasicCommitsControllerFactory( + common *controllerCommon, +) *BasicCommitsControllerFactory { + return &BasicCommitsControllerFactory{ + controllerCommon: common, + } +} + +func (self *BasicCommitsControllerFactory) Create(context ContainsCommits) *BasicCommitsController { + return &BasicCommitsController{ + baseController: baseController{}, + controllerCommon: self.controllerCommon, + context: context, + } +} + +func (self *BasicCommitsController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding { + bindings := []*types.Binding{ + { + Key: opts.GetKey(opts.Config.Commits.CheckoutCommit), + Handler: self.checkSelected(self.checkout), + Description: self.c.Tr.LcCheckoutCommit, + }, + { + Key: opts.GetKey(opts.Config.Commits.CopyCommitAttributeToClipboard), + Handler: self.checkSelected(self.copyCommitAttribute), + Description: self.c.Tr.LcCopyCommitAttributeToClipboard, + OpensMenu: true, + }, + { + Key: opts.GetKey(opts.Config.Commits.OpenInBrowser), + Handler: self.checkSelected(self.openInBrowser), + Description: self.c.Tr.LcOpenCommitInBrowser, + }, + { + Key: opts.GetKey(opts.Config.Universal.New), + Modifier: gocui.ModNone, + Handler: self.checkSelected(self.newBranch), + Description: self.c.Tr.LcCreateNewBranchFromCommit, + }, + { + Key: opts.GetKey(opts.Config.Commits.ViewResetOptions), + Handler: self.checkSelected(self.createResetMenu), + Description: self.c.Tr.LcResetToThisCommit, + }, + { + Key: opts.GetKey(opts.Config.Commits.CherryPickCopy), + Handler: self.checkSelected(self.copy), + Description: self.c.Tr.LcCherryPickCopy, + }, + { + Key: opts.GetKey(opts.Config.Commits.CherryPickCopyRange), + Handler: self.checkSelected(self.copyRange), + Description: self.c.Tr.LcCherryPickCopyRange, + }, + { + Key: opts.GetKey(opts.Config.Commits.ResetCherryPick), + Handler: self.helpers.CherryPick.Reset, + Description: self.c.Tr.LcResetCherryPick, + }, + } + + return bindings +} + +func (self *BasicCommitsController) checkSelected(callback func(*models.Commit) error) func() error { + return func() error { + commit := self.context.GetSelected() + if commit == nil { + return nil + } + + return callback(commit) + } +} + +func (self *BasicCommitsController) Context() types.Context { + return self.context +} + +func (self *BasicCommitsController) copyCommitAttribute(commit *models.Commit) error { + return self.c.Menu(types.CreateMenuOptions{ + Title: self.c.Tr.Actions.CopyCommitAttributeToClipboard, + Items: []*types.MenuItem{ + { + DisplayString: self.c.Tr.LcCommitSha, + OnPress: func() error { + return self.copyCommitSHAToClipboard(commit) + }, + }, + { + DisplayString: self.c.Tr.LcCommitURL, + OnPress: func() error { + return self.copyCommitURLToClipboard(commit) + }, + }, + { + DisplayString: self.c.Tr.LcCommitDiff, + OnPress: func() error { + return self.copyCommitDiffToClipboard(commit) + }, + }, + { + DisplayString: self.c.Tr.LcCommitMessage, + OnPress: func() error { + return self.copyCommitMessageToClipboard(commit) + }, + }, + }, + }) +} + +func (self *BasicCommitsController) copyCommitSHAToClipboard(commit *models.Commit) error { + self.c.LogAction(self.c.Tr.Actions.CopyCommitSHAToClipboard) + if err := self.os.CopyToClipboard(commit.Sha); err != nil { + return self.c.Error(err) + } + + self.c.Toast(self.c.Tr.CommitSHACopiedToClipboard) + return nil +} + +func (self *BasicCommitsController) copyCommitURLToClipboard(commit *models.Commit) error { + url, err := self.helpers.Host.GetCommitURL(commit.Sha) + if err != nil { + return err + } + + self.c.LogAction(self.c.Tr.Actions.CopyCommitURLToClipboard) + if err := self.os.CopyToClipboard(url); err != nil { + return self.c.Error(err) + } + + self.c.Toast(self.c.Tr.CommitURLCopiedToClipboard) + return nil +} + +func (self *BasicCommitsController) copyCommitDiffToClipboard(commit *models.Commit) error { + diff, err := self.git.Commit.GetCommitDiff(commit.Sha) + if err != nil { + return self.c.Error(err) + } + + self.c.LogAction(self.c.Tr.Actions.CopyCommitDiffToClipboard) + if err := self.os.CopyToClipboard(diff); err != nil { + return self.c.Error(err) + } + + self.c.Toast(self.c.Tr.CommitDiffCopiedToClipboard) + return nil +} + +func (self *BasicCommitsController) copyCommitMessageToClipboard(commit *models.Commit) error { + message, err := self.git.Commit.GetCommitMessage(commit.Sha) + if err != nil { + return self.c.Error(err) + } + + self.c.LogAction(self.c.Tr.Actions.CopyCommitMessageToClipboard) + if err := self.os.CopyToClipboard(message); err != nil { + return self.c.Error(err) + } + + self.c.Toast(self.c.Tr.CommitMessageCopiedToClipboard) + return nil +} + +func (self *BasicCommitsController) openInBrowser(commit *models.Commit) error { + url, err := self.helpers.Host.GetCommitURL(commit.Sha) + if err != nil { + return self.c.Error(err) + } + + self.c.LogAction(self.c.Tr.Actions.OpenCommitInBrowser) + if err := self.os.OpenLink(url); err != nil { + return self.c.Error(err) + } + + return nil +} + +func (self *BasicCommitsController) newBranch(commit *models.Commit) error { + return self.helpers.Refs.NewBranch(commit.RefName(), commit.Description(), "") +} + +func (self *BasicCommitsController) createResetMenu(commit *models.Commit) error { + return self.helpers.Refs.CreateGitResetMenu(commit.Sha) +} + +func (self *BasicCommitsController) checkout(commit *models.Commit) error { + return self.c.Ask(types.AskOpts{ + Title: self.c.Tr.LcCheckoutCommit, + Prompt: self.c.Tr.SureCheckoutThisCommit, + HandleConfirm: func() error { + self.c.LogAction(self.c.Tr.Actions.CheckoutCommit) + return self.helpers.Refs.CheckoutRef(commit.Sha, types.CheckoutRefOptions{}) + }, + }) +} + +func (self *BasicCommitsController) copy(commit *models.Commit) error { + return self.helpers.CherryPick.Copy(commit, self.context.GetCommits(), self.context) +} + +func (self *BasicCommitsController) copyRange(*models.Commit) error { + return self.helpers.CherryPick.CopyRange(self.context.GetSelectedLineIdx(), self.model.Commits, self.context) +} diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 2c3618b82..41433068d 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -3,7 +3,6 @@ package controllers import ( "fmt" - "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands/models" "github.com/jesseduffield/lazygit/pkg/gui/context" "github.com/jesseduffield/lazygit/pkg/gui/types" @@ -102,22 +101,6 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [ Description: self.c.Tr.LcRevertCommit, }, { - Key: opts.GetKey(opts.Config.Universal.New), - Modifier: gocui.ModNone, - Handler: self.checkSelected(self.newBranch), - Description: self.c.Tr.LcCreateNewBranchFromCommit, - }, - { - Key: opts.GetKey(opts.Config.Commits.CherryPickCopy), - Handler: self.checkSelected(self.copy), - Description: self.c.Tr.LcCherryPickCopy, - }, - { - Key: opts.GetKey(opts.Config.Commits.CherryPickCopyRange), - Handler: self.checkSelected(self.copyRange), - Description: self.c.Tr.LcCherryPickCopyRange, - }, - { Key: opts.GetKey(opts.Config.Commits.PasteCommits), Handler: opts.Guards.OutsideFilterMode(self.paste), Description: self.c.Tr.LcPasteCommits, @@ -150,31 +133,10 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [ OpensMenu: true, }, { - Key: opts.GetKey(opts.Config.Commits.ViewResetOptions), - Handler: self.checkSelected(self.createResetMenu), - Description: self.c.Tr.LcResetToThisCommit, - }, - { - Key: opts.GetKey(opts.Config.Commits.CheckoutCommit), - Handler: self.checkSelected(self.checkout), - Description: self.c.Tr.LcCheckoutCommit, - }, - { Key: opts.GetKey(opts.Config.Commits.TagCommit), Handler: self.checkSelected(self.createTag), Description: self.c.Tr.LcTagCommit, }, - { - Key: opts.GetKey(opts.Config.Commits.CopyCommitAttributeToClipboard), - Handler: self.checkSelected(self.copyCommitAttribute), - Description: self.c.Tr.LcCopyCommitAttributeToClipboard, - OpensMenu: true, - }, - { - Key: opts.GetKey(opts.Config.Commits.OpenInBrowser), - Handler: self.checkSelected(self.openInBrowser), - Description: self.c.Tr.LcOpenCommitInBrowser, - }, }...) return bindings @@ -557,21 +519,6 @@ func (self *LocalCommitsController) createTag(commit *models.Commit) error { return self.helpers.Tags.CreateTagMenu(commit.Sha, func() {}) } -func (self *LocalCommitsController) checkout(commit *models.Commit) error { - return self.c.Ask(types.AskOpts{ - Title: self.c.Tr.LcCheckoutCommit, - Prompt: self.c.Tr.SureCheckoutThisCommit, - HandleConfirm: func() error { - self.c.LogAction(self.c.Tr.Actions.CheckoutCommit) - return self.helpers.Refs.CheckoutRef(commit.Sha, types.CheckoutRefOptions{}) - }, - }) -} - -func (self *LocalCommitsController) createResetMenu(commit *models.Commit) error { - return self.helpers.Refs.CreateGitResetMenu(commit.Sha) -} - func (self *LocalCommitsController) openSearch() error { // we usually lazyload these commits but now that we're searching we need to load them now if self.context().GetLimitCommits() { @@ -600,93 +547,6 @@ func (self *LocalCommitsController) gotoBottom() error { return nil } -func (self *LocalCommitsController) copyCommitAttribute(commit *models.Commit) error { - return self.c.Menu(types.CreateMenuOptions{ - Title: self.c.Tr.Actions.CopyCommitAttributeToClipboard, - Items: []*types.MenuItem{ - { - DisplayString: self.c.Tr.LcCommitSha, - OnPress: func() error { - return self.copyCommitSHAToClipboard(commit) - }, - }, - { - DisplayString: self.c.Tr.LcCommitURL, - OnPress: func() error { - return self.copyCommitURLToClipboard(commit) - }, - }, - { - DisplayString: self.c.Tr.LcCommitDiff, - OnPress: func() error { - return self.copyCommitDiffToClipboard(commit) - }, - }, - { - DisplayString: self.c.Tr.LcCommitMessage, - OnPress: func() error { - return self.copyCommitMessageToClipboard(commit) - }, - }, - }, - }) -} - -func (self *LocalCommitsController) copyCommitSHAToClipboard(commit *models.Commit) error { - self.c.LogAction(self.c.Tr.Actions.CopyCommitSHAToClipboard) - if err := self.os.CopyToClipboard(commit.Sha); err != nil { - return self.c.Error(err) - } - - self.c.Toast(self.c.Tr.CommitSHACopiedToClipboard) - return nil -} - -func (self *LocalCommitsController) copyCommitURLToClipboard(commit *models.Commit) error { - url, err := self.helpers.Host.GetCommitURL(commit.Sha) - if err != nil { - return err - } - - self.c.LogAction(self.c.Tr.Actions.CopyCommitURLToClipboard) - if err := self.os.CopyToClipboard(url); err != nil { - return self.c.Error(err) - } - - self.c.Toast(self.c.Tr.CommitURLCopiedToClipboard) - return nil -} - -func (self *LocalCommitsController) copyCommitDiffToClipboard(commit *models.Commit) error { - diff, err := self.git.Commit.GetCommitDiff(commit.Sha) - if err != nil { - return self.c.Error(err) - } - - self.c.LogAction(self.c.Tr.Actions.CopyCommitDiffToClipboard) - if err := self.os.CopyToClipboard(diff); err != nil { - return self.c.Error(err) - } - - self.c.Toast(self.c.Tr.CommitDiffCopiedToClipboard) - return nil -} - -func (self *LocalCommitsController) copyCommitMessageToClipboard(commit *models.Commit) error { - message, err := self.git.Commit.GetCommitMessage(commit.Sha) - if err != nil { - return self.c.Error(err) - } - - self.c.LogAction(self.c.Tr.Actions.CopyCommitMessageToClipboard) - if err := self.os.CopyToClipboard(message); err != nil { - return self.c.Error(err) - } - - self.c.Toast(self.c.Tr.CommitMessageCopiedToClipboard) - return nil -} - func (self *LocalCommitsController) handleOpenLogMenu() error { return self.c.Menu(types.CreateMenuOptions{ Title: self.c.Tr.LogMenuTitle, @@ -770,20 +630,6 @@ func (self *LocalCommitsController) handleOpenLogMenu() error { }) } |