Skip to content

Commit 16c7fb2

Browse files
Track Java setting usage (#1259)
1 parent fa05b8c commit 16c7fb2

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

src/daemon/index.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export async function initDaemon(context: vscode.ExtensionContext) {
2323
}
2424
}
2525

26-
async function checkJavaExtActivated(_context: vscode.ExtensionContext): Promise<boolean> {
26+
async function checkJavaExtActivated(context: vscode.ExtensionContext): Promise<boolean> {
2727
const javaExt = vscode.extensions.getExtension("redhat.java");
2828
if (!javaExt) {
2929
return false;
@@ -51,6 +51,7 @@ async function checkJavaExtActivated(_context: vscode.ExtensionContext): Promise
5151
}
5252

5353
traceSessionStatus(javaExt);
54+
traceJavaSettingUsage(context, javaExt);
5455
traceJavaExtension(javaExt);
5556
traceLSPPerformance(javaExt);
5657

@@ -232,6 +233,39 @@ async function traceJavaExtension(javaExt: vscode.Extension<any>) {
232233
});
233234
}
234235

236+
function traceJavaSettingUsage(context: vscode.ExtensionContext, javaExt: vscode.Extension<any>) {
237+
const javaExtVersion = javaExt.packageJSON?.version;
238+
const isPreReleaseVersion = /^\d+\.\d+\.\d{10}/.test(javaExtVersion);
239+
const javaConfigNames: Set<string> = new Set();
240+
const configDefinition = javaExt.packageJSON?.contributes?.configuration;
241+
if (Array.isArray(configDefinition)) {
242+
for (const category of configDefinition) {
243+
for (const key of Object.keys(category.properties || {})) {
244+
javaConfigNames.add(key);
245+
}
246+
}
247+
} else {
248+
for (const key of Object.keys(configDefinition?.properties || {})) {
249+
javaConfigNames.add(key);
250+
}
251+
}
252+
253+
context.subscriptions.push(vscode.workspace.onDidChangeConfiguration((event) => {
254+
if (event.affectsConfiguration("java")) {
255+
for (const key of javaConfigNames) {
256+
if (event.affectsConfiguration(key)) {
257+
sendInfo("", {
258+
operationName: "changeJavaSettings",
259+
arg: key,
260+
javaversion: javaExtVersion,
261+
remark: isPreReleaseVersion ? "pre-release" : "stable",
262+
});
263+
}
264+
}
265+
}
266+
}));
267+
}
268+
235269
function traceSessionStatus(javaExt: vscode.Extension<any>) {
236270
let initHandled: boolean = false;
237271
javaExt.exports?.onDidRequestEnd?.((traceEvent: any) => {

0 commit comments

Comments
 (0)