Browse Source

Add longer grace period for diagnostics to catch up when existing errors should have been fixed by claude

Saoud Rizwan 1 year ago
parent
commit
4ee88c5de7
1 changed files with 15 additions and 2 deletions
  1. 15 2
      src/integrations/DiagnosticsMonitor.ts

+ 15 - 2
src/integrations/DiagnosticsMonitor.ts

@@ -58,10 +58,23 @@ class DiagnosticsMonitor {
 			return currentDiagnostics
 		}
 
-		return this.waitForUpdatedDiagnostics()
+		let timeout = 300
+
+		// if diagnostics contain existing errors (since the check above didn't trigger) then it's likely claude just did something that should have fixed the error, so we'll give a longer grace period for diagnostics to catch up
+		const hasErrorsOrWarnings = currentDiagnostics.some(([_, diagnostics]) =>
+			diagnostics.some(
+				(d) =>
+					d.severity === vscode.DiagnosticSeverity.Error || d.severity === vscode.DiagnosticSeverity.Warning
+			)
+		)
+		if (hasErrorsOrWarnings) {
+			timeout = 5_000
+		}
+
+		return this.waitForUpdatedDiagnostics(timeout)
 	}
 
-	private async waitForUpdatedDiagnostics(timeout: number = 300): Promise<FileDiagnostics> {
+	private async waitForUpdatedDiagnostics(timeout: number): Promise<FileDiagnostics> {
 		return new Promise((resolve, reject) => {
 			const timer = setTimeout(() => {
 				cleanup()