From 6a9da971637d5b4f06db12cfc97b1a9b02df3725 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Thu, 26 Jul 2018 11:15:34 -0700 Subject: [PATCH] Cover select to word downwards --- src/SelectionManager.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/SelectionManager.ts b/src/SelectionManager.ts index 20009105..3086fd41 100644 --- a/src/SelectionManager.ts +++ b/src/SelectionManager.ts @@ -831,7 +831,7 @@ export class SelectionManager extends EventEmitter implements ISelectionManager protected _selectWordAt(coords: [number, number], allowWhitespaceOnlySelection: boolean): void { const wordPosition = this._getWordAt(coords, allowWhitespaceOnlySelection); if (wordPosition) { - // Adjust negative start values + // Adjust negative start value while (wordPosition.start < 0) { wordPosition.start += this._terminal.cols; coords[1]--; @@ -848,7 +848,21 @@ export class SelectionManager extends EventEmitter implements ISelectionManager private _selectToWordAt(coords: [number, number]): void { const wordPosition = this._getWordAt(coords, true); if (wordPosition) { - this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? wordPosition.start : (wordPosition.start + wordPosition.length), coords[1]]; + let endRow = coords[1]; + + // Adjust negative start value + while (wordPosition.start < 0) { + wordPosition.start += this._terminal.cols; + endRow--; + } + + // Adjust wrapped length value + while (wordPosition.start + wordPosition.length > this._terminal.cols) { + wordPosition.length -= this._terminal.cols; + endRow++; + } + + this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? wordPosition.start : (wordPosition.start + wordPosition.length), endRow]; } }