mirror of
https://github.com/coder/code-server.git
synced 2024-12-04 23:03:06 +08:00
178 lines
9.3 KiB
Diff
178 lines
9.3 KiB
Diff
diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts
|
|
index 457818a975..ad45ffe58a 100644
|
|
--- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts
|
|
+++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts
|
|
@@ -194,3 +194,5 @@ async function handshake(configuration: ISharedProcessConfiguration): Promise<vo
|
|
main(server, data, configuration);
|
|
ipcRenderer.send('handshake:im ready');
|
|
}
|
|
+
|
|
+startup({ machineId: "1" });
|
|
diff --git a/src/vs/loader.js b/src/vs/loader.js
|
|
index 2bf7fe37d7..81cc668f12 100644
|
|
--- a/src/vs/loader.js
|
|
+++ b/src/vs/loader.js
|
|
@@ -667,10 +667,10 @@ var AMDLoader;
|
|
}
|
|
this._didInitialize = true;
|
|
// capture node modules
|
|
- this._fs = nodeRequire('fs');
|
|
- this._vm = nodeRequire('vm');
|
|
- this._path = nodeRequire('path');
|
|
- this._crypto = nodeRequire('crypto');
|
|
+ this._fs = require('fs');
|
|
+ this._vm = require('vm');
|
|
+ this._path = require('path');
|
|
+ this._crypto = require('crypto');
|
|
};
|
|
// patch require-function of nodejs such that we can manually create a script
|
|
// from cached data. this is done by overriding the `Module._compile` function
|
|
@@ -731,11 +731,18 @@ var AMDLoader;
|
|
this._init(nodeRequire);
|
|
this._initNodeRequire(nodeRequire, moduleManager);
|
|
var recorder = moduleManager.getRecorder();
|
|
+ const context = require.context("../", true, /.*/);
|
|
+ if (scriptSrc.indexOf("file:///") !== -1) {
|
|
+ const vsSrc = scriptSrc.split("file:///")[1].split(".js")[0];
|
|
+ if (vsSrc && vsSrc.startsWith("vs/")) {
|
|
+ scriptSrc = `node|./${vsSrc}`;
|
|
+ }
|
|
+ }
|
|
if (/^node\|/.test(scriptSrc)) {
|
|
var pieces = scriptSrc.split('|');
|
|
var moduleExports_1 = null;
|
|
try {
|
|
- moduleExports_1 = nodeRequire(pieces[1]);
|
|
+ moduleExports_1 = context(pieces[1]);
|
|
}
|
|
catch (err) {
|
|
errorback(err);
|
|
diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts
|
|
index 38bf337a61..aae3a68ff5 100644
|
|
--- a/src/vs/workbench/browser/dnd.ts
|
|
+++ b/src/vs/workbench/browser/dnd.ts
|
|
@@ -31,6 +31,7 @@ import { IEditorService, IResourceEditor } from 'vs/workbench/services/editor/co
|
|
import { Disposable } from 'vs/base/common/lifecycle';
|
|
import { addDisposableListener, EventType } from 'vs/base/browser/dom';
|
|
import { IEditorGroup } from 'vs/workbench/services/group/common/editorGroupsService';
|
|
+import { client } from "../../../../../../packages/vscode";
|
|
|
|
export interface IDraggedResource {
|
|
resource: URI;
|
|
@@ -168,7 +169,7 @@ export class ResourcesDropHandler {
|
|
handleDrop(event: DragEvent, resolveTargetGroup: () => IEditorGroup, afterDrop: (targetGroup: IEditorGroup) => void, targetIndex?: number): void {
|
|
const untitledOrFileResources = extractResources(event).filter(r => this.fileService.canHandleResource(r.resource) || r.resource.scheme === Schemas.untitled);
|
|
if (!untitledOrFileResources.length) {
|
|
- return;
|
|
+ return client.handleDrop(event, resolveTargetGroup, afterDrop, targetIndex);
|
|
}
|
|
|
|
// Make the window active to handle the drop properly within
|
|
diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts
|
|
index a43d63aa51..4c6df2fcd9 100644
|
|
--- a/src/vs/workbench/electron-browser/main.ts
|
|
+++ b/src/vs/workbench/electron-browser/main.ts
|
|
@@ -147,13 +147,14 @@ function openWorkbench(configuration: IWindowConfiguration): Promise<void> {
|
|
shell.open();
|
|
|
|
// Inform user about loading issues from the loader
|
|
- (<any>self).require.config({
|
|
- onError: err => {
|
|
- if (err.errorCode === 'load') {
|
|
- shell.onUnexpectedError(new Error(nls.localize('loaderErrorNative', "Failed to load a required file. Please restart the application to try again. Details: {0}", JSON.stringify(err))));
|
|
- }
|
|
- }
|
|
- });
|
|
+ // TODO: how to make this work
|
|
+ // (<any>self).require.config({
|
|
+ // onError: err => {
|
|
+ // if (err.errorCode === 'load') {
|
|
+ // shell.onUnexpectedError(new Error(nls.localize('loaderErrorNative', "Failed to load a required file. Please restart the application to try again. Details: {0}", JSON.stringify(err))));
|
|
+ // }
|
|
+ // }
|
|
+ // });
|
|
});
|
|
});
|
|
});
|
|
diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts
|
|
index 35bc4a82b3..9cc84bdf28 100644
|
|
--- a/src/vs/workbench/electron-browser/workbench.ts
|
|
+++ b/src/vs/workbench/electron-browser/workbench.ts
|
|
@@ -114,6 +114,7 @@ import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/work
|
|
import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs';
|
|
import { FileDialogService } from 'vs/workbench/services/dialogs/electron-browser/dialogService';
|
|
import { LogStorageAction } from 'vs/platform/storage/node/storageService';
|
|
+import { client } from "../../../../../../packages/vscode";
|
|
|
|
interface WorkbenchParams {
|
|
configuration: IWindowConfiguration;
|
|
@@ -248,6 +249,7 @@ export class Workbench extends Disposable implements IPartService {
|
|
super();
|
|
|
|
this.workbenchParams = { configuration, serviceCollection };
|
|
+ client.serviceCollection = serviceCollection;
|
|
|
|
this.hasInitialFilesToOpen =
|
|
(configuration.filesToCreate && configuration.filesToCreate.length > 0) ||
|
|
diff --git a/src/vs/workbench/node/extensionHostProcess.ts b/src/vs/workbench/node/extensionHostProcess.ts
|
|
index 8d182d18d9..69d51e1aea 100644
|
|
--- a/src/vs/workbench/node/extensionHostProcess.ts
|
|
+++ b/src/vs/workbench/node/extensionHostProcess.ts
|
|
@@ -129,7 +129,7 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise<IRenderer
|
|
// Kill oneself if one's parent dies. Much drama.
|
|
setInterval(function () {
|
|
try {
|
|
- process.kill(initData.parentPid, 0); // throws an exception if the main process doesn't exist anymore.
|
|
+ // process.kill(initData.parentPid, 0); // throws an exception if the main process doesn't exist anymore.
|
|
} catch (e) {
|
|
onTerminate();
|
|
}
|
|
diff --git a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
|
index e600fb2f78..5d65a3124e 100644
|
|
--- a/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
|
+++ b/src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
|
|
@@ -55,6 +55,7 @@ import { IDialogService, IConfirmationResult, IConfirmation, getConfirmMessage }
|
|
import { INotificationService } from 'vs/platform/notification/common/notification';
|
|
import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService';
|
|
import { fillInContextMenuActions } from 'vs/platform/actions/browser/menuItemActionItem';
|
|
+import { client } from "../../../../../../../../../packages/vscode";
|
|
|
|
export class FileDataSource implements IDataSource {
|
|
constructor(
|
|
@@ -932,6 +933,7 @@ export class FileDragAndDrop extends SimpleFileResourceDragAndDrop {
|
|
}
|
|
|
|
private handleExternalDrop(tree: ITree, data: DesktopDragAndDropData, target: ExplorerItem | Model, originalEvent: DragMouseEvent): TPromise<void> {
|
|
+ return client.handleExternalDrop(target, originalEvent);
|
|
const droppedResources = extractResources(originalEvent.browserEvent as DragEvent, true);
|
|
|
|
// Check for dropped external files to be folders
|
|
diff --git a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
|
|
index 7b4e8721ac..8f26dc2f28 100644
|
|
--- a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
|
|
+++ b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
|
|
@@ -28,7 +28,9 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW
|
|
public provideTextContent(resource: URI): Thenable<ITextModel> {
|
|
const query = resource.query ? JSON.parse(resource.query) : {};
|
|
const content: Thenable<string | ITextBufferFactory> = (query.moduleId ? new Promise<string>((resolve, reject) => {
|
|
- require([query.moduleId], content => {
|
|
+ // Webpack needs this to be static or it can't include it.
|
|
+ import("vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page").then((content) => {
|
|
+ // require([query.moduleId], content => {
|
|
try {
|
|
resolve(content.default());
|
|
} catch (err) {
|
|
diff --git a/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts b/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts
|
|
index 5b4136989f..25ccc0fe9e 100644
|
|
--- a/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts
|
|
+++ b/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts
|
|
@@ -178,7 +178,7 @@ function _processIconThemeDocument(id: string, iconThemeDocumentLocation: URI, i
|
|
|
|
const iconThemeDocumentLocationDirname = resources.dirname(iconThemeDocumentLocation);
|
|
function resolvePath(path: string) {
|
|
- return resources.joinPath(iconThemeDocumentLocationDirname, path);
|
|
+ return "/resource" + resources.joinPath(iconThemeDocumentLocationDirname, path).path;
|
|
}
|
|
|
|
function collectSelectors(associations: IconsAssociation, baseThemeClassName?: string) {
|