@@ -52,15 +52,29 @@ func splitLines(
52
52
_ , _ , _ , target := findSplitGroupTarget (file , fset , start , end )
53
53
54
54
// get the original line indent of target.
55
+ firstLineIndent := getIndent (src , fset , target )
56
+ eltIndent := firstLineIndent + "\t "
57
+
58
+ return fset , processLines (fset , target , src , file , ",\n " , "\n " , ",\n " + firstLineIndent , eltIndent ), nil
59
+ }
60
+
61
+ func getIndent (src []byte , fset * token.FileSet , target ast.Node ) string {
62
+ var pos token.Pos
63
+ switch node := target .(type ) {
64
+ case * ast.FieldList :
65
+ pos = node .Opening
66
+ case * ast.CallExpr :
67
+ pos = node .Lparen
68
+ case * ast.CompositeLit :
69
+ pos = node .Lbrace
70
+ }
71
+
55
72
split := bytes .Split (src , []byte ("\n " ))
56
- targetLineNumber := safetoken .StartPosition (fset , target . Pos () ).Line
73
+ targetLineNumber := safetoken .StartPosition (fset , pos ).Line
57
74
firstLine := string (split [targetLineNumber - 1 ])
58
75
trimmed := strings .TrimFunc (string (firstLine ), unicode .IsSpace )
59
76
60
- firstLineIndent := firstLine [:strings .Index (firstLine , trimmed )]
61
- eltIndent := firstLineIndent + "\t "
62
-
63
- return fset , processLines (fset , target , src , file , ",\n " , "\n " , ",\n " + firstLineIndent , eltIndent ), nil
77
+ return firstLine [:strings .Index (firstLine , trimmed )]
64
78
}
65
79
66
80
func groupLines (
@@ -75,13 +89,7 @@ func groupLines(
75
89
return fset , processLines (fset , target , src , file , ", " , "" , "" , "" ), nil
76
90
}
77
91
78
- func processLines (
79
- fset * token.FileSet ,
80
- target ast.Node ,
81
- src []byte ,
82
- file * ast.File ,
83
- sep , prefix , suffix , indent string ,
84
- ) * analysis.SuggestedFix {
92
+ func processLines (fset * token.FileSet , target ast.Node , src []byte , file * ast.File , sep , prefix , suffix , indent string ) * analysis.SuggestedFix {
85
93
var replPos , replEnd token.Pos
86
94
var lines []string
87
95
0 commit comments