From 793f638d1bef7217f616768533925684acc82721 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 18 Mar 2019 12:29:56 +0100 Subject: [PATCH] resolve document when running document sumbol command --- src/vs/editor/contrib/quickOpen/quickOpen.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/quickOpen/quickOpen.ts b/src/vs/editor/contrib/quickOpen/quickOpen.ts index 48c01f13058..75c4bbbabf2 100644 --- a/src/vs/editor/contrib/quickOpen/quickOpen.ts +++ b/src/vs/editor/contrib/quickOpen/quickOpen.ts @@ -11,6 +11,7 @@ import { registerLanguageCommand } from 'vs/editor/browser/editorExtensions'; import { DocumentSymbol, DocumentSymbolProviderRegistry } from 'vs/editor/common/modes'; import { IModelService } from 'vs/editor/common/services/modelService'; import { CancellationToken } from 'vs/base/common/cancellation'; +import { ITextModelService } from 'vs/editor/common/services/resolverService'; export function getDocumentSymbols(model: ITextModel, flat: boolean, token: CancellationToken): Promise { @@ -70,8 +71,20 @@ registerLanguageCommand('_executeDocumentSymbolProvider', function (accessor, ar throw illegalArgument('resource'); } const model = accessor.get(IModelService).getModel(resource); - if (!model) { - throw illegalArgument('resource'); + if (model) { + return getDocumentSymbols(model, false, CancellationToken.None); } - return getDocumentSymbols(model, false, CancellationToken.None); + + return accessor.get(ITextModelService).createModelReference(resource).then(reference => { + return new Promise((resolve, reject) => { + try { + const result = getDocumentSymbols(model, false, CancellationToken.None); + resolve(result); + } catch (err) { + reject(err); + } + }).finally(() => { + reference.dispose(); + }); + }); }); -- GitLab