diff options
Diffstat (limited to 'client/src/extension.ts')
-rw-r--r-- | client/src/extension.ts | 65 |
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(); +} |