summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/keybindings/Keybindings_en.md21
-rw-r--r--docs/keybindings/Keybindings_nl.md21
-rw-r--r--docs/keybindings/Keybindings_pl.md21
-rw-r--r--docs/keybindings/Keybindings_zh.md23
-rw-r--r--pkg/gui/context/local_commits_context.go4
-rw-r--r--pkg/gui/context/reflog_commits_context.go4
-rw-r--r--pkg/gui/context/sub_commits_context.go4
-rw-r--r--pkg/gui/controllers.go15
-rw-r--r--pkg/gui/controllers/basic_commits_controller.go236
-rw-r--r--pkg/gui/controllers/local_commits_controller.go166
-rw-r--r--pkg/gui/controllers/reflog_controller.go103
-rw-r--r--pkg/gui/controllers/sub_commits_controller.go114
-rw-r--r--pkg/i18n/chinese.go1
-rw-r--r--pkg/i18n/english.go2
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 {
})
}
-func (self *LocalCommitsController) 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 *LocalCommitsController) checkSelected(callback func(*models.Commit) error) func() error {
return func() error {
commit := self.context().GetSelected()
@@ -803,18 +649,6 @@ func (self *LocalCommitsController) context() *context.LocalCommitsContext {
return self.contexts.LocalCommits
}
-func (self *LocalCommitsController) newBranch(commit *models.Commit) error {
- return self.helpers.Refs.NewBranch(commit.RefName(), commit.Description(), "")
-}
-
-func (self *LocalCommitsController) copy(commit *models.Commit) error {
- return self.helpers.CherryPick.Copy(commit, self.model.Commits, self.context())
-}
-
-func (self *LocalCommitsController) copyRange(*models.Commit) error {
- return self.helpers.CherryPick.CopyRange(self.context().GetSelectedLineIdx(), self.model.Commits, self.context())
-}
-
func (self *LocalCommitsController) paste() error {
return self.helpers.CherryPick.Paste()
}
diff --git a/pkg/gui/controllers/reflog_controller.go b/pkg/gui/controllers/reflog_controller.go
deleted file mode 100644
index 4085df635..000000000
--- a/pkg/gui/controllers/reflog_controller.go
+++ /dev/null
@@ -1,103 +0,0 @@
-package controllers
-
-import (
- "github.com/jesseduffield/lazygit/pkg/commands/models"