summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-09-10 20:17:39 +1000
committerJesse Duffield <jessedduffield@gmail.com>2018-09-10 20:17:39 +1000
commit52b132fe01156d8c7654180d03e40726e18692cd (patch)
treec244c43b94a2ed2968629d3095f08f2f11e466ca /pkg/gui/files_panel.go
parent7f4371ad71247d64249299b390725f073e7fbfad (diff)
better handling of cursor and origin positionings
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go25
1 files changed, 16 insertions, 9 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go
index bfcc938bb..8fd2fb30c 100644
--- a/pkg/gui/files_panel.go
+++ b/pkg/gui/files_panel.go
@@ -275,22 +275,23 @@ func (gui *Gui) updateHasMergeConflictStatus() error {
return nil
}
-func (gui *Gui) renderFile(file commands.File, filesView *gocui.View) {
+func (gui *Gui) renderFile(file commands.File) string {
// 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
+ return red.Sprint(file.DisplayString)
}
- green.Fprint(filesView, file.DisplayString[0:1])
- red.Fprint(filesView, file.DisplayString[1:3])
+
+ output := green.Sprint(file.DisplayString[0:1])
+ output += red.Sprint(file.DisplayString[1:3])
if file.HasUnstagedChanges {
- red.Fprintln(filesView, file.Name)
+ output += red.Sprint(file.Name)
} else {
- green.Fprintln(filesView, file.Name)
+ output += green.Sprint(file.Name)
}
+ return output
}
func (gui *Gui) catSelectedFile(g *gocui.Gui) (string, error) {
@@ -319,8 +320,14 @@ func (gui *Gui) refreshFiles(g *gocui.Gui) error {
}
gui.refreshStateFiles()
filesView.Clear()
- for _, file := range gui.State.Files {
- gui.renderFile(file, filesView)
+ for i, file := range gui.State.Files {
+ str := gui.renderFile(file)
+ if i < len(gui.State.Files)-1 {
+ str += "\n"
+ }
+ if _, err := filesView.Write([]byte(str)); err != nil {
+ return err
+ }
}
gui.correctCursor(filesView)
if filesView == g.CurrentView() {