|
| 1 | +const fs = require('fs'); |
1 | 2 | const vscode = require('vscode');
|
2 | 3 | const {Server: WebSocketServer} = require('ws');
|
3 | 4 | const {createConnection} = require('./connection');
|
@@ -55,11 +56,33 @@ function onDidWebSocketServerStartListening(server, context) {
|
55 | 56 | context.subscriptions.push(connectionWrapper);
|
56 | 57 | context.subscriptions.push({dispose() {connection.close()}});
|
57 | 58 |
|
58 |
| - simpleContentProvider = new SimpleTextDocumentContentProvider(connectionWrapper); |
| 59 | + // simpleContentProvider = new SimpleTextDocumentContentProvider(connectionWrapper); |
| 60 | + // context.subscriptions.push( |
| 61 | + // vscode.workspace.registerTextDocumentContentProvider( |
| 62 | + // 'nuclide', |
| 63 | + // simpleContentProvider) |
| 64 | + // ); |
59 | 65 | context.subscriptions.push(
|
60 |
| - vscode.workspace.registerTextDocumentContentProvider( |
61 |
| - 'nuclide', |
62 |
| - simpleContentProvider) |
| 66 | + vscode.workspace.registerFileSystemProvider('nuclide', { |
| 67 | + onDidChange: new vscode.EventEmitter().event, |
| 68 | + resolveContents(resource) { |
| 69 | + // TODO(jrieken): This method appears to get invoked more often than I would expect! |
| 70 | + |
| 71 | + // Strip the leading slash from resource.path. |
| 72 | + const path = resource.path.substring(1); |
| 73 | + return connectionWrapper.makeRpc( |
| 74 | + 'get-file-contents', |
| 75 | + {path} |
| 76 | + ).then(response => response.contents); |
| 77 | + }, |
| 78 | + writeContents(resource, value) { |
| 79 | + // Strip the leading slash from resource.path. |
| 80 | + const path = resource.path.substring(1); |
| 81 | + return new Promise((resolve, reject) => { |
| 82 | + fs.writeFile(path, value, err => err ? reject(err) : resolve()); |
| 83 | + }); |
| 84 | + } |
| 85 | + }) |
63 | 86 | );
|
64 | 87 |
|
65 | 88 | ws.send(JSON.stringify({
|
@@ -88,7 +111,8 @@ function onDidWebSocketServerStartListening(server, context) {
|
88 | 111 | const {file} = params;
|
89 | 112 | const address = connection.getAddress();
|
90 | 113 | const remotePath = `${searchDirectory}/${file}`;
|
91 |
| - const uri = `${address.replace(/^wss?:/, 'nuclide:')}${remotePath}`; |
| 114 | + // const uri = `${address.replace(/^wss?:/, 'nuclide:')}${remotePath}`; |
| 115 | + const uri = `file://nuclide/${remotePath}`; |
92 | 116 | vscode.workspace.openTextDocument(vscode.Uri.parse(uri)).then(
|
93 | 117 | textDocument => vscode.window.showTextDocument(textDocument, vscode.ViewColumn.Two, /* preserveFocus */ true),
|
94 | 118 | error => console.error(`Failed to open text document for uri '${uri}'`, error));
|
|
0 commit comments