diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 689b03e7ebc221e87184d2dc0d84c62af239c49a..23077803ab15c6e310069f1e3eaa178726f57590 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -607,12 +607,11 @@ export class TerminalPasteAction extends Action { super(id, label); } - public run(event?: any): Promise { + public async run(event?: any): Promise { const instance = this.terminalService.getActiveOrCreateInstance(); if (instance) { - instance.paste(); + await instance.paste(); } - return Promise.resolve(undefined); } } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 87a9b072e11a80c03c0f6413492f44b76ac397f2..31cdb6fb01b3b63fe8ed6c89dfea174838ccb7a4 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -869,9 +869,9 @@ export class TerminalInstance implements ITerminalInstance { return this._xtermReadyPromise.then(() => this.focus(force)); } - public paste(): void { + public async paste(): Promise { this.focus(); - document.execCommand('paste'); + this._xterm._core._coreService.triggerDataEvent(await this._clipboardService.readText(), true); } public write(text: string): void { diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 18317305a9bded853f85a42cca2ebb09718d59c4..f427fd3ef0e6c9c5f3c87ea5f298a751cf562896 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -588,7 +588,7 @@ export interface ITerminalInstance { /** * Focuses and pastes the contents of the clipboard into the terminal instance. */ - paste(): void; + paste(): Promise; /** * Send text to the terminal instance. The text is written to the stdin of the underlying pty