Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

1package presentation
2
3import (
4 "github.com/jesseduffield/lazygit/pkg/commands/models"
5 "github.com/jesseduffield/lazygit/pkg/theme"
6 "github.com/samber/lo"
7)
8
9func GetSubmoduleListDisplayStrings(submodules []*models.SubmoduleConfig) [][]string {
10 return lo.Map(submodules, func(submodule *models.SubmoduleConfig, _ int) []string {
11 return getSubmoduleDisplayStrings(submodule)
12 })
13}
14
15func getSubmoduleDisplayStrings(s *models.SubmoduleConfig) []string {
16 name := s.Name
17 if s.ParentModule != nil {
18 indentation := ""
19 for p := s.ParentModule; p != nil; p = p.ParentModule {
20 indentation += " "
21 }
22
23 name = indentation + "- " + s.Name
24 }
25
26 return []string{theme.DefaultTextColor.Sprint(name)}
27}
28

After

1package presentation
2
3import (
4 "strings"
5
6 "github.com/jesseduffield/lazygit/pkg/commands/models"
7 "github.com/jesseduffield/lazygit/pkg/theme"
8 "github.com/samber/lo"
9)
10
11func GetSubmoduleListDisplayStrings(submodules []*models.SubmoduleConfig) [][]string {
12 return lo.Map(submodules, func(submodule *models.SubmoduleConfig, _ int) []string {
13 return getSubmoduleDisplayStrings(submodule)
14 })
15}
16
17func getSubmoduleDisplayStrings(s *models.SubmoduleConfig) []string {
18 name := s.Name
19 if s.ParentModule != nil {
20 count := 0
21 for p := s.ParentModule; p != nil; p = p.ParentModule {
22 count++
23 }
24 indentation := strings.Repeat(" ", count)
25 name = indentation + "- " + s.Name
26 }
27
28 return []string{theme.DefaultTextColor.Sprint(name)}
29}
30

Before

source_file
package_clause
package "package"
package_identifier "presentation"
import_declaration
import "import"
import_spec_list
( "("
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/jesseduffield/lazygit/pkg/commands/models"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/jesseduffield/lazygit/pkg/theme"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/samber/lo"
" "\""
) ")"
function_declaration (+75 nodes collapsed)
function_declaration
func "func"
identifier "getSubmoduleDisplayStrings"
parameter_list
( "("
parameter_declaration
identifier "s"
pointer_type
* "*"
qualified_type
package_identifier "models"
. "."
type_identifier "SubmoduleConfig"
) ")"
slice_type
[ "["
] "]"
type_identifier "string"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "name"
:= ":="
expression_list
selector_expression
identifier "s"
. "."
field_identifier "Name"
if_statement
if "if"
binary_expression
selector_expression
identifier "s"
. "."
field_identifier "ParentModule"
!= "!="
nil "nil"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "indentation"
:= ":="
expression_list
interpreted_string_literal
" "\""
" "\""
for_statement
for "for"
for_clause (+25 nodes collapsed)
block
{ "{"
statement_list
assignment_statement
expression_list
identifier "indentation"
+= "+="
expression_list
interpreted_string_literal
" "\""
interpreted_string_literal_content " "
" "\""
} "}"
assignment_statement
expression_list
identifier "name"
= "="
expression_list
binary_expression
binary_expression
identifier "indentation"
+ "+"
interpreted_string_literal
" "\""
interpreted_string_literal_content "- "
" "\""
+ "+"
selector_expression
identifier "s"
. "."
field_identifier "Name"
} "}"
return_statement (+24 nodes collapsed)
} "}"

After

source_file
package_clause
package "package"
package_identifier "presentation"
import_declaration
import "import"
import_spec_list
( "("
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "strings"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/jesseduffield/lazygit/pkg/commands/models"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/jesseduffield/lazygit/pkg/theme"
" "\""
import_spec
interpreted_string_literal
" "\""
interpreted_string_literal_content "github.com/samber/lo"
" "\""
) ")"
function_declaration (+75 nodes collapsed)
function_declaration
func "func"
identifier "getSubmoduleDisplayStrings"
parameter_list
( "("
parameter_declaration
identifier "s"
pointer_type
* "*"
qualified_type
package_identifier "models"
. "."
type_identifier "SubmoduleConfig"
) ")"
slice_type
[ "["
] "]"
type_identifier "string"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "name"
:= ":="
expression_list
selector_expression
identifier "s"
. "."
field_identifier "Name"
if_statement
if "if"
binary_expression
selector_expression
identifier "s"
. "."
field_identifier "ParentModule"
!= "!="
nil "nil"
block
{ "{"
statement_list
short_var_declaration
expression_list
identifier "count"
:= ":="
expression_list
int_literal "0"
for_statement
for "for"
for_clause (+25 nodes collapsed)
block
{ "{"
statement_list
inc_statement
identifier "count"
++ "++"
} "}"
short_var_declaration
expression_list
identifier "indentation"
:= ":="
expression_list
call_expression
selector_expression
identifier "strings"
. "."
field_identifier "Repeat"
argument_list
( "("
interpreted_string_literal
" "\""
interpreted_string_literal_content " "
" "\""
, ","
identifier "count"
) ")"
assignment_statement
expression_list
identifier "name"
= "="
expression_list
binary_expression
binary_expression
identifier "indentation"
+ "+"
interpreted_string_literal
" "\""
interpreted_string_literal_content "- "
" "\""
+ "+"
selector_expression
identifier "s"
. "."
field_identifier "Name"
} "}"
return_statement (+24 nodes collapsed)
} "}"