提交 73d41cd3 编写于 作者: J Johannes Rieken

add trace logging for resolving extra edits lazy, https://github.com/microsoft/vscode/issues/96779

上级 c4f02d6a
......@@ -40,6 +40,8 @@ import { EditorOption } from 'vs/editor/common/config/editorOptions';
import * as platform from 'vs/base/common/platform';
import { MenuRegistry } from 'vs/platform/actions/common/actions';
import { CancellationTokenSource } from 'vs/base/common/cancellation';
import { ILogService } from 'vs/platform/log/common/log';
import { StopWatch } from 'vs/base/common/stopwatch';
// sticky suggest widget which doesn't disappear on focus out and such
let _sticky = false;
......@@ -117,6 +119,7 @@ export class SuggestController implements IEditorContribution {
@ICommandService private readonly _commandService: ICommandService,
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
@IInstantiationService private readonly _instantiationService: IInstantiationService,
@ILogService private readonly _logService: ILogService,
) {
this.editor = editor;
this.model = new SuggestModel(this.editor, editorWorker);
......@@ -290,6 +293,7 @@ export class SuggestController implements IEditorContribution {
} else if (!item.isResolved) {
// async additional edits
const sw = new StopWatch(true);
let position: IPosition | undefined;
const docListener = model.onDidChangeContent(e => {
......@@ -319,10 +323,10 @@ export class SuggestController implements IEditorContribution {
tasks.push(item.resolve(cts.token).then(() => {
if (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {
return;
return false;
}
if (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position!, Range.getStartPosition(edit.range)))) {
return;
return false;
}
if (didType) {
this.editor.pushUndoStop();
......@@ -336,7 +340,9 @@ export class SuggestController implements IEditorContribution {
if (didType || !(oldFlags & InsertFlags.NoAfterUndoStop)) {
this.editor.pushUndoStop();
}
}).finally(() => {
return true;
}).then(applied => {
this._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);
docListener.dispose();
typeListener.dispose();
}));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册