Skip to content

Commit 0a435fb

Browse files
authored
fix: cursorWordPart commands cannot handle camel case word with number (microsoft#147074)
* Add strings.isAsciiDigit * Update _moveWordPart to treat digits like lowercase ascii
1 parent 396896e commit 0a435fb

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/vs/base/common/strings.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,10 @@ export function compareSubstringIgnoreCase(a: string, b: string, aStart: number
378378
return 0;
379379
}
380380

381+
export function isAsciiDigit(code: number): boolean {
382+
return code >= CharCode.Digit0 && code <= CharCode.Digit9;
383+
}
384+
381385
export function isLowerAsciiLetter(code: number): boolean {
382386
return code >= CharCode.a && code <= CharCode.z;
383387
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ export class WordOperations {
246246
return new Position(lineNumber, column);
247247
}
248248

249-
if (strings.isLowerAsciiLetter(left) && strings.isUpperAsciiLetter(right)) {
249+
if ((strings.isLowerAsciiLetter(left) || strings.isAsciiDigit(left)) && strings.isUpperAsciiLetter(right)) {
250250
// camelCaseVariables
251251
return new Position(lineNumber, column);
252252
}
@@ -255,7 +255,7 @@ export class WordOperations {
255255
// thisIsACamelCaseWithOneLetterWords
256256
if (column + 1 < maxColumn) {
257257
const rightRight = lineContent.charCodeAt(column);
258-
if (strings.isLowerAsciiLetter(rightRight)) {
258+
if (strings.isLowerAsciiLetter(rightRight) || strings.isAsciiDigit(rightRight)) {
259259
return new Position(lineNumber, column);
260260
}
261261
}
@@ -348,7 +348,7 @@ export class WordOperations {
348348
return new Position(lineNumber, column);
349349
}
350350

351-
if (strings.isLowerAsciiLetter(left) && strings.isUpperAsciiLetter(right)) {
351+
if ((strings.isLowerAsciiLetter(left) || strings.isAsciiDigit(left)) && strings.isUpperAsciiLetter(right)) {
352352
// camelCaseVariables
353353
return new Position(lineNumber, column);
354354
}
@@ -357,7 +357,7 @@ export class WordOperations {
357357
// thisIsACamelCaseWithOneLetterWords
358358
if (column + 1 < maxColumn) {
359359
const rightRight = lineContent.charCodeAt(column);
360-
if (strings.isLowerAsciiLetter(rightRight)) {
360+
if (strings.isLowerAsciiLetter(rightRight) || strings.isAsciiDigit(rightRight)) {
361361
return new Position(lineNumber, column);
362362
}
363363
}

0 commit comments

Comments
 (0)