@@ -1074,6 +1074,8 @@ class InlineCompletionAdapterBase {
10741074 disposeCompletions ( pid : number ) : void { }
10751075
10761076 handleDidShowCompletionItem ( pid : number , idx : number ) : void { }
1077+
1078+ handlePartialAccept ( pid : number , idx : number , acceptedCharacters : number ) : void { }
10771079}
10781080
10791081class InlineCompletionAdapter extends InlineCompletionAdapterBase {
@@ -1093,8 +1095,10 @@ class InlineCompletionAdapter extends InlineCompletionAdapterBase {
10931095 super ( ) ;
10941096 }
10951097
1096- public get supportsHandleDidShowCompletionItem ( ) : boolean {
1097- return isProposedApiEnabled ( this . _extension , 'inlineCompletionsAdditions' ) && typeof this . _provider . handleDidShowCompletionItem === 'function' ;
1098+ public get supportsHandleEvents ( ) : boolean {
1099+ return isProposedApiEnabled ( this . _extension , 'inlineCompletionsAdditions' )
1100+ && ( typeof this . _provider . handleDidShowCompletionItem === 'function'
1101+ || typeof this . _provider . handleDidPartiallyAcceptCompletionItem === 'function' ) ;
10981102 }
10991103
11001104 private readonly languageTriggerKindToVSCodeTriggerKind : Record < languages . InlineCompletionTriggerKind , InlineCompletionTriggerKind > = {
@@ -1182,6 +1186,15 @@ class InlineCompletionAdapter extends InlineCompletionAdapterBase {
11821186 }
11831187 }
11841188 }
1189+
1190+ override handlePartialAccept ( pid : number , idx : number , acceptedCharacters : number ) : void {
1191+ const completionItem = this . _references . get ( pid ) ?. items [ idx ] ;
1192+ if ( completionItem ) {
1193+ if ( this . _provider . handleDidPartiallyAcceptCompletionItem && this . _isAdditionsProposedApiEnabled ) {
1194+ this . _provider . handleDidPartiallyAcceptCompletionItem ( completionItem , acceptedCharacters ) ;
1195+ }
1196+ }
1197+ }
11851198}
11861199
11871200class ReferenceMap < T > {
@@ -2145,7 +2158,7 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
21452158 registerInlineCompletionsProvider ( extension : IExtensionDescription , selector : vscode . DocumentSelector , provider : vscode . InlineCompletionItemProvider ) : vscode . Disposable {
21462159 const adapter = new InlineCompletionAdapter ( extension , this . _documents , provider , this . _commands . converter ) ;
21472160 const handle = this . _addNewAdapter ( adapter , extension ) ;
2148- this . _proxy . $registerInlineCompletionsSupport ( handle , this . _transformDocumentSelector ( selector ) , adapter . supportsHandleDidShowCompletionItem ) ;
2161+ this . _proxy . $registerInlineCompletionsSupport ( handle , this . _transformDocumentSelector ( selector ) , adapter . supportsHandleEvents ) ;
21492162 return this . _createDisposable ( handle ) ;
21502163 }
21512164
@@ -2159,6 +2172,12 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
21592172 } , undefined , undefined ) ;
21602173 }
21612174
2175+ $handleInlineCompletionPartialAccept ( handle : number , pid : number , idx : number , acceptedCharacters : number ) : void {
2176+ this . _withAdapter ( handle , InlineCompletionAdapterBase , async adapter => {
2177+ adapter . handlePartialAccept ( pid , idx , acceptedCharacters ) ;
2178+ } , undefined , undefined ) ;
2179+ }
2180+
21622181 $freeInlineCompletionsList ( handle : number , pid : number ) : void {
21632182 this . _withAdapter ( handle , InlineCompletionAdapterBase , async adapter => { adapter . disposeCompletions ( pid ) ; } , undefined , undefined ) ;
21642183 }
0 commit comments