Skip to content

Commit 9396ee5

Browse files
committed
1 parent 6428c00 commit 9396ee5

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

src/vs/editor/common/controller/cursorWordOperations.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -384,20 +384,20 @@ export class WordOperations {
384384
public static word(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState, inSelectionMode: boolean, position: Position): SingleCursorState {
385385
const wordSeparators = getMapForWordSeparators(config.wordSeparators);
386386
let prevWord = WordOperations._findPreviousWordOnLine(wordSeparators, model, position);
387-
let isInPrevWord = (prevWord && prevWord.wordType === WordType.Regular && prevWord.start < position.column - 1 && position.column - 1 <= prevWord.end);
388387
let nextWord = WordOperations._findNextWordOnLine(wordSeparators, model, position);
389-
let isInNextWord = (nextWord && nextWord.wordType === WordType.Regular && nextWord.start < position.column - 1 && position.column - 1 <= nextWord.end);
390388

391389
if (!inSelectionMode) {
392390
// Entering word selection for the first time
391+
const isTouchingPrevWord = (prevWord && prevWord.wordType === WordType.Regular && prevWord.start <= position.column - 1 && position.column - 1 <= prevWord.end);
392+
const isTouchingNextWord = (nextWord && nextWord.wordType === WordType.Regular && nextWord.start <= position.column - 1 && position.column - 1 <= nextWord.end);
393393

394394
let startColumn: number;
395395
let endColumn: number;
396396

397-
if (isInPrevWord) {
397+
if (isTouchingPrevWord) {
398398
startColumn = prevWord.start + 1;
399399
endColumn = prevWord.end + 1;
400-
} else if (isInNextWord) {
400+
} else if (isTouchingNextWord) {
401401
startColumn = nextWord.start + 1;
402402
endColumn = nextWord.end + 1;
403403
} else {
@@ -419,13 +419,16 @@ export class WordOperations {
419419
);
420420
}
421421

422+
const isInsidePrevWord = (prevWord && prevWord.wordType === WordType.Regular && prevWord.start < position.column - 1 && position.column - 1 < prevWord.end);
423+
const isInsideNextWord = (nextWord && nextWord.wordType === WordType.Regular && nextWord.start < position.column - 1 && position.column - 1 < nextWord.end);
424+
422425
let startColumn: number;
423426
let endColumn: number;
424427

425-
if (isInPrevWord) {
428+
if (isInsidePrevWord) {
426429
startColumn = prevWord.start + 1;
427430
endColumn = prevWord.end + 1;
428-
} else if (isInNextWord) {
431+
} else if (isInsideNextWord) {
429432
startColumn = nextWord.start + 1;
430433
endColumn = nextWord.end + 1;
431434
} else {

src/vs/editor/test/browser/controller/cursor.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,21 @@ suite('Editor Controller - Regression tests', () => {
18021802
model.dispose();
18031803
});
18041804

1805+
test('issue #12887: Double-click highlighting separating white space', () => {
1806+
let model = createTextModel(
1807+
[
1808+
'abc def'
1809+
].join('\n')
1810+
);
1811+
1812+
withTestCodeEditor(null, { model: model }, (editor, cursor) => {
1813+
CoreNavigationCommands.WordSelect.runCoreEditorCommand(cursor, { position: new Position(1, 5) });
1814+
assert.deepEqual(cursor.getSelection(), new Selection(1, 5, 1, 8));
1815+
});
1816+
1817+
model.dispose();
1818+
});
1819+
18051820
test('issue #9675: Undo/Redo adds a stop in between CHN Characters', () => {
18061821
usingCursor({
18071822
text: [

0 commit comments

Comments
 (0)