summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2019-03-11 09:53:46 +1100
committerJesse Duffield <jessedduffield@gmail.com>2019-03-16 10:20:27 +1100
commit0e008cc15f8e7cbb6869151d48ae30403bf4dc70 (patch)
tree16af0e998aeaa7e16477e2817376fd0ef38e2219 /pkg/gui
parent1ad9c6faac18d5a683d631452e6a8f8f9c88b9da (diff)
allow user to checkout old files
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/commit_files_panel.go11
-rw-r--r--pkg/gui/keybindings.go18
2 files changed, 23 insertions, 6 deletions
diff --git a/pkg/gui/commit_files_panel.go b/pkg/gui/commit_files_panel.go
index cb4bee807..1d54a2bcf 100644
--- a/pkg/gui/commit_files_panel.go
+++ b/pkg/gui/commit_files_panel.go
@@ -51,3 +51,14 @@ func (gui *Gui) handleSwitchToCommitsPanel(g *gocui.Gui, v *gocui.View) error {
}
return gui.switchFocus(g, v, commitsView)
}
+
+func (gui *Gui) handleCheckoutCommitFile(g *gocui.Gui, v *gocui.View) error {
+ commitSha := gui.State.Commits[gui.State.Panels.Commits.SelectedLine].Sha
+ fileName := gui.State.CommitFiles[gui.State.Panels.CommitFiles.SelectedLine].Name
+
+ if err := gui.GitCommand.CheckoutFile(commitSha, fileName); err != nil {
+ return gui.createErrorPanel(gui.g, err.Error())
+ }
+
+ return gui.refreshFiles()
+}
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index 4f03a3c47..c5eb758e9 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -453,6 +453,12 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Modifier: gocui.ModNone,
Handler: gui.handleSwitchToCommitsPanel,
Description: gui.Tr.SLocalize("goBack"),
+ }, {
+ ViewName: "commitFiles",
+ Key: 'c',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleCheckoutCommitFile,
+ Description: gui.Tr.SLocalize("checkoutCommitFile"),
},
}
@@ -471,12 +477,12 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
nextLine func(*gocui.Gui, *gocui.View) error
focus func(*gocui.Gui, *gocui.View) error
}{
- "menu": {prevLine: gui.handleMenuPrevLine, nextLine: gui.handleMenuNextLine, focus: gui.handleMenuSelect},
- "files": {prevLine: gui.handleFilesPrevLine, nextLine: gui.handleFilesNextLine, focus: gui.handleFilesFocus},
- "branches": {prevLine: gui.handleBranchesPrevLine, nextLine: gui.handleBranchesNextLine, focus: gui.handleBranchSelect},
- "commits": {prevLine: gui.handleCommitsPrevLine, nextLine: gui.handleCommitsNextLine, focus: gui.handleCommitSelect},
- "stash": {prevLine: gui.handleStashPrevLine, nextLine: gui.handleStashNextLine, focus: gui.handleStashEntrySelect},
- "status": {focus: gui.handleStatusSelect},
+ "menu": {prevLine: gui.handleMenuPrevLine, nextLine: gui.handleMenuNextLine, focus: gui.handleMenuSelect},
+ "files": {prevLine: gui.handleFilesPrevLine, nextLine: gui.handleFilesNextLine, focus: gui.handleFilesFocus},
+ "branches": {prevLine: gui.handleBranchesPrevLine, nextLine: gui.handleBranchesNextLine, focus: gui.handleBranchSelect},
+ "commits": {prevLine: gui.handleCommitsPrevLine, nextLine: gui.handleCommitsNextLine, focus: gui.handleCommitSelect},
+ "stash": {prevLine: gui.handleStashPrevLine, nextLine: gui.handleStashNextLine, focus: gui.handleStashEntrySelect},
+ "status": {focus: gui.handleStatusSelect},
"commitFiles": {prevLine: gui.handleCommitFilesPrevLine, nextLine: gui.handleCommitFilesNextLine, focus: gui.handleCommitFileSelect},
}