Skip to content

Commit 8dac160

Browse files
Record the trigger context of completion request (#3272)
1 parent d02cf8e commit 8dac160

2 files changed

Lines changed: 28 additions & 7 deletions

File tree

src/TracingLanguageClient.ts

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ export class TracingLanguageClient extends LanguageClient {
1919
const startAt: number = performance.now();
2020
return super.start().then(value => {
2121
if (isFirstTimeStart) {
22-
this.fireTraceEvent("initialize", startAt, undefined);
22+
this.fireSuccessTraceEvent("initialize", startAt, undefined);
2323
}
2424
return value;
2525
}, reason => {
2626
if (isFirstTimeStart) {
27-
this.fireTraceEvent("initialize", startAt, undefined, reason);
27+
this.fireFailureTraceEvent("initialize", startAt, reason);
2828
}
2929
throw reason;
3030
});
@@ -44,11 +44,18 @@ export class TracingLanguageClient extends LanguageClient {
4444
sendRequest(method: any, ...args) {
4545
const startAt: number = performance.now();
4646
const requestType: string = this.getRequestType(method, ...args);
47+
let data: any;
48+
if (args?.[0]?.context?.triggerKind) {
49+
data = {
50+
triggerKind: args[0].context.triggerKind,
51+
triggerCharacter: args[0].context.triggerCharacter,
52+
};
53+
}
4754
return this.sendRequest0(method, ...args).then(value => {
48-
this.fireTraceEvent(requestType, startAt, this.getResultLength(value));
55+
this.fireSuccessTraceEvent(requestType, startAt, this.getResultLength(value), data);
4956
return value;
5057
}, reason => {
51-
this.fireTraceEvent(requestType, startAt, undefined, reason);
58+
this.fireFailureTraceEvent(requestType, startAt, reason, data);
5259
throw reason;
5360
});
5461
}
@@ -88,13 +95,23 @@ export class TracingLanguageClient extends LanguageClient {
8895
return requestType;
8996
}
9097

91-
private fireTraceEvent(type: string, startAt: number, resultLength: number | undefined, reason?: any): void {
98+
private fireSuccessTraceEvent(type: string, startAt: number, resultLength: number | undefined, data?: any): void {
9299
const duration: number = performance.now() - startAt;
93100
requestEventEmitter.fire({
94101
type,
95102
duration,
96-
error: reason,
97103
resultLength,
104+
data,
105+
});
106+
}
107+
108+
private fireFailureTraceEvent(type: string, startAt: number, error: any, data?: any): void {
109+
const duration: number = performance.now() - startAt;
110+
requestEventEmitter.fire({
111+
type,
112+
duration,
113+
error,
114+
data,
98115
});
99116
}
100117

src/extension.api.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ export interface TraceEvent {
9090
* The number of results returned by a response.
9191
*/
9292
resultLength?: number | undefined;
93+
/**
94+
* Additional data properties, such as the completion trigger context.
95+
*/
96+
data?: any;
9397
}
9498

9599
export interface SourceInvalidatedEvent {
@@ -103,7 +107,7 @@ export interface SourceInvalidatedEvent {
103107
affectedEditorDocuments?: Uri[];
104108
}
105109

106-
export const extensionApiVersion = '0.10';
110+
export const extensionApiVersion = '0.11';
107111

108112
export interface ExtensionAPI {
109113
readonly apiVersion: string;

0 commit comments

Comments
 (0)