summaryrefslogtreecommitdiff
path: root/client/src/extension.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/extension.ts')
-rw-r--r--client/src/extension.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/client/src/extension.ts b/client/src/extension.ts
new file mode 100644
index 00000000..13899f2a
--- /dev/null
+++ b/client/src/extension.ts
@@ -0,0 +1,65 @@
+/* --------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ * ------------------------------------------------------------------------------------------ */
+'use strict';
+
+import * as path from 'path';
+import { workspace, ExtensionContext } from 'vscode';
+
+import {
+ LanguageClient,
+ LanguageClientOptions,
+ ServerOptions,
+} from 'vscode-languageclient';
+
+let client: LanguageClient;
+
+export function activate(context: ExtensionContext) {
+ // If the extension is launched in debug mode then the debug server options are used
+ // Otherwise the run options are used
+ let serverOptions: ServerOptions = {
+ command: context.asAbsolutePath(
+ path.join('server', 'bin', 'lua.exe')
+ ),
+ args: [
+ '-E',
+ context.asAbsolutePath(
+ path.join('server', 'main.lua')
+ )
+ ],
+ options: {
+ cwd: context.asAbsolutePath(
+ path.join('server')
+ ),
+ }
+ };
+
+ // Options to control the language client
+ let clientOptions: LanguageClientOptions = {
+ // Register the server for plain text documents
+ documentSelector: [{ scheme: 'file', language: 'lua' }],
+ synchronize: {
+ // Notify the server about file changes to '.clientrc files contained in the workspace
+ fileEvents: workspace.createFileSystemWatcher('**/.clientrc')
+ }
+ };
+
+ // Create the language client and start the client.
+ client = new LanguageClient(
+ 'languageServerExample',
+ 'Language Server Example',
+ serverOptions,
+ clientOptions
+ );
+
+ // Start the client. This will also launch the server
+ client.start();
+}
+
+export function deactivate(): Thenable<void> {
+ if (!client) {
+ return undefined;
+ }
+ return client.stop();
+}