mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-22 21:00:30 -04:00
Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d (#5949)
* Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d * Fix vs unit tests and hygiene issue * Fix strict null check issue
This commit is contained in:
@@ -30,7 +30,7 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
|
||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||
import { CancellationToken } from 'vs/base/common/cancellation';
|
||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { timeout } from 'vs/base/common/async';
|
||||
|
||||
export const ALL_COMMANDS_PREFIX = '>';
|
||||
@@ -294,7 +294,7 @@ abstract class BaseCommandEntry extends QuickOpenEntryGroup {
|
||||
this.onBeforeRun(this.commandId);
|
||||
|
||||
// Use a timeout to give the quick open widget a chance to close itself first
|
||||
setTimeout(() => {
|
||||
setTimeout(async () => {
|
||||
if (action && (!(action instanceof Action) || action.enabled)) {
|
||||
try {
|
||||
/* __GDPR__
|
||||
@@ -304,11 +304,17 @@ abstract class BaseCommandEntry extends QuickOpenEntryGroup {
|
||||
}
|
||||
*/
|
||||
this.telemetryService.publicLog('workbenchActionExecuted', { id: action.id, from: 'quick open' });
|
||||
(action.run() || Promise.resolve()).then(() => {
|
||||
if (action instanceof Action) {
|
||||
action.dispose();
|
||||
|
||||
const promise = action.run();
|
||||
if (promise) {
|
||||
try {
|
||||
await promise;
|
||||
} finally {
|
||||
if (action instanceof Action) {
|
||||
action.dispose();
|
||||
}
|
||||
}
|
||||
}, err => this.onError(err));
|
||||
}
|
||||
} catch (error) {
|
||||
this.onError(error);
|
||||
}
|
||||
@@ -371,12 +377,14 @@ class ActionCommandEntry extends BaseCommandEntry {
|
||||
|
||||
const wordFilter = or(matchesPrefix, matchesWords, matchesContiguousSubString);
|
||||
|
||||
export class CommandsHandler extends QuickOpenHandler {
|
||||
export class CommandsHandler extends QuickOpenHandler implements IDisposable {
|
||||
|
||||
static readonly ID = 'workbench.picker.commands';
|
||||
|
||||
private commandHistoryEnabled: boolean;
|
||||
private commandsHistory: CommandsHistory;
|
||||
private readonly commandsHistory: CommandsHistory;
|
||||
|
||||
private readonly disposables = new DisposableStore();
|
||||
|
||||
private waitedForExtensionsRegistered: boolean;
|
||||
|
||||
@@ -390,7 +398,7 @@ export class CommandsHandler extends QuickOpenHandler {
|
||||
) {
|
||||
super();
|
||||
|
||||
this.commandsHistory = this.instantiationService.createInstance(CommandsHistory);
|
||||
this.commandsHistory = this.disposables.add(this.instantiationService.createInstance(CommandsHistory));
|
||||
|
||||
this.extensionService.whenInstalledExtensionsRegistered().then(() => this.waitedForExtensionsRegistered = true);
|
||||
|
||||
@@ -402,7 +410,7 @@ export class CommandsHandler extends QuickOpenHandler {
|
||||
this.commandHistoryEnabled = resolveCommandHistory(this.configurationService) > 0;
|
||||
}
|
||||
|
||||
getResults(searchValue: string, token: CancellationToken): Promise<QuickOpenModel> {
|
||||
async getResults(searchValue: string, token: CancellationToken): Promise<QuickOpenModel> {
|
||||
if (this.waitedForExtensionsRegistered) {
|
||||
return this.doGetResults(searchValue, token);
|
||||
}
|
||||
@@ -411,11 +419,10 @@ export class CommandsHandler extends QuickOpenHandler {
|
||||
// a chance to register so that the complete set of commands shows up as result
|
||||
// We do not want to delay functionality beyond that time though to keep the commands
|
||||
// functional.
|
||||
return Promise.race([timeout(800), this.extensionService.whenInstalledExtensionsRegistered().then(() => undefined)]).then(() => {
|
||||
this.waitedForExtensionsRegistered = true;
|
||||
await Promise.race([timeout(800).then(), this.extensionService.whenInstalledExtensionsRegistered()]);
|
||||
this.waitedForExtensionsRegistered = true;
|
||||
|
||||
return this.doGetResults(searchValue, token);
|
||||
});
|
||||
return this.doGetResults(searchValue, token);
|
||||
}
|
||||
|
||||
private doGetResults(searchValue: string, token: CancellationToken): Promise<QuickOpenModel> {
|
||||
@@ -583,6 +590,10 @@ export class CommandsHandler extends QuickOpenHandler {
|
||||
getEmptyLabel(searchString: string): string {
|
||||
return nls.localize('noCommandsMatching', "No commands matching");
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.disposables.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
registerEditorAction(CommandPaletteEditorAction);
|
||||
|
||||
@@ -495,7 +495,7 @@ export class GotoSymbolHandler extends QuickOpenHandler {
|
||||
return this.cachedOutlineRequest;
|
||||
}
|
||||
|
||||
private doGetActiveOutline(): Promise<OutlineModel | null> {
|
||||
private async doGetActiveOutline(): Promise<OutlineModel | null> {
|
||||
const activeTextEditorWidget = this.editorService.activeTextEditorWidget;
|
||||
if (activeTextEditorWidget) {
|
||||
let model = activeTextEditorWidget.getModel();
|
||||
@@ -504,13 +504,13 @@ export class GotoSymbolHandler extends QuickOpenHandler {
|
||||
}
|
||||
|
||||
if (model && types.isFunction((<ITextModel>model).getLanguageIdentifier)) {
|
||||
return Promise.resolve(asPromise(() => getDocumentSymbols(<ITextModel>model, true, this.pendingOutlineRequest!.token)).then(entries => {
|
||||
return new OutlineModel(this.toQuickOpenEntries(entries));
|
||||
}));
|
||||
const entries = await asPromise(() => getDocumentSymbols(<ITextModel>model, true, this.pendingOutlineRequest!.token));
|
||||
|
||||
return new OutlineModel(this.toQuickOpenEntries(entries));
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.resolve(null);
|
||||
return null;
|
||||
}
|
||||
|
||||
decorateOutline(fullRange: IRange, startRange: IRange, editor: IEditor, group: IEditorGroup): void {
|
||||
|
||||
Reference in New Issue
Block a user