提交 ab3bc1e7 编写于 作者: M Matt Bierner

Revert "call resolve before inserting a completion item, #63013"

This reverts commit c2c2e48d.
上级 64117e8f
...@@ -32,7 +32,6 @@ import { WordContextKey } from 'vs/editor/contrib/suggest/wordContextKey'; ...@@ -32,7 +32,6 @@ import { WordContextKey } from 'vs/editor/contrib/suggest/wordContextKey';
import { once, anyEvent } from 'vs/base/common/event'; import { once, anyEvent } from 'vs/base/common/event';
import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService'; import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService';
import { IdleValue } from 'vs/base/common/async'; import { IdleValue } from 'vs/base/common/async';
import { CancellationToken } from 'vs/base/common/cancellation';
class AcceptOnCharacterOracle { class AcceptOnCharacterOracle {
...@@ -154,7 +153,7 @@ export class SuggestController implements IEditorContribution { ...@@ -154,7 +153,7 @@ export class SuggestController implements IEditorContribution {
private _createSuggestWidget(): void { private _createSuggestWidget(): void {
this._widget = this._instantiationService.createInstance(SuggestWidget, this._editor); this._widget = this._instantiationService.createInstance(SuggestWidget, this._editor);
this._toDispose.push(this._widget.onDidSelect(item => this._onDidSelectItem(item, false, true))); this._toDispose.push(this._widget.onDidSelect(item => this._onDidSelectItem(item, false, true), this));
// Wire up logic to accept a suggestion on certain characters // Wire up logic to accept a suggestion on certain characters
const autoAcceptOracle = new AcceptOnCharacterOracle(this._editor, this._widget, item => this._onDidSelectItem(item, false, true)); const autoAcceptOracle = new AcceptOnCharacterOracle(this._editor, this._widget, item => this._onDidSelectItem(item, false, true));
...@@ -213,15 +212,13 @@ export class SuggestController implements IEditorContribution { ...@@ -213,15 +212,13 @@ export class SuggestController implements IEditorContribution {
} }
} }
protected async _onDidSelectItem(event: ISelectedSuggestion, keepAlternativeSuggestions: boolean, undoStops: boolean): Promise<void> { protected _onDidSelectItem(event: ISelectedSuggestion, keepAlternativeSuggestions: boolean, undoStops: boolean): void {
if (!event || !event.item) { if (!event || !event.item) {
this._alternatives.getValue().reset(); this._alternatives.getValue().reset();
this._model.cancel(); this._model.cancel();
return; return;
} }
await event.item.resolve(CancellationToken.None);
const model = this._editor.getModel(); const model = this._editor.getModel();
const modelVersionNow = model.getAlternativeVersionId(); const modelVersionNow = model.getAlternativeVersionId();
const { suggestion, position } = event.item; const { suggestion, position } = event.item;
...@@ -271,7 +268,7 @@ export class SuggestController implements IEditorContribution { ...@@ -271,7 +268,7 @@ export class SuggestController implements IEditorContribution {
} else { } else {
// exec command, done // exec command, done
this._commandService.executeCommand(suggestion.command.id, ...suggestion.command.arguments).catch(onUnexpectedError); this._commandService.executeCommand(suggestion.command.id, ...suggestion.command.arguments).then(undefined, onUnexpectedError);
this._model.cancel(); this._model.cancel();
} }
......
...@@ -30,6 +30,7 @@ import { MarkdownRenderer } from 'vs/editor/contrib/markdown/markdownRenderer'; ...@@ -30,6 +30,7 @@ import { MarkdownRenderer } from 'vs/editor/contrib/markdown/markdownRenderer';
import { IModeService } from 'vs/editor/common/services/modeService'; import { IModeService } from 'vs/editor/common/services/modeService';
import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IOpenerService } from 'vs/platform/opener/common/opener';
import { TimeoutTimer, CancelablePromise, createCancelablePromise } from 'vs/base/common/async'; import { TimeoutTimer, CancelablePromise, createCancelablePromise } from 'vs/base/common/async';
import { CancellationToken } from 'vs/base/common/cancellation';
import { CompletionItemKind, completionKindToCssClass } from 'vs/editor/common/modes'; import { CompletionItemKind, completionKindToCssClass } from 'vs/editor/common/modes';
import { IconLabel, IIconLabelValueOptions } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { IconLabel, IIconLabelValueOptions } from 'vs/base/browser/ui/iconLabel/iconLabel';
import { getIconClasses } from 'vs/editor/common/services/getIconClasses'; import { getIconClasses } from 'vs/editor/common/services/getIconClasses';
...@@ -520,9 +521,11 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<IComp ...@@ -520,9 +521,11 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate<IComp
const item = e.elements[0]; const item = e.elements[0];
const index = e.indexes[0]; const index = e.indexes[0];
this.onDidSelectEmitter.fire({ item, index, model: this.completionModel }); item.resolve(CancellationToken.None).then(() => {
alert(nls.localize('suggestionAriaAccepted', "{0}, accepted", item.suggestion.label)); this.onDidSelectEmitter.fire({ item, index, model: this.completionModel });
this.editor.focus(); alert(nls.localize('suggestionAriaAccepted', "{0}, accepted", item.suggestion.label));
this.editor.focus();
});
} }
private _getSuggestionAriaAlertLabel(item: ICompletionItem): string { private _getSuggestionAriaAlertLabel(item: ICompletionItem): string {
......
...@@ -666,7 +666,7 @@ suite('SuggestModel - TriggerAndCancelOracle', function () { ...@@ -666,7 +666,7 @@ suite('SuggestModel - TriggerAndCancelOracle', function () {
return withOracle(async (sugget, editor) => { return withOracle(async (sugget, editor) => {
class TestCtrl extends SuggestController { class TestCtrl extends SuggestController {
_onDidSelectItem(item: ISelectedSuggestion) { _onDidSelectItem(item: ISelectedSuggestion) {
return super._onDidSelectItem(item, false, true); super._onDidSelectItem(item, false, true);
} }
} }
const ctrl = <TestCtrl>editor.registerAndInstantiateContribution(TestCtrl); const ctrl = <TestCtrl>editor.registerAndInstantiateContribution(TestCtrl);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册