From 23b0c61219d735c274f4f12c665cc3ae92b3889e Mon Sep 17 00:00:00 2001 From: Asher Date: Tue, 4 Jun 2019 10:44:45 -0500 Subject: [PATCH 1/5] Update VS Code to 1.34.0 Also updated Typescript to fix a compilation error and removed some dependencies in the server package that already exist in the root. --- .travis.yml | 6 +- build/tasks.ts | 2 +- package.json | 2 +- packages/server/package.json | 7 +- packages/server/yarn.lock | 194 ----------------------------------- scripts/vstar.sh | 2 +- yarn.lock | 8 +- 7 files changed, 11 insertions(+), 210 deletions(-) diff --git a/.travis.yml b/.travis.yml index 78fda08e54db..27610685f22d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,14 +8,14 @@ matrix: - os: linux dist: trusty env: - - VSCODE_VERSION="1.33.1" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" TARGET="centos" + - VSCODE_VERSION="1.34.0" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" TARGET="centos" - os: linux dist: trusty env: - - VSCODE_VERSION="1.33.1" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" TARGET="alpine" + - VSCODE_VERSION="1.34.0" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" TARGET="alpine" - os: osx env: - - VSCODE_VERSION="1.33.1" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" + - VSCODE_VERSION="1.34.0" MAJOR_VERSION="1" VERSION="$MAJOR_VERSION.$TRAVIS_BUILD_NUMBER-vsc$VSCODE_VERSION" before_install: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libxkbfile-dev libsecret-1-dev; fi diff --git a/build/tasks.ts b/build/tasks.ts index 9e5a4c6da44b..d3412c0092d5 100644 --- a/build/tasks.ts +++ b/build/tasks.ts @@ -14,7 +14,7 @@ const libPath = path.join(__dirname, "../lib"); const vscodePath = path.join(libPath, "vscode"); const defaultExtensionsPath = path.join(libPath, "extensions"); const pkgsPath = path.join(__dirname, "../packages"); -const vscodeVersion = process.env.VSCODE_VERSION || "1.33.1"; +const vscodeVersion = process.env.VSCODE_VERSION || "1.34.0"; const vsSourceUrl = `https://codesrv-ci.cdr.sh/vstar-${vscodeVersion}.tar.gz`; const buildServerBinary = register("build:server:binary", async (runner) => { diff --git a/package.json b/package.json index 194da70a8434..7367d6bd8122 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "tsconfig-paths": "^3.8.0", "tslib": "^1.9.3", "tslint": "^5.12.1", - "typescript": "^3.2.2", + "typescript": "3.4.5", "typescript-tslint-plugin": "^0.2.1", "uglifyjs-webpack-plugin": "^2.1.1", "url-loader": "^1.1.2", diff --git a/packages/server/package.json b/packages/server/package.json index 88e71d9d021f..59ac735c4f8d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -31,11 +31,6 @@ "@types/pem": "^1.9.4", "@types/safe-compare": "^1.1.0", "@types/ws": "^6.0.1", - "fs-extra": "^7.0.1", - "opn": "^5.4.0", - "string-replace-webpack-plugin": "^0.1.3", - "ts-node": "^7.0.1", - "tsconfig-paths": "^3.7.0", - "typescript": "^3.2.2" + "opn": "^5.4.0" } } diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index b97e1daaed03..1d142e6c8501 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -70,11 +70,6 @@ dependencies: "@types/node" "*" -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - "@types/mime-types@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" @@ -138,11 +133,6 @@ accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - ansi-regex@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" @@ -160,31 +150,16 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@~0.2.10: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - body-parser@1.18.3: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" @@ -227,11 +202,6 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0, buffer-from@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -315,20 +285,6 @@ crypt@~0.0.1: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= -css-loader@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.9.1.tgz#2e1aa00ce7e30ef2c6a7a4b300a080a7c979e0dc" - integrity sha1-LhqgDOfjDvLGp6SzAKCAp8l54Nw= - dependencies: - csso "1.3.x" - loader-utils "~0.2.2" - source-map "~0.1.38" - -csso@1.3.x: - version "1.3.12" - resolved "https://registry.yarnpkg.com/csso/-/csso-1.3.12.tgz#fc628694a2d38938aaac4996753218fd311cdb9e" - integrity sha1-/GKGlKLTiTiqrEmWdTIY/TEc254= - debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -336,11 +292,6 @@ debug@2.6.9: dependencies: ms "2.0.0" -deepmerge@^2.0.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -365,21 +316,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -diff@^3.1.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -469,13 +410,6 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" -file-loader@^0.8.1: - version "0.8.5" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.8.5.tgz#9275d031fe780f27d47f5f4af02bd43713cc151b" - integrity sha1-knXQMf54DyfUf19K8CvUNxPMFRs= - dependencies: - loader-utils "~0.2.5" - finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" @@ -631,18 +565,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -650,16 +572,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -loader-utils@^0.2.5, loader-utils@~0.2.2, loader-utils@~0.2.3, loader-utils@~0.2.5: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -667,11 +579,6 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -make-error@^1.1.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" - integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== - md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" @@ -725,23 +632,6 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -764,11 +654,6 @@ node-netstat@^1.6.0: dependencies: is-wsl "^1.1.0" -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" @@ -945,26 +830,6 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -source-map-support@^0.5.6: - version "0.5.10" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" - integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.1.38: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -975,18 +840,6 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -string-replace-webpack-plugin@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/string-replace-webpack-plugin/-/string-replace-webpack-plugin-0.1.3.tgz#73c657e759d66cfe80ae1e0cf091aa256d0e715c" - integrity sha1-c8ZX51nWbP6Arh4M8JGqJW0OcVw= - dependencies: - async "~0.2.10" - loader-utils "~0.2.3" - optionalDependencies: - css-loader "^0.9.1" - file-loader "^0.8.1" - style-loader "^0.8.3" - strip-ansi@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" @@ -994,18 +847,6 @@ strip-ansi@^5.0.0: dependencies: ansi-regex "^4.0.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -style-loader@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.8.3.tgz#f4f92eb7db63768748f15065cd6700f5a1c85357" - integrity sha1-9Pkut9tjdodI8VBlzWcA9aHIU1c= - dependencies: - loader-utils "^0.2.5" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -1013,31 +854,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -ts-node@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" - integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== - dependencies: - arrify "^1.0.0" - buffer-from "^1.1.0" - diff "^3.1.0" - make-error "^1.1.1" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map-support "^0.5.6" - yn "^2.0.0" - -tsconfig-paths@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.7.0.tgz#02ae978db447b22e09dafcd4198be95c4885ceb2" - integrity sha512-7iE+Q/2E1lgvxD+c0Ot+GFFmgmfIjt/zCayyruXkXQ84BLT85gHXy0WSoQSiuFX9+d+keE/jiON7notV74ZY+A== - dependencies: - "@types/json5" "^0.0.29" - deepmerge "^2.0.1" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -1046,11 +862,6 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" -typescript@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" - integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg== - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -1101,8 +912,3 @@ xhr2@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= - -yn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" - integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= diff --git a/scripts/vstar.sh b/scripts/vstar.sh index c7be0b719036..266115b1cce4 100755 --- a/scripts/vstar.sh +++ b/scripts/vstar.sh @@ -4,7 +4,7 @@ set -euxo pipefail # Builds a tarfile containing vscode sourcefiles neccessary for CI. # Done outside the CI and uploaded to object storage to reduce CI time. -branch=1.33.1 +branch=1.34.0 dir=/tmp/vstar outfile=/tmp/vstar-$branch.tar.gz rm -rf $dir diff --git a/yarn.lock b/yarn.lock index 3db1a2ffd0fa..3b8dbc364f6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5595,10 +5595,10 @@ typescript-tslint-plugin@^0.2.1: mock-require "^3.0.2" vscode-languageserver "^5.1.0" -typescript@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" - integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg== +typescript@3.4.5: + version "3.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" + integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== uglify-js@3.4.x, uglify-js@^3.0.0: version "3.4.9" From 3be694cb673897183c90fc20b61b4a92f951ffa7 Mon Sep 17 00:00:00 2001 From: Asher Date: Tue, 4 Jun 2019 10:55:46 -0500 Subject: [PATCH 2/5] Get working with nodeless --- packages/ide-api/api.d.ts | 6 +- packages/server/src/vscode/sharedProcess.ts | 4 + packages/vscode/src/client.ts | 14 +- packages/vscode/src/workbench.ts | 63 +- scripts/vscode.patch | 1145 ++----------------- 5 files changed, 163 insertions(+), 1069 deletions(-) diff --git a/packages/ide-api/api.d.ts b/packages/ide-api/api.d.ts index e0049fd6384b..d9bf8792ae4e 100644 --- a/packages/ide-api/api.d.ts +++ b/packages/ide-api/api.d.ts @@ -1,9 +1,9 @@ // tslint:disable no-any import { ITerminalService } from "vs/workbench/contrib/terminal/common/terminal"; -import { IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; -import { Action } from 'vs/base/common/actions'; -import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; +import { IWorkbenchActionRegistry } from "vs/workbench/common/actions"; +import { Action } from "vs/base/common/actions"; +import { SyncActionDescriptor } from "vs/platform/actions/common/actions"; export interface EvalHelper { } interface ActiveEvalEmitter { diff --git a/packages/server/src/vscode/sharedProcess.ts b/packages/server/src/vscode/sharedProcess.ts index 6834c2e1a364..27a1da2a6db1 100644 --- a/packages/server/src/vscode/sharedProcess.ts +++ b/packages/server/src/vscode/sharedProcess.ts @@ -9,6 +9,7 @@ import { retry } from "@coder/ide/src/retry"; import { logger, field, Level } from "@coder/logger"; import { withEnv } from "@coder/protocol"; +// tslint:disable-next-line completed-docs should be obvious export enum SharedProcessState { Stopped, Starting, @@ -22,6 +23,9 @@ export type SharedProcessEvent = { readonly error: string; }; +/** + * Manages the shared process. If it dies it will start it again. + */ export class SharedProcess { public readonly socketPath: string = os.platform() === "win32" ? path.join("\\\\?\\pipe", os.tmpdir(), `.code-server${Math.random().toString()}`) diff --git a/packages/vscode/src/client.ts b/packages/vscode/src/client.ts index f783a36c7582..99faebbaac22 100644 --- a/packages/vscode/src/client.ts +++ b/packages/vscode/src/client.ts @@ -6,10 +6,10 @@ import { IStatusbarService, StatusbarAlignment } from "vs/platform/statusbar/com import * as paths from "./fill/paths"; import product from "./fill/product"; import "./vscode.scss"; -import { Action } from 'vs/base/common/actions'; -import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; -import { Registry } from 'vs/platform/registry/common/platform'; -import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; +import { Action } from "vs/base/common/actions"; +import { SyncActionDescriptor, MenuRegistry, MenuId } from "vs/platform/actions/common/actions"; +import { Registry } from "vs/platform/registry/common/platform"; +import { IWorkbenchActionRegistry, Extensions } from "vs/workbench/common/actions"; import { CommandsRegistry } from "vs/platform/commands/common/commands"; import { IFileService, FileOperation } from "vs/platform/files/common/files"; import { ITextFileService } from "vs/workbench/services/textfile/common/textfiles"; @@ -20,7 +20,13 @@ import { IStorageService } from "vs/platform/storage/common/storage"; // NOTE: shouldn't import anything from VS Code here or anything that will // depend on a synchronous fill like `os`. +/** + * Client implementation that uses VS Code. + */ class VSClient extends IdeClient { + /** + * Start VS Code and expose our API. + */ protected initialize(): Promise { return this.task("Start workbench", 1000, async (data, sharedData) => { paths._paths.initialize(data, sharedData); diff --git a/packages/vscode/src/workbench.ts b/packages/vscode/src/workbench.ts index c2499e87a1f6..9e0dc9e459ca 100644 --- a/packages/vscode/src/workbench.ts +++ b/packages/vscode/src/workbench.ts @@ -1,6 +1,6 @@ import * as os from "os"; import { IProgress, INotificationHandle } from "@coder/ide"; -import { logger } from "@coder/logger"; +import { logger, field } from "@coder/logger"; import { client } from "./client"; import "./fill/platform"; @@ -16,7 +16,7 @@ import "./fill/windowsService"; import "./fill/workbenchRegistry"; import "./fill/workspacesService"; import * as paths from "./fill/paths"; -import { PasteAction } from "./fill/paste"; +// import { PasteAction } from "./fill/paste"; import { ExplorerItem, ExplorerModel } from "vs/workbench/contrib/files/common/explorerModel"; import { IEditorGroup } from "vs/workbench/services/editor/common/editorGroupsService"; @@ -26,7 +26,7 @@ import { IProgressService2, ProgressLocation } from "vs/platform/progress/common import { ISingleFolderWorkspaceIdentifier, IWorkspaceIdentifier } from "vs/platform/workspaces/common/workspaces"; import { IWindowsService, IWindowConfiguration } from "vs/platform/windows/common/windows"; import { LogLevel } from "vs/platform/log/common/log"; -import { RawContextKey, IContextKeyService } from "vs/platform/contextkey/common/contextkey"; +// import { RawContextKey, IContextKeyService } from "vs/platform/contextkey/common/contextkey"; import { ServiceCollection } from "vs/platform/instantiation/common/serviceCollection"; import { URI } from "vs/base/common/uri"; @@ -39,7 +39,7 @@ export class Workbench { private readonly windowId = parseInt(new Date().toISOString().replace(/[-:.TZ]/g, ""), 10); private _serviceCollection: ServiceCollection | undefined; - private _clipboardContextKey: RawContextKey | undefined; + // private _clipboardContextKey: RawContextKey | undefined; /** * Handle a drop event on the file explorer. @@ -80,24 +80,24 @@ export class Workbench { /** * Use to toggle the paste option inside editors based on the native clipboard. */ - public get clipboardContextKey(): RawContextKey { - if (!this._clipboardContextKey) { - throw new Error("Trying to access clipboard context key before it has been set"); - } + // public get clipboardContextKey(): RawContextKey { + // if (!this._clipboardContextKey) { + // throw new Error("Trying to access clipboard context key before it has been set"); + // } - return this._clipboardContextKey; - } + // return this._clipboardContextKey; + // } - public get clipboardText(): Promise { - return client.clipboard.readText(); - } + // public get clipboardText(): Promise { + // return client.clipboard.readText(); + // } /** * Create a paste action for use in text inputs. */ - public get pasteAction(): PasteAction { - return new PasteAction(); - } + // public get pasteAction(): PasteAction { + // return new PasteAction(); + // } public set workspace(ws: IWorkspaceIdentifier | ISingleFolderWorkspaceIdentifier | undefined) { if (typeof ws === "undefined") { @@ -129,12 +129,12 @@ export class Workbench { public set serviceCollection(collection: ServiceCollection) { this._serviceCollection = collection; - const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; - const bounded = this.clipboardContextKey.bindTo(contextKeys); - client.clipboard.onPermissionChange((enabled) => { - bounded.set(enabled); - }); - client.clipboard.initialize(); + // const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; + // const bounded = this.clipboardContextKey.bindTo(contextKeys); + // client.clipboard.onPermissionChange((enabled) => { + // bounded.set(enabled); + // }); + // client.clipboard.initialize(); client.progressService = { start: (title: string, task: (progress: IProgress) => Promise, onCancel: () => void): Promise => { @@ -189,13 +189,13 @@ export class Workbench { * Start VS Code. */ public async initialize(): Promise { - this._clipboardContextKey = new RawContextKey("nativeClipboard", client.clipboard.isEnabled); + // this._clipboardContextKey = new RawContextKey("nativeClipboard", client.clipboard.isEnabled); const workspace = this.workspace || URI.file(paths.getWorkingDirectory()); // If we try to import this above, workbench will be undefined due to // circular imports. - require("vs/workbench/workbench.main"); - const { main } = require("vs/workbench/electron-browser/main"); + require("vs/workbench/workbench.nodeless.main"); + const { main } = require("vs/workbench/browser/nodeless.main"); const config: IWindowConfiguration = { machineId: "1", windowId: this.windowId, @@ -208,6 +208,7 @@ export class Workbench { perfEntries: [], _: [], }; + if ((workspace as IWorkspaceIdentifier).configPath) { // tslint:disable-next-line:no-any let wid: IWorkspaceIdentifier = (Object).assign({}, workspace); @@ -219,19 +220,17 @@ export class Workbench { } else { config.folderUri = workspace as URI; } + try { await main(config); } catch (ex) { + // Resolves the error of the workspace identifier being invalid. if (ex.toString().indexOf("UriError") !== -1 || ex.toString().indexOf("backupPath") !== -1) { - /** - * Resolves the error of the workspace identifier being invalid. - */ - // tslint:disable-next-line:no-console - console.error(ex); + logger.error(ex.message, field("error", ex)); this.workspace = undefined; location.reload(); - - return; + } else { + throw ex; } } } diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 90ba05551377..2941fcc7fd42 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -1,162 +1,27 @@ -diff --git a/src/vs/base/browser/browser.ts b/src/vs/base/browser/browser.ts -index 16414ef..3006e05 100644 ---- a/src/vs/base/browser/browser.ts -+++ b/src/vs/base/browser/browser.ts -@@ -125,0 +126,4 @@ export const isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0); -+export const isMacintosh = userAgent.indexOf("Macintosh") >= 0; -+export const isWindows = userAgent.indexOf("Windows") >= 0; -+export const isLinux = userAgent.indexOf("Linux") >= 0; -+ -diff --git a/src/vs/base/browser/keyboardEvent.ts b/src/vs/base/browser/keyboardEvent.ts -index 03bdffc..d72c168 100644 ---- a/src/vs/base/browser/keyboardEvent.ts -+++ b/src/vs/base/browser/keyboardEvent.ts -@@ -154 +154 @@ let INVERSE_KEY_CODE_MAP: KeyCode[] = new Array(KeyCode.MAX_VALUE); -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -@@ -159 +159 @@ let INVERSE_KEY_CODE_MAP: KeyCode[] = new Array(KeyCode.MAX_VALUE); -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -@@ -205 +205 @@ export interface IKeyboardEvent { --const ctrlKeyMod = (platform.isMacintosh ? KeyMod.WinCtrl : KeyMod.CtrlCmd); -+const ctrlKeyMod = (browser.isMacintosh ? KeyMod.WinCtrl : KeyMod.CtrlCmd); -@@ -208 +208 @@ const shiftKeyMod = KeyMod.Shift; --const metaKeyMod = (platform.isMacintosh ? KeyMod.CtrlCmd : KeyMod.WinCtrl); -+const metaKeyMod = (browser.isMacintosh ? KeyMod.CtrlCmd : KeyMod.WinCtrl); -diff --git a/src/vs/base/browser/ui/aria/aria.ts b/src/vs/base/browser/ui/aria/aria.ts -index fc71827..c8ed796 100644 ---- a/src/vs/base/browser/ui/aria/aria.ts -+++ b/src/vs/base/browser/ui/aria/aria.ts -@@ -8 +8 @@ import * as nls from 'vs/nls'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts -index 0869c52..4bd0813 100644 ---- a/src/vs/base/browser/ui/list/listWidget.ts -+++ b/src/vs/base/browser/ui/list/listWidget.ts -@@ -13 +13 @@ import * as DOM from 'vs/base/browser/dom'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -256 +256 @@ class KeyboardController implements IDisposable { -- onKeyDown.filter(e => (platform.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === KeyCode.KEY_A).on(this.onCtrlA, this, this.disposables); -+ onKeyDown.filter(e => (browser.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === KeyCode.KEY_A).on(this.onCtrlA, this, this.disposables); -@@ -494 +494 @@ export function isSelectionSingleChangeEvent(event: IListMouseEvent | IList -- return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -+ return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -@@ -556 +556 @@ export class MouseController implements IDisposable { -- return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -+ return browser.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey; -diff --git a/src/vs/base/browser/ui/sash/sash.ts b/src/vs/base/browser/ui/sash/sash.ts -index 8c7168b..6b34122 100644 ---- a/src/vs/base/browser/ui/sash/sash.ts -+++ b/src/vs/base/browser/ui/sash/sash.ts -@@ -8,2 +8 @@ import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle'; --import { isIPad } from 'vs/base/browser/browser'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isIPad, isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/base/browser/ui/scrollbar/scrollableElement.ts b/src/vs/base/browser/ui/scrollbar/scrollableElement.ts -index 9b31c84..51de0ea 100644 ---- a/src/vs/base/browser/ui/scrollbar/scrollableElement.ts -+++ b/src/vs/base/browser/ui/scrollbar/scrollableElement.ts -@@ -18 +18 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -269 +269 @@ export abstract class AbstractScrollableElement extends Widget { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -@@ -338 +338 @@ export abstract class AbstractScrollableElement extends Widget { -- const shiftConvert = !platform.isMacintosh && e.browserEvent && e.browserEvent.shiftKey; -+ const shiftConvert = !browser.isMacintosh && e.browserEvent && e.browserEvent.shiftKey; -@@ -571 +571 @@ function resolveOptions(opts: ScrollableElementCreationOptions): ScrollableEleme -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/base/browser/ui/selectBox/selectBox.ts b/src/vs/base/browser/ui/selectBox/selectBox.ts -index d74c30c..ac39ce3 100644 ---- a/src/vs/base/browser/ui/selectBox/selectBox.ts -+++ b/src/vs/base/browser/ui/selectBox/selectBox.ts -@@ -16 +16 @@ import { SelectBoxList } from 'vs/base/browser/ui/selectBox/selectBoxCustom'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts -index 8908d68..35dae2d 100644 ---- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts -+++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts -@@ -20 +20 @@ import { ISelectBoxDelegate, ISelectOptionItem, ISelectBoxOptions, ISelectBoxSty --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/base/browser/ui/selectBox/selectBoxNative.ts b/src/vs/base/browser/ui/selectBox/selectBoxNative.ts -index 98dee79..09c0467 100644 ---- a/src/vs/base/browser/ui/selectBox/selectBoxNative.ts -+++ b/src/vs/base/browser/ui/selectBox/selectBoxNative.ts -@@ -12 +12 @@ import { ISelectBoxDelegate, ISelectOptionItem, ISelectBoxOptions, ISelectBoxSty --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts -index f68ae90..d6b9ea7 100644 ---- a/src/vs/base/browser/ui/tree/abstractTree.ts -+++ b/src/vs/base/browser/ui/tree/abstractTree.ts -@@ -24 +24 @@ import { disposableTimeout } from 'vs/base/common/async'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/base/node/config.ts b/src/vs/base/node/config.ts -index 5ef2193..a232b6c 100644 +index 0b57853..ad0c604 100644 --- a/src/vs/base/node/config.ts +++ b/src/vs/base/node/config.ts -@@ -79,0 +80,3 @@ export class ConfigWatcher implements IConfigWatcher, IDisposable { +@@ -77,0 +78,3 @@ export class ConfigWatcher implements IConfigWatcher, IDisposable { + } else { + this.cache = config; // update config + this._onDidUpdateConfiguration.fire({ config }); -diff --git a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts -index 74148e4..041205b 100644 ---- a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts -+++ b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts -@@ -8 +8 @@ import * as nls from 'vs/nls'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -66 +66 @@ export class QuickOpenController extends DefaultController { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/base/parts/tree/browser/treeDefaults.ts b/src/vs/base/parts/tree/browser/treeDefaults.ts -index f91ca2b..ef6fce9 100644 ---- a/src/vs/base/parts/tree/browser/treeDefaults.ts -+++ b/src/vs/base/parts/tree/browser/treeDefaults.ts -@@ -8,0 +9 @@ import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -113 +114 @@ export class DefaultController implements _.IController { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -@@ -155 +156 @@ export class DefaultController implements _.IController { -- const isMac = platform.isMacintosh; -+ const isMac = browser.isMacintosh; diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts -index f08c996..7db13fa 100644 +index 90767e1..3163f10 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts -@@ -296 +296 @@ export class IssueReporter extends Disposable { +@@ -315 +315 @@ export class IssueReporter extends Disposable { - const piiPaths = [this.environmentService.appRoot, this.environmentService.extensionsPath]; + const piiPaths = [this.environmentService.appRoot, this.environmentService.extensionsPath, ...this.environmentService.extraExtensionPaths]; -@@ -425 +425 @@ export class IssueReporter extends Disposable { -- const cmdOrCtrlKey = platform.isMacintosh ? e.metaKey : e.ctrlKey; -+ const cmdOrCtrlKey = browser.isMacintosh ? e.metaKey : e.ctrlKey; -@@ -459 +459 @@ export class IssueReporter extends Disposable { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts -index e0ff793..885de12 100644 ---- a/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts -+++ b/src/vs/code/electron-browser/processExplorer/processExplorerMain.ts -@@ -304 +304 @@ export function startup(data: ProcessExplorerData): void { -- const cmdOrCtrlKey = platform.isMacintosh ? e.metaKey : e.ctrlKey; -+ const cmdOrCtrlKey = browser.isMacintosh ? e.metaKey : e.ctrlKey; diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts -index 6fd8249..6ae6b11 100644 +index e270021..91c81b4 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -50,0 +51,2 @@ import { ServiceIdentifier } from 'vs/platform/instantiation/common/instantiatio +import { BackupMainService } from 'vs/platform/backup/electron-main/backupMainService'; +import { mkdirp } from 'vs/base/node/pfs'; @@ -93,0 +96,10 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I -+ Promise.all([ // Copied from src/vs/code/electron-main/main.ts ++ Promise.all([ // Lifted from src/vs/code/electron-main/main.ts + environmentService.extensionsPath, + environmentService.nodeCachedDataDir, + environmentService.logsPath, @@ -166,200 +31,26 @@ index 6fd8249..6ae6b11 100644 + ...environmentService.extraExtensionPaths, + ...environmentService.extraBuiltinExtensionPaths, + ].map((path): undefined | Promise => path ? mkdirp(path) : undefined)); -@@ -119,0 +132,2 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I -+ const backupMainService = instantiationService.createInstance(BackupMainService) as BackupMainService; -+ backupMainService.initialize().catch(console.error); -@@ -124 +138 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I -- const { appRoot, extensionsPath, extensionDevelopmentLocationURI, isBuilt, installSourcePath } = environmentService; -+ const { appRoot, extensionsPath, extraExtensionPaths, extensionDevelopmentLocationURI, isBuilt, installSourcePath } = environmentService; +@@ -124 +136,3 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I +- const { appRoot, extensionsPath, extensionDevelopmentLocationURI: extensionDevelopmentLocationURI, isBuilt, installSourcePath } = environmentService; ++ const backupMainService = instantiationService.createInstance(BackupMainService) as BackupMainService; ++ backupMainService.initialize().catch(console.error); ++ const { appRoot, extensionsPath, extensionDevelopmentLocationURI: extensionDevelopmentLocationURI, isBuilt, installSourcePath, extraExtensionPaths } = environmentService; @@ -138 +152 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I - piiPaths: [appRoot, extensionsPath] + piiPaths: [appRoot, extensionsPath, ...extraExtensionPaths] @@ -223,0 +238 @@ async function handshake(configuration: ISharedProcessConfiguration): Promise { + const cli = await new Promise((c, e) => require(['vs/code/node/cliProcessMain'], c, e)); + await cli.main(args); + return; // Always just do this for now. -diff --git a/src/vs/editor/browser/config/configuration.ts b/src/vs/editor/browser/config/configuration.ts -index f97a692..8059a67 100644 ---- a/src/vs/editor/browser/config/configuration.ts -+++ b/src/vs/editor/browser/config/configuration.ts -@@ -10 +9,0 @@ import { Disposable } from 'vs/base/common/lifecycle'; --import * as platform from 'vs/base/common/platform'; -@@ -17 +15,0 @@ import { IDimension } from 'vs/editor/common/editorCommon'; --import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -@@ -18,0 +17 @@ import { IAccessibilityService } from 'vs/platform/accessibility/common/accessib -+import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -@@ -367 +366 @@ export class Configuration extends CommonEditorConfiguration { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/editor/browser/controller/mouseHandler.ts b/src/vs/editor/browser/controller/mouseHandler.ts -index b3b4472..f888d63 100644 ---- a/src/vs/editor/browser/controller/mouseHandler.ts -+++ b/src/vs/editor/browser/controller/mouseHandler.ts -@@ -222 +222 @@ export class MouseHandler extends ViewEventHandler { -- if (platform.isMacintosh && e.leftButton && e.ctrlKey) { -+ if (browser.isMacintosh && e.leftButton && e.ctrlKey) { -diff --git a/src/vs/editor/browser/controller/textAreaHandler.ts b/src/vs/editor/browser/controller/textAreaHandler.ts -index be5583d..c0e4f2e 100644 ---- a/src/vs/editor/browser/controller/textAreaHandler.ts -+++ b/src/vs/editor/browser/controller/textAreaHandler.ts -@@ -214 +214 @@ export class TextAreaHandler extends ViewPart { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/editor/browser/controller/textAreaInput.ts b/src/vs/editor/browser/controller/textAreaInput.ts -index bc986fa..63c6d79 100644 ---- a/src/vs/editor/browser/controller/textAreaInput.ts -+++ b/src/vs/editor/browser/controller/textAreaInput.ts -@@ -263 +263 @@ export class TextAreaInput extends Disposable { -- const [newState, typeInput] = deduceInputFromTextAreaValue(/*couldBeEmojiInput*/platform.isMacintosh, /*couldBeTypingAtOffset0*/previousEventWasFocus && platform.isMacintosh); -+ const [newState, typeInput] = deduceInputFromTextAreaValue(/*couldBeEmojiInput*/browser.isMacintosh, /*couldBeTypingAtOffset0*/previousEventWasFocus && browser.isMacintosh); -diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts -index 7571c59..7f5689a 100644 ---- a/src/vs/editor/common/config/commonEditorConfig.ts -+++ b/src/vs/editor/common/config/commonEditorConfig.ts -@@ -395 +395 @@ const editorConfiguration: IConfigurationNode = { -- 'included': platform.isMacintosh -+ 'included': platform.isNative && platform.isMacintosh -diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts -index 85b823f..7da04c6 100644 ---- a/src/vs/editor/common/config/editorOptions.ts -+++ b/src/vs/editor/common/config/editorOptions.ts -@@ -6 +6 @@ --import * as nls from 'vs/nls'; -+import * as browser from 'vs/base/browser/browser'; -@@ -13,0 +14 @@ import { USUAL_WORD_SEPARATORS } from 'vs/editor/common/model/wordHelper'; -+import * as nls from 'vs/nls'; -@@ -1803 +1804 @@ export class EditorOptionsValidator { -- configuredMulticursorModifier = platform.isMacintosh ? 'metaKey' : 'ctrlKey'; -+ configuredMulticursorModifier = browser.isMacintosh ? 'metaKey' : 'ctrlKey'; -@@ -2578 +2579 @@ export const EDITOR_FONT_DEFAULTS = { -- platform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isLinux ? DEFAULT_LINUX_FONT_FAMILY : DEFAULT_WINDOWS_FONT_FAMILY) -+ browser.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isLinux ? DEFAULT_LINUX_FONT_FAMILY : DEFAULT_WINDOWS_FONT_FAMILY) -@@ -2582 +2583 @@ export const EDITOR_FONT_DEFAULTS = { -- platform.isMacintosh ? 12 : 14 -+ browser.isMacintosh ? 12 : 14 -@@ -2688 +2689 @@ export const EDITOR_DEFAULTS: IValidatedEditorOptions = { -- selectionClipboard: true, -+ selectionClipboard: false, -diff --git a/src/vs/editor/common/config/fontInfo.ts b/src/vs/editor/common/config/fontInfo.ts -index c69ea3f..b8d87f7 100644 ---- a/src/vs/editor/common/config/fontInfo.ts -+++ b/src/vs/editor/common/config/fontInfo.ts -@@ -6 +6 @@ --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -14 +14 @@ import { EditorZoom } from 'vs/editor/common/config/editorZoom'; --const GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35; -+const GOLDEN_LINE_HEIGHT_RATIO = browser.isMacintosh ? 1.5 : 1.35; -diff --git a/src/vs/editor/contrib/clipboard/clipboard.ts b/src/vs/editor/contrib/clipboard/clipboard.ts -index 990be3a..18ae0d5 100644 ---- a/src/vs/editor/contrib/clipboard/clipboard.ts -+++ b/src/vs/editor/contrib/clipboard/clipboard.ts -@@ -18,0 +19 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis -+import { clipboard } from 'electron'; -@@ -29 +30,2 @@ const supportsCopyWithSyntaxHighlighting = (supportsCopy && !browser.isEdgeOrIE) --const supportsPaste = (platform.isNative || (!browser.isChrome && document.queryCommandSupported('paste'))); -+// const supportsPaste = (platform.isNative || (!browser.isChrome && document.queryCommandSupported('paste'))); -+const supportsPaste = true; -@@ -71 +73 @@ class ExecCommandCutAction extends ExecCommandAction { -- kbOpts = null; -+ // kbOpts = null; -@@ -119 +121 @@ class ExecCommandCopyAction extends ExecCommandAction { -- kbOpts = null; -+ // kbOpts = null; -@@ -174 +176 @@ class ExecCommandPasteAction extends ExecCommandAction { -- kbOpts = null; -+ // kbOpts = null; -@@ -176,0 +179 @@ class ExecCommandPasteAction extends ExecCommandAction { -+ const { workbench } = require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench'); -@@ -181 +184 @@ class ExecCommandPasteAction extends ExecCommandAction { -- precondition: EditorContextKeys.writable, -+ precondition: (require('vs/platform/contextkey/common/contextkey') as typeof import('vs/platform/contextkey/common/contextkey')).ContextKeyExpr.and(EditorContextKeys.writable, workbench.clipboardContextKey), -@@ -191 +194,2 @@ class ExecCommandPasteAction extends ExecCommandAction { -- order: 3 -+ order: 3, -+ when: workbench.clipboardContextKey, -@@ -194,0 +199,26 @@ class ExecCommandPasteAction extends ExecCommandAction { -+ -+ public async run(accessor, editor: ICodeEditor): Promise { -+ if (editor instanceof (require('vs/editor/browser/widget/codeEditorWidget') as typeof import('vs/editor/browser/widget/codeEditorWidget')).CodeEditorWidget) { -+ try { -+ editor.focus(); -+ const textInput = document.activeElement! as HTMLTextAreaElement; -+ const dataTransfer = new DataTransfer(); -+ const value = await clipboard.readText(); -+ dataTransfer.setData("text/plain", value); -+ const pasteEvent = new ClipboardEvent("paste", { -+ clipboardData: dataTransfer, -+ }); -+ textInput.dispatchEvent(pasteEvent); -+ } catch (ex) { -+ try { -+ editor.trigger('', (require('vs/editor/common/editorCommon') as typeof import ('vs/editor/common/editorCommon')).Handler.Paste, { -+ text: await (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.clipboardText, -+ }); -+ } catch (ex) { -+ super.run(accessor, editor); -+ } -+ } -+ } else { -+ super.run(accessor, editor); -+ } -+ } -diff --git a/src/vs/editor/contrib/dnd/dnd.ts b/src/vs/editor/contrib/dnd/dnd.ts -index 44a5dd5..9083efb 100644 ---- a/src/vs/editor/contrib/dnd/dnd.ts -+++ b/src/vs/editor/contrib/dnd/dnd.ts -@@ -9 +9 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts b/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts -index 3b72a01..0d723f5 100644 ---- a/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts -+++ b/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts -@@ -86 +86 @@ function createOptions(multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey'): C -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -@@ -92 +92 @@ function createOptions(multiCursorModifier: 'altKey' | 'ctrlKey' | 'metaKey'): C -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/editor/contrib/links/links.ts b/src/vs/editor/contrib/links/links.ts -index b3c5f8d..db4a359 100644 ---- a/src/vs/editor/contrib/links/links.ts -+++ b/src/vs/editor/contrib/links/links.ts -@@ -13 +13 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -29 +29 @@ const HOVER_MESSAGE_GENERAL_META = new MarkdownString().appendText( -- platform.isMacintosh -+ browser.isMacintosh -@@ -35 +35 @@ const HOVER_MESSAGE_COMMAND_META = new MarkdownString().appendText( -- platform.isMacintosh -+ browser.isMacintosh -@@ -41 +41 @@ const HOVER_MESSAGE_GENERAL_ALT = new MarkdownString().appendText( -- platform.isMacintosh -+ browser.isMacintosh -@@ -47 +47 @@ const HOVER_MESSAGE_COMMAND_ALT = new MarkdownString().appendText( -- platform.isMacintosh -+ browser.isMacintosh -diff --git a/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts b/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts -index 4bde524..0b18c35 100644 ---- a/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts -+++ b/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts -@@ -257 +257 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { -- platform.isMacintosh -+ browser.isMacintosh -@@ -282 +282 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { -- platform.isMacintosh -+ browser.isMacintosh diff --git a/src/vs/loader.js b/src/vs/loader.js -index 4eddcab..2badfc3 100644 +index 4eddcab..fab87dc 100644 --- a/src/vs/loader.js +++ b/src/vs/loader.js @@ -671,4 +671,4 @@ var AMDLoader; @@ -381,31 +72,27 @@ index 4eddcab..2badfc3 100644 + vsSrc = vsSrcSplit.join(":/"); + } + if (vsSrc && vsSrc.startsWith("vs/")) { -+ scriptSrc = `node|./${vsSrc}`; ++ scriptSrc = `node|./${vsSrc}`; + } + } @@ -741 +753 @@ var AMDLoader; - moduleExports_1 = nodeRequire(pieces[1]); + moduleExports_1 = context(pieces[1]); -diff --git a/src/vs/platform/clipboard/electron-browser/clipboardService.ts b/src/vs/platform/clipboard/electron-browser/clipboardService.ts -index 9952574..908a9ae 100644 ---- a/src/vs/platform/clipboard/electron-browser/clipboardService.ts -+++ b/src/vs/platform/clipboard/electron-browser/clipboardService.ts -@@ -9 +9 @@ import { URI } from 'vs/base/common/uri'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/platform/environment/common/environment.ts b/src/vs/platform/environment/common/environment.ts -index eb1873c..dbbacd0 100644 +index 58cb747..e94b6ca 100644 --- a/src/vs/platform/environment/common/environment.ts +++ b/src/vs/platform/environment/common/environment.ts -@@ -120,0 +121,2 @@ export interface IEnvironmentService { +@@ -40,0 +41,2 @@ export interface ParsedArgs { ++ 'extra-extension-dirs'?: string[]; ++ 'extra-builtin-extension-dirs'?: string[]; +@@ -123,0 +126,2 @@ export interface IEnvironmentService { + extraExtensionPaths: string[]; + extraBuiltinExtensionPaths: string[]; diff --git a/src/vs/platform/environment/node/environmentService.ts b/src/vs/platform/environment/node/environmentService.ts -index 43866f8..e69b513 100644 +index 3c6d378..6482ca9 100644 --- a/src/vs/platform/environment/node/environmentService.ts +++ b/src/vs/platform/environment/node/environmentService.ts -@@ -172,0 +173,8 @@ export class EnvironmentService implements IEnvironmentService { +@@ -178,0 +179,8 @@ export class EnvironmentService implements IEnvironmentService { + @memoize + get extraExtensionPaths(): string[] { + return this._args['extra-extension-dirs'] || []; @@ -415,395 +102,73 @@ index 43866f8..e69b513 100644 + return this._args['extra-builtin-extension-dirs'] || []; + } diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts -index c897029..f84d9b6 100644 +index 7a94561..c10193f 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts -@@ -733,5 +733,9 @@ export class ExtensionManagementService extends Disposable implements IExtension +@@ -726 +726 @@ export class ExtensionManagementService extends Disposable implements IExtension - const systemExtensionsPromise = this.scanExtensions(this.systemExtensionsPath, ExtensionType.System) -- .then(result => { -- this.logService.info('Scanned system extensions:', result.length); -- return result; -- }); -+ const systemExtensionsPromise = Promise.all([ -+ this.scanExtensions(this.systemExtensionsPath, ExtensionType.System), -+ ...this.environmentService.extraBuiltinExtensionPaths -+ .map((path) => this.scanExtensions(path, ExtensionType.System)) -+ ]).then((results) => { -+ const result = results.reduce((flat, current) => flat.concat(current), []); -+ this.logService.info('Scanned system extensions:', result.length); -+ return result; -+ }); -@@ -761 +765 @@ export class ExtensionManagementService extends Disposable implements IExtension ++ const systemExtensionsPromise = this.scanAllExtensions(this.systemExtensionsPath, ExtensionType.System, this.environmentService.extraBuiltinExtensionPaths) +@@ -754 +754 @@ export class ExtensionManagementService extends Disposable implements IExtension - return Promise.all([this.getUninstalledExtensions(), this.scanExtensions(this.extensionsPath, ExtensionType.User)]) -+ return Promise.all([this.getUninstalledExtensions(), this.scanAllUserExtensions(this.extensionsPath, ExtensionType.User)]) -@@ -772,0 +777,7 @@ export class ExtensionManagementService extends Disposable implements IExtension -+ private scanAllUserExtensions(folderName: string, type: ExtensionType): Promise { ++ return Promise.all([this.getUninstalledExtensions(), this.scanAllExtensions(this.extensionsPath, ExtensionType.User, this.environmentService.extraExtensionPaths)]) +@@ -771,0 +772,6 @@ export class ExtensionManagementService extends Disposable implements IExtension ++ private scanAllExtensions(path: string, type: ExtensionType, extraPaths: string[]): Promise { + return Promise.all([ -+ this.scanExtensions(folderName, type), -+ ...this.environmentService.extraExtensionPaths.map((p) => this.scanExtensions(p, ExtensionType.User)) ++ this.scanExtensions(path, type), ++ ...extraPaths.map((p) => this.scanExtensions(p, type)) + ]).then((results) => results.reduce((flat, current) => flat.concat(current), [])); + } -+ -@@ -805 +816 @@ export class ExtensionManagementService extends Disposable implements IExtension +@@ -798 +804 @@ export class ExtensionManagementService extends Disposable implements IExtension - .then(uninstalled => this.scanExtensions(this.extensionsPath, ExtensionType.User) // All user extensions -+ .then(uninstalled => this.scanAllUserExtensions(this.extensionsPath, ExtensionType.User) // All user extensions -@@ -814 +825 @@ export class ExtensionManagementService extends Disposable implements IExtension ++ .then(uninstalled => this.scanAllExtensions(this.extensionsPath, ExtensionType.User, this.environmentService.extraExtensionPaths) // All user extensions +@@ -807 +813 @@ export class ExtensionManagementService extends Disposable implements IExtension - return this.scanExtensions(this.extensionsPath, ExtensionType.User) // All user extensions -+ return this.scanAllUserExtensions(this.extensionsPath, ExtensionType.User) // All user extensions -diff --git a/src/vs/platform/storage/node/storageMainService.ts b/src/vs/platform/storage/node/storageMainService.ts -index 9845da1..567c195 100644 ---- a/src/vs/platform/storage/node/storageMainService.ts -+++ b/src/vs/platform/storage/node/storageMainService.ts -@@ -169 +169,6 @@ export class StorageMainService extends Disposable implements IStorageMainServic -- return readdir(this.environmentService.extensionsPath).then(extensions => { -+ return Promise.all([ -+ this.environmentService.extensionsPath, -+ ...this.environmentService.extraExtensionPaths, -+ ].map((p) => readdir(p))) -+ .then((results) => results.reduce((flat, current) => flat.concat(current), [])) -+ .then(extensions => { -diff --git a/src/vs/platform/telemetry/electron-browser/telemetryService.ts b/src/vs/platform/telemetry/electron-browser/telemetryService.ts -index 31d0309..5b166af 100644 ---- a/src/vs/platform/telemetry/electron-browser/telemetryService.ts -+++ b/src/vs/platform/telemetry/electron-browser/telemetryService.ts -@@ -42 +42 @@ export class TelemetryService extends Disposable implements ITelemetryService { -- piiPaths: [environmentService.appRoot, environmentService.extensionsPath] -+ piiPaths: [environmentService.appRoot, environmentService.extensionsPath, ...environmentService.extraExtensionPaths] -diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts -index cbc55b3..9d27c01 100644 ---- a/src/vs/platform/windows/common/windows.ts -+++ b/src/vs/platform/windows/common/windows.ts -@@ -9 +9 @@ import { ITelemetryData } from 'vs/platform/telemetry/common/telemetry'; --import { IProcessEnvironment, isMacintosh, isLinux } from 'vs/base/common/platform'; -+import { IProcessEnvironment, isMacintosh, isLinux, isWeb } from 'vs/base/common/platform'; -@@ -262,0 +263 @@ export function getTitleBarStyle(configurationService: IConfigurationService, en -+ if (isWeb) { return 'custom'; } ++ return this.scanAllExtensions(this.extensionsPath, ExtensionType.User, this.environmentService.extraExtensionPaths) // All user extensions +diff --git a/src/vs/workbench/api/common/extHostTypeConverters.ts b/src/vs/workbench/api/common/extHostTypeConverters.ts +index 2a499df..1ed108d 100644 +--- a/src/vs/workbench/api/common/extHostTypeConverters.ts ++++ b/src/vs/workbench/api/common/extHostTypeConverters.ts +@@ -26 +26 @@ import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocum +-import { isString, isNumber } from 'vs/base/common/types'; ++const { isString, isNumber } = require('vs/base/common/types'); +@@ -31 +31 @@ import { LogLevel as _MainLogLevel } from 'vs/platform/log/common/log'; +-import { coalesce } from 'vs/base/common/arrays'; ++const { coalesce } = require('vs/base/common/arrays'); diff --git a/src/vs/workbench/api/node/extHostExtensionService.ts b/src/vs/workbench/api/node/extHostExtensionService.ts -index 25e74c8..0bed89e 100644 +index 3f8a56e..442e670 100644 --- a/src/vs/workbench/api/node/extHostExtensionService.ts +++ b/src/vs/workbench/api/node/extHostExtensionService.ts -@@ -769 +769 @@ function loadCommonJSModule(logService: ILogService, modulePath: string, acti +@@ -710 +710 @@ function loadCommonJSModule(logService: ILogService, modulePath: string, acti - r = require.__$__nodeRequire(modulePath); + r = (global as any).nativeNodeRequire(modulePath); -diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts -index 84406b8..cffd952 100644 ---- a/src/vs/workbench/api/node/extHostTypeConverters.ts -+++ b/src/vs/workbench/api/node/extHostTypeConverters.ts -@@ -26 +25,0 @@ import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/node/extHostDocumen --import { isString, isNumber } from 'vs/base/common/types'; -@@ -31 +29,0 @@ import { LogLevel as _MainLogLevel } from 'vs/platform/log/common/log'; --import { coalesce } from 'vs/base/common/arrays'; -@@ -117,0 +116,2 @@ export namespace Diagnostic { -+ const { isString, isNumber } = require('vs/base/common/types'); -+ const { coalesce } = require('vs/base/common/arrays'); -diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts -index 7b6ad89..3190356 100644 ---- a/src/vs/workbench/browser/dnd.ts -+++ b/src/vs/workbench/browser/dnd.ts -@@ -170 +170 @@ export class ResourcesDropHandler { -- return; -+ return (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.handleDrop(event, resolveTargetGroup, afterDrop, targetIndex); -diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts -index c25c940..f2004f8 100644 ---- a/src/vs/workbench/browser/layout.ts -+++ b/src/vs/workbench/browser/layout.ts -@@ -12 +12 @@ import { Registry } from 'vs/platform/registry/common/platform'; --import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; -+import { isWindows, isLinux, isMacintosh, isNative } from 'vs/base/common/platform'; -@@ -210 +210 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- if ((isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { -+ // if ((isWeb || isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { -@@ -212 +212 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- } -+ // } -@@ -219 +219 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- if (this.state.fullscreen && (this.state.menuBar.visibility === 'toggle' || this.state.menuBar.visibility === 'default')) { -+ if ((this.state.menuBar.visibility === 'toggle' || this.state.menuBar.visibility === 'default')) { -@@ -531 +531,5 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- if (getTitleBarStyle(this.configurationService, this.environmentService) === 'native') { -+ if (this.state.menuBar.visibility === 'hidden') { -+ return false; -+ } else if (this.state.menuBar.visibility === 'toggle') { -+ return this.state.menuBar.toggled; -+ } else if (getTitleBarStyle(this.configurationService, this.environmentService) === 'native') { -@@ -535 +539 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- } else if (isMacintosh) { -+ } else if (isNative && isMacintosh) { -@@ -539,2 +542,0 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- } else if (this.state.menuBar.visibility === 'toggle' || this.state.menuBar.visibility === 'default') { -- return this.state.menuBar.toggled; -@@ -567 +569 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi -- if (isMacintosh || this.state.menuBar.visibility === 'hidden') { -+ if ((isNative && isMacintosh) || this.state.menuBar.visibility === 'hidden') { -diff --git a/src/vs/workbench/browser/legacyLayout.ts b/src/vs/workbench/browser/legacyLayout.ts -index 53e73ac..0e24627 100644 ---- a/src/vs/workbench/browser/legacyLayout.ts -+++ b/src/vs/workbench/browser/legacyLayout.ts -@@ -13 +13 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh, isNative } from 'vs/base/common/platform'; -@@ -20 +20 @@ import { Part } from 'vs/workbench/browser/part'; --const TITLE_BAR_HEIGHT = isMacintosh ? 22 : 30; -+const TITLE_BAR_HEIGHT = isNative && isMacintosh ? 22 : 30; -@@ -413 +413 @@ export class WorkbenchLegacyLayout extends Disposable implements IVerticalSashLa -- this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / (isMacintosh || !menubarVisibility || menubarVisibility === 'hidden' ? getZoomFactor() : 1); // adjust for zoom prevention -+ this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / ((isNative && isMacintosh) || !menubarVisibility || menubarVisibility === 'hidden' ? getZoomFactor() : 1); // adjust for zoom prevention -diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts -index df1ac8e..b86ab6a 100644 ---- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts -+++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts -@@ -48 +48 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts -index acf2522..feebe63 100644 ---- a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts -+++ b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts -@@ -14 +14 @@ import { IEditorIdentifier, EditorInput, EditorOptions } from 'vs/workbench/comm --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/nodeless.main.ts b/src/vs/workbench/browser/nodeless.main.ts +index 74ff1e9..c0f0158 100644 +--- a/src/vs/workbench/browser/nodeless.main.ts ++++ b/src/vs/workbench/browser/nodeless.main.ts +@@ -30,0 +31 @@ class CodeRendererMain extends Disposable { ++ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = services.serviceCollection; diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts -index 50977a6..81e4fc0 100644 +index 57d2939..2533311 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupView.ts -@@ -1499 +1499 @@ registerThemingParticipant((theme, collector, environment) => { +@@ -1494 +1494 @@ registerThemingParticipant((theme, collector, environment) => { - const letterpress = `./media/letterpress${theme.type === 'dark' ? '-dark' : theme.type === 'hc' ? '-hc' : ''}.svg`; + const letterpress = theme.type === 'dark' ? require.toUrl('./media/letterpress-dark.svg') : theme.type === 'hc' ? require.toUrl('./media/letterpress-hc.svg') : require.toUrl('./media/letterpress.svg'); -@@ -1502 +1502 @@ registerThemingParticipant((theme, collector, environment) => { +@@ -1497 +1497 @@ registerThemingParticipant((theme, collector, environment) => { - background-image: url('${require.toUrl(letterpress)}') + background-image: url('${letterpress}') -diff --git a/src/vs/workbench/browser/parts/editor/resourceViewer.ts b/src/vs/workbench/browser/parts/editor/resourceViewer.ts -index 98a67c2..67d5248 100644 ---- a/src/vs/workbench/browser/parts/editor/resourceViewer.ts -+++ b/src/vs/workbench/browser/parts/editor/resourceViewer.ts -@@ -23 +23 @@ import { memoize } from 'vs/base/common/decorators'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -444 +444 @@ class InlineImageView { -- if (platform.isMacintosh ? altPressed : ctrlPressed) { -+ if (browser.isMacintosh ? altPressed : ctrlPressed) { -@@ -458 +458 @@ class InlineImageView { -- if (!(platform.isMacintosh ? altPressed : ctrlPressed)) { -+ if (!(browser.isMacintosh ? altPressed : ctrlPressed)) { -@@ -478 +478 @@ class InlineImageView { -- if (!(platform.isMacintosh ? altPressed : ctrlPressed)) { // zoom in -+ if (!(browser.isMacintosh ? altPressed : ctrlPressed)) { // zoom in -@@ -502 +502 @@ class InlineImageView { -- const isScrollWhellKeyPressed = platform.isMacintosh ? altPressed : ctrlPressed; -+ const isScrollWhellKeyPressed = browser.isMacintosh ? altPressed : ctrlPressed; -diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts -index 8b40624..43df4de 100644 ---- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts -+++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts -@@ -7 +7 @@ import 'vs/css!./media/tabstitlecontrol'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts -index 78c0846..f20462f 100644 ---- a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts -+++ b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts -@@ -24 +24 @@ import { range } from 'vs/base/common/arrays'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -265 +265 @@ export class QuickInputList { -- if (platform.isMacintosh ? e.metaKey : e.ctrlKey) { -+ if (browser.isMacintosh ? e.metaKey : e.ctrlKey) { -diff --git a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css -index a215bde..df7562b 100644 ---- a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css -+++ b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css -@@ -44,0 +45 @@ -+.web > .monaco-workbench .part.titlebar, -diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts -index a822341..43b882a 100644 ---- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts -+++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts -@@ -16 +16,2 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; --import { isMacintosh, isLinux } from 'vs/base/common/platform'; -+import { isNative } from 'vs/base/common/platform'; -+import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -@@ -117 +118 @@ export class MenubarControl extends Disposable { -- if (isMacintosh) { -+ if (isNative && isMacintosh) { -@@ -126 +127 @@ export class MenubarControl extends Disposable { -- if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { -+ if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { -@@ -138 +139 @@ export class MenubarControl extends Disposable { -- if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { -+ if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { -@@ -288 +289 @@ export class MenubarControl extends Disposable { -- if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { -+ if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -@@ -304 +305 @@ export class MenubarControl extends Disposable { -- if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { -+ if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -@@ -473 +474 @@ export class MenubarControl extends Disposable { -- if (!isMacintosh) { -+ if (!(isNative && isMacintosh)) { -@@ -699 +700 @@ export class MenubarControl extends Disposable { -- if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { -+ if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { -diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts -index 028f375..f740471 100644 ---- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts -+++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts -@@ -11 +11 @@ import { ITitleService, ITitleProperties } from 'vs/workbench/services/title/com --import { getZoomFactor } from 'vs/base/browser/browser'; -+import { getZoomFactor, isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; -@@ -25 +25 @@ import { TITLE_BAR_ACTIVE_BACKGROUND, TITLE_BAR_ACTIVE_FOREGROUND, TITLE_BAR_INA --import { isMacintosh, isWindows, isLinux } from 'vs/base/common/platform'; -+import { isNative } from 'vs/base/common/platform'; -@@ -327 +327 @@ export class TitlebarPart extends Part implements ITitleService { -- if (!isMacintosh) { -+ if (!(isNative && isMacintosh)) { -@@ -343 +343 @@ export class TitlebarPart extends Part implements ITitleService { -- if (!isMacintosh) { -+ // if (!(isNative && isMacintosh)) { -@@ -346 +346 @@ export class TitlebarPart extends Part implements ITitleService { -- } -+ // } -@@ -549 +549 @@ export class TitlebarPart extends Part implements ITitleService { -- if (!isMacintosh && -+ if (!(isNative && isMacintosh) && -@@ -567 +567 @@ export class TitlebarPart extends Part implements ITitleService { -- if (isMacintosh || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { -+ if ((isNative && isMacintosh) || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { -diff --git a/src/vs/workbench/browser/workbench.contribution.ts b/src/vs/workbench/browser/workbench.contribution.ts -index 696f351..47af9f7 100644 ---- a/src/vs/workbench/browser/workbench.contribution.ts -+++ b/src/vs/workbench/browser/workbench.contribution.ts -@@ -9 +9 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions, Configur --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/workbench.ts b/src/vs/workbench/browser/workbench.ts -index c69d1ab..a34dd7e 100644 +index 1f9fdde..078c1a1 100644 --- a/src/vs/workbench/browser/workbench.ts +++ b/src/vs/workbench/browser/workbench.ts -@@ -13 +13 @@ import { runWhenIdle, IdleValue } from 'vs/base/common/async'; --import { getZoomLevel } from 'vs/base/browser/browser'; -+import { getZoomLevel, isWindows, isLinux } from 'vs/base/browser/browser'; -@@ -17 +17 @@ import { Registry } from 'vs/platform/registry/common/platform'; --import { isWindows, isLinux } from 'vs/base/common/platform'; -+import { isWeb } from 'vs/base/common/platform'; @@ -83 +83 @@ export class Workbench extends Layout { -- // Inform user about loading issues from the loader -+ /*// Inform user about loading issues from the loader -@@ -90 +90 @@ export class Workbench extends Layout { +- (window).require.config({ ++ /*(window).require.config({ +@@ -89 +89 @@ export class Workbench extends Layout { - }); + });*/ -@@ -272 +272 @@ export class Workbench extends Layout { -- addClasses(document.body, platformClass); // used by our fonts -+ addClasses(document.body, platformClass, isWeb ? 'web' : 'native'); // used by our fonts -diff --git a/src/vs/workbench/common/contextkeys.ts b/src/vs/workbench/common/contextkeys.ts -index e5b4a41..e623101 100644 ---- a/src/vs/workbench/common/contextkeys.ts -+++ b/src/vs/workbench/common/contextkeys.ts -@@ -7 +7 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; --import { isMacintosh, isLinux, isWindows } from 'vs/base/common/platform'; -+import { isMacintosh, isLinux, isWindows } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts b/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts -index 787c9ef..bd50c14 100644 ---- a/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts -+++ b/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts -@@ -15 +15 @@ import { Disposable } from 'vs/base/common/lifecycle'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -197 +197 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { -- platform.isMacintosh -+ browser.isMacintosh -@@ -239 +239 @@ class AccessibilityHelpWidget extends Widget implements IOverlayWidget { -- platform.isMacintosh -+ browser.isMacintosh -diff --git a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts -index b949e00..8a9005c 100644 ---- a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts -+++ b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts -@@ -14 +14 @@ import { mixin } from 'vs/base/common/objects'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts -index 5e1b6da..f8643d2 100644 ---- a/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts -+++ b/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts -@@ -8 +8 @@ import { Action } from 'vs/base/common/actions'; --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -84 +84 @@ MenuRegistry.appendMenuItem(MenuId.MenubarSelectionMenu, { -- platform.isMacintosh -+ browser.isMacintosh -diff --git a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts -index de8fe1e..e8749fa 100644 ---- a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts -+++ b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts -@@ -9,0 +10 @@ import * as env from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -181 +182 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- if (e.event.rightButton || (env.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { -+ if (e.event.rightButton || (browser.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { -@@ -200 +201 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- if (!env.isLinux && breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { -+ if (!(env.isNative && env.isLinux) && breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { -@@ -435 +436 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- const stopKey = env.isMacintosh ? 'metaKey' : 'ctrlKey'; -+ const stopKey = browser.isMacintosh ? 'metaKey' : 'ctrlKey'; -@@ -453 +454 @@ export class DebugEditorContribution implements IDebugEditorContribution { -- const stopKey = env.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; -+ const stopKey = browser.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; -diff --git a/src/vs/workbench/contrib/debug/browser/linkDetector.ts b/src/vs/workbench/contrib/debug/browser/linkDetector.ts -index 1b6f41c..0c9bf68 100644 ---- a/src/vs/workbench/contrib/debug/browser/linkDetector.ts -+++ b/src/vs/workbench/contrib/debug/browser/linkDetector.ts -@@ -9 +9 @@ import { URI as uri } from 'vs/base/common/uri'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts -index 5ed1eda..60d3815 100644 ---- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts -+++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts -@@ -38 +38 @@ import { IViewsRegistry, Extensions as ViewExtensions } from 'vs/workbench/commo --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts -index 7c58491..63ac200 100644 ---- a/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts -+++ b/src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts -@@ -118 +118 @@ class Extension implements IExtension { -- return `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`; -+ return undefined; // `${product.extensionsGallery.itemUrl}?itemName=${this.publisher}.${this.name}`; -diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts -index a9f017e..75fe519 100644 ---- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts -+++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts -@@ -17 +17 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co --import { isWindows, isMacintosh } from 'vs/base/common/platform'; -+import { isWindows, isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts -index 59922c1..62d4d5b 100644 ---- a/src/vs/workbench/contrib/files/browser/fileCommands.ts -+++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts -@@ -28 +28 @@ import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes'; --import { isWindows, isMacintosh } from 'vs/base/common/platform'; -+import { isWindows, isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/files/browser/views/emptyView.ts b/src/vs/workbench/contrib/files/browser/views/emptyView.ts -index 89e2def..9005795 100644 ---- a/src/vs/workbench/contrib/files/browser/views/emptyView.ts -+++ b/src/vs/workbench/contrib/files/browser/views/emptyView.ts -@@ -7,0 +8 @@ import * as errors from 'vs/base/common/errors'; -+import * as browser from 'vs/base/browser/browser'; -@@ -76 +77 @@ export class EmptyView extends ViewletPanel { -- const actionClass = this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE ? AddRootFolderAction : env.isMacintosh ? OpenFileFolderAction : OpenFolderAction; -+ const actionClass = this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE ? AddRootFolderAction : browser.isMacintosh ? OpenFileFolderAction : OpenFolderAction; -diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts -index b3c2d15..067215e 100644 ---- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts -+++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts -@@ -38 +38 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn --import { isMacintosh, isLinux } from 'vs/base/common/platform'; -+import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -@@ -606,0 +607 @@ export class FileDragAndDrop implements ITreeDragAndDrop { -+ return (require('vs/../../../../packages/vscode/src/workbench') as typeof import('vs/../../../../packages/vscode/src/workbench')).workbench.handleExternalDrop(target, originalEvent); diff --git a/src/vs/workbench/contrib/files/common/explorerModel.ts b/src/vs/workbench/contrib/files/common/explorerModel.ts -index a5cd043..0569a5f 100644 +index 99d4790..9c37b76 100644 --- a/src/vs/workbench/contrib/files/common/explorerModel.ts +++ b/src/vs/workbench/contrib/files/common/explorerModel.ts @@ -77,0 +78 @@ export class ExplorerItem { @@ -815,277 +180,37 @@ index a5cd043..0569a5f 100644 @@ -277,0 +280 @@ export class ExplorerItem { + this.forgotChildren = true; diff --git a/src/vs/workbench/contrib/files/common/explorerService.ts b/src/vs/workbench/contrib/files/common/explorerService.ts -index 46d87e4..fd3f927 100644 +index 6bec4db..0f43623 100644 --- a/src/vs/workbench/contrib/files/common/explorerService.ts +++ b/src/vs/workbench/contrib/files/common/explorerService.ts -@@ -333 +333 @@ export class ExplorerService implements IExplorerService { +@@ -341 +341 @@ export class ExplorerService implements IExplorerService { - if (shouldRefresh()) { + if (true || shouldRefresh()) { diff --git a/src/vs/workbench/contrib/logs/common/logs.contribution.ts b/src/vs/workbench/contrib/logs/common/logs.contribution.ts -index 25df212..6c40c9d 100644 +index 3ce77b2..33c6606 100644 --- a/src/vs/workbench/contrib/logs/common/logs.contribution.ts +++ b/src/vs/workbench/contrib/logs/common/logs.contribution.ts -@@ -31 +31,2 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { +@@ -29 +29,2 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { - outputChannelRegistry.registerChannel({ id: Constants.mainLogChannelId, label: nls.localize('mainLog', "Main"), file: URI.file(join(environmentService.logsPath, `main.log`)), log: true }); + // This channel only seems to be used when loading the app and we skip all of that, so it is never actually created or written to. + // outputChannelRegistry.registerChannel({ id: Constants.mainLogChannelId, label: nls.localize('mainLog', "Main"), file: URI.file(join(environmentService.logsPath, `main.log`)), log: true }); diff --git a/src/vs/workbench/contrib/output/common/outputLinkProvider.ts b/src/vs/workbench/contrib/output/common/outputLinkProvider.ts -index efa955e..e72f41d 100644 +index ad9d566..9c894d8 100644 --- a/src/vs/workbench/contrib/output/common/outputLinkProvider.ts +++ b/src/vs/workbench/contrib/output/common/outputLinkProvider.ts -@@ -77,0 +78 @@ export class OutputLinkProvider { +@@ -78,0 +79 @@ export class OutputLinkProvider { + return Promise.resolve([]); -diff --git a/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts b/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts -index 92f9b7c..b8300c6 100644 ---- a/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts -+++ b/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts -@@ -6 +6 @@ --import * as env from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -94 +94 @@ Registry.as(QuickOpenExtensions.Quickopen).registerQuickOpen -- description: env.isMacintosh ? nls.localize('gotoLineDescriptionMac', "Go to Line") : nls.localize('gotoLineDescriptionWin', "Go to Line") -+ description: browser.isMacintosh ? nls.localize('gotoLineDescriptionMac', "Go to Line") : nls.localize('gotoLineDescriptionWin', "Go to Line") -diff --git a/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts -index e3c9552..a64fda2 100644 ---- a/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts -+++ b/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts -@@ -18 +18,2 @@ import { isEqual } from 'vs/base/common/resources'; --import { isLinux, isMacintosh } from 'vs/base/common/platform'; -+import { isNative, isLinux } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -@@ -69 +70 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo -- if (isMacintosh && config.window && typeof config.window.nativeTabs === 'boolean' && config.window.nativeTabs !== this.nativeTabs) { -+ if (isNative && isMacintosh && config.window && typeof config.window.nativeTabs === 'boolean' && config.window.nativeTabs !== this.nativeTabs) { -@@ -75 +76 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo -- if (isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { -+ if (isNative && isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { -diff --git a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts -index b8db2f2..be84602 100644 ---- a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts -+++ b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts -@@ -46 +46 @@ import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/la --import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -769 +769 @@ export class RepositoryPanel extends ViewletPanel { -- const label = binding ? binding.getLabel() : (platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); -+ const label = binding ? binding.getLabel() : (browser.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); -diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts -index 1f8088e..f5b0551 100644 ---- a/src/vs/workbench/contrib/search/browser/search.contribution.ts -+++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts -@@ -686 +686 @@ configurationRegistry.registerConfiguration({ -- included: platform.isMacintosh -+ included: platform.isNative && platform.isMacintosh -diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts -index 24ba122..3ab8804 100644 ---- a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts -+++ b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts -@@ -12,0 +13 @@ import * as nls from 'vs/nls'; -+import * as browser from 'vs/base/browser/browser'; -@@ -185 +186 @@ configurationRegistry.registerConfiguration({ -- default: 'auto', -+ default: browser.isSafari ? 'dom' : 'auto', -@@ -196 +197 @@ configurationRegistry.registerConfiguration({ -- default: platform.isMacintosh ? 'selectWord' : platform.isWindows ? 'copyPaste' : 'default', -+ default: browser.isMacintosh ? 'selectWord' : browser.isWindows ? 'copyPaste' : 'default', -diff --git a/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts b/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts -index 933e4ea..b661a7e 100644 ---- a/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts -+++ b/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts -@@ -7,0 +8 @@ import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -234 +235 @@ export class TerminalLinkHandler { -- return platform.isMacintosh ? event.metaKey : event.ctrlKey; -+ return browser.isMacintosh ? event.metaKey : event.ctrlKey; -@@ -242 +243 @@ export class TerminalLinkHandler { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts b/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts -index 780147c..2e8c9af 100644 ---- a/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts -+++ b/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts -@@ -8,0 +9 @@ import * as platform from 'vs/base/common/platform'; -+import * as browser from 'vs/base/browser/browser'; -@@ -211 +212 @@ export class TerminalPanel extends Panel { -- if (event.which === 2 && platform.isLinux) { -+ if (event.which === 2 && browser.isLinux) { -@@ -234 +235 @@ export class TerminalPanel extends Panel { -- if (platform.isMacintosh) { -+ if (browser.isMacintosh) { -diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js b/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js -index 74fc798..0b6b5eb 100644 ---- a/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js -+++ b/src/vs/workbench/contrib/webview/electron-browser/webview-pre.js -@@ -10 +10,19 @@ -- const ipcRenderer = require('electron').ipcRenderer; -+ const ipcRenderer = { -+ on: (channel, callback) => { -+ window.addEventListener("message", (event) => { -+ if (event.data.channel === channel) { -+ callback(event.data.channel, ...event.data.data); -+ } -+ }); -+ }, -+ sendToHost: (channel, ...args) => { -+ window.parent.postMessage({ -+ channel, -+ data: args, -+ id: document.body.id, -+ }, "*"); -+ }, -+ }; -+ const process = { -+ pid: undefined, -+ }; -@@ -22,7 +40,7 @@ -- require('electron').webFrame.registerURLSchemeAsPrivileged('vscode-resource', { -- secure: true, -- bypassCSP: false, -- allowServiceWorkers: false, -- supportFetchAPI: true, -- corsEnabled: true -- }); -+ // require('electron').webFrame.registerURLSchemeAsPrivileged('vscode-resource', { -+ // secure: true, -+ // bypassCSP: false, -+ // allowServiceWorkers: false, -+ // supportFetchAPI: true, -+ // corsEnabled: true -+ // }); -@@ -328 +346,3 @@ +diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js +index 133b3d2..f69091a 100644 +--- a/src/vs/workbench/contrib/webview/browser/pre/main.js ++++ b/src/vs/workbench/contrib/webview/browser/pre/main.js +@@ -375 +375,3 @@ module.exports = function createWebviewManager(host) { - newFrame.contentWindow.focus(); + if (document.hasFocus()) { + newFrame.contentWindow.focus(); + } -diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts -index 484ff86..f3f57cb 100644 ---- a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts -+++ b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts -@@ -23 +23 @@ import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkey --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts -index 3e56ee1..3880c57 100644 ---- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts -+++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts -@@ -11 +11 @@ import { Disposable } from 'vs/base/common/lifecycle'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isMacintosh } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts -index 147f05b..6bc9061 100644 ---- a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts -+++ b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts -@@ -30,0 +31 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW -+ /* -@@ -38 +39,11 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW -- }) : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value)); -+ */ -+ // This works because the only walkthrough that is a module is the welcome page. -+ // We have to explicitly import it or Webpack won't pick it up. -+ import("vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page").then((content) => { -+ resolve(content.default()); -+ }).catch((err) => { -+ reject(err); -+ }); -+ }) : (resource.scheme !== "file" -+ ? fetch(resource.path).then((res) => res.text()) -+ : this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => content.value))); -@@ -64 +75 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -- return this.textFileService.resolveTextContent(URI.file(resource.fsPath)).then(content => { -+ return fetch(resource.path).then((res) => res.text()).then((content) => { -@@ -80,0 +92 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -+ /* -@@ -85 +97,2 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -- marked(markdown, { renderer }); -+ */ -+ marked(content, { renderer }); -@@ -91 +104 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -- this.modelService.updateModel(codeEditorModel, content.value); -+ this.modelService.updateModel(codeEditorModel, content); -diff --git a/src/vs/workbench/electron-browser/actions/helpActions.ts b/src/vs/workbench/electron-browser/actions/helpActions.ts -index 79e2ba2..8c1b21b 100644 ---- a/src/vs/workbench/electron-browser/actions/helpActions.ts -+++ b/src/vs/workbench/electron-browser/actions/helpActions.ts -@@ -9 +9,2 @@ import product from 'vs/platform/product/node/product'; --import { isMacintosh, isLinux, language } from 'vs/base/common/platform'; -+import { language } from 'vs/base/common/platform'; -+import { isMacintosh, isLinux } from 'vs/base/browser/browser'; -diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts -index 48ef482..dc47f81 100644 ---- a/src/vs/workbench/electron-browser/actions/windowActions.ts -+++ b/src/vs/workbench/electron-browser/actions/windowActions.ts -@@ -388 +388 @@ export abstract class BaseOpenRecentAction extends Action { -- placeHolder: isMacintosh ? nls.localize('openRecentPlaceHolderMac', "Select to open (hold Cmd-key to open in new window)") : nls.localize('openRecentPlaceHolder', "Select to open (hold Ctrl-key to open in new window)"), -+ placeHolder: browser.isMacintosh ? nls.localize('openRecentPlaceHolderMac', "Select to open (hold Cmd-key to open in new window)") : nls.localize('openRecentPlaceHolder', "Select to open (hold Ctrl-key to open in new window)"), -diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts -index 71bc992..a76dad4 100644 ---- a/src/vs/workbench/electron-browser/main.contribution.ts -+++ b/src/vs/workbench/electron-browser/main.contribution.ts -@@ -13 +13,2 @@ import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; --import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; -+import { isNative, isWeb } from 'vs/base/common/platform'; -+import { isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; -@@ -37 +38 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- if (isMacintosh) { -+ if (isNative && isMacintosh) { -@@ -225 +226 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- if (isMacintosh) { -+ if (isNative && isMacintosh) { -@@ -306 +307 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- when: IsMacContext.toNegated() -+ // when: IsMacContext.toNegated() -@@ -538 +539 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- isMacintosh ? -+ isNative && isMacintosh ? -@@ -545 +546 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- isMacintosh ? -+ isNative && isMacintosh ? -@@ -626 +627 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- 'included': isWindows || isLinux -+ 'included': isWeb || isWindows || isLinux -@@ -633 +634 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- 'included': isWindows || isLinux -+ 'included': isWeb || isWindows || isLinux -@@ -649,2 +650,2 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- 'enum': ['native', 'custom'], -- 'default': isLinux ? 'native' : 'custom', -+ 'enum': ['custom'], -+ 'default': isNative && isLinux ? 'native' : 'custom', -@@ -659 +660 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- 'included': isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) -+ 'included': isNative && isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) -@@ -665 +666 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; -- 'included': isMacintosh -+ 'included': isNative && isMacintosh -diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts -index b94daa8..5963023 100644 ---- a/src/vs/workbench/electron-browser/main.ts -+++ b/src/vs/workbench/electron-browser/main.ts -@@ -140,0 +141,2 @@ class CodeRendererMain extends Disposable { -+ -+ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = services.serviceCollection; -diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts -index 111982b..73d83a4 100644 ---- a/src/vs/workbench/electron-browser/window.ts -+++ b/src/vs/workbench/electron-browser/window.ts -@@ -53 +53 @@ const TextInputActions: IAction[] = [ -- new Action('editor.action.clipboardPasteAction', nls.localize('paste', "Paste"), undefined, true, () => Promise.resolve(document.execCommand('paste'))), -+ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.pasteAction, -@@ -361 +361 @@ export class ElectronWindow extends Disposable { -- !isMacintosh || // macOS only -+ !browser.isMacintosh || // macOS only -diff --git a/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts b/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts -index 75f0026..2e94683 100644 ---- a/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts -+++ b/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts -@@ -22 +22 @@ import { getTitleBarStyle } from 'vs/platform/windows/common/windows'; --import { isMacintosh } from 'vs/base/common/platform'; -+import { isNative, isMacintosh } from 'vs/base/common/platform'; -@@ -49 +49 @@ export class ContextMenuService extends Disposable implements IContextMenuServic -- if (!isMacintosh && getTitleBarStyle(configurationService, environmentService) === 'custom') { -+ if (!(isNative && isMacintosh) && getTitleBarStyle(configurationService, environmentService) === 'custom') { diff --git a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts -index 059f821..b19f292 100644 +index 40a8c83..579c7e7 100644 --- a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts +++ b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts @@ -32,0 +33 @@ function getSystemExtensionsRoot(): string { @@ -1103,14 +228,14 @@ index 059f821..b19f292 100644 - new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionsPath, false, false, translations), + new ExtensionScannerInput(version, commit, locale, devMode, environmentService.extensionsPath, false, false, translations, environmentService.extraExtensionPaths), diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts -index 9133b7e..8c801b7 100644 +index 1707b52..0906abc 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts -@@ -461 +461 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { +@@ -439 +439 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { - if (errorMessage === this._lastExtensionHostError) { + if (errorMessage === this._lastExtensionHostError || errorMessage === "disconnected") { diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts -index b337206..0477464 100644 +index 6692f75..0168837 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -96,0 +97 @@ export class ExtensionService extends Disposable implements IExtensionService { @@ -1119,15 +244,15 @@ index b337206..0477464 100644 + extHostProcessWorker.start()!.then(() => this.retry.recover()); @@ -449,0 +452 @@ export class ExtensionService extends Disposable implements IExtensionService { + return this.retry.run(); -diff --git a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -index 838a9c7..2308cee 100644 ---- a/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -+++ b/src/vs/workbench/services/extensions/node/extensionHostProcess.ts -@@ -192 +192 @@ function connectToRenderer(protocol: IMessagePassingProtocol): Promise { + if (a.length !== b.length || atimes.length !== btimes.length) { @@ -1153,123 +278,83 @@ index 6e2179d..e6f38c9 100644 + } + return true; + }; -@@ -479,0 +498 @@ export class ExtensionScannerInput { ++ +@@ -479,0 +499 @@ export class ExtensionScannerInput { + && eq(a.extraFolderPaths, b.extraFolderPaths, a.extraMtimes, b.extraMtimes) -@@ -530 +549 @@ export class ExtensionScanner { -- * Scan a list of extensions defined in `absoluteFolderPath` -+ * Scan a list of extensions defined in `absoluteFolderPath` and `extraFolderPaths` -@@ -532 +551 @@ export class ExtensionScanner { +@@ -532 +552 @@ export class ExtensionScanner { - public static async scanExtensions(input: ExtensionScannerInput, log: ILog, resolver: IExtensionResolver | null = null): Promise { + public static async scanExtensions(input: ExtensionScannerInput, log: ILog, resolvers: IExtensionResolver | IExtensionResolver[] | null = null): Promise { -@@ -533,0 +553 @@ export class ExtensionScanner { +@@ -535,0 +556 @@ export class ExtensionScanner { + const extraFolderPaths = input.extraFolderPaths; -@@ -537,2 +557,4 @@ export class ExtensionScanner { +@@ -537,2 +558,4 @@ export class ExtensionScanner { - if (!resolver) { - resolver = new DefaultExtensionResolver(absoluteFolderPath); + if (!resolvers) { + resolvers = [absoluteFolderPath, ...extraFolderPaths].map((p) => new DefaultExtensionResolver(p)); + } else if (!Array.isArray(resolvers)) { + resolvers = [resolvers]; -@@ -552 +574,2 @@ export class ExtensionScanner { +@@ -552 +575,2 @@ export class ExtensionScanner { - let refs = await resolver.resolveExtensions(); + let refs = await Promise.all(resolvers.map((resolver) => resolver.resolveExtensions())) + .then((results) => results.reduce((flat, current) => flat.concat(current), [])); diff --git a/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts b/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts -index 33d3697..af71b01 100644 +index 8924e12..7beecb4 100644 --- a/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/nsfw/watcherService.ts -@@ -26,0 +27 @@ export class FileWatcher { +@@ -21,0 +22 @@ export class FileWatcher extends Disposable { + private readonly retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry.register('Watcher', () => this.startWatching()); -@@ -56,0 +58,2 @@ export class FileWatcher { -+ this.toDispose = dispose(this.toDispose); +@@ -53,0 +55 @@ export class FileWatcher extends Disposable { + return this.retry.run(); -@@ -113 +116 @@ export class FileWatcher { -- })); -+ })).then(() => this.retry.recover()); +@@ -84 +86 @@ export class FileWatcher extends Disposable { +- this.service.setRoots(folders); ++ this.service.setRoots(folders).then(() => this.retry.recover()); diff --git a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts -index 8059d2c..b5a3d68 100644 +index 04ce480..6abda1c 100644 --- a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts -@@ -26,0 +27 @@ export class FileWatcher { +@@ -21,0 +22 @@ export class FileWatcher extends Disposable { + private readonly retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry.register('Watcher', () => this.startWatching()); -@@ -59,0 +61,2 @@ export class FileWatcher { -+ this.toDispose = dispose(this.toDispose); +@@ -53,0 +55 @@ export class FileWatcher extends Disposable { + return this.retry.run(); -@@ -116 +119 @@ export class FileWatcher { -- })); -+ })).then(() => this.retry.recover()); +@@ -84 +86 @@ export class FileWatcher extends Disposable { +- this.service.setRoots(folders); ++ this.service.setRoots(folders).then(() => this.retry.recover()); diff --git a/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts b/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts -index 74dad64..7bc591a 100644 +index 95d8797..0f5d4cf 100644 --- a/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/win32/csharpWatcherService.ts -@@ -25,0 +26 @@ export class OutOfProcessWin32FolderWatcher { +@@ -23,0 +24 @@ export class OutOfProcessWin32FolderWatcher { + private readonly retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry.register('Watcher', () => this.startWatcher()); -@@ -52,0 +54 @@ export class OutOfProcessWin32FolderWatcher { +@@ -56,0 +58 @@ export class OutOfProcessWin32FolderWatcher { + this.handle.stdout.once('data', () => this.retry.recover()); -@@ -110,0 +113 @@ export class OutOfProcessWin32FolderWatcher { +@@ -113,0 +116 @@ export class OutOfProcessWin32FolderWatcher { + return this.retry.run(); -diff --git a/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts b/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts -index 18edf56..8e5b395 100644 ---- a/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts -+++ b/src/vs/workbench/services/files2/node/diskFileSystemProvider.ts -@@ -79,2 +79,2 @@ export class DiskFileSystemProvider extends Disposable implements IFileSystemPro -- for (let i = 0; i < children.length; i++) { -- const child = children[i]; -+ await Promise.all(children.map(async (child) => { // for (let i = 0; i < children.length; i++) { -+ // const child = children[i]; -@@ -88 +88 @@ export class DiskFileSystemProvider extends Disposable implements IFileSystemPro -- } -+ })); // } -diff --git a/src/vs/workbench/services/heap/node/heap.ts b/src/vs/workbench/services/heap/node/heap.ts -index 8f627ba..9a795eb 100644 ---- a/src/vs/workbench/services/heap/node/heap.ts -+++ b/src/vs/workbench/services/heap/node/heap.ts -@@ -33,0 +34 @@ export class HeapService implements IHeapService { -+ if (typeof process === 'undefined' || typeof process.stdout === 'undefined') { return; } // Doesn't work in the browser (for running the extension host in worker). -diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts -index 0c3d16f..e27e98c 100644 ---- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts -+++ b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts -@@ -16 +16 @@ import { KeybindingParser } from 'vs/base/common/keybindingParser'; --import { OS, OperatingSystem } from 'vs/base/common/platform'; -+import { OS, OperatingSystem, isNative } from 'vs/base/common/platform'; -@@ -131 +131 @@ export class KeyboardMapperFactory { -- if (OS === OperatingSystem.Windows) { -+ if (isNative && OS === OperatingSystem.Windows) { diff --git a/src/vs/workbench/services/search/node/searchService.ts b/src/vs/workbench/services/search/node/searchService.ts -index fcef06a..80f6800 100644 +index fcef06a..db26457 100644 --- a/src/vs/workbench/services/search/node/searchService.ts +++ b/src/vs/workbench/services/search/node/searchService.ts -@@ -11 +11 @@ import { Event } from 'vs/base/common/event'; --import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; -+import { Disposable, IDisposable, toDisposable, dispose } from 'vs/base/common/lifecycle'; -@@ -422,0 +423 @@ export class DiskSearch implements ISearchResultProvider { -+ private toDispose: IDisposable[] = []; -@@ -458,6 +459,15 @@ export class DiskSearch implements ISearchResultProvider { +@@ -458,6 +458,11 @@ export class DiskSearch implements ISearchResultProvider { - const client = new Client( - getPathFromAmdModule(require, 'bootstrap-fork'), - opts); - - const channel = getNextTickChannel(client.getChannel('search')); - this.raw = new SearchChannelClient(channel); -+ const connect = (): Promise => { ++ const connect = (): Promise => { + const client = new Client( + getPathFromAmdModule(require, 'bootstrap-fork'), + opts); -+ client.onDidProcessExit(() => { -+ this.toDispose = dispose(this.toDispose); -+ retry.run(); -+ }, null, this.toDispose); -+ this.toDispose.push(client); ++ client.onDidProcessExit(() => retry.run()); + const channel = getNextTickChannel(client.getChannel('search')); + this.raw = new SearchChannelClient(channel); + return this.raw.clearCache('test-connectivity'); + }; + const retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry.register('Searcher', connect); + retry.run(); -diff --git a/src/vs/workbench/services/timer/electron-browser/timerService.ts b/src/vs/workbench/services/timer/electron-browser/timerService.ts -index 6e6fbcc..645bd72 100644 ---- a/src/vs/workbench/services/timer/electron-browser/timerService.ts -+++ b/src/vs/workbench/services/timer/electron-browser/timerService.ts -@@ -426,0 +427 @@ export function didUseCachedData(): boolean { -+ return false; +diff --git a/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts b/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts +index d905178..b32043f 100644 +--- a/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts ++++ b/src/vs/workbench/services/telemetry/electron-browser/telemetryService.ts +@@ -41 +41 @@ export class TelemetryService extends Disposable implements ITelemetryService { +- piiPaths: [environmentService.appRoot, environmentService.extensionsPath] ++ piiPaths: [environmentService.appRoot, environmentService.extensionsPath, ...environmentService.extraExtensionPaths] From 816b3207a8156f23ce9904fab15f2723484a101b Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 5 Jun 2019 13:59:26 -0500 Subject: [PATCH 3/5] Move back to electron-browser code instead of nodeless --- packages/vscode/src/workbench.ts | 50 +-- packages/web/webpack.config.js | 3 - scripts/vscode.patch | 717 ++++++++++++++++++++++++++++++- 3 files changed, 725 insertions(+), 45 deletions(-) diff --git a/packages/vscode/src/workbench.ts b/packages/vscode/src/workbench.ts index 9e0dc9e459ca..8cdd44be09e2 100644 --- a/packages/vscode/src/workbench.ts +++ b/packages/vscode/src/workbench.ts @@ -16,7 +16,7 @@ import "./fill/windowsService"; import "./fill/workbenchRegistry"; import "./fill/workspacesService"; import * as paths from "./fill/paths"; -// import { PasteAction } from "./fill/paste"; +import { PasteAction } from "./fill/paste"; import { ExplorerItem, ExplorerModel } from "vs/workbench/contrib/files/common/explorerModel"; import { IEditorGroup } from "vs/workbench/services/editor/common/editorGroupsService"; @@ -26,7 +26,7 @@ import { IProgressService2, ProgressLocation } from "vs/platform/progress/common import { ISingleFolderWorkspaceIdentifier, IWorkspaceIdentifier } from "vs/platform/workspaces/common/workspaces"; import { IWindowsService, IWindowConfiguration } from "vs/platform/windows/common/windows"; import { LogLevel } from "vs/platform/log/common/log"; -// import { RawContextKey, IContextKeyService } from "vs/platform/contextkey/common/contextkey"; +import { RawContextKey, IContextKeyService } from "vs/platform/contextkey/common/contextkey"; import { ServiceCollection } from "vs/platform/instantiation/common/serviceCollection"; import { URI } from "vs/base/common/uri"; @@ -39,7 +39,7 @@ export class Workbench { private readonly windowId = parseInt(new Date().toISOString().replace(/[-:.TZ]/g, ""), 10); private _serviceCollection: ServiceCollection | undefined; - // private _clipboardContextKey: RawContextKey | undefined; + private _clipboardContextKey: RawContextKey | undefined; /** * Handle a drop event on the file explorer. @@ -54,7 +54,7 @@ export class Workbench { /** * Handle a drop event on the editor. */ - public handleDrop(event: DragEvent, resolveTargetGroup: () => IEditorGroup, afterDrop: (targetGroup: IEditorGroup) => void, targetIndex?: number): void { + public handleDrop(event: DragEvent, resolveTargetGroup: () => IEditorGroup | undefined, afterDrop: (targetGroup: IEditorGroup) => void, targetIndex?: number): void { client.upload.uploadDropped(event, URI.file(paths.getWorkingDirectory())).then(async (paths) => { const uris = paths.map((p) => URI.file(p)); if (uris.length) { @@ -80,24 +80,24 @@ export class Workbench { /** * Use to toggle the paste option inside editors based on the native clipboard. */ - // public get clipboardContextKey(): RawContextKey { - // if (!this._clipboardContextKey) { - // throw new Error("Trying to access clipboard context key before it has been set"); - // } + public get clipboardContextKey(): RawContextKey { + if (!this._clipboardContextKey) { + throw new Error("Trying to access clipboard context key before it has been set"); + } - // return this._clipboardContextKey; - // } + return this._clipboardContextKey; + } - // public get clipboardText(): Promise { - // return client.clipboard.readText(); - // } + public get clipboardText(): Promise { + return client.clipboard.readText(); + } /** * Create a paste action for use in text inputs. */ - // public get pasteAction(): PasteAction { - // return new PasteAction(); - // } + public get pasteAction(): PasteAction { + return new PasteAction(); + } public set workspace(ws: IWorkspaceIdentifier | ISingleFolderWorkspaceIdentifier | undefined) { if (typeof ws === "undefined") { @@ -129,12 +129,12 @@ export class Workbench { public set serviceCollection(collection: ServiceCollection) { this._serviceCollection = collection; - // const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; - // const bounded = this.clipboardContextKey.bindTo(contextKeys); - // client.clipboard.onPermissionChange((enabled) => { - // bounded.set(enabled); - // }); - // client.clipboard.initialize(); + const contextKeys = this.serviceCollection.get(IContextKeyService) as IContextKeyService; + const bounded = this.clipboardContextKey.bindTo(contextKeys); + client.clipboard.onPermissionChange((enabled) => { + bounded.set(enabled); + }); + client.clipboard.initialize(); client.progressService = { start: (title: string, task: (progress: IProgress) => Promise, onCancel: () => void): Promise => { @@ -189,13 +189,13 @@ export class Workbench { * Start VS Code. */ public async initialize(): Promise { - // this._clipboardContextKey = new RawContextKey("nativeClipboard", client.clipboard.isEnabled); + this._clipboardContextKey = new RawContextKey("nativeClipboard", client.clipboard.isEnabled); const workspace = this.workspace || URI.file(paths.getWorkingDirectory()); // If we try to import this above, workbench will be undefined due to // circular imports. - require("vs/workbench/workbench.nodeless.main"); - const { main } = require("vs/workbench/browser/nodeless.main"); + require("vs/workbench/workbench.main"); + const { main } = require("vs/workbench/electron-browser/main"); const config: IWindowConfiguration = { machineId: "1", windowId: this.windowId, diff --git a/packages/web/webpack.config.js b/packages/web/webpack.config.js index 7d312035a87d..2e7ee117ccdd 100644 --- a/packages/web/webpack.config.js +++ b/packages/web/webpack.config.js @@ -64,9 +64,6 @@ module.exports = merge( "native-watchdog": path.join(vsFills, "native-watchdog.ts"), "iconv-lite": path.join(vsFills, "iconv-lite.ts"), - // This seems to be in the wrong place? - "vs/workbench/contrib/codeEditor/electron-browser/media/WordWrap_16x.svg": "vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/WordWrap_16x.svg", - "vs/platform/windows/electron-browser/windowsService": path.join(vsFills, "windowsService.ts"), "vs/base/node/paths": path.join(vsFills, "paths.ts"), "vs/base/common/amd": path.join(vsFills, "amd.ts"), diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 2941fcc7fd42..4537aaa46ef9 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -1,3 +1,75 @@ +diff --git a/src/vs/base/browser/browser.ts b/src/vs/base/browser/browser.ts +index 16414ef..4fff90c 100644 +--- a/src/vs/base/browser/browser.ts ++++ b/src/vs/base/browser/browser.ts +@@ -124,0 +125,3 @@ export const isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0); ++export const isMacintosh = userAgent.indexOf('Macintosh') >= 0; ++export const isWindows = userAgent.indexOf('Windows') >= 0; ++export const isLinux = userAgent.indexOf('Linux') >= 0; +diff --git a/src/vs/base/browser/keyboardEvent.ts b/src/vs/base/browser/keyboardEvent.ts +index 03bdffc..acbc954 100644 +--- a/src/vs/base/browser/keyboardEvent.ts ++++ b/src/vs/base/browser/keyboardEvent.ts +@@ -8 +8 @@ import { KeyCode, KeyCodeUtils, KeyMod, SimpleKeybinding } from 'vs/base/common/ +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/aria/aria.ts b/src/vs/base/browser/ui/aria/aria.ts +index fc71827..c8ed796 100644 +--- a/src/vs/base/browser/ui/aria/aria.ts ++++ b/src/vs/base/browser/ui/aria/aria.ts +@@ -8 +8 @@ import * as nls from 'vs/nls'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts +index 5babdbf..a55c00a 100644 +--- a/src/vs/base/browser/ui/list/listWidget.ts ++++ b/src/vs/base/browser/ui/list/listWidget.ts +@@ -13 +13 @@ import * as DOM from 'vs/base/browser/dom'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/sash/sash.ts b/src/vs/base/browser/ui/sash/sash.ts +index 8c7168b..6b34122 100644 +--- a/src/vs/base/browser/ui/sash/sash.ts ++++ b/src/vs/base/browser/ui/sash/sash.ts +@@ -8,2 +8 @@ import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle'; +-import { isIPad } from 'vs/base/browser/browser'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isIPad, isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/scrollbar/scrollableElement.ts b/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +index fbf8d5d..123a1b9 100644 +--- a/src/vs/base/browser/ui/scrollbar/scrollableElement.ts ++++ b/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +@@ -18 +18 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/selectBox/selectBox.ts b/src/vs/base/browser/ui/selectBox/selectBox.ts +index d74c30c..ac39ce3 100644 +--- a/src/vs/base/browser/ui/selectBox/selectBox.ts ++++ b/src/vs/base/browser/ui/selectBox/selectBox.ts +@@ -16 +16 @@ import { SelectBoxList } from 'vs/base/browser/ui/selectBox/selectBoxCustom'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +index 8908d68..35dae2d 100644 +--- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts ++++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +@@ -20 +20 @@ import { ISelectBoxDelegate, ISelectOptionItem, ISelectBoxOptions, ISelectBoxSty +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/selectBox/selectBoxNative.ts b/src/vs/base/browser/ui/selectBox/selectBoxNative.ts +index 98dee79..09c0467 100644 +--- a/src/vs/base/browser/ui/selectBox/selectBoxNative.ts ++++ b/src/vs/base/browser/ui/selectBox/selectBoxNative.ts +@@ -12 +12 @@ import { ISelectBoxDelegate, ISelectOptionItem, ISelectBoxOptions, ISelectBoxSty +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts +index 14757bf..d38b306 100644 +--- a/src/vs/base/browser/ui/tree/abstractTree.ts ++++ b/src/vs/base/browser/ui/tree/abstractTree.ts +@@ -24 +24 @@ import { disposableTimeout } from 'vs/base/common/async'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/base/node/config.ts b/src/vs/base/node/config.ts index 0b57853..ad0c604 100644 --- a/src/vs/base/node/config.ts @@ -6,22 +78,34 @@ index 0b57853..ad0c604 100644 + } else { + this.cache = config; // update config + this._onDidUpdateConfiguration.fire({ config }); -diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts -index 90767e1..3163f10 100644 ---- a/src/vs/code/electron-browser/issue/issueReporterMain.ts -+++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts -@@ -315 +315 @@ export class IssueReporter extends Disposable { -- const piiPaths = [this.environmentService.appRoot, this.environmentService.extensionsPath]; -+ const piiPaths = [this.environmentService.appRoot, this.environmentService.extensionsPath, ...this.environmentService.extraExtensionPaths]; +diff --git a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts +index 74148e4..bdde570 100644 +--- a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts ++++ b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts +@@ -8 +8 @@ import * as nls from 'vs/nls'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/base/parts/tree/browser/treeDefaults.ts b/src/vs/base/parts/tree/browser/treeDefaults.ts +index f91ca2b..ef6fce9 100644 +--- a/src/vs/base/parts/tree/browser/treeDefaults.ts ++++ b/src/vs/base/parts/tree/browser/treeDefaults.ts +@@ -8,0 +9 @@ import * as platform from 'vs/base/common/platform'; ++import * as browser from 'vs/base/browser/browser'; +@@ -113 +114 @@ export class DefaultController implements _.IController { +- if (platform.isMacintosh) { ++ if (browser.isMacintosh) { +@@ -155 +156 @@ export class DefaultController implements _.IController { +- const isMac = platform.isMacintosh; ++ const isMac = browser.isMacintosh; diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts -index e270021..91c81b4 100644 +index e270021..e87b601 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -50,0 +51,2 @@ import { ServiceIdentifier } from 'vs/platform/instantiation/common/instantiatio +import { BackupMainService } from 'vs/platform/backup/electron-main/backupMainService'; +import { mkdirp } from 'vs/base/node/pfs'; @@ -93,0 +96,10 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I -+ Promise.all([ // Lifted from src/vs/code/electron-main/main.ts ++ Promise.all([ // Lifted from src/vs/code/electron-main/main.ts + environmentService.extensionsPath, + environmentService.nodeCachedDataDir, + environmentService.logsPath, @@ -30,7 +114,7 @@ index e270021..91c81b4 100644 + environmentService.backupHome, + ...environmentService.extraExtensionPaths, + ...environmentService.extraBuiltinExtensionPaths, -+ ].map((path): undefined | Promise => path ? mkdirp(path) : undefined)); ++ ].map((path): undefined | Promise => path ? mkdirp(path) : undefined)); @@ -124 +136,3 @@ function main(server: Server, initData: ISharedProcessInitData, configuration: I - const { appRoot, extensionsPath, extensionDevelopmentLocationURI: extensionDevelopmentLocationURI, isBuilt, installSourcePath } = environmentService; + const backupMainService = instantiationService.createInstance(BackupMainService) as BackupMainService; @@ -49,6 +133,139 @@ index 7b8222c..7dab7f8 100644 + const cli = await new Promise((c, e) => require(['vs/code/node/cliProcessMain'], c, e)); + await cli.main(args); + return; // Always just do this for now. +diff --git a/src/vs/editor/browser/config/configuration.ts b/src/vs/editor/browser/config/configuration.ts +index f97a692..1b6c36d 100644 +--- a/src/vs/editor/browser/config/configuration.ts ++++ b/src/vs/editor/browser/config/configuration.ts +@@ -367 +367 @@ export class Configuration extends CommonEditorConfiguration { +- if (platform.isMacintosh) { ++ if (browser.isMacintosh) { +diff --git a/src/vs/editor/browser/controller/mouseHandler.ts b/src/vs/editor/browser/controller/mouseHandler.ts +index 4a2dc76..ba106b1 100644 +--- a/src/vs/editor/browser/controller/mouseHandler.ts ++++ b/src/vs/editor/browser/controller/mouseHandler.ts +@@ -224 +224 @@ export class MouseHandler extends ViewEventHandler { +- if (platform.isMacintosh && e.leftButton && e.ctrlKey) { ++ if (browser.isMacintosh && e.leftButton && e.ctrlKey) { +diff --git a/src/vs/editor/browser/controller/textAreaHandler.ts b/src/vs/editor/browser/controller/textAreaHandler.ts +index f035818..07a1080 100644 +--- a/src/vs/editor/browser/controller/textAreaHandler.ts ++++ b/src/vs/editor/browser/controller/textAreaHandler.ts +@@ -214 +214 @@ export class TextAreaHandler extends ViewPart { +- if (platform.isMacintosh) { ++ if (browser.isMacintosh) { +diff --git a/src/vs/editor/browser/controller/textAreaInput.ts b/src/vs/editor/browser/controller/textAreaInput.ts +index df11729..d69816a 100644 +--- a/src/vs/editor/browser/controller/textAreaInput.ts ++++ b/src/vs/editor/browser/controller/textAreaInput.ts +@@ -14 +14 @@ import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts +index 7571c59..537a6ce 100644 +--- a/src/vs/editor/common/config/commonEditorConfig.ts ++++ b/src/vs/editor/common/config/commonEditorConfig.ts +@@ -9,0 +10 @@ import * as objects from 'vs/base/common/objects'; ++import * as browser from 'vs/base/browser/browser'; +@@ -395 +396 @@ const editorConfiguration: IConfigurationNode = { +- 'included': platform.isMacintosh ++ 'included': platform.isNative && platform.isMacintosh +@@ -1055 +1056 @@ const editorConfiguration: IConfigurationNode = { +- 'included': platform.isLinux ++ 'included': browser.isLinux +diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts +index 6c010ed..8859faf 100644 +--- a/src/vs/editor/common/config/editorOptions.ts ++++ b/src/vs/editor/common/config/editorOptions.ts +@@ -9 +9 @@ import * as objects from 'vs/base/common/objects'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +@@ -2688 +2688 @@ export const EDITOR_DEFAULTS: IValidatedEditorOptions = { +- selectionClipboard: true, ++ selectionClipboard: false, +diff --git a/src/vs/editor/common/config/fontInfo.ts b/src/vs/editor/common/config/fontInfo.ts +index c69ea3f..aa29b8e 100644 +--- a/src/vs/editor/common/config/fontInfo.ts ++++ b/src/vs/editor/common/config/fontInfo.ts +@@ -14 +14 @@ import { EditorZoom } from 'vs/editor/common/config/editorZoom'; +-const GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35; ++const GOLDEN_LINE_HEIGHT_RATIO = platform.isNative && platform.isMacintosh ? 1.5 : 1.35; +diff --git a/src/vs/editor/contrib/clipboard/clipboard.ts b/src/vs/editor/contrib/clipboard/clipboard.ts +index 990be3a..86d7d9c 100644 +--- a/src/vs/editor/contrib/clipboard/clipboard.ts ++++ b/src/vs/editor/contrib/clipboard/clipboard.ts +@@ -18,0 +19 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis ++import { clipboard } from 'electron'; +@@ -29 +30,2 @@ const supportsCopyWithSyntaxHighlighting = (supportsCopy && !browser.isEdgeOrIE) +-const supportsPaste = (platform.isNative || (!browser.isChrome && document.queryCommandSupported('paste'))); ++// const supportsPaste = (platform.isNative || (!browser.isChrome && document.queryCommandSupported('paste'))); ++const supportsPaste = true; +@@ -71 +73 @@ class ExecCommandCutAction extends ExecCommandAction { +- kbOpts = null; ++ // kbOpts = null; +@@ -119 +121 @@ class ExecCommandCopyAction extends ExecCommandAction { +- kbOpts = null; ++ // kbOpts = null; +@@ -174 +176 @@ class ExecCommandPasteAction extends ExecCommandAction { +- kbOpts = null; ++ // kbOpts = null; +@@ -176,0 +179 @@ class ExecCommandPasteAction extends ExecCommandAction { ++ const { workbench } = require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench'); +@@ -181 +184 @@ class ExecCommandPasteAction extends ExecCommandAction { +- precondition: EditorContextKeys.writable, ++ precondition: (require('vs/platform/contextkey/common/contextkey') as typeof import('vs/platform/contextkey/common/contextkey')).ContextKeyExpr.and(EditorContextKeys.writable, workbench.clipboardContextKey), +@@ -191 +194,2 @@ class ExecCommandPasteAction extends ExecCommandAction { +- order: 3 ++ order: 3, ++ when: workbench.clipboardContextKey, +@@ -194,0 +199,26 @@ class ExecCommandPasteAction extends ExecCommandAction { ++ ++ public async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise { ++ if (editor instanceof (require('vs/editor/browser/widget/codeEditorWidget') as typeof import('vs/editor/browser/widget/codeEditorWidget')).CodeEditorWidget) { ++ try { ++ editor.focus(); ++ const textInput = document.activeElement! as HTMLTextAreaElement; ++ const dataTransfer = new DataTransfer(); ++ const value = await clipboard.readText(); ++ dataTransfer.setData('text/plain', value); ++ const pasteEvent = new ClipboardEvent('paste', { ++ clipboardData: dataTransfer, ++ }); ++ textInput.dispatchEvent(pasteEvent); ++ } catch (ex) { ++ try { ++ editor.trigger('', (require('vs/editor/common/editorCommon') as typeof import ('vs/editor/common/editorCommon')).Handler.Paste, { ++ text: await (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.clipboardText, ++ }); ++ } catch (ex) { ++ super.run(accessor, editor); ++ } ++ } ++ } else { ++ super.run(accessor, editor); ++ } ++ } +diff --git a/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts b/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts +index 3b72a01..ae11802 100644 +--- a/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts ++++ b/src/vs/editor/contrib/goToDefinition/clickLinkGesture.ts +@@ -14 +14 @@ import { Event, Emitter } from 'vs/base/common/event'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/editor/contrib/links/links.ts b/src/vs/editor/contrib/links/links.ts +index 3b94a69..dfa4fb6 100644 +--- a/src/vs/editor/contrib/links/links.ts ++++ b/src/vs/editor/contrib/links/links.ts +@@ -13 +13 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts b/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts +index 4bde524..8bc88ab 100644 +--- a/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts ++++ b/src/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.ts +@@ -15 +15 @@ import { Disposable } from 'vs/base/common/lifecycle'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; diff --git a/src/vs/loader.js b/src/vs/loader.js index 4eddcab..fab87dc 100644 --- a/src/vs/loader.js @@ -78,6 +295,13 @@ index 4eddcab..fab87dc 100644 @@ -741 +753 @@ var AMDLoader; - moduleExports_1 = nodeRequire(pieces[1]); + moduleExports_1 = context(pieces[1]); +diff --git a/src/vs/platform/clipboard/electron-browser/clipboardService.ts b/src/vs/platform/clipboard/electron-browser/clipboardService.ts +index 9952574..908a9ae 100644 +--- a/src/vs/platform/clipboard/electron-browser/clipboardService.ts ++++ b/src/vs/platform/clipboard/electron-browser/clipboardService.ts +@@ -9 +9 @@ import { URI } from 'vs/base/common/uri'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/platform/environment/common/environment.ts b/src/vs/platform/environment/common/environment.ts index 58cb747..e94b6ca 100644 --- a/src/vs/platform/environment/common/environment.ts @@ -124,6 +348,12 @@ index 7a94561..c10193f 100644 @@ -807 +813 @@ export class ExtensionManagementService extends Disposable implements IExtension - return this.scanExtensions(this.extensionsPath, ExtensionType.User) // All user extensions + return this.scanAllExtensions(this.extensionsPath, ExtensionType.User, this.environmentService.extraExtensionPaths) // All user extensions +diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts +index f636cd1..6cab10b 100644 +--- a/src/vs/platform/windows/common/windows.ts ++++ b/src/vs/platform/windows/common/windows.ts +@@ -284,0 +285 @@ export function getTitleBarStyle(configurationService: IConfigurationService, en ++ return 'custom'; diff --git a/src/vs/workbench/api/common/extHostTypeConverters.ts b/src/vs/workbench/api/common/extHostTypeConverters.ts index 2a499df..1ed108d 100644 --- a/src/vs/workbench/api/common/extHostTypeConverters.ts @@ -141,12 +371,72 @@ index 3f8a56e..442e670 100644 @@ -710 +710 @@ function loadCommonJSModule(logService: ILogService, modulePath: string, acti - r = require.__$__nodeRequire(modulePath); + r = (global as any).nativeNodeRequire(modulePath); -diff --git a/src/vs/workbench/browser/nodeless.main.ts b/src/vs/workbench/browser/nodeless.main.ts -index 74ff1e9..c0f0158 100644 ---- a/src/vs/workbench/browser/nodeless.main.ts -+++ b/src/vs/workbench/browser/nodeless.main.ts -@@ -30,0 +31 @@ class CodeRendererMain extends Disposable { -+ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = services.serviceCollection; +diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts +index 5c4a13a..d41ee82 100644 +--- a/src/vs/workbench/browser/dnd.ts ++++ b/src/vs/workbench/browser/dnd.ts +@@ -170 +170 @@ export class ResourcesDropHandler { +- return; ++ return (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.handleDrop(event, resolveTargetGroup, afterDrop, targetIndex); +diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts +index 647c202..1cd945d 100644 +--- a/src/vs/workbench/browser/layout.ts ++++ b/src/vs/workbench/browser/layout.ts +@@ -12 +12 @@ import { Registry } from 'vs/platform/registry/common/platform'; +-import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; ++import { isWindows, isLinux, isMacintosh, isNative } from 'vs/base/common/platform'; +@@ -210 +210 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- if ((isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { ++ // if ((isWindows || isLinux) && getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { +@@ -212 +212 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- } ++ // } +@@ -219 +219 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- if (this.state.fullscreen && (this.state.menuBar.visibility === 'toggle' || this.state.menuBar.visibility === 'default')) { ++ if (/*this.state.fullscreen && */(this.state.menuBar.visibility === 'toggle' || this.state.menuBar.visibility === 'default')) { +@@ -499 +499,5 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- if (getTitleBarStyle(this.configurationService, this.environmentService) === 'native') { ++ if (this.state.menuBar.visibility === 'hidden') { ++ return false; ++ } else if (this.state.menuBar.visibility === 'toggle') { ++ return this.state.menuBar.toggled; ++ } else if (getTitleBarStyle(this.configurationService, this.environmentService) === 'native') { +@@ -503 +507 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- } else if (isMacintosh) { ++ } else if (isNative && isMacintosh) { +@@ -507,2 +510,0 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- } else if (this.state.menuBar.visibility === 'toggle' || this.state.menuBar.visibility === 'default') { +- return this.state.menuBar.toggled; +@@ -535 +537 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi +- if (isMacintosh || this.state.menuBar.visibility === 'hidden') { ++ if ((isNative && isMacintosh) || this.state.menuBar.visibility === 'hidden') { +diff --git a/src/vs/workbench/browser/legacyLayout.ts b/src/vs/workbench/browser/legacyLayout.ts +index 53e73ac..0e24627 100644 +--- a/src/vs/workbench/browser/legacyLayout.ts ++++ b/src/vs/workbench/browser/legacyLayout.ts +@@ -13 +13 @@ import { IThemeService } from 'vs/platform/theme/common/themeService'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh, isNative } from 'vs/base/common/platform'; +@@ -20 +20 @@ import { Part } from 'vs/workbench/browser/part'; +-const TITLE_BAR_HEIGHT = isMacintosh ? 22 : 30; ++const TITLE_BAR_HEIGHT = isNative && isMacintosh ? 22 : 30; +@@ -413 +413 @@ export class WorkbenchLegacyLayout extends Disposable implements IVerticalSashLa +- this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / (isMacintosh || !menubarVisibility || menubarVisibility === 'hidden' ? getZoomFactor() : 1); // adjust for zoom prevention ++ this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / ((isNative && isMacintosh) || !menubarVisibility || menubarVisibility === 'hidden' ? getZoomFactor() : 1); // adjust for zoom prevention +diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts +index 414b807..974f6cd 100644 +--- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts ++++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts +@@ -48 +48 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts +index 960706a..720445f 100644 +--- a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts ++++ b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts +@@ -14 +14 @@ import { IEditorIdentifier, EditorInput, EditorOptions } from 'vs/workbench/comm +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts index 57d2939..2533311 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts @@ -157,6 +447,91 @@ index 57d2939..2533311 100644 @@ -1497 +1497 @@ registerThemingParticipant((theme, collector, environment) => { - background-image: url('${require.toUrl(letterpress)}') + background-image: url('${letterpress}') +diff --git a/src/vs/workbench/browser/parts/editor/resourceViewer.ts b/src/vs/workbench/browser/parts/editor/resourceViewer.ts +index a509721..1a23f54 100644 +--- a/src/vs/workbench/browser/parts/editor/resourceViewer.ts ++++ b/src/vs/workbench/browser/parts/editor/resourceViewer.ts +@@ -23 +23 @@ import { memoize } from 'vs/base/common/decorators'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +index 9191514..6bb0a35 100644 +--- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts ++++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +@@ -7 +7 @@ import 'vs/css!./media/tabstitlecontrol'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts +index 78c0846..45cb777 100644 +--- a/src/vs/workbench/browser/parts/quickinput/quickInputList.ts ++++ b/src/vs/workbench/browser/parts/quickinput/quickInputList.ts +@@ -24 +24 @@ import { range } from 'vs/base/common/arrays'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css +index a215bde..df7562b 100644 +--- a/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css ++++ b/src/vs/workbench/browser/parts/titlebar/media/titlebarpart.css +@@ -44,0 +45 @@ ++.web > .monaco-workbench .part.titlebar, +diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +index 32a8c99..f29c93d 100644 +--- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts ++++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +@@ -16 +16,2 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +-import { isMacintosh, isLinux } from 'vs/base/common/platform'; ++import { isNative } from 'vs/base/common/platform'; ++import { isMacintosh, isLinux } from 'vs/base/browser/browser'; +@@ -117 +118 @@ export class MenubarControl extends Disposable { +- if (isMacintosh) { ++ if (isNative && isMacintosh) { +@@ -126 +127 @@ export class MenubarControl extends Disposable { +- if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { ++ if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { +@@ -138 +139 @@ export class MenubarControl extends Disposable { +- if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { ++ if ((isNative && isMacintosh) || this.currentTitlebarStyleSetting !== 'custom') { +@@ -288 +289 @@ export class MenubarControl extends Disposable { +- if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { ++ if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { +@@ -304 +305 @@ export class MenubarControl extends Disposable { +- if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { ++ if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { +@@ -472 +473 @@ export class MenubarControl extends Disposable { +- if (!isMacintosh) { ++ if (!(isNative && isMacintosh)) { +@@ -698 +699 @@ export class MenubarControl extends Disposable { +- if (!isMacintosh && this.currentTitlebarStyleSetting === 'custom') { ++ if (!(isNative && isMacintosh) && this.currentTitlebarStyleSetting === 'custom') { +diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +index d96209b..1be5cc1 100644 +--- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts ++++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +@@ -11 +11 @@ import { ITitleService, ITitleProperties } from 'vs/workbench/services/title/com +-import { getZoomFactor } from 'vs/base/browser/browser'; ++import { getZoomFactor, isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; +@@ -25 +25 @@ import { TITLE_BAR_ACTIVE_BACKGROUND, TITLE_BAR_ACTIVE_FOREGROUND, TITLE_BAR_INA +-import { isMacintosh, isWindows, isLinux } from 'vs/base/common/platform'; ++import { isNative } from 'vs/base/common/platform'; +@@ -328 +328 @@ export class TitlebarPart extends Part implements ITitleService { +- if (!isMacintosh) { ++ if (!(isNative && isMacintosh)) { +@@ -344 +344 @@ export class TitlebarPart extends Part implements ITitleService { +- if (!isMacintosh) { ++ if (!(isNative && isMacintosh)) { +@@ -550 +550 @@ export class TitlebarPart extends Part implements ITitleService { +- if (!isMacintosh && ++ if (!(isNative && isMacintosh) && +@@ -568 +568 @@ export class TitlebarPart extends Part implements ITitleService { +- if (isMacintosh || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { ++ if ((isNative && isMacintosh) || this.configurationService.getValue('window.menuBarVisibility') === 'hidden') { +diff --git a/src/vs/workbench/browser/workbench.contribution.ts b/src/vs/workbench/browser/workbench.contribution.ts +index 696f351..47af9f7 100644 +--- a/src/vs/workbench/browser/workbench.contribution.ts ++++ b/src/vs/workbench/browser/workbench.contribution.ts +@@ -9 +9 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions, Configur +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/browser/workbench.ts b/src/vs/workbench/browser/workbench.ts index 1f9fdde..078c1a1 100644 --- a/src/vs/workbench/browser/workbench.ts @@ -167,6 +542,96 @@ index 1f9fdde..078c1a1 100644 @@ -89 +89 @@ export class Workbench extends Layout { - }); + });*/ +diff --git a/src/vs/workbench/common/contextkeys.ts b/src/vs/workbench/common/contextkeys.ts +index cb129ec..dbb00be 100644 +--- a/src/vs/workbench/common/contextkeys.ts ++++ b/src/vs/workbench/common/contextkeys.ts +@@ -7 +7 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; +-import { isMacintosh, isLinux, isWindows } from 'vs/base/common/platform'; ++import { isMacintosh, isLinux, isWindows } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts b/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts +index 787c9ef..7a5fbe9 100644 +--- a/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts ++++ b/src/vs/workbench/contrib/codeEditor/browser/accessibility/accessibility.ts +@@ -15 +15 @@ import { Disposable } from 'vs/base/common/lifecycle'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts +index b949e00..8a9005c 100644 +--- a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts ++++ b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts +@@ -14 +14 @@ import { mixin } from 'vs/base/common/objects'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts +index 5e1b6da..256bb0c 100644 +--- a/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts ++++ b/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier.ts +@@ -8 +8 @@ import { Action } from 'vs/base/common/actions'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts +index de8fe1e..e8749fa 100644 +--- a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts ++++ b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts +@@ -9,0 +10 @@ import * as env from 'vs/base/common/platform'; ++import * as browser from 'vs/base/browser/browser'; +@@ -181 +182 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- if (e.event.rightButton || (env.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { ++ if (e.event.rightButton || (browser.isMacintosh && e.event.leftButton && e.event.ctrlKey)) { +@@ -200 +201 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- if (!env.isLinux && breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { ++ if (!(env.isNative && env.isLinux) && breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition)) { +@@ -435 +436 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- const stopKey = env.isMacintosh ? 'metaKey' : 'ctrlKey'; ++ const stopKey = browser.isMacintosh ? 'metaKey' : 'ctrlKey'; +@@ -453 +454 @@ export class DebugEditorContribution implements IDebugEditorContribution { +- const stopKey = env.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; ++ const stopKey = browser.isMacintosh ? KeyCode.Meta : KeyCode.Ctrl; +diff --git a/src/vs/workbench/contrib/debug/browser/linkDetector.ts b/src/vs/workbench/contrib/debug/browser/linkDetector.ts +index f40b247..810b6fa 100644 +--- a/src/vs/workbench/contrib/debug/browser/linkDetector.ts ++++ b/src/vs/workbench/contrib/debug/browser/linkDetector.ts +@@ -9 +9 @@ import { URI as uri } from 'vs/base/common/uri'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +index a847add..78f20a7 100644 +--- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts ++++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +@@ -38 +38 @@ import { IViewsRegistry, Extensions as ViewExtensions } from 'vs/workbench/commo +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +index cfaeef2..52f5d72 100644 +--- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts ++++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +@@ -17 +17 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co +-import { isWindows, isMacintosh } from 'vs/base/common/platform'; ++import { isWindows, isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts +index 9bda6ca..ef36375 100644 +--- a/src/vs/workbench/contrib/files/browser/fileCommands.ts ++++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts +@@ -28 +28 @@ import { KeyMod, KeyCode, KeyChord } from 'vs/base/common/keyCodes'; +-import { isWindows, isMacintosh } from 'vs/base/common/platform'; ++import { isWindows, isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/files/browser/views/emptyView.ts b/src/vs/workbench/contrib/files/browser/views/emptyView.ts +index 89e2def..fb01e37 100644 +--- a/src/vs/workbench/contrib/files/browser/views/emptyView.ts ++++ b/src/vs/workbench/contrib/files/browser/views/emptyView.ts +@@ -8 +8 @@ import * as errors from 'vs/base/common/errors'; +-import * as env from 'vs/base/common/platform'; ++import * as env from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +index 6a46cb1..7e16086 100644 +--- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts ++++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +@@ -38 +38 @@ import { DesktopDragAndDropData, ExternalElementsDragAndDropData, ElementsDragAn +-import { isMacintosh, isLinux } from 'vs/base/common/platform'; ++import { isMacintosh, isLinux } from 'vs/base/browser/browser'; +@@ -607,0 +608 @@ export class FileDragAndDrop implements ITreeDragAndDrop { ++ return (require('vs/../../../../packages/vscode/src/workbench') as typeof import('vs/../../../../packages/vscode/src/workbench')).workbench.handleExternalDrop(target, originalEvent); diff --git a/src/vs/workbench/contrib/files/common/explorerModel.ts b/src/vs/workbench/contrib/files/common/explorerModel.ts index 99d4790..9c37b76 100644 --- a/src/vs/workbench/contrib/files/common/explorerModel.ts @@ -200,6 +665,78 @@ index ad9d566..9c894d8 100644 +++ b/src/vs/workbench/contrib/output/common/outputLinkProvider.ts @@ -78,0 +79 @@ export class OutputLinkProvider { + return Promise.resolve([]); +diff --git a/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts b/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts +index 8617cc0..f972032 100644 +--- a/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts ++++ b/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts +@@ -84,0 +85 @@ export class StartupTimings implements IWorkbenchContribution { ++ return false; +diff --git a/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts b/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts +index 92f9b7c..8f7c382 100644 +--- a/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts ++++ b/src/vs/workbench/contrib/quickopen/browser/quickopen.contribution.ts +@@ -6 +6 @@ +-import * as env from 'vs/base/common/platform'; ++import * as env from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts b/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts +index 16e1029..e36db83 100644 +--- a/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts ++++ b/src/vs/workbench/contrib/relauncher/electron-browser/relauncher.contribution.ts +@@ -18 +18,2 @@ import { isEqual } from 'vs/base/common/resources'; +-import { isLinux, isMacintosh } from 'vs/base/common/platform'; ++import { isNative, isLinux } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +@@ -65 +66 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo +- if (isMacintosh && config.window && typeof config.window.nativeTabs === 'boolean' && config.window.nativeTabs !== this.nativeTabs) { ++ if (isNative && isMacintosh && config.window && typeof config.window.nativeTabs === 'boolean' && config.window.nativeTabs !== this.nativeTabs) { +@@ -71 +72 @@ export class SettingsChangeRelauncher extends Disposable implements IWorkbenchCo +- if (isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { ++ if (isNative && isMacintosh && config.window && typeof config.window.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { +diff --git a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts +index 0b0cba6..c254f70 100644 +--- a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts ++++ b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts +@@ -46 +46 @@ import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/la +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts +index f675087..18f53d2 100644 +--- a/src/vs/workbench/contrib/search/browser/search.contribution.ts ++++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts +@@ -701 +701 @@ configurationRegistry.registerConfiguration({ +- included: platform.isMacintosh ++ included: platform.isNative && platform.isMacintosh +diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts +index eb7a270..1ba3e81 100644 +--- a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts ++++ b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts +@@ -12,0 +13 @@ import * as nls from 'vs/nls'; ++import * as browser from 'vs/base/browser/browser'; +@@ -185 +186 @@ configurationRegistry.registerConfiguration({ +- default: 'auto', ++ default: browser.isSafari ? 'dom' : 'auto', +@@ -196 +197 @@ configurationRegistry.registerConfiguration({ +- default: platform.isMacintosh ? 'selectWord' : platform.isWindows ? 'copyPaste' : 'default', ++ default: browser.isMacintosh ? 'selectWord' : browser.isWindows ? 'copyPaste' : 'default', +diff --git a/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts b/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts +index 8adb02d..134b4a9 100644 +--- a/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts ++++ b/src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts +@@ -7,0 +8 @@ import * as platform from 'vs/base/common/platform'; ++import * as browser from 'vs/base/browser/browser'; +@@ -239 +240 @@ export class TerminalLinkHandler { +- return platform.isMacintosh ? event.metaKey : event.ctrlKey; ++ return browser.isMacintosh ? event.metaKey : event.ctrlKey; +@@ -247 +248 @@ export class TerminalLinkHandler { +- if (platform.isMacintosh) { ++ if (browser.isMacintosh) { +diff --git a/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts b/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts +index 780147c..622e1ef 100644 +--- a/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts ++++ b/src/vs/workbench/contrib/terminal/browser/terminalPanel.ts +@@ -8 +8 @@ import * as nls from 'vs/nls'; +-import * as platform from 'vs/base/common/platform'; ++import * as platform from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js index 133b3d2..f69091a 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/main.js @@ -209,6 +746,133 @@ index 133b3d2..f69091a 100644 + if (document.hasFocus()) { + newFrame.contentWindow.focus(); + } +diff --git a/src/vs/workbench/contrib/webview/browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/browser/webview.contribution.ts +index f055918..764635f 100644 +--- a/src/vs/workbench/contrib/webview/browser/webview.contribution.ts ++++ b/src/vs/workbench/contrib/webview/browser/webview.contribution.ts +@@ -7 +7 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh, isNative } from 'vs/base/common/platform'; +@@ -77 +77 @@ export function registerWebViewCommands(editorId: string): void { +- if (isMacintosh) { ++ if (isNative && isMacintosh) { +diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +index 1477b88..07a71db 100644 +--- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts ++++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +@@ -11 +11 @@ import { Disposable } from 'vs/base/common/lifecycle'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isMacintosh } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts +index f768172..21602ae 100644 +--- a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts ++++ b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts +@@ -31 +31 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW +- require([query.moduleId], content => { ++ /*require([query.moduleId], content => { +@@ -38 +38,9 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW +- }) : this.textFileService.readStream(URI.file(resource.fsPath)).then(content => content.value)); ++ }) : this.textFileService.readStream(URI.file(resource.fsPath)).then(content => content.value)); */ ++ // This works because the only walkthrough that is a module is the welcome page. ++ // We have to explicitly import it or Webpack won't pick it up. ++ import("vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page") ++ .then((content) => { resolve(content.default()); }) ++ .catch(reject); ++ }) : (resource.scheme !== "file" ++ ? fetch(resource.path).then((res) => res.text()) ++ : this.textFileService.readStream(URI.file(resource.fsPath)).then(content => content.value))); +@@ -64 +72 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +- return this.textFileService.readStream(URI.file(resource.fsPath)).then(content => { ++ return fetch(resource.path).then((res) => res.text()).then((content) => { +@@ -80,0 +89 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi ++ /* +@@ -85,0 +95,2 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi ++ */ ++ marked(content, { renderer }); +@@ -91 +102 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +- this.modelService.updateModel(codeEditorModel, content.value); ++ this.modelService.updateModel(codeEditorModel, content); +diff --git a/src/vs/workbench/electron-browser/actions/helpActions.ts b/src/vs/workbench/electron-browser/actions/helpActions.ts +index 79e2ba2..8c1b21b 100644 +--- a/src/vs/workbench/electron-browser/actions/helpActions.ts ++++ b/src/vs/workbench/electron-browser/actions/helpActions.ts +@@ -9 +9,2 @@ import product from 'vs/platform/product/node/product'; +-import { isMacintosh, isLinux, language } from 'vs/base/common/platform'; ++import { language } from 'vs/base/common/platform'; ++import { isMacintosh, isLinux } from 'vs/base/browser/browser'; +diff --git a/src/vs/workbench/electron-browser/actions/windowActions.ts b/src/vs/workbench/electron-browser/actions/windowActions.ts +index 223fda7..b857b45 100644 +--- a/src/vs/workbench/electron-browser/actions/windowActions.ts ++++ b/src/vs/workbench/electron-browser/actions/windowActions.ts +@@ -386 +386 @@ export abstract class BaseOpenRecentAction extends Action { +- placeHolder: isMacintosh ? nls.localize('openRecentPlaceHolderMac', "Select to open (hold Cmd-key to open in new window)") : nls.localize('openRecentPlaceHolder', "Select to open (hold Ctrl-key to open in new window)"), ++ placeHolder: browser.isMacintosh ? nls.localize('openRecentPlaceHolderMac', "Select to open (hold Cmd-key to open in new window)") : nls.localize('openRecentPlaceHolder', "Select to open (hold Ctrl-key to open in new window)"), +diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts +index de7017c..adb6956 100644 +--- a/src/vs/workbench/electron-browser/main.contribution.ts ++++ b/src/vs/workbench/electron-browser/main.contribution.ts +@@ -13 +13,2 @@ import { KeyMod, KeyChord, KeyCode } from 'vs/base/common/keyCodes'; +-import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; ++import { isNative, isWeb } from 'vs/base/common/platform'; ++import { isMacintosh, isWindows, isLinux } from 'vs/base/browser/browser'; +@@ -37 +38 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- if (isMacintosh) { ++ if (isNative && isMacintosh) { +@@ -225 +226 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- if (isMacintosh) { ++ if (isNative && isMacintosh) { +@@ -306 +307 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- when: IsMacContext.toNegated() ++ // when: IsMacContext.toNegated() +@@ -538 +539 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- isMacintosh ? ++ isNative && isMacintosh ? +@@ -545 +546 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- isMacintosh ? ++ isNative && isMacintosh ? +@@ -626 +627 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isWindows || isLinux ++ 'included': isWeb || isWindows || isLinux +@@ -633 +634 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isWindows || isLinux ++ 'included': isWeb || isWindows || isLinux +@@ -650,2 +651,2 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'enum': ['native', 'custom'], +- 'default': isLinux ? 'native' : 'custom', ++ 'enum': ['custom'], ++ 'default': isNative && isLinux ? 'native' : 'custom', +@@ -660 +661 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) ++ 'included': isNative && isMacintosh && parseFloat(os.release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x) +@@ -667 +668 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; +- 'included': isMacintosh ++ 'included': isNative && isMacintosh +diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts +index 1d13aba..610c6cf 100644 +--- a/src/vs/workbench/electron-browser/main.ts ++++ b/src/vs/workbench/electron-browser/main.ts +@@ -139,0 +140 @@ class CodeRendererMain extends Disposable { ++ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.serviceCollection = services.serviceCollection; +diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts +index 7687183..33b3d2e 100644 +--- a/src/vs/workbench/electron-browser/window.ts ++++ b/src/vs/workbench/electron-browser/window.ts +@@ -53 +53 @@ const TextInputActions: IAction[] = [ +- new Action('editor.action.clipboardPasteAction', nls.localize('paste', "Paste"), undefined, true, () => Promise.resolve(document.execCommand('paste'))), ++ (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.pasteAction, +@@ -361 +361 @@ export class ElectronWindow extends Disposable { +- !isMacintosh || // macOS only ++ !browser.isMacintosh || // macOS only +diff --git a/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts b/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts +index f4dae2a..55966e8 100644 +--- a/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts ++++ b/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService.ts +@@ -22 +22 @@ import { getTitleBarStyle } from 'vs/platform/windows/common/windows'; +-import { isMacintosh } from 'vs/base/common/platform'; ++import { isNative, isMacintosh } from 'vs/base/common/platform'; +@@ -49 +49 @@ export class ContextMenuService extends Disposable implements IContextMenuServic +- if (!isMacintosh && getTitleBarStyle(configurationService, environmentService) === 'custom') { ++ if (!(isNative && isMacintosh) && getTitleBarStyle(configurationService, environmentService) === 'custom') { diff --git a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts b/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts index 40a8c83..579c7e7 100644 --- a/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner.ts @@ -309,13 +973,16 @@ index 8924e12..7beecb4 100644 - this.service.setRoots(folders); + this.service.setRoots(folders).then(() => this.retry.recover()); diff --git a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts -index 04ce480..6abda1c 100644 +index 04ce480..76854cb 100644 --- a/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts +++ b/src/vs/workbench/services/files/node/watcher/unix/watcherService.ts @@ -21,0 +22 @@ export class FileWatcher extends Disposable { + private readonly retry = (require('vs/../../../../packages/vscode/src/workbench') as typeof import ('vs/../../../../packages/vscode/src/workbench')).workbench.retry.register('Watcher', () => this.startWatching()); @@ -53,0 +55 @@ export class FileWatcher extends Disposable { + return this.retry.run(); +@@ -78 +80 @@ export class FileWatcher extends Disposable { +- this.service.setRoots(this.folders); ++ this.setFolders(this.folders); @@ -84 +86 @@ export class FileWatcher extends Disposable { - this.service.setRoots(folders); + this.service.setRoots(folders).then(() => this.retry.recover()); @@ -329,6 +996,22 @@ index 95d8797..0f5d4cf 100644 + this.handle.stdout.once('data', () => this.retry.recover()); @@ -113,0 +116 @@ export class OutOfProcessWin32FolderWatcher { + return this.retry.run(); +diff --git a/src/vs/workbench/services/heap/node/heap.ts b/src/vs/workbench/services/heap/node/heap.ts +index 8f627ba..9a795eb 100644 +--- a/src/vs/workbench/services/heap/node/heap.ts ++++ b/src/vs/workbench/services/heap/node/heap.ts +@@ -33,0 +34 @@ export class HeapService implements IHeapService { ++ if (typeof process === 'undefined' || typeof process.stdout === 'undefined') { return; } // Doesn't work in the browser (for running the extension host in worker). +diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts +index 0c3d16f..e27e98c 100644 +--- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts ++++ b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts +@@ -16 +16 @@ import { KeybindingParser } from 'vs/base/common/keybindingParser'; +-import { OS, OperatingSystem } from 'vs/base/common/platform'; ++import { OS, OperatingSystem, isNative } from 'vs/base/common/platform'; +@@ -131 +131 @@ export class KeyboardMapperFactory { +- if (OS === OperatingSystem.Windows) { ++ if (isNative && OS === OperatingSystem.Windows) { diff --git a/src/vs/workbench/services/search/node/searchService.ts b/src/vs/workbench/services/search/node/searchService.ts index fcef06a..db26457 100644 --- a/src/vs/workbench/services/search/node/searchService.ts From ef8ea370240b309604f90f5dc309d5f4520b2a96 Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 5 Jun 2019 15:26:53 -0500 Subject: [PATCH 4/5] Fix readme webviews --- scripts/vscode.patch | 48 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 4537aaa46ef9..202b16a6a357 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -738,14 +738,39 @@ index 780147c..622e1ef 100644 -import * as platform from 'vs/base/common/platform'; +import * as platform from 'vs/base/browser/browser'; diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js -index 133b3d2..f69091a 100644 +index 133b3d2..00e9e76 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/main.js +++ b/src/vs/workbench/contrib/webview/browser/pre/main.js -@@ -375 +375,3 @@ module.exports = function createWebviewManager(host) { +@@ -95,0 +96,18 @@ const defaultCssRules = ` ++const process = { pid: undefined }; ++const host = { ++ onMessage: (channel, callback) => { ++ window.addEventListener("message", (event) => { ++ if (event.data.channel === channel) { ++ callback(event.data.channel, ...event.data.data); ++ } ++ }); ++ }, ++ postMessage: (channel, ...args) => { ++ window.parent.postMessage({ ++ channel, ++ data: args, ++ id: document.body.id, ++ }, "*"); ++ }, ++}; ++ +@@ -103 +121 @@ const defaultCssRules = ` +-module.exports = function createWebviewManager(host) { ++// module.exports = function createWebviewManager(host) { +@@ -375 +393,3 @@ module.exports = function createWebviewManager(host) { - newFrame.contentWindow.focus(); + if (document.hasFocus()) { + newFrame.contentWindow.focus(); + } +@@ -446 +466 @@ module.exports = function createWebviewManager(host) { +-}; ++// }; diff --git a/src/vs/workbench/contrib/webview/browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/browser/webview.contribution.ts index f055918..764635f 100644 --- a/src/vs/workbench/contrib/webview/browser/webview.contribution.ts @@ -757,14 +782,17 @@ index f055918..764635f 100644 - if (isMacintosh) { + if (isNative && isMacintosh) { diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts -index 1477b88..07a71db 100644 +index 1477b88..35c4422 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts @@ -11 +11 @@ import { Disposable } from 'vs/base/common/lifecycle'; -import { isMacintosh } from 'vs/base/common/platform'; +import { isMacintosh } from 'vs/base/browser/browser'; +@@ -393 +393 @@ export class WebviewElement extends Disposable implements Webview { +- this._webview.preload = require.toUrl('./pre/electron-index.js'); ++ this._webview.preload = require.toUrl('../browser/pre/main.js'); diff --git a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts -index f768172..21602ae 100644 +index f768172..f34b56f 100644 --- a/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts +++ b/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider.ts @@ -31 +31 @@ export class WalkThroughContentProvider implements ITextModelContentProvider, IW @@ -784,12 +812,14 @@ index f768172..21602ae 100644 @@ -64 +72 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi - return this.textFileService.readStream(URI.file(resource.fsPath)).then(content => { + return fetch(resource.path).then((res) => res.text()).then((content) => { -@@ -80,0 +89 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -+ /* -@@ -85,0 +95,2 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi -+ */ +@@ -81 +89 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +- const textBuffer = content.value.create(DefaultEndOfLine.LF); ++ /* const textBuffer = content.value.create(DefaultEndOfLine.LF); +@@ -85 +93,2 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +- marked(markdown, { renderer }); ++ marked(markdown, { renderer }); */ + marked(content, { renderer }); -@@ -91 +102 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi +@@ -91 +100 @@ export class WalkThroughSnippetContentProvider implements ITextModelContentProvi - this.modelService.updateModel(codeEditorModel, content.value); + this.modelService.updateModel(codeEditorModel, content); diff --git a/src/vs/workbench/electron-browser/actions/helpActions.ts b/src/vs/workbench/electron-browser/actions/helpActions.ts From 18f903f7eeb854c4f40d8c9c948550eb45a1051f Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 5 Jun 2019 17:00:00 -0500 Subject: [PATCH 5/5] Fix instanceof check with FileOperationError For some reason in TypeScript the instanceof check isn't working. In plain JavaScript it works fine. --- scripts/vscode.patch | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 202b16a6a357..0fd2d45e2575 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -348,6 +348,13 @@ index 7a94561..c10193f 100644 @@ -807 +813 @@ export class ExtensionManagementService extends Disposable implements IExtension - return this.scanExtensions(this.extensionsPath, ExtensionType.User) // All user extensions + return this.scanAllExtensions(this.extensionsPath, ExtensionType.User, this.environmentService.extraExtensionPaths) // All user extensions +diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts +index 8555f6f..3dc0ce7 100644 +--- a/src/vs/platform/files/common/files.ts ++++ b/src/vs/platform/files/common/files.ts +@@ -325 +325 @@ export function toFileOperationResult(error: Error): FileOperationResult { +- if (error instanceof FileOperationError) { ++ if (error instanceof FileOperationError || FileOperationError.isFileOperationError(error)) { diff --git a/src/vs/platform/windows/common/windows.ts b/src/vs/platform/windows/common/windows.ts index f636cd1..6cab10b 100644 --- a/src/vs/platform/windows/common/windows.ts