Skip to content

Commit

Permalink
Use file system for settings and fix data home path
Browse files Browse the repository at this point in the history
It's possible that using browser storage makes more sense with settings
sync, so we might want to revisit this once/if we get settings sync
working. As it currently is though, browser storage just causes jank.

The path was also missing a `User` at the end so I added that. This
might affect the Vim extension which would have been writing to the
wrong path previously but I don't believe it should affect anything
else since they would have been writing to browser storage.

- Fixes #2208
- Fixes #2231
- Fixes #2279
- Fixes #2274
  • Loading branch information
code-asher committed Nov 20, 2020
1 parent 96170de commit 3d7fbec
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions ci/dev/vscode.patch
Original file line number Diff line number Diff line change
Expand Up @@ -3797,18 +3797,25 @@ index 85d83f37da179a1e39266cf72a02e971f590308e..0659738b36df1747c9afcabf8d9abf26
};

diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts
index a8d43045ecc8cbe04b3f8440cff16d42aadbcad0..cd589c6f75eccbeefbf364d426ac882396b26fb4 100644
index a8d43045ecc8cbe04b3f8440cff16d42aadbcad0..8e122c761ac7ddfee11f9dda2ac5e845b893cc28 100644
--- a/src/vs/workbench/services/environment/browser/environmentService.ts
+++ b/src/vs/workbench/services/environment/browser/environmentService.ts
@@ -119,8 +119,18 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
@@ -119,8 +119,25 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
@memoize
get logFile(): URI { return joinPath(this.options.logsPath, 'window.log'); }

+ // NOTE@coder: Use the regular path for extensions that write directly to disk
+ // instead of using the VS Code API.
+ // NOTE@coder: Use the same path in // ../../../../platform/environment/node/environmentService.ts
+ // and don't use the user data scheme. This solves two problems:
+ // 1. Extensions running in the browser (like Vim) might use these paths
+ // directly instead of using the file service and most likely can't write
+ // to `/User` on disk.
+ // 2. Settings will be stored in the file system instead of in browser
+ // storage. Using browser storage makes sharing or seeding settings
+ // between browsers difficult. We may want to revisit this once/if we get
+ // settings sync.
@memoize
- get userRoamingDataHome(): URI { return URI.file('/User').with({ scheme: Schemas.userData }); }
+ get userRoamingDataHome(): URI { return URI.file(this.userDataPath).with({ scheme: Schemas.userData }); }
+ get userRoamingDataHome(): URI { return joinPath(URI.file(this.userDataPath).with({ scheme: Schemas.vscodeRemote }), 'User'); }
+ @memoize
+ get userDataPath(): string {
+ const dataPath = this.payload?.get("userDataPath");
Expand All @@ -3820,7 +3827,7 @@ index a8d43045ecc8cbe04b3f8440cff16d42aadbcad0..cd589c6f75eccbeefbf364d426ac8823

@memoize
get settingsResource(): URI { return joinPath(this.userRoamingDataHome, 'settings.json'); }
@@ -301,7 +311,12 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
@@ -301,7 +318,12 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
extensionHostDebugEnvironment.params.port = parseInt(value);
break;
case 'enableProposedApi':
Expand Down

0 comments on commit 3d7fbec

Please sign in to comment.