diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 099173ae6db..e0732599290 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -481,7 +481,7 @@ export function createApiFactory( createWebviewPanel(viewType: string, title: string, showOptions: vscode.ViewColumn | { viewColumn: vscode.ViewColumn, preserveFocus?: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions): vscode.WebviewPanel { return extHostWebviews.createWebviewPanel(extension, viewType, title, showOptions, options); }, - createTerminal(nameOrOptions: vscode.TerminalOptions | string, shellPath?: string, shellArgs?: string[]): vscode.Terminal { + createTerminal(nameOrOptions?: vscode.TerminalOptions | string, shellPath?: string, shellArgs?: string[]): vscode.Terminal { if (typeof nameOrOptions === 'object') { return extHostTerminalService.createTerminalFromOptions(nameOrOptions); } @@ -506,7 +506,7 @@ export function createApiFactory( return extHostUrls.registerUriHandler(extension.identifier, handler); }, createQuickPick(): vscode.QuickPick { - return extHostQuickOpen.createQuickPick(extension.identifier, extension.enableProposedApi); + return extHostQuickOpen.createQuickPick(extension.identifier, !!extension.enableProposedApi); }, createInputBox(): vscode.InputBox { return extHostQuickOpen.createInputBox(extension.identifier); @@ -591,8 +591,7 @@ export function createApiFactory( return uriPromise.then(uri => { return extHostDocuments.ensureDocumentData(uri).then(() => { - const data = extHostDocuments.getDocumentData(uri); - return data && data.document; + return extHostDocuments.getDocument(uri); }); }); }, diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 2dac214ec89..0bd07056ef0 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -908,7 +908,7 @@ export type CodeInsetDto = ObjectIdentifier & codeInset.ICodeInsetSymbol; export interface ExtHostLanguageFeaturesShape { $provideDocumentSymbols(handle: number, resource: UriComponents, token: CancellationToken): Promise; $provideCodeLenses(handle: number, resource: UriComponents, token: CancellationToken): Promise; - $resolveCodeLens(handle: number, resource: UriComponents, symbol: CodeLensDto, token: CancellationToken): Promise; + $resolveCodeLens(handle: number, resource: UriComponents, symbol: CodeLensDto, token: CancellationToken): Promise; $provideCodeInsets(handle: number, resource: UriComponents, token: CancellationToken): Promise; $resolveCodeInset(handle: number, resource: UriComponents, symbol: CodeInsetDto, token: CancellationToken): Promise; $provideDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; @@ -934,8 +934,8 @@ export interface ExtHostLanguageFeaturesShape { $provideDocumentLinks(handle: number, resource: UriComponents, token: CancellationToken): Promise; $resolveDocumentLink(handle: number, link: LinkDto, token: CancellationToken): Promise; $provideDocumentColors(handle: number, resource: UriComponents, token: CancellationToken): Promise; - $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise; - $provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext, token: CancellationToken): Promise; + $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise; + $provideFoldingRanges(handle: number, resource: UriComponents, context: modes.FoldingContext, token: CancellationToken): Promise; $provideSelectionRanges(handle: number, resource: UriComponents, positions: IPosition[], token: CancellationToken): Promise; } diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index fc0a93e2f08..df6a682c648 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -19,7 +19,7 @@ import { MainContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesSh import { regExpLeadsToEndlessLoop, regExpFlags } from 'vs/base/common/strings'; import { IPosition } from 'vs/editor/common/core/position'; import { IRange, Range as EditorRange } from 'vs/editor/common/core/range'; -import { isFalsyOrEmpty, isNonEmptyArray } from 'vs/base/common/arrays'; +import { isFalsyOrEmpty, isNonEmptyArray, coalesce } from 'vs/base/common/arrays'; import { isObject } from 'vs/base/common/types'; import { ISelection, Selection } from 'vs/editor/common/core/selection'; import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; @@ -74,7 +74,7 @@ class DocumentSymbolAdapter { containerName: info.containerName, range: typeConvert.Range.from(info.location.range), selectionRange: typeConvert.Range.from(info.location.range), - children: [] + children: [] as DocumentSymbol[] }; while (true) { @@ -155,8 +155,8 @@ class CodeInsetAdapter { private readonly _provider: vscode.CodeInsetProvider ) { } - provideCodeInsets(resource: URI, token: CancellationToken): Promise { - const doc = this._documents.getDocumentData(resource).document; + provideCodeInsets(resource: URI, token: CancellationToken): Promise { + const doc = this._documents.getDocument(resource); return asPromise(() => this._provider.provideCodeInsets(doc, token)).then(insets => { if (Array.isArray(insets)) { return insets.map(inset => { @@ -572,10 +572,10 @@ class RenameAdapter { const doc = this._documents.getDocument(resource); let pos = typeConvert.Position.to(position); - return asPromise(() => this._provider.prepareRename(doc, pos, token)).then(rangeOrLocation => { + return asPromise(() => this._provider.prepareRename!(doc, pos, token)).then(rangeOrLocation => { let range: vscode.Range | undefined; - let text: string; + let text: string | undefined; if (Range.isRange(rangeOrLocation)) { range = rangeOrLocation; text = doc.getText(rangeOrLocation); @@ -924,11 +924,11 @@ class SelectionRangeAdapter { ) { } provideSelectionRanges(resource: URI, pos: IPosition[], token: CancellationToken): Promise { - const { document } = this._documents.getDocumentData(resource); + const document = this._documents.getDocument(resource); const positions = pos.map(typeConvert.Position.to); return asPromise(() => this._provider.provideSelectionRanges(document, positions, token)).then(allProviderRanges => { - if (isFalsyOrEmpty(allProviderRanges)) { + if (!isNonEmptyArray(allProviderRanges)) { return []; } if (allProviderRanges.length !== positions.length) { @@ -1006,12 +1006,12 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { this._webviewProxy = mainContext.getProxy(MainContext.MainThreadWebviews); } - private _transformDocumentSelector(selector: vscode.DocumentSelector): ISerializedDocumentFilter[] { + private _transformDocumentSelector(selector: vscode.DocumentSelector): Array { if (Array.isArray(selector)) { - return selector.map(sel => this._doTransformDocumentSelector(sel)); + return coalesce(selector.map(sel => this._doTransformDocumentSelector(sel))); } - return [this._doTransformDocumentSelector(selector)]; + return coalesce([this._doTransformDocumentSelector(selector)]); } private _doTransformDocumentSelector(selector: string | vscode.DocumentFilter): ISerializedDocumentFilter | undefined { @@ -1035,7 +1035,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return undefined; } - private _transformScheme(scheme: string): string { + private _transformScheme(scheme: string | undefined): string | undefined { if (this._schemeTransformer && typeof scheme === 'string') { return this._schemeTransformer.transformOutgoing(scheme); } @@ -1126,7 +1126,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._withAdapter(handle, CodeLensAdapter, adapter => adapter.provideCodeLenses(URI.revive(resource), token)); } - $resolveCodeLens(handle: number, resource: UriComponents, symbol: modes.ICodeLensSymbol, token: CancellationToken): Promise { + $resolveCodeLens(handle: number, resource: UriComponents, symbol: modes.ICodeLensSymbol, token: CancellationToken): Promise { return this._withAdapter(handle, CodeLensAdapter, adapter => adapter.resolveCodeLens(URI.revive(resource), symbol, token)); } @@ -1382,7 +1382,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._withAdapter(handle, ColorProviderAdapter, adapter => adapter.provideColors(URI.revive(resource), token)); } - $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise { + $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise { return this._withAdapter(handle, ColorProviderAdapter, adapter => adapter.provideColorPresentations(URI.revive(resource), colorInfo, token)); } @@ -1392,7 +1392,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { return this._createDisposable(handle); } - $provideFoldingRanges(handle: number, resource: UriComponents, context: vscode.FoldingContext, token: CancellationToken): Promise { + $provideFoldingRanges(handle: number, resource: UriComponents, context: vscode.FoldingContext, token: CancellationToken): Promise { return this._withAdapter(handle, FoldingProviderAdapter, adapter => adapter.provideFoldingRanges(URI.revive(resource), context, token)); }