From fb502bc9269d0ef82e8b8d1251ae8e15324f91fa Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sun, 19 Apr 2020 16:46:16 +0200 Subject: [PATCH] smart copying for Windows line breaks (fixes #1558) --- .../src/frontends/xtermFrontend.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/terminus-terminal/src/frontends/xtermFrontend.ts b/terminus-terminal/src/frontends/xtermFrontend.ts index 0feeab6d..d461315b 100644 --- a/terminus-terminal/src/frontends/xtermFrontend.ts +++ b/terminus-terminal/src/frontends/xtermFrontend.ts @@ -167,15 +167,28 @@ export class XTermFrontend extends Frontend { } copySelection (): void { - const text = this.getSelection() + let text = this.getSelection() + let lines = text.split('\n') + if (lines.some(x => x.length === this.xterm.cols)) { + text = '' + let lastLineWraps = false + for (let line of lines) { + if (!lastLineWraps) { + text += '\n' + } + text += line + lastLineWraps = line.length === this.xterm.cols + } + } + if (text.length < 1024 * 32) { require('electron').remote.clipboard.write({ - text: this.getSelection(), + text: text, html: this.getSelectionAsHTML(), }) } else { require('electron').remote.clipboard.write({ - text: this.getSelection(), + text: text, }) } }