From b68f601fbba0ca33d0aa10d2630461c53fca4192 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sat, 27 Oct 2018 13:37:29 +0200 Subject: [PATCH] remove whitespace from selection's end (fixes #327) --- terminus-terminal/src/frontends/htermFrontend.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/terminus-terminal/src/frontends/htermFrontend.ts b/terminus-terminal/src/frontends/htermFrontend.ts index 85658ffa..7c1ea6a0 100644 --- a/terminus-terminal/src/frontends/htermFrontend.ts +++ b/terminus-terminal/src/frontends/htermFrontend.ts @@ -230,6 +230,18 @@ export class HTermFrontend extends Frontend { this.contentUpdated.next() return ret } + + const _expandSelection = screen.expandSelection.bind(screen) + screen.expandSelection = (selection) => { + // Drop whitespace at the end of selection + let range = selection.getRangeAt(0) + if (range.endOffset > 0 && range.endContainer.nodeType === 3 && range.endContainer.textContent !== '') { + while (/[\s\S]+\s$/.test(range.endContainer.textContent.substr(0,range.endOffset))) { + range.setEnd(range.endContainer, range.endOffset - 1) + } + } + _expandSelection(selection) + } } const _measureCharacterSize = this.term.scrollPort_.measureCharacterSize.bind(this.term.scrollPort_)