Skip to content

Commit 88f0903

Browse files
authored
fix(codewhisperer): additional cases for auto-trigger (#2951)
Fixes 2 additional regression cases found for auto-trigger after #2899 refactoring: * it's not triggering when user press multiple Enter key * In Cloud9, every document change is triggering recommendation as IntelliSenseAcceptance because the length of changedText for Cloud9 content change event is greater than 1
1 parent 04e3df0 commit 88f0903

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/codewhisperer/service/inlineCompletionService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class CodeWhispererInlineCompletionItemProvider implements vscode.InlineCompleti
105105
const iteratingIndexes = this.getIteratingIndexes()
106106
for (const i of iteratingIndexes) {
107107
const r = RecommendationHandler.instance.recommendations[i]
108-
if (r.content.startsWith(prefix)) {
108+
if (r.content.startsWith(prefix) && r.content.length > 0) {
109109
this.activeItemIndex = i
110110
items.push({
111111
insertText: this.getGhostText(prefix, r.content),

src/codewhisperer/service/keyStrokeHandler.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ export class KeyStrokeHandler {
8787
case DocumentChangedSource.IntelliSense: {
8888
this.keyStrokeCount += 1
8989
triggerType = 'IntelliSenseAcceptance'
90-
9190
break
9291
}
9392
case DocumentChangedSource.RegularKey: {
94-
this.keyStrokeCount += 1
93+
// text length can be greater than 1 in Cloud9
94+
this.keyStrokeCount += event.contentChanges[0].text.length
9595
if (
9696
this.keyStrokeCount >= 15 &&
9797
duration >= CodeWhispererConstants.invocationTimeIntervalThreshold
@@ -222,8 +222,8 @@ export class DefaultDocumentChangedType extends DocumentChangedType {
222222
return DocumentChangedSource.Unknown
223223
}
224224

225-
// Case when event.contentChanges.length > 1
226-
if (this.contentChanges.length > 1) {
225+
// event.contentChanges.length will be 2 when user press Enter key multiple times
226+
if (this.contentChanges.length > 2) {
227227
return DocumentChangedSource.Reformatting
228228
}
229229

@@ -244,12 +244,12 @@ export class DefaultDocumentChangedType extends DocumentChangedType {
244244
} else if (new RegExp('^[ ]+$').test(changedText)) {
245245
// single line && single place reformat should consist of space chars only
246246
return DocumentChangedSource.Reformatting
247-
} else if (new RegExp('^[\\S]+$').test(changedText)) {
247+
} else if (new RegExp('^[\\S]+$').test(changedText) && !isCloud9()) {
248248
// match single word only, which is general case for intellisense suggestion, it's still possible intllisense suggest
249249
// multi-words code snippets
250250
return DocumentChangedSource.IntelliSense
251251
} else {
252-
return DocumentChangedSource.Unknown
252+
return isCloud9() ? DocumentChangedSource.RegularKey : DocumentChangedSource.Unknown
253253
}
254254
}
255255

0 commit comments

Comments
 (0)