@usethesource/rascal-vscode-dsl-lsp-server 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +24 -0
- package/README.md +9 -0
- package/assets/jars/.gitignore +1 -0
- package/assets/jars/rascal-lsp.jar +0 -0
- package/assets/jars/rascal.jar +0 -0
- package/lib/RascalExtension.d.ts +23 -0
- package/lib/RascalExtension.js +147 -0
- package/lib/RascalExtension.js.map +1 -0
- package/lib/RascalTerminalLinkProvider.d.ts +22 -0
- package/lib/RascalTerminalLinkProvider.js +142 -0
- package/lib/RascalTerminalLinkProvider.js.map +1 -0
- package/lib/auto-jvm/JavaLookup.d.ts +2 -0
- package/lib/auto-jvm/JavaLookup.js +181 -0
- package/lib/auto-jvm/JavaLookup.js.map +1 -0
- package/lib/auto-jvm/downloaders.d.ts +18 -0
- package/lib/auto-jvm/downloaders.js +332 -0
- package/lib/auto-jvm/downloaders.js.map +1 -0
- package/lib/extension.d.ts +7 -0
- package/lib/extension.js +43 -0
- package/lib/extension.js.map +1 -0
- package/lib/fs/RascalFileSystemProviders.d.ts +34 -0
- package/lib/fs/RascalFileSystemProviders.js +69 -0
- package/lib/fs/RascalFileSystemProviders.js.map +1 -0
- package/lib/fs/VSCodeURIResolver.d.ts +71 -0
- package/lib/fs/VSCodeURIResolver.js +383 -0
- package/lib/fs/VSCodeURIResolver.js.map +1 -0
- package/lib/lsp/ParameterizedLanguageServer.d.ts +26 -0
- package/lib/lsp/ParameterizedLanguageServer.js +135 -0
- package/lib/lsp/ParameterizedLanguageServer.js.map +1 -0
- package/lib/lsp/RascalLSPConnection.d.ts +13 -0
- package/lib/lsp/RascalLSPConnection.js +187 -0
- package/lib/lsp/RascalLSPConnection.js.map +1 -0
- package/lib/lsp/RascalLanguageServer.d.ts +9 -0
- package/lib/lsp/RascalLanguageServer.js +32 -0
- package/lib/lsp/RascalLanguageServer.js.map +1 -0
- package/lib/lsp/library.d.ts +2 -0
- package/lib/lsp/library.js +35 -0
- package/lib/lsp/library.js.map +1 -0
- package/lib/test/normal-suite/JavaDownload.test.d.ts +1 -0
- package/lib/test/normal-suite/JavaDownload.test.js +105 -0
- package/lib/test/normal-suite/JavaDownload.test.js.map +1 -0
- package/lib/test/runVSCodeTests.d.ts +1 -0
- package/lib/test/runVSCodeTests.js +48 -0
- package/lib/test/runVSCodeTests.js.map +1 -0
- package/lib/test/vscode-suite/extension.test.d.ts +1 -0
- package/lib/test/vscode-suite/extension.test.js +44 -0
- package/lib/test/vscode-suite/extension.test.js.map +1 -0
- package/lib/test/vscode-suite/index.d.ts +1 -0
- package/lib/test/vscode-suite/index.js +66 -0
- package/lib/test/vscode-suite/index.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VSCodeUriResolverServer = exports.ISourceLocationType = exports.ISourceLocationChangeType = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) 2018-2021, NWO-I CWI and Swat.engineering
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
*
|
|
14
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
15
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
16
|
+
* and/or other materials provided with the distribution.
|
|
17
|
+
*
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
19
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
20
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
21
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
22
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
23
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
24
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
25
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
26
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
27
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
28
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
+
*/
|
|
30
|
+
const net_1 = require("net");
|
|
31
|
+
const vscode = require("vscode");
|
|
32
|
+
const rpc = require("vscode-jsonrpc/node");
|
|
33
|
+
function connectInputHandler(connection, handler) {
|
|
34
|
+
function req(method, h) {
|
|
35
|
+
connection.onRequest(new rpc.RequestType1("rascal/vfs/input/" + method), h.bind(handler));
|
|
36
|
+
}
|
|
37
|
+
req("readFile", handler.readFile);
|
|
38
|
+
req("exists", handler.exists);
|
|
39
|
+
req("lastModified", handler.lastModified);
|
|
40
|
+
req("created", handler.created);
|
|
41
|
+
req("isDirectory", handler.isDirectory);
|
|
42
|
+
req("isFile", handler.isFile);
|
|
43
|
+
req("list", handler.list);
|
|
44
|
+
}
|
|
45
|
+
function connectOutputHandler(connection, handler) {
|
|
46
|
+
function req(method, h) {
|
|
47
|
+
connection.onRequest(new rpc.RequestType1("rascal/vfs/output/" + method), h.bind(handler));
|
|
48
|
+
}
|
|
49
|
+
req("writeFile", handler.writeFile);
|
|
50
|
+
req("mkDirectory", handler.mkDirectory);
|
|
51
|
+
req("remove", handler.remove);
|
|
52
|
+
req("rename", handler.rename);
|
|
53
|
+
}
|
|
54
|
+
function connectWatchHandler(connection, handler) {
|
|
55
|
+
function req(method, h) {
|
|
56
|
+
connection.onRequest(new rpc.RequestType1("rascal/vfs/watcher/" + method), h.bind(handler));
|
|
57
|
+
}
|
|
58
|
+
req("watch", handler.watch);
|
|
59
|
+
req("unwatch", handler.unwatch);
|
|
60
|
+
}
|
|
61
|
+
function buildWatchReceiver(connection) {
|
|
62
|
+
return {
|
|
63
|
+
emitWatch: (e) => {
|
|
64
|
+
connection.sendNotification(new rpc.NotificationType1("rascal/vfs/watcher/emitWatch"), e);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
var ISourceLocationChangeType;
|
|
69
|
+
(function (ISourceLocationChangeType) {
|
|
70
|
+
ISourceLocationChangeType[ISourceLocationChangeType["created"] = 1] = "created";
|
|
71
|
+
ISourceLocationChangeType[ISourceLocationChangeType["deleted"] = 2] = "deleted";
|
|
72
|
+
ISourceLocationChangeType[ISourceLocationChangeType["modified"] = 3] = "modified";
|
|
73
|
+
})(ISourceLocationChangeType = exports.ISourceLocationChangeType || (exports.ISourceLocationChangeType = {}));
|
|
74
|
+
var ISourceLocationType;
|
|
75
|
+
(function (ISourceLocationType) {
|
|
76
|
+
ISourceLocationType[ISourceLocationType["file"] = 1] = "file";
|
|
77
|
+
ISourceLocationType[ISourceLocationType["directory"] = 2] = "directory";
|
|
78
|
+
})(ISourceLocationType = exports.ISourceLocationType || (exports.ISourceLocationType = {}));
|
|
79
|
+
class VSCodeUriResolverServer {
|
|
80
|
+
constructor(debug) {
|
|
81
|
+
this.activeClients = [];
|
|
82
|
+
this.rascalNativeSchemes = new Set();
|
|
83
|
+
this.server = (0, net_1.createServer)(newClient => {
|
|
84
|
+
if (debug) {
|
|
85
|
+
console.log("VFS: new connection: " + JSON.stringify(newClient));
|
|
86
|
+
}
|
|
87
|
+
newClient.setNoDelay(true);
|
|
88
|
+
this.handleNewClient(newClient, debug);
|
|
89
|
+
});
|
|
90
|
+
this.server.on('error', console.log);
|
|
91
|
+
this.server.listen(0, "localhost", () => console.log("VFS: started listening on " + JSON.stringify(this.server.address())));
|
|
92
|
+
}
|
|
93
|
+
ignoreSchemes(toIgnore) {
|
|
94
|
+
toIgnore.forEach(v => this.rascalNativeSchemes.add(v));
|
|
95
|
+
}
|
|
96
|
+
dispose() {
|
|
97
|
+
this.server.close();
|
|
98
|
+
this.activeClients.forEach(c => c.dispose());
|
|
99
|
+
}
|
|
100
|
+
handleNewClient(newClient, debug) {
|
|
101
|
+
function makeLogger(prefix, onlyDebug) {
|
|
102
|
+
if (onlyDebug && !debug) {
|
|
103
|
+
return (_s) => { return; };
|
|
104
|
+
}
|
|
105
|
+
return (m) => console.log(prefix + ": " + m);
|
|
106
|
+
}
|
|
107
|
+
const connection = rpc.createMessageConnection(newClient, newClient, {
|
|
108
|
+
log: makeLogger("VFS: [TRACE]", true),
|
|
109
|
+
error: makeLogger("VFS: [ERROR]", false),
|
|
110
|
+
warn: makeLogger("VFS: [WARN]", true),
|
|
111
|
+
info: makeLogger("VFS: [INFO]", true),
|
|
112
|
+
});
|
|
113
|
+
newClient.on("error", e => {
|
|
114
|
+
console.log("VFS: [SOCKET-ERROR]: " + e);
|
|
115
|
+
});
|
|
116
|
+
const client = new ResolverClient(connection, debug, this.rascalNativeSchemes);
|
|
117
|
+
this.activeClients.push(client);
|
|
118
|
+
newClient.on('end', () => {
|
|
119
|
+
const index = this.activeClients.indexOf(client, 0);
|
|
120
|
+
if (index >= 0) {
|
|
121
|
+
this.activeClients.splice(index, 1);
|
|
122
|
+
}
|
|
123
|
+
client.dispose();
|
|
124
|
+
});
|
|
125
|
+
connection.listen();
|
|
126
|
+
}
|
|
127
|
+
get port() {
|
|
128
|
+
return this.server.address().port;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.VSCodeUriResolverServer = VSCodeUriResolverServer;
|
|
132
|
+
function toUri(req) {
|
|
133
|
+
if (typeof req !== 'string') {
|
|
134
|
+
req = req.uri;
|
|
135
|
+
}
|
|
136
|
+
return vscode.Uri.parse(req);
|
|
137
|
+
}
|
|
138
|
+
async function asyncCatcher(build) {
|
|
139
|
+
try {
|
|
140
|
+
return await build();
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
return {
|
|
144
|
+
errorCode: 1,
|
|
145
|
+
errorMessage: "" + e
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async function asyncVoidCatcher(run) {
|
|
150
|
+
try {
|
|
151
|
+
if (typeof run === "function") {
|
|
152
|
+
await run();
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
await run;
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
errorCode: 0
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
catch (e) {
|
|
162
|
+
return {
|
|
163
|
+
errorCode: 1,
|
|
164
|
+
errorMessage: "" + e
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async function buildIOError(message, errorCode = -1) {
|
|
169
|
+
return {
|
|
170
|
+
errorCode: errorCode,
|
|
171
|
+
errorMessage: message
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
class ResolverClient {
|
|
175
|
+
constructor(connection, debug, rascalNativeSchemes) {
|
|
176
|
+
this.toClear = [];
|
|
177
|
+
this.activeWatches = new Map();
|
|
178
|
+
this.rascalNativeSchemes = rascalNativeSchemes;
|
|
179
|
+
this.fs = vscode.workspace.fs;
|
|
180
|
+
this.connection = connection;
|
|
181
|
+
if (debug) {
|
|
182
|
+
connection.trace(rpc.Trace.Verbose, {
|
|
183
|
+
log: (a) => {
|
|
184
|
+
console.log("[VFS]: " + a);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
this.watchListener = buildWatchReceiver(connection);
|
|
189
|
+
connectInputHandler(connection, this);
|
|
190
|
+
connectOutputHandler(connection, this);
|
|
191
|
+
connectWatchHandler(connection, this);
|
|
192
|
+
}
|
|
193
|
+
async readFile(req) {
|
|
194
|
+
if (this.isRascalNative(req)) {
|
|
195
|
+
return buildIOError("Cannot read a from a rascal uri: " + req.uri);
|
|
196
|
+
}
|
|
197
|
+
return asyncCatcher(async () => ({
|
|
198
|
+
errorCode: 0,
|
|
199
|
+
contents: Buffer.from(await this.fs.readFile(toUri(req))).toString("base64")
|
|
200
|
+
}));
|
|
201
|
+
}
|
|
202
|
+
isRascalNative(req) {
|
|
203
|
+
const scheme = req.uri.substring(0, req.uri.indexOf(":"));
|
|
204
|
+
return this.rascalNativeSchemes.has(scheme);
|
|
205
|
+
}
|
|
206
|
+
async exists(req) {
|
|
207
|
+
if (this.isRascalNative(req)) {
|
|
208
|
+
return buildIOError("Cannot exist on a rascal uri: " + req.uri);
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
await this.stat(req);
|
|
212
|
+
return {
|
|
213
|
+
errorCode: 0,
|
|
214
|
+
result: true
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch (_e) {
|
|
218
|
+
return {
|
|
219
|
+
errorCode: 0,
|
|
220
|
+
result: false
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async stat(req) {
|
|
225
|
+
const uri = toUri(req);
|
|
226
|
+
if (this.rascalNativeSchemes.has(uri.scheme)) {
|
|
227
|
+
throw new Error("Cannot stat a URI that's actually on the rascal side: " + req.uri);
|
|
228
|
+
}
|
|
229
|
+
return this.fs.stat(toUri(req));
|
|
230
|
+
}
|
|
231
|
+
async timeStampResult(req, mapper) {
|
|
232
|
+
return asyncCatcher(async () => ({
|
|
233
|
+
errorCode: 0,
|
|
234
|
+
timestamp: mapper((await this.stat(req)))
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
lastModified(req) {
|
|
238
|
+
return this.timeStampResult(req, f => f.mtime);
|
|
239
|
+
}
|
|
240
|
+
created(req) {
|
|
241
|
+
return this.timeStampResult(req, f => f.ctime);
|
|
242
|
+
}
|
|
243
|
+
async boolResult(req, mapper) {
|
|
244
|
+
return asyncCatcher(async () => ({
|
|
245
|
+
errorCode: 0,
|
|
246
|
+
result: mapper((await this.stat(req)))
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
isDirectory(req) {
|
|
250
|
+
return this.boolResult(req, f => f.type === vscode.FileType.Directory);
|
|
251
|
+
}
|
|
252
|
+
isFile(req) {
|
|
253
|
+
// TODO: figure out how to handle vscode.FileType.Symlink
|
|
254
|
+
return this.boolResult(req, f => f.type === vscode.FileType.File);
|
|
255
|
+
}
|
|
256
|
+
async list(req) {
|
|
257
|
+
if (this.isRascalNative(req)) {
|
|
258
|
+
return buildIOError("Cannot list on a rascal uri: " + req.uri);
|
|
259
|
+
}
|
|
260
|
+
return asyncCatcher(async () => {
|
|
261
|
+
const entries = await this.fs.readDirectory(toUri(req));
|
|
262
|
+
return {
|
|
263
|
+
errorCode: 0,
|
|
264
|
+
entries: entries.map(([entry, _type], _index) => entry),
|
|
265
|
+
areDirectory: entries.map(([_entry, type], _index) => type === vscode.FileType.Directory)
|
|
266
|
+
};
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
async writeFile(req) {
|
|
270
|
+
if (this.isRascalNative(req)) {
|
|
271
|
+
return buildIOError("Cannot writeFile on a rascal uri: " + req.uri);
|
|
272
|
+
}
|
|
273
|
+
return asyncVoidCatcher(this.fs.writeFile(toUri(req), Buffer.from(req.content, "base64")));
|
|
274
|
+
}
|
|
275
|
+
async mkDirectory(req) {
|
|
276
|
+
if (this.isRascalNative(req)) {
|
|
277
|
+
return buildIOError("Cannot mkDirectory on a rascal uri: " + req.uri);
|
|
278
|
+
}
|
|
279
|
+
return asyncVoidCatcher(this.fs.createDirectory(toUri(req)));
|
|
280
|
+
}
|
|
281
|
+
async remove(req) {
|
|
282
|
+
if (this.isRascalNative(req)) {
|
|
283
|
+
return buildIOError("Cannot remove on a rascal uri: " + req.uri);
|
|
284
|
+
}
|
|
285
|
+
return asyncVoidCatcher(this.fs.delete(toUri(req)));
|
|
286
|
+
}
|
|
287
|
+
rename(req) {
|
|
288
|
+
const from = toUri(req.from);
|
|
289
|
+
const to = toUri(req.to);
|
|
290
|
+
if (this.rascalNativeSchemes.has(from.scheme) || this.rascalNativeSchemes.has(to.scheme)) {
|
|
291
|
+
return buildIOError("Cannot rename on a rascal uri: " + req.from + " and " + req.to);
|
|
292
|
+
}
|
|
293
|
+
return asyncVoidCatcher(this.fs.rename(from, to, { overwrite: req.overwrite }));
|
|
294
|
+
}
|
|
295
|
+
watch(newWatch) {
|
|
296
|
+
if (this.isRascalNative(newWatch)) {
|
|
297
|
+
return buildIOError("Cannot watch on a rascal uri: " + newWatch.uri);
|
|
298
|
+
}
|
|
299
|
+
if (!this.activeWatches.has(newWatch.uri)) {
|
|
300
|
+
const watcher = new WatcherCallbacks(newWatch.uri, this.watchListener, newWatch.watcher);
|
|
301
|
+
this.activeWatches.set(newWatch.uri, watcher);
|
|
302
|
+
this.toClear.push(watcher);
|
|
303
|
+
return Promise.resolve({ errorCode: 0 });
|
|
304
|
+
}
|
|
305
|
+
return Promise.resolve({
|
|
306
|
+
errorCode: 1,
|
|
307
|
+
errorMessage: 'Watch already defined for: ' + newWatch.uri
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
unwatch(removeWatch) {
|
|
311
|
+
if (this.isRascalNative(removeWatch)) {
|
|
312
|
+
return buildIOError("Cannot watch on a rascal uri: " + removeWatch.uri);
|
|
313
|
+
}
|
|
314
|
+
let watcher = this.activeWatches.get(removeWatch.uri);
|
|
315
|
+
if (watcher) {
|
|
316
|
+
this.activeWatches.delete(removeWatch.uri);
|
|
317
|
+
watcher.dispose();
|
|
318
|
+
const index = this.toClear.indexOf(watcher);
|
|
319
|
+
if (index >= 0) {
|
|
320
|
+
this.toClear.splice(index, 1);
|
|
321
|
+
}
|
|
322
|
+
return Promise.resolve({ errorCode: 0 });
|
|
323
|
+
}
|
|
324
|
+
return Promise.resolve({
|
|
325
|
+
errorCode: 1,
|
|
326
|
+
errorMessage: 'Watch not defined for: ' + removeWatch.uri
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
dispose() {
|
|
330
|
+
this.activeWatches.clear();
|
|
331
|
+
this.toClear.forEach(c => c.dispose());
|
|
332
|
+
try {
|
|
333
|
+
this.connection.end();
|
|
334
|
+
}
|
|
335
|
+
catch (_e) {
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
class WatcherCallbacks {
|
|
340
|
+
constructor(uri, watchListener, watchId) {
|
|
341
|
+
this.toClear = [];
|
|
342
|
+
this.watchId = watchId;
|
|
343
|
+
this.watchListener = watchListener;
|
|
344
|
+
const newWatcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(toUri(uri), '**/*'));
|
|
345
|
+
this.toClear.push(newWatcher);
|
|
346
|
+
newWatcher.onDidCreate(e => this.sendWatchEvent(e, ISourceLocationChangeType.created), this.toClear);
|
|
347
|
+
newWatcher.onDidChange(e => this.sendWatchEvent(e, ISourceLocationChangeType.modified), this.toClear);
|
|
348
|
+
newWatcher.onDidDelete(e => this.sendWatchEvent(e, ISourceLocationChangeType.deleted), this.toClear);
|
|
349
|
+
}
|
|
350
|
+
async sendWatchEvent(uri, changeType) {
|
|
351
|
+
this.watchListener.emitWatch({
|
|
352
|
+
watchId: this.watchId,
|
|
353
|
+
changeType: changeType,
|
|
354
|
+
location: uri.toString(),
|
|
355
|
+
type: await determineType(uri, changeType)
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
dispose() {
|
|
359
|
+
this.toClear.forEach(c => c.dispose());
|
|
360
|
+
this.toClear.splice(0);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
async function determineType(uri, changeType) {
|
|
364
|
+
// vscode is not offering us information if the change was a directory of a file
|
|
365
|
+
// so we have to use some heuristics (or actually ask the FS) to find out
|
|
366
|
+
switch (changeType) {
|
|
367
|
+
case ISourceLocationChangeType.created:
|
|
368
|
+
if ((await vscode.workspace.fs.stat(uri)).type === vscode.FileType.Directory) {
|
|
369
|
+
return ISourceLocationType.directory;
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
return ISourceLocationType.file;
|
|
373
|
+
}
|
|
374
|
+
case ISourceLocationChangeType.modified:
|
|
375
|
+
// no modified events for directories according to documentation
|
|
376
|
+
return ISourceLocationType.file;
|
|
377
|
+
case ISourceLocationChangeType.deleted:
|
|
378
|
+
// we have to guess, since we cannot ask anymore.
|
|
379
|
+
const filePart = uri.path.substring(uri.path.lastIndexOf('/'));
|
|
380
|
+
return filePart.lastIndexOf('.') > 0 ? ISourceLocationType.file : ISourceLocationType.directory;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=VSCodeURIResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VSCodeURIResolver.js","sourceRoot":"","sources":["../../src/fs/VSCodeURIResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as vscode from 'vscode';
|
|
2
|
+
import { LanguageClient } from 'vscode-languageclient/node';
|
|
3
|
+
import { VSCodeUriResolverServer } from '../fs/VSCodeURIResolver';
|
|
4
|
+
export declare class ParameterizedLanguageServer implements vscode.Disposable {
|
|
5
|
+
private readonly vfsServer;
|
|
6
|
+
private readonly absoluteJarPath;
|
|
7
|
+
private readonly deployMode;
|
|
8
|
+
private readonly languageId;
|
|
9
|
+
private readonly title;
|
|
10
|
+
private readonly dedicatedLanguage;
|
|
11
|
+
private readonly registeredFileExtensions;
|
|
12
|
+
private parametricClient;
|
|
13
|
+
constructor(context: vscode.ExtensionContext, vfsServer: VSCodeUriResolverServer, absoluteJarPath: string, deployMode?: boolean, languageId?: string, title?: string, dedicatedLanguage?: LanguageParameter | undefined);
|
|
14
|
+
dispose(): void;
|
|
15
|
+
private activateParametricLanguageClient;
|
|
16
|
+
getLanguageClient(): Promise<LanguageClient>;
|
|
17
|
+
registerLanguage(lang: LanguageParameter): Promise<void>;
|
|
18
|
+
unregisterLanguage(lang: LanguageParameter): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export interface LanguageParameter {
|
|
21
|
+
pathConfig: string;
|
|
22
|
+
name: string;
|
|
23
|
+
extension: string;
|
|
24
|
+
mainModule: string;
|
|
25
|
+
mainFunction: string;
|
|
26
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParameterizedLanguageServer = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Copyright (c) 2018-2021, NWO-I CWI and Swat.engineering
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
*
|
|
14
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
15
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
16
|
+
* and/or other materials provided with the distribution.
|
|
17
|
+
*
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
19
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
20
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
21
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
22
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
23
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
24
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
25
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
26
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
27
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
28
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
+
*/
|
|
30
|
+
const path = require("path");
|
|
31
|
+
const vscode = require("vscode");
|
|
32
|
+
const RascalLSPConnection_1 = require("./RascalLSPConnection");
|
|
33
|
+
class ParameterizedLanguageServer {
|
|
34
|
+
constructor(context, vfsServer, absoluteJarPath, deployMode = true, languageId = 'parametric-rascalmpl', title = 'Language Parametric Rascal Language Server', dedicatedLanguage = undefined) {
|
|
35
|
+
this.vfsServer = vfsServer;
|
|
36
|
+
this.absoluteJarPath = absoluteJarPath;
|
|
37
|
+
this.deployMode = deployMode;
|
|
38
|
+
this.languageId = languageId;
|
|
39
|
+
this.title = title;
|
|
40
|
+
this.dedicatedLanguage = dedicatedLanguage;
|
|
41
|
+
this.registeredFileExtensions = new Map();
|
|
42
|
+
this.parametricClient = undefined;
|
|
43
|
+
if (dedicatedLanguage === undefined) {
|
|
44
|
+
// if we are not a dedicated instance, we have to monitor files being opened up and assign our own language ID
|
|
45
|
+
context.subscriptions.push(vscode.workspace.onDidOpenTextDocument(e => {
|
|
46
|
+
const ext = path.extname(e.fileName);
|
|
47
|
+
if (ext !== "" && e.languageId !== this.languageId && !e.isClosed && this.registeredFileExtensions.has(ext.substring(1))) {
|
|
48
|
+
// we delay setting the language, as sometimes VSCode quickly opens and closes the document
|
|
49
|
+
// also it looks like there is a bug where calling `setTextDocumentLanguage` closes and opens it, but at opening
|
|
50
|
+
// it's not applied yet.
|
|
51
|
+
// so we wait 1ms just to be sure we're not triggering an endless loop.
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
if (!e.isClosed && e.languageId !== this.languageId) {
|
|
54
|
+
vscode.languages.setTextDocumentLanguage(e, this.languageId);
|
|
55
|
+
}
|
|
56
|
+
}, 1);
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// trigger creating of dedicated instance
|
|
62
|
+
this.getLanguageClient();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
dispose() {
|
|
66
|
+
this.parametricClient?.then(c => c.dispose());
|
|
67
|
+
}
|
|
68
|
+
activateParametricLanguageClient() {
|
|
69
|
+
return (0, RascalLSPConnection_1.activateLanguageClient)({
|
|
70
|
+
vfsServer: this.vfsServer,
|
|
71
|
+
language: this.languageId,
|
|
72
|
+
title: this.title,
|
|
73
|
+
isParametricServer: true,
|
|
74
|
+
jarPath: this.absoluteJarPath,
|
|
75
|
+
deployMode: this.deployMode,
|
|
76
|
+
devPort: 9999,
|
|
77
|
+
dedicated: this.dedicatedLanguage !== undefined,
|
|
78
|
+
lspArg: JSON.stringify(this.dedicatedLanguage)
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
getLanguageClient() {
|
|
82
|
+
if (!this.parametricClient) {
|
|
83
|
+
this.parametricClient = this.activateParametricLanguageClient();
|
|
84
|
+
}
|
|
85
|
+
return this.parametricClient;
|
|
86
|
+
}
|
|
87
|
+
async registerLanguage(lang) {
|
|
88
|
+
const client = this.getLanguageClient();
|
|
89
|
+
// first we load the new language into the parametric server
|
|
90
|
+
await (await client).sendRequest("rascal/sendRegisterLanguage", lang);
|
|
91
|
+
if (this.dedicatedLanguage === undefined) {
|
|
92
|
+
for (const editor of vscode.window.visibleTextEditors) {
|
|
93
|
+
const ext = path.extname(editor.document.uri.path);
|
|
94
|
+
if (ext !== "" && lang.extension === ext.substring(1)) {
|
|
95
|
+
vscode.languages.setTextDocumentLanguage(editor.document, this.languageId);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (lang.extension && lang.extension !== "") {
|
|
99
|
+
let registries = this.registeredFileExtensions.get(lang.extension);
|
|
100
|
+
if (!registries) {
|
|
101
|
+
registries = new Set();
|
|
102
|
+
this.registeredFileExtensions.set(lang.extension, registries);
|
|
103
|
+
}
|
|
104
|
+
registries.add(languageKey(lang));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async unregisterLanguage(lang) {
|
|
109
|
+
const client = this.getLanguageClient();
|
|
110
|
+
(await client).sendRequest("rascal/sendUnregisterLanguage", lang);
|
|
111
|
+
if (this.dedicatedLanguage === undefined) {
|
|
112
|
+
if (lang.extension && lang.extension !== "") {
|
|
113
|
+
if (lang.mainModule && lang.mainFunction) {
|
|
114
|
+
// partial clear
|
|
115
|
+
const registries = this.registeredFileExtensions.get(lang.extension);
|
|
116
|
+
if (registries) {
|
|
117
|
+
registries.delete(languageKey(lang));
|
|
118
|
+
if (registries.size === 0) {
|
|
119
|
+
this.registeredFileExtensions.delete(lang.extension);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// complete clear
|
|
125
|
+
this.registeredFileExtensions.delete(lang.extension);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.ParameterizedLanguageServer = ParameterizedLanguageServer;
|
|
132
|
+
function languageKey(lang) {
|
|
133
|
+
return `${lang.mainModule}::${lang.mainFunction}`;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=ParameterizedLanguageServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParameterizedLanguageServer.js","sourceRoot":"","sources":["../../src/lsp/ParameterizedLanguageServer.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,6BAA6B;AAC7B,iCAAiC;AAGjC,+DAA+D;AAG/D,MAAa,2BAA2B;IAIpC,YACI,OAAgC,EACf,SAAkC,EAClC,eAAuB,EACvB,aAAa,IAAI,EACjB,aAAa,sBAAsB,EACnC,QAAQ,4CAA4C,EACpD,oBAAmD,SAAS;QAL5D,cAAS,GAAT,SAAS,CAAyB;QAClC,oBAAe,GAAf,eAAe,CAAQ;QACvB,eAAU,GAAV,UAAU,CAAO;QACjB,eAAU,GAAV,UAAU,CAAyB;QACnC,UAAK,GAAL,KAAK,CAA+C;QACpD,sBAAiB,GAAjB,iBAAiB,CAA2C;QAVhE,6BAAwB,GAA4B,IAAI,GAAG,EAAE,CAAC;QACvE,qBAAgB,GAAwC,SAAS,CAAC;QAWtE,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACjC,8GAA8G;YAC9G,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;gBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;oBACtH,2FAA2F;oBAC3F,gHAAgH;oBAChH,wBAAwB;oBACxB,uEAAuE;oBACvE,UAAU,CAAC,GAAG,EAAE;wBACZ,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;4BACjD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;yBAChE;oBACL,CAAC,EAAE,CAAC,CAAC,CAAC;iBACT;YACL,CAAC,CAAC,CAAC,CAAC;SACP;aACI;YACD,yCAAyC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;IACL,CAAC;IACD,OAAO;QACH,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,gCAAgC;QACpC,OAAO,IAAA,4CAAsB,EAAC;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,IAAI,CAAC,eAAe;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,CAAC,iBAAiB,KAAK,SAAS;YAC/C,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACjD,CAAC,CAAC;IACP,CAAC;IAGD,iBAAiB;QACb,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;SACnE;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAGD,KAAK,CAAC,gBAAgB,CAAC,IAAsB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,4DAA4D;QAC5D,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,WAAW,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;QAEtE,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACtC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACnD,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC9E;aACJ;YAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;gBACzC,IAAI,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnE,IAAI,CAAC,UAAU,EAAE;oBACb,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;oBACvB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;iBACjE;gBACD,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aACrC;SACJ;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAuB;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,CAAC,MAAM,MAAM,CAAC,CAAC,WAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACtC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;gBACzC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;oBACtC,gBAAgB;oBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACrE,IAAI,UAAU,EAAE;wBACZ,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;wBACrC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;4BACvB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBACxD;qBACJ;iBACJ;qBACI;oBACD,iBAAiB;oBACjB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxD;aACJ;SACJ;IACL,CAAC;CAGJ;AA/GD,kEA+GC;AAWD,SAAS,WAAW,CAAC,IAAuB;IACxC,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { integer, LanguageClient } from 'vscode-languageclient/node';
|
|
2
|
+
import { VSCodeUriResolverServer } from '../fs/VSCodeURIResolver';
|
|
3
|
+
export declare function activateLanguageClient({ language, title, jarPath, vfsServer, isParametricServer, deployMode, devPort, dedicated, lspArg }: {
|
|
4
|
+
language: string;
|
|
5
|
+
title: string;
|
|
6
|
+
jarPath: string;
|
|
7
|
+
vfsServer: VSCodeUriResolverServer;
|
|
8
|
+
isParametricServer: boolean;
|
|
9
|
+
deployMode: boolean;
|
|
10
|
+
devPort: integer;
|
|
11
|
+
dedicated: boolean;
|
|
12
|
+
lspArg: string | undefined;
|
|
13
|
+
}): Promise<LanguageClient>;
|