summaryrefslogtreecommitdiffstats
path: root/pkg/gui/merge_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-05-19 18:01:29 +1000
committerJesse Duffield <jessedduffield@gmail.com>2020-05-19 18:05:14 +1000
commit36ac764133d3837a22619db922bd8d54f4b0938e (patch)
tree0128185188ab95ae95c172ca7f71fb521ecec960 /pkg/gui/merge_panel.go
parent003e45d2f5447d1f88e59e2f1edd85effeaae3ae (diff)
fix race condition when scrolling to merge conflict
Diffstat (limited to 'pkg/gui/merge_panel.go')
-rw-r--r--pkg/gui/merge_panel.go28
1 files changed, 24 insertions, 4 deletions
diff --git a/pkg/gui/merge_panel.go b/pkg/gui/merge_panel.go
index 7d2e8fc52..a2346db6e 100644
--- a/pkg/gui/merge_panel.go
+++ b/pkg/gui/merge_panel.go
@@ -222,19 +222,39 @@ func (gui *Gui) refreshMergePanel() error {
return err
}
- mainView := gui.getMainView()
- mainView.Wrap = false
- if err := gui.newStringTask("main", content); err != nil {
+ if err := gui.scrollToConflict(gui.g); err != nil {
return err
}
- if err := gui.scrollToConflict(gui.g); err != nil {
+ mainView := gui.getMainView()
+ mainView.Wrap = false
+
+ if err := gui.newStringTaskWithoutScroll("main", content); err != nil {
return err
}
return nil
}
+func (gui *Gui) catSelectedFile(g *gocui.Gui) (string, error) {
+ item, err := gui.getSelectedFile()
+ if err != nil {
+ if err != gui.Errors.ErrNoFiles {
+ return "", err
+ }
+ return "", gui.newStringTask("main", gui.Tr.SLocalize("NoFilesDisplay"))
+ }
+ if item.Type != "file" {
+ return "", gui.newStringTask("main", gui.Tr.SLocalize("NotAFile"))
+ }
+ cat, err := gui.GitCommand.CatFile(item.Name)
+ if err != nil {
+ gui.Log.Error(err)
+ return "", gui.newStringTask("main", err.Error())
+ }
+ return cat, nil
+}
+
func (gui *Gui) scrollToConflict(g *gocui.Gui) error {
panelState := gui.State.Panels.Merging
if len(panelState.Conflicts) == 0 {