@@ -883,7 +883,7 @@ index acb68c8..bee143a 100644
883
883
- !isMacintosh || // macOS only
884
884
+ !browser.isMacintosh || // macOS only
885
885
diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts
886
- index 7445d7b..0291dee 100644
886
+ index 7445d7b..ba6bf4b 100644
887
887
--- a/src/vs/workbench/electron-browser/workbench.ts
888
888
+++ b/src/vs/workbench/electron-browser/workbench.ts
889
889
@@ -19 +19,2 @@ import { Registry } from 'vs/platform/registry/common/platform';
@@ -899,13 +899,15 @@ index 7445d7b..0291dee 100644
899
899
@@ -458 +462 @@ export class Workbench extends Disposable implements IPartService {
900
900
- addClasses(document.body, platformClass); // used by our fonts
901
901
+ addClasses(document.body, platformClass, isWeb ? 'web' : 'native'); // used by our fonts
902
- @@ -633 +637 @@ export class Workbench extends Disposable implements IPartService {
902
+ @@ -491,0 +496 @@ export class Workbench extends Disposable implements IPartService {
903
+ + client.onClose(() => this.notificationService.error("Disconnected from shared process. Searching, installing, enabling, and disabling extensions will not work until the page is refreshed."));
904
+ @@ -633 +638 @@ export class Workbench extends Disposable implements IPartService {
903
905
- if (!isMacintosh && this.useCustomTitleBarStyle()) {
904
906
+ if (isWeb || (!isMacintosh && this.useCustomTitleBarStyle())) {
905
- @@ -1241 +1245 @@ export class Workbench extends Disposable implements IPartService {
907
+ @@ -1241 +1246 @@ export class Workbench extends Disposable implements IPartService {
906
908
- if ((isWindows || isLinux) && this.useCustomTitleBarStyle()) {
907
909
+ if ((isWeb || isWindows || isLinux) && this.useCustomTitleBarStyle()) {
908
- @@ -1397 +1401 @@ export class Workbench extends Disposable implements IPartService {
910
+ @@ -1397 +1402 @@ export class Workbench extends Disposable implements IPartService {
909
911
- } else if (isMacintosh) {
910
912
+ } else if (isNative && isMacintosh) {
911
913
diff --git a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts
@@ -914,13 +916,65 @@ index 0592910..0ce7e35 100644
914
916
+++ b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts
915
917
@@ -33,0 +34 @@ function getSystemExtensionsRoot(): string {
916
918
+ return (require('vs/../../../../packages/vscode/src/fill/paths') as typeof import ('vs/../../../../packages/vscode/src/fill/paths')).getBuiltInExtensionsDirectory();
919
+ diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts
920
+ index 2c2f9c7..69fa321 100644
921
+ --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts
922
+ +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts
923
+ @@ -34,0 +35 @@ import { Schemas } from 'vs/base/common/network';
924
+ + const retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry;
925
+ @@ -117,0 +119 @@ export class ExtensionService extends Disposable implements IExtensionService {
926
+ + retry.register('Extension Host', () => this.startExtensionHost());
927
+ @@ -435,0 +438 @@ export class ExtensionService extends Disposable implements IExtensionService {
928
+ + extHostProcessWorker.start().then(() => retry.recover('Extension Host'));
929
+ @@ -458,0 +462 @@ export class ExtensionService extends Disposable implements IExtensionService {
930
+ + return retry.run('Extension Host');
917
931
diff --git a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts
918
932
index 484cef9..f728fc8 100644
919
933
--- a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts
920
934
+++ b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts
921
935
@@ -137 +137 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise<IRenderer
922
936
- process.kill(initData.parentPid, 0); // throws an exception if the main process doesn't exist anymore.
923
937
+ // process.kill(initData.parentPid, 0); // throws an exception if the main process doesn't exist anymore.
938
+ diff --git a/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts b/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts
939
+ index ca03fc9..e3dcd08 100644
940
+ --- a/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts
941
+ +++ b/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts
942
+ @@ -18,0 +19 @@ import { getPathFromAmdModule } from 'vs/base/common/amd';
943
+ + const retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry;
944
+ @@ -35,0 +37 @@ export class FileWatcher {
945
+ + retry.register('Watcher', () => this.startWatching());
946
+ @@ -56,0 +59,2 @@ export class FileWatcher {
947
+ + this.toDispose = dispose(this.toDispose);
948
+ + return retry.run('Watcher');
949
+ @@ -113 +117 @@ export class FileWatcher {
950
+ - }));
951
+ + })).then(() => retry.recover('Watcher'));
952
+ diff --git a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts
953
+ index 7e3a324..b9ccd63 100644
954
+ --- a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts
955
+ +++ b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts
956
+ @@ -18,0 +19 @@ import { getPathFromAmdModule } from 'vs/base/common/amd';
957
+ + const retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry;
958
+ @@ -36,0 +38 @@ export class FileWatcher {
959
+ + retry.register('Watcher', () => this.startWatching());
960
+ @@ -59,0 +62,2 @@ export class FileWatcher {
961
+ + this.toDispose = dispose(this.toDispose);
962
+ + return retry.run('Watcher');
963
+ @@ -116 +120 @@ export class FileWatcher {
964
+ - }));
965
+ + })).then(() => retry.recover('Watcher'));
966
+ diff --git a/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts b/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts
967
+ index 74dad64..34cd83b 100644
968
+ --- a/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts
969
+ +++ b/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts
970
+ @@ -14,0 +15 @@ import { getPathFromAmdModule } from 'vs/base/common/amd';
971
+ + const retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry;
972
+ @@ -40,0 +42 @@ export class OutOfProcessWin32FolderWatcher {
973
+ + retry.register('Watcher', () => this.startWatcher());
974
+ @@ -52,0 +55 @@ export class OutOfProcessWin32FolderWatcher {
975
+ + this.handle.stdout.once('data', () => retry.recover('Watcher'));
976
+ @@ -110,0 +114 @@ export class OutOfProcessWin32FolderWatcher {
977
+ + return retry.run('Watcher');
924
978
diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts
925
979
index 3c78990..545d91a 100644
926
980
--- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts
@@ -931,6 +985,40 @@ index 3c78990..545d91a 100644
931
985
@@ -130 +130 @@ export class KeyboardMapperFactory {
932
986
- if (OS === OperatingSystem.Windows) {
933
987
+ if (isNative && OS === OperatingSystem.Windows) {
988
+ diff --git a/src/vs/workbench/services/search/node/searchService.ts b/src/vs/workbench/services/search/node/searchService.ts
989
+ index 3eaafa4..0345bad 100644
990
+ --- a/src/vs/workbench/services/search/node/searchService.ts
991
+ +++ b/src/vs/workbench/services/search/node/searchService.ts
992
+ @@ -11 +11 @@ import { Event } from 'vs/base/common/event';
993
+ - import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
994
+ + import { Disposable, IDisposable, toDisposable, dispose } from 'vs/base/common/lifecycle';
995
+ @@ -32,0 +33 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
996
+ + const retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry;
997
+ @@ -433,0 +435 @@ export class DiskSearch implements ISearchResultProvider {
998
+ + private toDispose: IDisposable[] = [];
999
+ @@ -470,6 +472,16 @@ export class DiskSearch implements ISearchResultProvider {
1000
+ - const client = new Client(
1001
+ - getPathFromAmdModule(require, 'bootstrap-fork'),
1002
+ - opts);
1003
+ -
1004
+ - const channel = getNextTickChannel(client.getChannel('search'));
1005
+ - this.raw = new SearchChannelClient(channel);
1006
+ + const connect = (): void => {
1007
+ + const client = new Client(
1008
+ + getPathFromAmdModule(require, 'bootstrap-fork'),
1009
+ + opts);
1010
+ + client.onDidProcessExit(() => {
1011
+ + this.toDispose = dispose(this.toDispose);
1012
+ + retry.run('Searcher');
1013
+ + }, null, this.toDispose);
1014
+ + this.toDispose.push(client);
1015
+ +
1016
+ + const channel = getNextTickChannel(client.getChannel('search'));
1017
+ + this.raw = new SearchChannelClient(channel);
1018
+ + this.raw.clearCache('test-connectivity').then(() => retry.recover('Searcher'));
1019
+ + };
1020
+ + retry.register('Searcher', connect);
1021
+ + connect();
934
1022
diff --git a/src/vs/workbench/services/timer/electron-browser/timerService.ts b/src/vs/workbench/services/timer/electron-browser/timerService.ts
935
1023
index 6e6fbcc..645bd72 100644
936
1024
--- a/src/vs/workbench/services/timer/electron-browser/timerService.ts
0 commit comments