diff --git a/pkg/gui/context/list_renderer.go b/pkg/gui/context/list_renderer.go index e324d8eb6..40562a599 100644 --- a/pkg/gui/context/list_renderer.go +++ b/pkg/gui/context/list_renderer.go @@ -1,6 +1,8 @@ package context import ( + "strings" + "github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/utils" ) @@ -21,7 +23,8 @@ func (self *ListRenderer) renderLines(startIdx int, endIdx int) string { if self.getColumnAlignments != nil { columnAlignments = self.getColumnAlignments() } - return utils.RenderDisplayStrings( + lines := utils.RenderDisplayStrings( self.getDisplayStrings(startIdx, utils.Min(endIdx, self.list.Len())), columnAlignments) + return strings.Join(lines, "\n") } diff --git a/pkg/gui/presentation/commits_test.go b/pkg/gui/presentation/commits_test.go index 493260ad2..5167681cd 100644 --- a/pkg/gui/presentation/commits_test.go +++ b/pkg/gui/presentation/commits_test.go @@ -422,7 +422,8 @@ func TestGetCommitListDisplayStrings(t *testing.T) { s.showYouAreHereLabel, ) - renderedResult := utils.RenderDisplayStrings(result, nil) + renderedLines := utils.RenderDisplayStrings(result, nil) + renderedResult := strings.Join(renderedLines, "\n") t.Logf("\n%s", renderedResult) assert.EqualValues(t, s.expected, renderedResult) diff --git a/pkg/utils/formatting.go b/pkg/utils/formatting.go index 93be8ec5c..412d01893 100644 --- a/pkg/utils/formatting.go +++ b/pkg/utils/formatting.go @@ -37,7 +37,7 @@ func WithPadding(str string, padding int, alignment Alignment) string { // defaults to left-aligning each column. If you want to set the alignment of // each column, pass in a slice of Alignment values. -func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Alignment) string { +func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Alignment) []string { displayStringsArr = excludeBlankColumns(displayStringsArr) padWidths := getPadWidths(displayStringsArr) columnConfigs := make([]ColumnConfig, len(padWidths)) @@ -53,9 +53,7 @@ func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Align Alignment: alignment, } } - output := getPaddedDisplayStrings(displayStringsArr, columnConfigs) - - return output + return getPaddedDisplayStrings(displayStringsArr, columnConfigs) } // NOTE: this mutates the input slice for the sake of performance @@ -91,12 +89,13 @@ outer: return displayStringsArr } -func getPaddedDisplayStrings(stringArrays [][]string, columnConfigs []ColumnConfig) string { - builder := strings.Builder{} - for i, stringArray := range stringArrays { +func getPaddedDisplayStrings(stringArrays [][]string, columnConfigs []ColumnConfig) []string { + result := make([]string, 0, len(stringArrays)) + for _, stringArray := range stringArrays { if len(stringArray) == 0 { continue } + builder := strings.Builder{} for j, columnConfig := range columnConfigs { if len(stringArray)-1 < j { continue @@ -108,12 +107,9 @@ func getPaddedDisplayStrings(stringArrays [][]string, columnConfigs []ColumnConf continue } builder.WriteString(stringArray[len(columnConfigs)]) - - if i < len(stringArrays)-1 { - builder.WriteString("\n") - } + result = append(result, builder.String()) } - return builder.String() + return result } func getPadWidths(stringArrays [][]string) []int { diff --git a/pkg/utils/formatting_test.go b/pkg/utils/formatting_test.go index b1777911b..38e3849ae 100644 --- a/pkg/utils/formatting_test.go +++ b/pkg/utils/formatting_test.go @@ -1,6 +1,7 @@ package utils import ( + "strings" "testing" "github.com/stretchr/testify/assert" @@ -217,6 +218,6 @@ func TestRenderDisplayStrings(t *testing.T) { for _, test := range tests { output := RenderDisplayStrings(test.input, test.columnAlignments) - assert.EqualValues(t, test.expected, output) + assert.EqualValues(t, test.expected, strings.Join(output, "\n")) } }