Upsilon-VsCode/Client/out/extension.js

81 lines
3.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
const vscode = require("vscode");
const languageClient = require("vscode-languageclient");
const path = require("path");
const fs = require("fs");
// Defines the search path of your language server DLL. (.NET Core)
const languageServerPaths = [
"./server/UpsilonLanguageServer.dll",
"../UpsilonLanguageServer/UpsilonLanguageServer/bin/Debug/netcoreapp2.1/UpsilonLanguageServer.dll"
];
function activateLanguageServer(context) {
// The server is implemented in an executable application.
let serverModule = null;
for (let p of languageServerPaths) {
p = context.asAbsolutePath(p);
// console.log(p);
if (fs.existsSync(p)) {
serverModule = p;
break;
}
}
if (!serverModule)
throw new URIError("Cannot find the language server module.");
let workPath = path.dirname(serverModule);
console.log(`Use ${serverModule} as server module.`);
console.log(`Work path: ${workPath}.`);
// 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: "dotnet",
args: [serverModule],
options: { cwd: workPath }
},
debug: {
command: "dotnet",
args: [serverModule, "--debug"],
options: { cwd: workPath }
}
};
// Options to control the language client
let clientOptions = {
// Register the server for Upsilon documents
documentSelector: [
{
language: "upsilon",
scheme: "file"
}
],
synchronize: {
configurationSection: "upsilonLanguageServer",
// Notify the server about file changes to '.clientrc files contain in the workspace
fileEvents: [
vscode.workspace.createFileSystemWatcher("**/*.clientrc"),
vscode.workspace.createFileSystemWatcher("**/*.yup"),
vscode.workspace.createFileSystemWatcher("**/*.lua"),
vscode.workspace.createFileSystemWatcher("**/.upsilon/*.json")
]
}
};
// Create the language client and start the client.
let client = new languageClient.LanguageClient("upsilonLanguageServer", "Upsilon Language Server", serverOptions, clientOptions);
let disposable = client.start();
// Push the disposable to the context's subscriptions so that the
// client can be deactivated on extension deactivation
context.subscriptions.push(disposable);
}
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
function activate(context) {
console.log("Upsilon extension is now activated.");
activateLanguageServer(context);
}
exports.activate = activate;
// this method is called when your extension is deactivated
function deactivate() { }
exports.deactivate = deactivate;
//# sourceMappingURL=extension.js.map