Skip to content

Commit cee2a0a

Browse files
committed
debt - quick outline cancellation token
1 parent 7845ce8 commit cee2a0a

4 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/vs/editor/contrib/quickOpen/quickOpen.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,20 @@
77

88
import { illegalArgument, onUnexpectedExternalError } from 'vs/base/common/errors';
99
import { URI } from 'vs/base/common/uri';
10-
import { TPromise } from 'vs/base/common/winjs.base';
1110
import { Range } from 'vs/editor/common/core/range';
1211
import { ITextModel } from 'vs/editor/common/model';
1312
import { registerLanguageCommand } from 'vs/editor/browser/editorExtensions';
1413
import { DocumentSymbol, DocumentSymbolProviderRegistry } from 'vs/editor/common/modes';
1514
import { IModelService } from 'vs/editor/common/services/modelService';
16-
import { asWinJsPromise } from 'vs/base/common/async';
15+
import { CancellationToken } from 'vs/base/common/cancellation';
1716

18-
export function getDocumentSymbols(model: ITextModel): TPromise<DocumentSymbol[]> {
17+
export function getDocumentSymbols(model: ITextModel, token: CancellationToken): Thenable<DocumentSymbol[]> {
1918

2019
let roots: DocumentSymbol[] = [];
2120

2221
let promises = DocumentSymbolProviderRegistry.all(model).map(support => {
2322

24-
return asWinJsPromise(token => support.provideDocumentSymbols(model, token)).then(result => {
23+
return Promise.resolve(support.provideDocumentSymbols(model, token)).then(result => {
2524
if (Array.isArray(result)) {
2625
roots.push(...result);
2726
}
@@ -30,7 +29,7 @@ export function getDocumentSymbols(model: ITextModel): TPromise<DocumentSymbol[]
3029
});
3130
});
3231

33-
return TPromise.join(promises).then(() => {
32+
return Promise.all(promises).then(() => {
3433
let flatEntries: DocumentSymbol[] = [];
3534
flatten(flatEntries, roots, '');
3635
flatEntries.sort(compareEntriesUsingStart);
@@ -69,5 +68,5 @@ registerLanguageCommand('_executeDocumentSymbolProvider', function (accessor, ar
6968
if (!model) {
7069
throw illegalArgument('resource');
7170
}
72-
return getDocumentSymbols(model);
71+
return getDocumentSymbols(model, CancellationToken.None);
7372
});

src/vs/editor/standalone/browser/quickOpen/quickOutline.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
2323
import { Range, IRange } from 'vs/editor/common/core/range';
2424
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
2525
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
26+
import { CancellationToken } from 'vs/base/common/cancellation';
2627

2728
let SCOPE_PREFIX = ':';
2829

@@ -140,13 +141,13 @@ export class QuickOutlineAction extends BaseEditorQuickOpenAction {
140141
}
141142

142143
// Resolve outline
143-
return getDocumentSymbols(model).then((result: DocumentSymbol[]) => {
144+
return TPromise.wrap(getDocumentSymbols(model, CancellationToken.None).then((result: DocumentSymbol[]) => {
144145
if (result.length === 0) {
145146
return;
146147
}
147148

148149
this._run(editor, result);
149-
});
150+
}));
150151
}
151152

152153
private _run(editor: ICodeEditor, result: DocumentSymbol[]): void {

src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { overviewRulerRangeHighlight } from 'vs/editor/common/view/editorColorRe
2626
import { GroupIdentifier, IEditorInput } from 'vs/workbench/common/editor';
2727
import { IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService';
2828
import { IEditorGroup } from 'vs/workbench/services/group/common/editorGroupsService';
29+
import { asWinJsPromise } from 'vs/base/common/async';
2930

3031
export const GOTO_SYMBOL_PREFIX = '@';
3132
export const SCOPE_PREFIX = ':';
@@ -483,7 +484,7 @@ export class GotoSymbolHandler extends QuickOpenHandler {
483484
return TPromise.as(this.outlineToModelCache[modelId]);
484485
}
485486

486-
return getDocumentSymbols(<ITextModel>model).then(entries => {
487+
return asWinJsPromise(token => getDocumentSymbols(<ITextModel>model, token)).then(entries => {
487488

488489
const model = new OutlineModel(this.toQuickOpenEntries(entries));
489490

src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ suite('ExtHostLanguageFeatures', function () {
163163

164164
return rpcProtocol.sync().then(() => {
165165

166-
return getDocumentSymbols(model).then(value => {
166+
return getDocumentSymbols(model, CancellationToken.None).then(value => {
167167
assert.equal(value.length, 1);
168168
});
169169
});
@@ -178,7 +178,7 @@ suite('ExtHostLanguageFeatures', function () {
178178

179179
return rpcProtocol.sync().then(() => {
180180

181-
return getDocumentSymbols(model).then(value => {
181+
return getDocumentSymbols(model, CancellationToken.None).then(value => {
182182
assert.equal(value.length, 1);
183183

184184
let entry = value[0];

0 commit comments

Comments
 (0)