diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2018-09-25 19:05:24 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-25 19:05:24 +1000 |
commit | 7164f372661794eedd749eb41cc1265c86110913 (patch) | |
tree | 39751808681b8908989443b278cd5e90aac97a52 /pkg/gui/files_panel.go | |
parent | 61f0801bd366e959437676ae72b2d9fe98c4b8af (diff) | |
parent | 80d6bbef8661932ee0a665961b44a681c811ac36 (diff) |
Merge branch 'master' into feature/commit-amend
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r-- | pkg/gui/files_panel.go | 45 |
1 files changed, 17 insertions, 28 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 235cb12d8..c0d01136a 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -7,16 +7,17 @@ import ( // "strings" + "fmt" "strings" - "github.com/fatih/color" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands" + "github.com/jesseduffield/lazygit/pkg/utils" ) -func (gui *Gui) stagedFiles() []commands.File { +func (gui *Gui) stagedFiles() []*commands.File { files := gui.State.Files - result := make([]commands.File, 0) + result := make([]*commands.File, 0) for _, file := range files { if file.HasStagedChanges { result = append(result, file) @@ -25,9 +26,9 @@ func (gui *Gui) stagedFiles() []commands.File { return result } -func (gui *Gui) trackedFiles() []commands.File { +func (gui *Gui) trackedFiles() []*commands.File { files := gui.State.Files - result := make([]commands.File, 0) + result := make([]*commands.File, 0) for _, file := range files { if file.Tracked { result = append(result, file) @@ -116,9 +117,9 @@ func (gui *Gui) handleAddPatch(g *gocui.Gui, v *gocui.View) error { return gui.Errors.ErrSubProcess } -func (gui *Gui) getSelectedFile(g *gocui.Gui) (commands.File, error) { +func (gui *Gui) getSelectedFile(g *gocui.Gui) (*commands.File, error) { if len(gui.State.Files) == 0 { - return commands.File{}, gui.Errors.ErrNoFiles + return &commands.File{}, gui.Errors.ErrNoFiles } filesView, err := g.View("files") if err != nil { @@ -184,7 +185,9 @@ func (gui *Gui) handleFileSelect(g *gocui.Gui, v *gocui.View) error { gui.renderString(g, "main", gui.Tr.SLocalize("NoChangedFiles")) return gui.renderfilesOptions(g, nil) } - gui.renderfilesOptions(g, &file) + if err := gui.renderfilesOptions(g, file); err != nil { + return err + } var content string if file.HasMergeConflicts { return gui.refreshMergePanel(g) @@ -302,24 +305,6 @@ func (gui *Gui) updateHasMergeConflictStatus() error { return nil } -func (gui *Gui) renderFile(file commands.File, filesView *gocui.View) { - // potentially inefficient to be instantiating these color - // objects with each render - red := color.New(color.FgRed) - green := color.New(color.FgGreen) - if !file.Tracked && !file.HasStagedChanges { - red.Fprintln(filesView, file.DisplayString) - return - } - green.Fprint(filesView, file.DisplayString[0:1]) - red.Fprint(filesView, file.DisplayString[1:3]) - if file.HasUnstagedChanges { - red.Fprintln(filesView, file.Name) - } else { - green.Fprintln(filesView, file.Name) - } -} - func (gui *Gui) catSelectedFile(g *gocui.Gui) (string, error) { item, err := gui.getSelectedFile(g) if err != nil { @@ -345,10 +330,14 @@ func (gui *Gui) refreshFiles(g *gocui.Gui) error { return err } gui.refreshStateFiles() + filesView.Clear() - for _, file := range gui.State.Files { - gui.renderFile(file, filesView) + list, err := utils.RenderList(gui.State.Files) + if err != nil { + return err } + fmt.Fprint(filesView, list) + gui.correctCursor(filesView) if filesView == g.CurrentView() { gui.handleFileSelect(g, filesView) |