@@ -109,14 +109,14 @@ index 2bf7fe37d7..81cc668f12 100644
109109 catch (err) {
110110 errorback(err);
111111diff --git a/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts b/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts
112- index e3efb95b75..03e85113a0 100644
112+ index e3efb95b75..163bc4c994 100644
113113--- a/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts
114114+++ b/src/vs/workbench/api/electron-browser/mainThreadHeapService.ts
115115@@ -55,6 +55,9 @@ export class HeapService implements IHeapService {
116116
117117 private _doTrackRecursive(obj: any): Promise<any> {
118118
119- + // cannot control GC in the browser.
119+ + // Cannot control GC in the browser.
120120+ return Promise.resolve(obj);
121121+
122122 if (isNullOrUndefined(obj)) {
@@ -144,10 +144,10 @@ index 38bf337a61..aae3a68ff5 100644
144144
145145 // Make the window active to handle the drop properly within
146146diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts
147- index a43d63aa51..4c6df2fcd9 100644
147+ index a43d63aa51..438d0a8245 100644
148148--- a/src/vs/workbench/electron-browser/main.ts
149149+++ b/src/vs/workbench/electron-browser/main.ts
150- @@ -147,13 +147,14 @@ function openWorkbench(configuration: IWindowConfiguration): Promise<void> {
150+ @@ -147,13 +147,13 @@ function openWorkbench(configuration: IWindowConfiguration): Promise<void> {
151151 shell.open();
152152
153153 // Inform user about loading issues from the loader
@@ -158,7 +158,6 @@ index a43d63aa51..4c6df2fcd9 100644
158158- }
159159- }
160160- });
161- + // TODO: how to make this work
162161+ // (<any>self).require.config({
163162+ // onError: err => {
164163+ // if (err.errorCode === 'load') {
@@ -269,20 +268,66 @@ index 2975294e75..73ffb6362d 100644
269268 // Don't use ctrl+a by default as that would override the common go to start
270269 // of prompt shell binding
271270diff --git a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
272- index 7b4e8721ac..8f26dc2f28 100644
271+ index 7b4e8721ac..96d612f940 100644
273272--- a/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
274273+++ b/src/vs/workbench/parts/welcome/walkThrough/node/walkThroughContentProvider.ts
275- @@ -28,7 +28,9 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW
274+ @@ -28,14 +28,16 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW
276275 public provideTextContent(resource: URI): Thenable<ITextModel> {
277276 const query = resource.query ? JSON.parse(resource.query) : {};
278277 const content: Thenable<string | ITextBufferFactory> = (query.moduleId ? new Promise<string>((resolve, reject) => {
279278- require([query.moduleId], content => {
280- + // Webpack needs this to be static or it can't include it.
279+ - try {
280+ - resolve(content.default());
281+ - } catch (err) {
282+ - reject(err);
283+ - }
284+ + // This works because the only walkthrough that is a module is the welcome page.
285+ + // We have to explicitly import it or Webpack won't pick it up.
281286+ import("vs/workbench/parts/welcome/page/electron-browser/vs_code_welcome_page").then((content) => {
282- + // require([query.moduleId], content => {
283- try {
284- resolve(content.default());
285- } catch (err) {
287+ + resolve(content.default());
288+ + }).catch((err) => {
289+ + reject(err);
290+ });
291+ - }) : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value));
292+ + }) : (resource.scheme !== "file"
293+ + ? fetch(resource.path).then((res) => res.text())
294+ + : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value)));
295+ return content.then(content => {
296+ let codeEditorModel = this.modelService.getModel(resource);
297+ if (!codeEditorModel) {
298+ @@ -61,7 +63,7 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi
299+ }
300+
301+ public provideTextContent(resource: URI): Thenable<ITextModel> {
302+ - return this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => {
303+ + return fetch(resource.path).then((res) => res.text()).then((content) => {
304+ let codeEditorModel = this.modelService.getModel(resource);
305+ if (!codeEditorModel) {
306+ const j = parseInt(resource.fragment);
307+ @@ -78,17 +80,17 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi
308+ return '';
309+ };
310+
311+ - const textBuffer = content.value.create(DefaultEndOfLine.LF);
312+ - const lineCount = textBuffer.getLineCount();
313+ - const range = new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1);
314+ - const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined);
315+ - marked(markdown, { renderer });
316+ + // const textBuffer = content.value.create(DefaultEndOfLine.LF);
317+ + // const lineCount = textBuffer.getLineCount();
318+ + // const range = new Range(1, 1, lineCount, textBuffer.getLineLength(lineCount) + 1);
319+ + // const markdown = textBuffer.getValueInRange(range, EndOfLinePreference.TextDefined);
320+ + marked(content, { renderer });
321+
322+ const languageId = this.modeService.getModeIdForLanguageName(languageName);
323+ const languageSelection = this.modeService.create(languageId);
324+ codeEditorModel = this.modelService.createModel(codeSnippet, languageSelection, resource);
325+ } else {
326+ - this.modelService.updateModel(codeEditorModel, content.value);
327+ + this.modelService.updateModel(codeEditorModel, content);
328+ }
329+
330+ return codeEditorModel;
286331diff --git a/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts b/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts
287332index 5b4136989f..25ccc0fe9e 100644
288333--- a/src/vs/workbench/services/themes/electron-browser/fileIconThemeData.ts
0 commit comments