diff --git a/build/azure-pipelines/darwin/product-build-darwin.yml b/build/azure-pipelines/darwin/product-build-darwin.yml index 795bc78556..cbfcbfc50e 100644 --- a/build/azure-pipelines/darwin/product-build-darwin.yml +++ b/build/azure-pipelines/darwin/product-build-darwin.yml @@ -179,6 +179,13 @@ steps: zip -d $(agent.builddirectory)/VSCode-darwin.zip "*.pkg" displayName: Clean Archive +- script: | + set -e + AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \ + node build/azure-pipelines/common/createAsset.js darwin-unnotarized archive "VSCode-darwin-$VSCODE_QUALITY.zip" $(agent.builddirectory)/VSCode-darwin.zip + displayName: Publish Unnotarized Build + - script: | APP_ROOT=$(agent.builddirectory)/VSCode-darwin APP_NAME="`ls $APP_ROOT | head -n 1`" diff --git a/extensions/json-language-features/server/src/jsonServerMain.ts b/extensions/json-language-features/server/src/jsonServerMain.ts index 1fa6e91420..15fc2da0e5 100644 --- a/extensions/json-language-features/server/src/jsonServerMain.ts +++ b/extensions/json-language-features/server/src/jsonServerMain.ts @@ -160,7 +160,10 @@ connection.onInitialize((params: InitializeParams): InitializeResult => { formatterMaxNumberOfEdits = params.initializationOptions?.customCapabilities?.rangeFormatting?.editLimit || Number.MAX_VALUE; const capabilities: ServerCapabilities = { textDocumentSync: TextDocumentSyncKind.Incremental, - completionProvider: clientSnippetSupport ? { resolveProvider: true, triggerCharacters: ['"', ':'] } : undefined, + completionProvider: clientSnippetSupport ? { + resolveProvider: false, // turn off resolving as the current language service doesn't do anything on resolve. Also fixes #91747 + triggerCharacters: ['"', ':'] + } : undefined, hoverProvider: true, documentSymbolProvider: true, documentRangeFormattingProvider: params.initializationOptions.provideFormatter === true, diff --git a/src/vs/platform/userDataSync/common/abstractSynchronizer.ts b/src/vs/platform/userDataSync/common/abstractSynchronizer.ts index d80baa7804..e5467f5fd3 100644 --- a/src/vs/platform/userDataSync/common/abstractSynchronizer.ts +++ b/src/vs/platform/userDataSync/common/abstractSynchronizer.ts @@ -219,7 +219,6 @@ export abstract class AbstractSynchroniser extends Disposable { const stat = await this.fileService.resolve(this.syncFolder); if (stat.children) { const all = stat.children.filter(stat => stat.isFile && /^\d{8}T\d{6}(\.json)?$/.test(stat.name)).sort(); - console.log(all.map(a => a.name)); const backUpMaxAge = 1000 * 60 * 60 * 24 * (this.configurationService.getValue('sync.localBackupDuration') || 30 /* Default 30 days */); let toDelete = all.filter(stat => { const ctime = stat.ctime || new Date( diff --git a/src/vs/platform/userDataSync/common/userDataSync.ts b/src/vs/platform/userDataSync/common/userDataSync.ts index f6147a7009..a315eef6e3 100644 --- a/src/vs/platform/userDataSync/common/userDataSync.ts +++ b/src/vs/platform/userDataSync/common/userDataSync.ts @@ -96,7 +96,6 @@ export function registerConfiguration(): IDisposable { const defaultIgnoredSettings = getDefaultIgnoredSettings().filter(s => s !== CONFIGURATION_SYNC_STORE_KEY); const settings = Object.keys(allSettings.properties).filter(setting => defaultIgnoredSettings.indexOf(setting) === -1); const ignoredSettings = defaultIgnoredSettings.filter(setting => disallowedIgnoredSettings.indexOf(setting) === -1); - console.log(ignoredSettings); const ignoredSettingsSchema: IJSONSchema = { items: { type: 'string', diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts index dbc04d3563..9f87229716 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts @@ -49,6 +49,7 @@ import { fromNow } from 'vs/base/common/date'; import { IProductService } from 'vs/platform/product/common/productService'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { IOpenerService } from 'vs/platform/opener/common/opener'; +import { timeout } from 'vs/base/common/async'; const enum AuthStatus { Initializing = 'Initializing', @@ -510,7 +511,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo } ); switch (result.choice) { - case 0: this.openerService.open(URI.parse('https://go.microsoft.com/fwlink/?LinkId=827846')); return; + case 0: this.openerService.open(URI.parse('https://aka.ms/vscode-settings-sync-help')); return; case 2: return; } } @@ -941,7 +942,8 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo quickPick.items = items; disposables.add(quickPick.onDidAccept(() => { if (quickPick.selectedItems[0] && quickPick.selectedItems[0].id) { - commandService.executeCommand(quickPick.selectedItems[0].id); + // Introduce timeout as workaround - #91661 #91740 + timeout(0).then(() => commandService.executeCommand(quickPick.selectedItems[0].id!)); } quickPick.hide(); })); diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index e204abaac3..87ec3556f9 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -613,6 +613,8 @@ export class ElectronWindow extends Disposable { } private trackClosedWaitFiles(waitMarkerFile: URI, resourcesToWaitFor: URI[]): IDisposable { + let remainingResourcesToWaitFor = resourcesToWaitFor.slice(0); + // In wait mode, listen to changes to the editors and wait until the files // are closed that the user wants to wait for. When this happens we delete // the wait marker file to signal to the outside that editing is done. @@ -622,7 +624,7 @@ export class ElectronWindow extends Disposable { // Remove from resources to wait for based on the // resources from editors that got closed - resourcesToWaitFor = resourcesToWaitFor.filter(resourceToWaitFor => { + remainingResourcesToWaitFor = remainingResourcesToWaitFor.filter(resourceToWaitFor => { if (isEqual(resourceToWaitFor, masterResource) || isEqual(resourceToWaitFor, detailsResource)) { return false; // remove - the closing editor matches this resource } @@ -630,7 +632,7 @@ export class ElectronWindow extends Disposable { return true; // keep - not yet closed }); - if (resourcesToWaitFor.length === 0) { + if (remainingResourcesToWaitFor.length === 0) { // If auto save is configured with the default delay (1s) it is possible // to close the editor while the save still continues in the background. As such // we have to also check if the files to wait for are dirty and if so wait diff --git a/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts b/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts index d546740f9e..157b943244 100644 --- a/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts +++ b/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts @@ -297,6 +297,8 @@ export class SimpleFileDialog { function doResolve(dialog: SimpleFileDialog, uri: URI | undefined) { if (uri) { + uri = resources.addTrailingPathSeparator(uri, dialog.separator); // Ensures that c: is c:/ since this comes from user input and can be incorrect. + // To be consistent, we should never have a trailing path separator on directories (or anything else). Will not remove from c:/. uri = resources.removeTrailingPathSeparator(uri); } resolve(uri);