mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-06-15 00:15:32 +02:00
add basic commits controller for handling actions that apply to all commit contexts
This commit is contained in:
@ -90,8 +90,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
|||||||
<pre>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
||||||
<kbd>space</kbd>: checkout commit
|
<kbd>space</kbd>: checkout commit
|
||||||
<kbd>g</kbd>: view reset options
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>n</kbd>: new branch
|
<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 (cherry-pick)
|
||||||
<kbd>C</kbd>: copy commit range (cherry-pick)
|
<kbd>C</kbd>: copy commit range (cherry-pick)
|
||||||
<kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection
|
<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>ctrl+k</kbd>: move commit up one
|
||||||
<kbd>A</kbd>: amend commit with staged changes
|
<kbd>A</kbd>: amend commit with staged changes
|
||||||
<kbd>t</kbd>: revert commit
|
<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>v</kbd>: paste commits (cherry-pick)
|
||||||
<kbd>ctrl+l</kbd>: open log menu
|
<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>T</kbd>: tag commit
|
||||||
|
<kbd>space</kbd>: checkout commit
|
||||||
<kbd>y</kbd>: copy commit attribute
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>o</kbd>: open commit in browser
|
<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
|
<kbd>enter</kbd>: view selected item's files
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -165,7 +167,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
|||||||
<pre>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
||||||
<kbd>space</kbd>: checkout commit
|
<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 (cherry-pick)
|
||||||
<kbd>C</kbd>: copy commit range (cherry-pick)
|
<kbd>C</kbd>: copy commit range (cherry-pick)
|
||||||
<kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection
|
<kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection
|
||||||
|
@ -130,8 +130,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
|||||||
<pre>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: kopieer commit SHA naar klembord
|
<kbd>ctrl+o</kbd>: kopieer commit SHA naar klembord
|
||||||
<kbd>space</kbd>: checkout commit
|
<kbd>space</kbd>: checkout commit
|
||||||
<kbd>g</kbd>: bekijk reset opties
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>n</kbd>: nieuwe branch
|
<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 (cherry-pick)
|
||||||
<kbd>C</kbd>: kopieer commit reeks (cherry-pick)
|
<kbd>C</kbd>: kopieer commit reeks (cherry-pick)
|
||||||
<kbd>ctrl+r</kbd>: reset cherry-picked (gekopieerde) commits selectie
|
<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>ctrl+k</kbd>: verplaats commit 1 naar boven
|
||||||
<kbd>A</kbd>: wijzig commit met staged veranderingen
|
<kbd>A</kbd>: wijzig commit met staged veranderingen
|
||||||
<kbd>t</kbd>: commit ongedaan maken
|
<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>v</kbd>: plak commits (cherry-pick)
|
||||||
<kbd>ctrl+l</kbd>: open log menu
|
<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>T</kbd>: tag commit
|
||||||
|
<kbd>space</kbd>: checkout commit
|
||||||
<kbd>y</kbd>: copy commit attribute
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>o</kbd>: open commit in browser
|
<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
|
<kbd>enter</kbd>: bekijk gecommite bestanden
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -205,7 +207,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
|||||||
<pre>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: kopieer commit SHA naar klembord
|
<kbd>ctrl+o</kbd>: kopieer commit SHA naar klembord
|
||||||
<kbd>space</kbd>: checkout commit
|
<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 (cherry-pick)
|
||||||
<kbd>C</kbd>: kopieer commit reeks (cherry-pick)
|
<kbd>C</kbd>: kopieer commit reeks (cherry-pick)
|
||||||
<kbd>ctrl+r</kbd>: reset cherry-picked (gekopieerde) commits selectie
|
<kbd>ctrl+r</kbd>: reset cherry-picked (gekopieerde) commits selectie
|
||||||
|
@ -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>ctrl+k</kbd>: przenieś commit 1 w górę
|
||||||
<kbd>A</kbd>: popraw commit zmianami z poczekalni
|
<kbd>A</kbd>: popraw commit zmianami z poczekalni
|
||||||
<kbd>t</kbd>: odwróć commit
|
<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>v</kbd>: wklej commity (przebieranie)
|
||||||
<kbd>ctrl+l</kbd>: open log menu
|
<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>T</kbd>: tag commit
|
||||||
|
<kbd>space</kbd>: checkout commit
|
||||||
<kbd>y</kbd>: copy commit attribute
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>o</kbd>: open commit in browser
|
<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
|
<kbd>enter</kbd>: przeglądaj pliki commita
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -78,7 +78,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
|||||||
<pre>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
||||||
<kbd>space</kbd>: checkout commit
|
<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 commit (przebieranie)
|
||||||
<kbd>C</kbd>: kopiuj zakres commitów (przebieranie)
|
<kbd>C</kbd>: kopiuj zakres commitów (przebieranie)
|
||||||
<kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection
|
<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>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
<kbd>ctrl+o</kbd>: copy commit SHA to clipboard
|
||||||
<kbd>space</kbd>: checkout commit
|
<kbd>space</kbd>: checkout commit
|
||||||
<kbd>g</kbd>: wyświetl opcje resetu
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>n</kbd>: nowa gałąź
|
<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 commit (przebieranie)
|
||||||
<kbd>C</kbd>: kopiuj zakres commitów (przebieranie)
|
<kbd>C</kbd>: kopiuj zakres commitów (przebieranie)
|
||||||
<kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection
|
<kbd>ctrl+r</kbd>: reset cherry-picked (copied) commits selection
|
||||||
|
@ -126,8 +126,10 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
|
|||||||
<pre>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: 将提交的 SHA 复制到剪贴板
|
<kbd>ctrl+o</kbd>: 将提交的 SHA 复制到剪贴板
|
||||||
<kbd>space</kbd>: 检出提交
|
<kbd>space</kbd>: 检出提交
|
||||||
<kbd>g</kbd>: 查看重置选项
|
<kbd>y</kbd>: copy commit attribute
|
||||||
<kbd>n</kbd>: 新分支
|
<kbd>o</kbd>: 在浏览器中打开提交
|
||||||
|
<kbd>n</kbd>: 从提交创建新分支
|
||||||
|
<kbd>g</kbd>: 重置为此提交
|
||||||
<kbd>c</kbd>: 复制提交(拣选)
|
<kbd>c</kbd>: 复制提交(拣选)
|
||||||
<kbd>C</kbd>: 复制提交范围(拣选)
|
<kbd>C</kbd>: 复制提交范围(拣选)
|
||||||
<kbd>ctrl+r</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>
|
<pre>
|
||||||
<kbd>ctrl+o</kbd>: 将提交的 SHA 复制到剪贴板
|
<kbd>ctrl+o</kbd>: 将提交的 SHA 复制到剪贴板
|
||||||
<kbd>space</kbd>: 检出提交
|
<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>C</kbd>: 复制提交范围(拣选)
|
<kbd>C</kbd>: 复制提交范围(拣选)
|
||||||
<kbd>ctrl+r</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>ctrl+k</kbd>: 上移提交
|
||||||
<kbd>A</kbd>: 用已暂存的更改来修补提交
|
<kbd>A</kbd>: 用已暂存的更改来修补提交
|
||||||
<kbd>t</kbd>: 还原提交
|
<kbd>t</kbd>: 还原提交
|
||||||
<kbd>n</kbd>: 从提交创建新分支
|
|
||||||
<kbd>c</kbd>: 复制提交(拣选)
|
|
||||||
<kbd>C</kbd>: 复制提交范围(拣选)
|
|
||||||
<kbd>v</kbd>: 粘贴提交(拣选)
|
<kbd>v</kbd>: 粘贴提交(拣选)
|
||||||
<kbd>ctrl+l</kbd>: 打开日志菜单
|
<kbd>ctrl+l</kbd>: 打开日志菜单
|
||||||
<kbd>g</kbd>: 重置为此提交
|
|
||||||
<kbd>space</kbd>: 检出提交
|
|
||||||
<kbd>T</kbd>: 标签提交
|
<kbd>T</kbd>: 标签提交
|
||||||
|
<kbd>space</kbd>: 检出提交
|
||||||
<kbd>y</kbd>: copy commit attribute
|
<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>: 查看提交的文件
|
<kbd>enter</kbd>: 查看提交的文件
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
@ -108,3 +108,7 @@ func (self *LocalCommitsViewModel) SetShowWholeGitGraph(value bool) {
|
|||||||
func (self *LocalCommitsViewModel) GetShowWholeGitGraph() bool {
|
func (self *LocalCommitsViewModel) GetShowWholeGitGraph() bool {
|
||||||
return self.showWholeGitGraph
|
return self.showWholeGitGraph
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *LocalCommitsViewModel) GetCommits() []*models.Commit {
|
||||||
|
return self.getModel()
|
||||||
|
}
|
||||||
|
@ -70,3 +70,7 @@ func (self *ReflogCommitsContext) GetSelectedRefName() string {
|
|||||||
|
|
||||||
return item.RefName()
|
return item.RefName()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *ReflogCommitsContext) GetCommits() []*models.Commit {
|
||||||
|
return self.getModel()
|
||||||
|
}
|
||||||
|
@ -72,3 +72,7 @@ func (self *SubCommitsContext) GetSelectedRefName() string {
|
|||||||
|
|
||||||
return item.RefName()
|
return item.RefName()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *SubCommitsContext) GetCommits() []*models.Commit {
|
||||||
|
return self.getModel()
|
||||||
|
}
|
||||||
|
@ -74,9 +74,6 @@ func (gui *Gui) resetControllers() {
|
|||||||
|
|
||||||
bisectController := controllers.NewBisectController(common)
|
bisectController := controllers.NewBisectController(common)
|
||||||
|
|
||||||
reflogController := controllers.NewReflogController(common)
|
|
||||||
subCommitsController := controllers.NewSubCommitsController(common)
|
|
||||||
|
|
||||||
getSavedCommitMessage := func() string {
|
getSavedCommitMessage := func() string {
|
||||||
return gui.State.savedCommitMessage
|
return gui.State.savedCommitMessage
|
||||||
}
|
}
|
||||||
@ -159,13 +156,21 @@ func (gui *Gui) resetControllers() {
|
|||||||
controllers.AttachControllers(context, commitishControllerFactory.Create(context))
|
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.Branches, branchesController, gitFlowController)
|
||||||
controllers.AttachControllers(gui.State.Contexts.Files, gui.Controllers.Files, filesRemoveController)
|
controllers.AttachControllers(gui.State.Contexts.Files, gui.Controllers.Files, filesRemoveController)
|
||||||
controllers.AttachControllers(gui.State.Contexts.Tags, gui.Controllers.Tags)
|
controllers.AttachControllers(gui.State.Contexts.Tags, gui.Controllers.Tags)
|
||||||
controllers.AttachControllers(gui.State.Contexts.Submodules, gui.Controllers.Submodules)
|
controllers.AttachControllers(gui.State.Contexts.Submodules, gui.Controllers.Submodules)
|
||||||
controllers.AttachControllers(gui.State.Contexts.LocalCommits, gui.Controllers.LocalCommits, bisectController)
|
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.CommitFiles, commitFilesController)
|
||||||
controllers.AttachControllers(gui.State.Contexts.Remotes, gui.Controllers.Remotes)
|
controllers.AttachControllers(gui.State.Contexts.Remotes, gui.Controllers.Remotes)
|
||||||
controllers.AttachControllers(gui.State.Contexts.Stash, stashController)
|
controllers.AttachControllers(gui.State.Contexts.Stash, stashController)
|
||||||
|
236
pkg/gui/controllers/basic_commits_controller.go
Normal file
236
pkg/gui/controllers/basic_commits_controller.go
Normal file
@ -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)
|
||||||
|
}
|
@ -3,7 +3,6 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/jesseduffield/gocui"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||||
@ -101,22 +100,6 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
|
|||||||
Handler: self.checkSelected(self.revert),
|
Handler: self.checkSelected(self.revert),
|
||||||
Description: self.c.Tr.LcRevertCommit,
|
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),
|
Key: opts.GetKey(opts.Config.Commits.PasteCommits),
|
||||||
Handler: opts.Guards.OutsideFilterMode(self.paste),
|
Handler: opts.Guards.OutsideFilterMode(self.paste),
|
||||||
@ -149,32 +132,11 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
|
|||||||
Description: self.c.Tr.LcOpenLogMenu,
|
Description: self.c.Tr.LcOpenLogMenu,
|
||||||
OpensMenu: true,
|
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),
|
Key: opts.GetKey(opts.Config.Commits.TagCommit),
|
||||||
Handler: self.checkSelected(self.createTag),
|
Handler: self.checkSelected(self.createTag),
|
||||||
Description: self.c.Tr.LcTagCommit,
|
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
|
return bindings
|
||||||
@ -557,21 +519,6 @@ func (self *LocalCommitsController) createTag(commit *models.Commit) error {
|
|||||||
return self.helpers.Tags.CreateTagMenu(commit.Sha, func() {})
|
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 {
|
func (self *LocalCommitsController) openSearch() error {
|
||||||
// we usually lazyload these commits but now that we're searching we need to load them now
|
// we usually lazyload these commits but now that we're searching we need to load them now
|
||||||
if self.context().GetLimitCommits() {
|
if self.context().GetLimitCommits() {
|
||||||
@ -600,93 +547,6 @@ func (self *LocalCommitsController) gotoBottom() error {
|
|||||||
return nil
|
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 {
|
func (self *LocalCommitsController) handleOpenLogMenu() error {
|
||||||
return self.c.Menu(types.CreateMenuOptions{
|
return self.c.Menu(types.CreateMenuOptions{
|
||||||
Title: self.c.Tr.LogMenuTitle,
|
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 {
|
func (self *LocalCommitsController) checkSelected(callback func(*models.Commit) error) func() error {
|
||||||
return func() error {
|
return func() error {
|
||||||
commit := self.context().GetSelected()
|
commit := self.context().GetSelected()
|
||||||
@ -803,18 +649,6 @@ func (self *LocalCommitsController) context() *context.LocalCommitsContext {
|
|||||||
return self.contexts.LocalCommits
|
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 {
|
func (self *LocalCommitsController) paste() error {
|
||||||
return self.helpers.CherryPick.Paste()
|
return self.helpers.CherryPick.Paste()
|
||||||
}
|
}
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
package controllers
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ReflogController struct {
|
|
||||||
baseController
|
|
||||||
*controllerCommon
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ types.IController = &ReflogController{}
|
|
||||||
|
|
||||||
func NewReflogController(
|
|
||||||
common *controllerCommon,
|
|
||||||
) *ReflogController {
|
|
||||||
return &ReflogController{
|
|
||||||
baseController: baseController{},
|
|
||||||
controllerCommon: common,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *ReflogController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
|
|
||||||
bindings := []*types.Binding{
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Universal.Select),
|
|
||||||
Handler: self.checkSelected(self.checkout),
|
|
||||||
Description: self.c.Tr.LcCheckoutCommit,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Commits.ViewResetOptions),
|
|
||||||
Handler: self.checkSelected(self.openResetMenu),
|
|
||||||
Description: self.c.Tr.LcViewResetOptions,
|
|
||||||
OpensMenu: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Commits.CherryPickCopy),
|
|
||||||
Handler: opts.Guards.OutsideFilterMode(self.checkSelected(self.copy)),
|
|
||||||
Description: self.c.Tr.LcCherryPickCopy,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Commits.CherryPickCopyRange),
|
|
||||||
Handler: opts.Guards.OutsideFilterMode(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 *ReflogController) 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 *ReflogController) Context() types.Context {
|
|
||||||
return self.context()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *ReflogController) context() *context.ReflogCommitsContext {
|
|
||||||
return self.contexts.ReflogCommits
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *ReflogController) checkout(commit *models.Commit) error {
|
|
||||||
err := 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.CheckoutReflogCommit)
|
|
||||||
return self.helpers.Refs.CheckoutRef(commit.Sha, types.CheckoutRefOptions{})
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *ReflogController) openResetMenu(commit *models.Commit) error {
|
|
||||||
return self.helpers.Refs.CreateGitResetMenu(commit.Sha)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *ReflogController) copy(commit *models.Commit) error {
|
|
||||||
return self.helpers.CherryPick.Copy(commit, self.model.FilteredReflogCommits, self.context())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *ReflogController) copyRange(commit *models.Commit) error {
|
|
||||||
return self.helpers.CherryPick.CopyRange(self.context().GetSelectedLineIdx(), self.model.FilteredReflogCommits, self.context())
|
|
||||||
}
|
|
@ -1,114 +0,0 @@
|
|||||||
package controllers
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
||||||
)
|
|
||||||
|
|
||||||
type SubCommitsController struct {
|
|
||||||
baseController
|
|
||||||
*controllerCommon
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ types.IController = &SubCommitsController{}
|
|
||||||
|
|
||||||
func NewSubCommitsController(
|
|
||||||
common *controllerCommon,
|
|
||||||
) *SubCommitsController {
|
|
||||||
return &SubCommitsController{
|
|
||||||
baseController: baseController{},
|
|
||||||
controllerCommon: common,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
|
|
||||||
bindings := []*types.Binding{
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Universal.Select),
|
|
||||||
Handler: self.checkSelected(self.checkout),
|
|
||||||
Description: self.c.Tr.LcCheckoutCommit,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Commits.ViewResetOptions),
|
|
||||||
Handler: self.checkSelected(self.openResetMenu),
|
|
||||||
Description: self.c.Tr.LcViewResetOptions,
|
|
||||||
OpensMenu: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Key: opts.GetKey(opts.Config.Universal.New),
|
|
||||||
Handler: self.checkSelected(self.newBranch),
|
|
||||||
Description: self.c.Tr.LcNewBranch,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
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 *SubCommitsController) 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 *SubCommitsController) Context() types.Context {
|
|
||||||
return self.context()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) context() *context.SubCommitsContext {
|
|
||||||
return self.contexts.SubCommits
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) checkout(commit *models.Commit) error {
|
|
||||||
err := 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{})
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
self.context().SetSelectedLineIdx(0)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) openResetMenu(commit *models.Commit) error {
|
|
||||||
return self.helpers.Refs.CreateGitResetMenu(commit.Sha)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) newBranch(commit *models.Commit) error {
|
|
||||||
return self.helpers.Refs.NewBranch(commit.RefName(), commit.Description(), "")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) copy(commit *models.Commit) error {
|
|
||||||
return self.helpers.CherryPick.Copy(commit, self.model.SubCommits, self.context())
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *SubCommitsController) copyRange(commit *models.Commit) error {
|
|
||||||
return self.helpers.CherryPick.CopyRange(self.context().GetSelectedLineIdx(), self.model.SubCommits, self.context())
|
|
||||||
}
|
|
@ -474,7 +474,6 @@ func chineseTranslationSet() TranslationSet {
|
|||||||
Actions: Actions{
|
Actions: Actions{
|
||||||
// TODO: combine this with the original keybinding descriptions (those are all in lowercase atm)
|
// TODO: combine this with the original keybinding descriptions (those are all in lowercase atm)
|
||||||
CheckoutCommit: "检出提交",
|
CheckoutCommit: "检出提交",
|
||||||
CheckoutReflogCommit: "检出 reflog 提交",
|
|
||||||
CheckoutTag: "检出标签",
|
CheckoutTag: "检出标签",
|
||||||
CheckoutBranch: "检出分支",
|
CheckoutBranch: "检出分支",
|
||||||
ForceCheckoutBranch: "强制检出分支",
|
ForceCheckoutBranch: "强制检出分支",
|
||||||
|
@ -488,7 +488,6 @@ type Bisect struct {
|
|||||||
|
|
||||||
type Actions struct {
|
type Actions struct {
|
||||||
CheckoutCommit string
|
CheckoutCommit string
|
||||||
CheckoutReflogCommit string
|
|
||||||
CheckoutTag string
|
CheckoutTag string
|
||||||
CheckoutBranch string
|
CheckoutBranch string
|
||||||
ForceCheckoutBranch string
|
ForceCheckoutBranch string
|
||||||
@ -1060,7 +1059,6 @@ func EnglishTranslationSet() TranslationSet {
|
|||||||
Actions: Actions{
|
Actions: Actions{
|
||||||
// TODO: combine this with the original keybinding descriptions (those are all in lowercase atm)
|
// TODO: combine this with the original keybinding descriptions (those are all in lowercase atm)
|
||||||
CheckoutCommit: "Checkout commit",
|
CheckoutCommit: "Checkout commit",
|
||||||
CheckoutReflogCommit: "Checkout reflog commit",
|
|
||||||
CheckoutTag: "Checkout tag",
|
CheckoutTag: "Checkout tag",
|
||||||
CheckoutBranch: "Checkout branch",
|
CheckoutBranch: "Checkout branch",
|
||||||
ForceCheckoutBranch: "Force checkout branch",
|
ForceCheckoutBranch: "Force checkout branch",
|
||||||
|
Reference in New Issue
Block a user