Skip to content

Commit b9226e1

Browse files
authored
Add fallback in case computeHumanReadableDiff fails (microsoft#178254)
1 parent 8a7b87e commit b9226e1

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/vs/editor/browser/services/editorWorkerService.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { regExpFlags } from 'vs/base/common/strings';
2121
import { isNonEmptyArray } from 'vs/base/common/arrays';
2222
import { ILogService } from 'vs/platform/log/common/log';
2323
import { StopWatch } from 'vs/base/common/stopwatch';
24-
import { canceled } from 'vs/base/common/errors';
24+
import { canceled, onUnexpectedError } from 'vs/base/common/errors';
2525
import { UnicodeHighlighterOptions } from 'vs/editor/common/services/unicodeTextModelHighlighter';
2626
import { IEditorWorkerHost } from 'vs/editor/common/services/editorWorkerHost';
2727
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
@@ -153,7 +153,11 @@ export class EditorWorkerService extends Disposable implements IEditorWorkerServ
153153
return Promise.resolve(edits); // File too large
154154
}
155155
const sw = StopWatch.create(true);
156-
const result = this._workerManager.withWorker().then(client => client.computeHumanReadableDiff(resource, edits));
156+
const result = this._workerManager.withWorker().then(client => client.computeHumanReadableDiff(resource, edits)).catch((err) => {
157+
onUnexpectedError(err);
158+
// In case of an exception, fall back to computeMoreMinimalEdits
159+
return this.computeMoreMinimalEdits(resource, edits, true);
160+
});
157161
result.finally(() => this._logService.trace('FORMAT#computeHumanReadableDiff', resource.toString(true), sw.elapsed()));
158162
return Promise.race([result, timeout(1000).then(() => edits)]);
159163

0 commit comments

Comments
 (0)