| /* | |
| * Copyright (C) 2019 Google Inc. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| var path = require('path'); | |
| var vscode = require('vscode'); | |
| var langClient = require('vscode-languageclient'); | |
| var LanguageClient = langClient.LanguageClient; | |
| // this method is called when your extension is activated | |
| // your extension is activated the very first time the command is executed | |
| function activate(context) { | |
| let serverModule = path.join(context.extensionPath, 'langsvr'); | |
| let debugOptions = {}; | |
| // If the extension is launched in debug mode then the debug server options are used | |
| // Otherwise the run options are used | |
| let serverOptions = { | |
| run: { command: serverModule, transport: langClient.stdio }, | |
| debug: { command: serverModule, transport: langClient.stdio, options: debugOptions } | |
| } | |
| // Options to control the language client | |
| let clientOptions = { | |
| documentSelector: ['spirv'], | |
| synchronize: { | |
| // Synchronize the setting section 'spirv' to the server | |
| configurationSection: 'spirv', | |
| // Notify the server about file changes to .spvasm files contained in the workspace | |
| fileEvents: vscode.workspace.createFileSystemWatcher('**/*.spvasm') | |
| } | |
| } | |
| // Create the language client and start the client. | |
| let disposable = new LanguageClient('spirv', serverOptions, clientOptions).start(); | |
| // Push the disposable to the context's subscriptions so that the | |
| // client can be deactivated on extension deactivation | |
| context.subscriptions.push(disposable); | |
| // Set the language configuration here instead of a language configuration | |
| // file to work around https://github.com/microsoft/vscode/issues/42649. | |
| vscode.languages.setLanguageConfiguration("spirv", { | |
| comments: { "lineComment": ";" }, | |
| wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g, | |
| }); | |
| } | |
| exports.activate = activate; | |
| // this method is called when your extension is deactivated | |
| function deactivate() { | |
| } | |
| exports.deactivate = deactivate; |