Skip to content

Commit fb87057

Browse files
authored
Hook up API for earliestShownDateTime (microsoft#261333)
Hook up api for `earliestShownDateTime`
1 parent 39a7387 commit fb87057

File tree

7 files changed

+21
-1
lines changed

7 files changed

+21
-1
lines changed

src/vs/editor/common/config/editorOptions.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4363,6 +4363,8 @@ export interface IInlineSuggestOptions {
43634363

43644364
suppressSuggestions?: boolean;
43654365

4366+
minimalDelay?: number;
4367+
43664368
/**
43674369
* Does not clear active inline suggestions when the editor loses focus.
43684370
*/
@@ -4424,6 +4426,7 @@ class InlineEditorSuggest extends BaseEditorOption<EditorOption.inlineSuggest, I
44244426
keepOnBlur: false,
44254427
fontFamily: 'default',
44264428
syntaxHighlightingEnabled: true,
4429+
minimalDelay: 0,
44274430
edits: {
44284431
enabled: true,
44294432
showCollapsed: false,
@@ -4465,6 +4468,13 @@ class InlineEditorSuggest extends BaseEditorOption<EditorOption.inlineSuggest, I
44654468
default: defaults.suppressSuggestions,
44664469
description: nls.localize('inlineSuggest.suppressSuggestions', "Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.")
44674470
},
4471+
'editor.inlineSuggest.minimalDelay': {
4472+
type: 'number',
4473+
default: 0,
4474+
minimum: 0,
4475+
maximum: 10000,
4476+
description: nls.localize('inlineSuggest.minimalDelay', "Controls the minimal delay in milliseconds after which inline suggestions are shown after typing."),
4477+
},
44684478
'editor.inlineSuggest.experimental.suppressInlineSuggestions': {
44694479
type: 'string',
44704480
default: defaults.experimental.suppressInlineSuggestions,
@@ -4529,6 +4539,7 @@ class InlineEditorSuggest extends BaseEditorOption<EditorOption.inlineSuggest, I
45294539
keepOnBlur: boolean(input.keepOnBlur, this.defaultValue.keepOnBlur),
45304540
fontFamily: EditorStringOption.string(input.fontFamily, this.defaultValue.fontFamily),
45314541
syntaxHighlightingEnabled: boolean(input.syntaxHighlightingEnabled, this.defaultValue.syntaxHighlightingEnabled),
4542+
minimalDelay: EditorIntOption.clampedInt(input.minimalDelay, 0, 0, 10000),
45324543
edits: {
45334544
enabled: boolean(input.edits?.enabled, this.defaultValue.edits.enabled),
45344545
showCollapsed: boolean(input.edits?.showCollapsed, this.defaultValue.edits.showCollapsed),

src/vs/editor/common/languages.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,7 @@ export interface InlineCompletionContext {
758758
readonly includeInlineEdits: boolean;
759759
readonly includeInlineCompletions: boolean;
760760
readonly requestIssuedDateTime: number;
761+
readonly earliestShownDateTime: number;
761762
}
762763

763764
export class SelectedSuggestionInfo {

src/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export class InlineCompletionsModel extends Disposable {
9696
private readonly _inlineEditsEnabled;
9797
private readonly _inlineEditsShowCollapsedEnabled;
9898
private readonly _triggerCommandOnProviderChange;
99+
private readonly _minimalDelay;
99100

100101
constructor(
101102
public readonly textModel: ITextModel,
@@ -125,6 +126,7 @@ export class InlineCompletionsModel extends Disposable {
125126
this._inlineEditsEnabled = this._editorObs.getOption(EditorOption.inlineSuggest).map(v => !!v.edits.enabled);
126127
this._inlineEditsShowCollapsedEnabled = this._editorObs.getOption(EditorOption.inlineSuggest).map(s => s.edits.showCollapsed);
127128
this._triggerCommandOnProviderChange = this._editorObs.getOption(EditorOption.inlineSuggest).map(s => s.experimental.triggerCommandOnProviderChange);
129+
this._minimalDelay = this._editorObs.getOption(EditorOption.inlineSuggest).map(s => s.minimalDelay);
128130
this._typing = this._register(new TypingInterval(this.textModel));
129131

130132
this._register(this._inlineCompletionsService.onDidChangeIsSnoozing((isSnoozing) => {
@@ -388,6 +390,7 @@ export class InlineCompletionsModel extends Disposable {
388390
includeInlineCompletions: !changeSummary.onlyRequestInlineEdits,
389391
includeInlineEdits: this._inlineEditsEnabled.read(reader),
390392
requestIssuedDateTime: requestInfo.startTime,
393+
earliestShownDateTime: requestInfo.startTime + this._minimalDelay.get(),
391394
};
392395

393396
if (context.triggerKind === InlineCompletionTriggerKind.Automatic && changeSummary.textChange) {

src/vs/editor/contrib/suggest/test/browser/suggestInlineCompletions.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ suite('Suggest Inline Completions', function () {
7575

7676
ensureNoDisposablesAreLeakedInTestSuite();
7777

78-
const context: InlineCompletionContext = { triggerKind: InlineCompletionTriggerKind.Explicit, selectedSuggestionInfo: undefined, includeInlineCompletions: true, includeInlineEdits: false, requestUuid: generateUuid(), requestIssuedDateTime: 0 };
78+
const context: InlineCompletionContext = { triggerKind: InlineCompletionTriggerKind.Explicit, selectedSuggestionInfo: undefined, includeInlineCompletions: true, includeInlineEdits: false, requestUuid: generateUuid(), requestIssuedDateTime: 0, earliestShownDateTime: 0 };
7979

8080
test('Aggressive inline completions when typing within line #146948', async function () {
8181

src/vs/monaco.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4769,6 +4769,7 @@ declare namespace monaco.editor {
47694769
showToolbar?: 'always' | 'onHover' | 'never';
47704770
syntaxHighlightingEnabled?: boolean;
47714771
suppressSuggestions?: boolean;
4772+
minimalDelay?: number;
47724773
/**
47734774
* Does not clear active inline suggestions when the editor loses focus.
47744775
*/
@@ -7469,6 +7470,7 @@ declare namespace monaco.languages {
74697470
readonly includeInlineEdits: boolean;
74707471
readonly includeInlineCompletions: boolean;
74717472
readonly requestIssuedDateTime: number;
7473+
readonly earliestShownDateTime: number;
74727474
}
74737475

74747476
export class SelectedSuggestionInfo {

src/vs/workbench/api/common/extHostLanguageFeatures.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,6 +1376,7 @@ class InlineCompletionAdapter {
13761376
triggerKind: this.languageTriggerKindToVSCodeTriggerKind[context.triggerKind],
13771377
requestUuid: context.requestUuid,
13781378
requestIssuedDateTime: context.requestIssuedDateTime,
1379+
earliestShownDateTime: context.earliestShownDateTime,
13791380
}, token);
13801381

13811382
if (!result) {

src/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ declare module 'vscode' {
156156
readonly requestUuid: string;
157157

158158
readonly requestIssuedDateTime: number;
159+
160+
readonly earliestShownDateTime: number;
159161
}
160162

161163
export interface PartialAcceptInfo {

0 commit comments

Comments
 (0)