@@ -42,18 +42,22 @@ export class RecommendationService {
4242 position : Position ,
4343 context : InlineCompletionContext ,
4444 token : CancellationToken ,
45- options : GetAllRecommendationsOptions = { emitTelemetry : true , showUi : true }
45+ options : GetAllRecommendationsOptions = { emitTelemetry : true , showUi : true } ,
46+ editsStreakPartialResultToken ?: number | string
4647 ) {
4748 // Record that a regular request is being made
4849 this . cursorUpdateRecorder ?. recordCompletionRequest ( )
4950
50- const request : InlineCompletionWithReferencesParams = {
51+ let request : InlineCompletionWithReferencesParams = {
5152 textDocument : {
5253 uri : document . uri . toString ( ) ,
5354 } ,
5455 position,
5556 context,
5657 }
58+ if ( editsStreakPartialResultToken ) {
59+ request = { ...request , partialResultToken : editsStreakPartialResultToken }
60+ }
5761 const requestStartTime = globals . clock . Date . now ( )
5862 const statusBar = CodeWhispererStatusBarManager . instance
5963
@@ -113,18 +117,26 @@ export class RecommendationService {
113117 )
114118
115119 // If there are more results to fetch, handle them in the background
116- try {
117- while ( result . partialResultToken ) {
118- const paginatedRequest = { ...request , partialResultToken : result . partialResultToken }
119- result = await languageClient . sendRequest (
120- inlineCompletionWithReferencesRequestType . method ,
121- paginatedRequest ,
122- token
123- )
124- this . sessionManager . updateSessionSuggestions ( result . items )
120+ const isInlineEdit = result . items . find ( ( item ) => item . isInlineEdit ) ? true : false
121+ // Skip fetching for more items if the suggesion is EDITS. If it is EDITS suggestion, only fetching for more
122+ // suggestions when the user start to accept a suggesion.
123+ if ( ! isInlineEdit ) {
124+ try {
125+ while ( result . partialResultToken ) {
126+ const paginatedRequest = { ...request , partialResultToken : result . partialResultToken }
127+ result = await languageClient . sendRequest (
128+ inlineCompletionWithReferencesRequestType . method ,
129+ paginatedRequest ,
130+ token
131+ )
132+ this . sessionManager . updateSessionSuggestions ( result . items )
133+ }
134+ } catch ( error ) {
135+ languageClient . warn ( `Error when getting suggestions: ${ error } ` )
125136 }
126- } catch ( error ) {
127- languageClient . warn ( `Error when getting suggestions: ${ error } ` )
137+ } else {
138+ // save editsStreakPartialResultToken for the next EDITS suggestion trigger if user accepts
139+ this . sessionManager . updateActiveEditsStreakPartialResultToken ( result . partialResultToken )
128140 }
129141
130142 // Close session and finalize telemetry regardless of pagination path
0 commit comments