diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 046f27a3f10..7c817a42388 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -3659,6 +3659,18 @@ declare module 'vscode' { */ export function showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable; + /** + * Show the given document in a text editor. A [column](#ViewColumn) can be provided + * to control where the editor is being shown. Might change the [active editor](#window.activeTextEditor). + * + * @param document A text document to be shown. + * @param column A view column in which the editor should be shown. The default is the [one](#ViewColumn.One), other values + * are adjusted to be __Min(column, columnCount + 1)__. + * @param options Editor options for showing the text editor. + * @return A promise that resolves to an [editor](#TextEditor). + */ + export function showTextDocument(document: TextDocument, column?: ViewColumn, options?: { preserveFocus?: boolean, pinned?: boolean }): Thenable; + /** * Create a TextEditorDecorationType that can be used to add decorations to text editors. * diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 4c4f95ed22c..5bf4fce8936 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -134,7 +134,10 @@ export abstract class MainThreadDocumentsShape { } export abstract class MainThreadEditorsShape { - $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocus: boolean): TPromise { throw ni(); } + $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocus: boolean): TPromise; + $tryShowTextDocument(resource: URI, position: EditorPosition, options: { preserveFocus: boolean, pinned: boolean }): TPromise; + $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocusOrOptions: boolean | { preserveFocus: boolean, pinned: boolean }): TPromise; + $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocusOrOptions: boolean | { preserveFocus: boolean, pinned: boolean }): TPromise { throw ni(); } $registerTextEditorDecorationType(key: string, options: editorCommon.IDecorationRenderOptions): void { throw ni(); } $removeTextEditorDecorationType(key: string): void { throw ni(); } $tryShowEditor(id: string, position: EditorPosition): TPromise { throw ni(); } diff --git a/src/vs/workbench/api/node/extHostTextEditors.ts b/src/vs/workbench/api/node/extHostTextEditors.ts index db7f7cb4e9c..caf670f9b44 100644 --- a/src/vs/workbench/api/node/extHostTextEditors.ts +++ b/src/vs/workbench/api/node/extHostTextEditors.ts @@ -55,8 +55,10 @@ export class ExtHostEditors extends ExtHostEditorsShape { return this._extHostDocumentsAndEditors.allEditors(); } - showTextDocument(document: vscode.TextDocument, column: vscode.ViewColumn, preserveFocus: boolean): TPromise { - return this._proxy.$tryShowTextDocument(document.uri, TypeConverters.fromViewColumn(column), preserveFocus).then(id => { + showTextDocument(document: vscode.TextDocument, column: vscode.ViewColumn, preserveFocus: boolean): TPromise; + showTextDocument(document: vscode.TextDocument, column: vscode.ViewColumn, options: { preserveFocus: boolean, pinned: boolean }): TPromise; + showTextDocument(document: vscode.TextDocument, column: vscode.ViewColumn, preserveFocusOrOptions: boolean | { preserveFocus: boolean, pinned: boolean }): TPromise { + return this._proxy.$tryShowTextDocument(document.uri, TypeConverters.fromViewColumn(column), preserveFocusOrOptions).then(id => { let editor = this._extHostDocumentsAndEditors.getEditor(id); if (editor) { return editor; diff --git a/src/vs/workbench/api/node/mainThreadEditors.ts b/src/vs/workbench/api/node/mainThreadEditors.ts index eaf20d7493f..b6582e5565a 100644 --- a/src/vs/workbench/api/node/mainThreadEditors.ts +++ b/src/vs/workbench/api/node/mainThreadEditors.ts @@ -104,11 +104,27 @@ export class MainThreadEditors extends MainThreadEditorsShape { // --- from extension host process - $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocus: boolean): TPromise { + $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocus: boolean): TPromise; + $tryShowTextDocument(resource: URI, position: EditorPosition, options: { preserveFocus: boolean, pinned: boolean }): TPromise; + $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocusOrOptions: boolean | { preserveFocus: boolean, pinned: boolean }): TPromise; + $tryShowTextDocument(resource: URI, position: EditorPosition, preserveFocusOrOptions: boolean | { preserveFocus: boolean, pinned: boolean }): TPromise { + + let options: { preserveFocus: boolean, pinned: boolean }; + if (typeof preserveFocusOrOptions === 'object') { + options = { + preserveFocus: preserveFocusOrOptions.preserveFocus, + pinned: preserveFocusOrOptions.pinned === undefined ? true : preserveFocusOrOptions.pinned + }; + } else { + options = { + preserveFocus: preserveFocusOrOptions, + pinned: true + }; + } const input = { resource, - options: { preserveFocus, pinned: true } + options }; return this._workbenchEditorService.openEditor(input, position).then(editor => {