|
|
@@ -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()
|