-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlcode-uri.js
More file actions
50 lines (45 loc) · 959 Bytes
/
lcode-uri.js
File metadata and controls
50 lines (45 loc) · 959 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const vscode = require("vscode");
/**
* @implements {vscode.UriHandler}
*/
class UriHandler {
/**
* @param {Promise<any>} preTask
*/
constructor(preTask) {
/**
* @type {Promise<any>}
*/
this.preTask = preTask;
}
/**
* @param {vscode.Uri} uri
*/
async handleUri(uri) {
let u = getWebdavUri(uri);
if (uri.fragment === "file") {
require("child_process").execSync(`code --file-uri ${u}`);
return;
}
uri = vscode.Uri.parse(u);
await this.preTask;
const opt = {};
opt.forceNewWindow = true;
opt.noRecentEntry = true;
await vscode.commands.executeCommand("vscode.openFolder", uri, opt);
}
}
/**
* @param {vscode.Uri} uri
* @returns {string}
*/
function getWebdavUri(uri) {
let u = `webdav://${uri.path.slice(1)}`;
if (uri.query) u += "?" + uri.query;
if (uri.fragment) u += "#" + uri.fragment;
return u;
}
module.exports = {
UriHandler,
getWebdavUri,
};