@@ -245,28 +245,28 @@ func getDiagnostics(filePath string, lsps map[string]*lsp.Client) string {
245245 return projectDiagnostics[i] < projectDiagnostics[j]
246246 })
247247
248− output := ""
248+ var output strings.Builder
249249
250250 if len(fileDiagnostics) > 0 {
251− output += "\n<file_diagnostics>\n"
251+ output.WriteString("\n<file_diagnostics>\n")
252252 if len(fileDiagnostics) > 10 {
253− output += strings.Join(fileDiagnostics[:10], "\n")
254− output += fmt.Sprintf("\n... and %d more diagnostics", len(fileDiagnostics)-10)
253+ output.WriteString(strings.Join(fileDiagnostics[:10], "\n"))
254+ fmt.Fprintf(&output, "\n... and %d more diagnostics", len(fileDiagnostics)-10)
255255 } else {
256− output += strings.Join(fileDiagnostics, "\n")
256+ output.WriteString(strings.Join(fileDiagnostics, "\n"))
257257 }
258− output += "\n</file_diagnostics>\n"
258+ output.WriteString("\n</file_diagnostics>\n")
259259 }
260260
261261 if len(projectDiagnostics) > 0 {
262− output += "\n<project_diagnostics>\n"
262+ output.WriteString("\n<project_diagnostics>\n")
263263 if len(projectDiagnostics) > 10 {
264− output += strings.Join(projectDiagnostics[:10], "\n")
265− output += fmt.Sprintf("\n... and %d more diagnostics", len(projectDiagnostics)-10)
264+ output.WriteString(strings.Join(projectDiagnostics[:10], "\n"))
265+ fmt.Fprintf(&output, "\n... and %d more diagnostics", len(projectDiagnostics)-10)
266266 } else {
267− output += strings.Join(projectDiagnostics, "\n")
267+ output.WriteString(strings.Join(projectDiagnostics, "\n"))
268268 }
269− output += "\n</project_diagnostics>\n"
269+ output.WriteString("\n</project_diagnostics>\n")
270270 }
271271
272272 if len(fileDiagnostics) > 0 || len(projectDiagnostics) > 0 {
@@ -275,13 +275,13 @@ func getDiagnostics(filePath string, lsps map[string]*lsp.Client) string {
275275 projectErrors := countSeverity(projectDiagnostics, "Error")
276276 projectWarnings := countSeverity(projectDiagnostics, "Warn")
277277
278− output += "\n<diagnostic_summary>\n"
279− output += fmt.Sprintf("Current file: %d errors, %d warnings\n", fileErrors, fileWarnings)
280− output += fmt.Sprintf("Project: %d errors, %d warnings\n", projectErrors, projectWarnings)
281− output += "</diagnostic_summary>\n"
278+ output.WriteString("\n<diagnostic_summary>\n")
279+ fmt.Fprintf(&output, "Current file: %d errors, %d warnings\n", fileErrors, fileWarnings)
280+ fmt.Fprintf(&output, "Project: %d errors, %d warnings\n", projectErrors, projectWarnings)
281+ output.WriteString("</diagnostic_summary>\n")
282282 }
283283
284− return output
284+ return output.String()
285285}
286286
287287func countSeverity(diagnostics []string, severity string) int {