summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-09-25 19:05:24 +1000
committerGitHub <noreply@github.com>2018-09-25 19:05:24 +1000
commit7164f372661794eedd749eb41cc1265c86110913 (patch)
tree39751808681b8908989443b278cd5e90aac97a52 /pkg/gui/files_panel.go
parent61f0801bd366e959437676ae72b2d9fe98c4b8af (diff)
parent80d6bbef8661932ee0a665961b44a681c811ac36 (diff)
Merge branch 'master' into feature/commit-amend
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go45
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)