Skip to content

Commit 2ba0ea2

Browse files
committed
rename suggestions: add extra telemetry on requesting rename suggestions
1 parent 4be6ff5 commit 2ba0ea2

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/vs/editor/contrib/rename/browser/rename.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,10 @@ class RenameController implements IEditorContribution {
359359
timeBeforeFirstInputFieldEdit?: number;
360360
/** provided only if kind = 'accepted' */
361361
wantsPreview?: boolean;
362+
/** provided only if kind = 'accepted' */
363+
nRenameSuggestionsInvocations?: number;
364+
/** provided only if kind = 'accepted' */
365+
hadAutomaticRenameSuggestionsInvocation?: boolean;
362366
};
363367

364368
type RenameInvokedClassification = {
@@ -373,6 +377,8 @@ class RenameController implements IEditorContribution {
373377
nRenameSuggestions?: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Number of rename suggestions user has got' };
374378
timeBeforeFirstInputFieldEdit?: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Milliseconds before user edits the input field for the first time' };
375379
wantsPreview?: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'If user wanted preview.' };
380+
nRenameSuggestionsInvocations?: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Number of times rename suggestions were invoked' };
381+
hadAutomaticRenameSuggestionsInvocation?: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Whether rename suggestions were invoked automatically' };
376382
};
377383

378384
const value: RenameInvokedEvent =
@@ -391,6 +397,8 @@ class RenameController implements IEditorContribution {
391397
nRenameSuggestions: inputFieldResult.stats.nRenameSuggestions,
392398
timeBeforeFirstInputFieldEdit: inputFieldResult.stats.timeBeforeFirstInputFieldEdit,
393399
wantsPreview: inputFieldResult.wantsPreview,
400+
nRenameSuggestionsInvocations: inputFieldResult.stats.nRenameSuggestionsInvocations,
401+
hadAutomaticRenameSuggestionsInvocation: inputFieldResult.stats.hadAutomaticRenameSuggestionsInvocation,
394402
};
395403

396404
this._telemetryService.publicLog2<RenameInvokedEvent, RenameInvokedClassification>('renameInvokedEvent', value);

src/vs/editor/contrib/rename/browser/renameWidget.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ export type RenameWidgetStats = {
7676
nRenameSuggestions: number;
7777
source: NewNameSource;
7878
timeBeforeFirstInputFieldEdit: number | undefined;
79+
nRenameSuggestionsInvocations: number;
80+
hadAutomaticRenameSuggestionsInvocation: boolean;
7981
};
8082

8183
export type RenameWidgetResult = {
@@ -141,6 +143,10 @@ export class RenameWidget implements IRenameWidget, IContentWidget, IDisposable
141143
*/
142144
private _timeBeforeFirstInputFieldEdit: number | undefined;
143145

146+
private _nRenameSuggestionsInvocations: number;
147+
148+
private _hadAutomaticRenameSuggestionsInvocation: boolean;
149+
144150
private _renameCandidateProvidersCts: CancellationTokenSource | undefined;
145151
private _renameCts: CancellationTokenSource | undefined;
146152

@@ -159,6 +165,10 @@ export class RenameWidget implements IRenameWidget, IContentWidget, IDisposable
159165

160166
this._isEditingRenameCandidate = false;
161167

168+
this._nRenameSuggestionsInvocations = 0;
169+
170+
this._hadAutomaticRenameSuggestionsInvocation = false;
171+
162172
this._candidates = new Set();
163173

164174
this._beforeFirstInputFieldEditSW = new StopWatch();
@@ -387,6 +397,10 @@ export class RenameWidget implements IRenameWidget, IContentWidget, IDisposable
387397

388398
const disposeOnDone = new DisposableStore();
389399

400+
this._nRenameSuggestionsInvocations = 0;
401+
402+
this._hadAutomaticRenameSuggestionsInvocation = false;
403+
390404
if (requestRenameCandidates === undefined) {
391405
this._inputWithButton.button.style.display = 'none';
392406
} else {
@@ -497,6 +511,8 @@ export class RenameWidget implements IRenameWidget, IContentWidget, IDisposable
497511
source,
498512
nRenameSuggestions,
499513
timeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,
514+
nRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,
515+
hadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,
500516
}
501517
});
502518
};
@@ -533,6 +549,12 @@ export class RenameWidget implements IRenameWidget, IContentWidget, IDisposable
533549
return;
534550
}
535551

552+
if (!isManuallyTriggered) {
553+
this._hadAutomaticRenameSuggestionsInvocation = true;
554+
}
555+
556+
this._nRenameSuggestionsInvocations += 1;
557+
536558
this._inputWithButton.setStopButton();
537559

538560
this._updateRenameCandidates(candidates, currentName, this._renameCts.token);

0 commit comments

Comments
 (0)