auto-trim single-line clipboard contents (fixes #2677)

This commit is contained in:
Eugene Pankov 2020-06-08 10:04:29 +02:00
parent 4ab0b51d87
commit 69a0b46a20
No known key found for this signature in database
GPG Key ID: 5896FCBBDD1CF4F4
2 changed files with 19 additions and 19 deletions

View File

@ -308,9 +308,11 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
data = data.replace(/\n/g, '\r') data = data.replace(/\n/g, '\r')
} }
if (!this.alternateScreenActive && data.includes('\r') && this.config.store.terminal.warnOnMultilinePaste) { if (!this.alternateScreenActive) {
const canTrim = !data.trim().includes('\r') data = data.trim()
const buttons = canTrim ? ['Paste', 'Trim whitespace and paste', 'Cancel'] : ['Paste', 'Cancel']
if (data.includes('\r') && this.config.store.terminal.warnOnMultilinePaste) {
const buttons = ['Paste', 'Cancel']
const result = (await this.electron.showMessageBox( const result = (await this.electron.showMessageBox(
this.hostApp.getWindow(), this.hostApp.getWindow(),
{ {
@ -319,14 +321,12 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
message: `Paste multiple lines?`, message: `Paste multiple lines?`,
buttons, buttons,
defaultId: 0, defaultId: 0,
cancelId: buttons.length - 1, cancelId: 1,
} }
)).response )).response
if (result === buttons.length - 1) { if (result === 1) {
return return
} }
if (result === 1) {
data = data.trim()
} }
} }
this.sendInput(data) this.sendInput(data)

View File

@ -124,7 +124,7 @@ export class XTermFrontend extends Frontend {
} }
this.xterm.buffer.onBufferChange(() => { this.xterm.buffer.onBufferChange(() => {
const altBufferActive = this.xterm.buffer.active === this.xterm.buffer.alternate const altBufferActive = this.xterm.buffer.active.type === 'alternate'
this.alternateScreenActive.next(altBufferActive) this.alternateScreenActive.next(altBufferActive)
}) })
} }