Skip to content

Commit e5ac33a

Browse files
authored
Merge pull request RooCodeInc#996 from qdaxb/optimize_diagnostics
Reduce the probability of errors when the model tries to fix the problems
2 parents 7722489 + fbf65bf commit e5ac33a

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

src/core/mentions/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,9 @@ async function getFileOrFolderContent(mentionPath: string, cwd: string): Promise
198198
}
199199
}
200200

201-
function getWorkspaceProblems(cwd: string): string {
201+
async function getWorkspaceProblems(cwd: string): Promise<string> {
202202
const diagnostics = vscode.languages.getDiagnostics()
203-
const result = diagnosticsToProblemsString(
203+
const result = await diagnosticsToProblemsString(
204204
diagnostics,
205205
[vscode.DiagnosticSeverity.Error, vscode.DiagnosticSeverity.Warning],
206206
cwd,

src/integrations/diagnostics/index.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,12 @@ export function getNewDiagnostics(
7070
// // - New error in file3 (1:1)
7171

7272
// will return empty string if no problems with the given severity are found
73-
export function diagnosticsToProblemsString(
73+
export async function diagnosticsToProblemsString(
7474
diagnostics: [vscode.Uri, vscode.Diagnostic[]][],
7575
severities: vscode.DiagnosticSeverity[],
7676
cwd: string,
77-
): string {
77+
): Promise<string> {
78+
const documents = new Map<vscode.Uri, vscode.TextDocument>()
7879
let result = ""
7980
for (const [uri, fileDiagnostics] of diagnostics) {
8081
const problems = fileDiagnostics.filter((d) => severities.includes(d.severity))
@@ -100,7 +101,10 @@ export function diagnosticsToProblemsString(
100101
}
101102
const line = diagnostic.range.start.line + 1 // VSCode lines are 0-indexed
102103
const source = diagnostic.source ? `${diagnostic.source} ` : ""
103-
result += `\n- [${source}${label}] Line ${line}: ${diagnostic.message}`
104+
const document = documents.get(uri) || (await vscode.workspace.openTextDocument(uri))
105+
documents.set(uri, document)
106+
const lineContent = document.lineAt(diagnostic.range.start.line).text
107+
result += `\n- [${source}${label}] ${line} | ${lineContent} : ${diagnostic.message}`
104108
}
105109
}
106110
}

src/integrations/editor/DiffViewProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ export class DiffViewProvider {
177177
initial fix is usually correct and it may just take time for linters to catch up.
178178
*/
179179
const postDiagnostics = vscode.languages.getDiagnostics()
180-
const newProblems = diagnosticsToProblemsString(
180+
const newProblems = await diagnosticsToProblemsString(
181181
getNewDiagnostics(this.preDiagnostics, postDiagnostics),
182182
[
183183
vscode.DiagnosticSeverity.Error, // only including errors since warnings can be distracting (if user wants to fix warnings they can use the @problems mention)

0 commit comments

Comments
 (0)