diff options
Diffstat (limited to 'lib/Main.ts')
-rw-r--r-- | lib/Main.ts | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/Main.ts b/lib/Main.ts index 75ceed9..73ff8f9 100644 --- a/lib/Main.ts +++ b/lib/Main.ts @@ -89,7 +89,8 @@ export function activate(context: VSCode.ExtensionContext) { } // Create the language client and start the client. - let disposable = new LanguageClient('vscode-javac', 'Java Language Server', createServer, clientOptions).start(); + let languageClient = new LanguageClient('vscode-javac', 'Java Language Server', createServer, clientOptions); + let disposable = languageClient.start(); // Push the disposable to the context's subscriptions so that the // client can be deactivated on extension deactivation @@ -142,9 +143,34 @@ export function activate(context: VSCode.ExtensionContext) { // docComment: { scope: 'comment.documentation', open: '/**', lineStart: ' * ', close: ' */' } // } }); + + // Show progress of pre-compiling each .java source + VSCode.window.withProgress({location: VSCode.ProgressLocation.Window, title: 'Indexing'}, progress => { + return new Promise((resolve, reject) => { + languageClient.onTelemetry((eventJson: string) => { + let event = JSON.parse(eventJson) as CustomTelemetryEvent; + + switch (event.event) { + case 'Progress': + progress.report({message: event.file}); + + break; + case 'Done': + resolve(); + + break; + } + }); + }); + }); }); } +interface CustomTelemetryEvent { + event: 'Progress'|'Done'; + file?: string; +} + function isJava8(javaExecutablePath: string): Promise<boolean> { return new Promise((resolve, reject) => { let result = ChildProcess.execFile(javaExecutablePath, ['-version'], { }, (error, stdout, stderr) => { |