opensumi / core

🚀 A framework helps you quickly build AI Native IDE products.
https://opensumi.com
MIT License
3.01k stars 387 forks source link

[FEATURE] Intelligent Completion API 设计变更 #4104

Open Ricbet opened 1 month ago

Ricbet commented 1 month ago

为了更好的区分传统的代码补全和 Code Edits 相关的代码编辑补全(表现形式是 多行补全 或 智能重写) 两者在 API 的设计上需要做个区分,避免混淆


在之前的 API 当中,会将 “多行补全” 和 “传统代码补全” 都写在同一个 provider 里,仅仅只是用 enableMultiLine 作为标识符来做区分 例:

registerIntelligentCompletionFeature(registry: IIntelligentCompletionsRegistry): void {
  registry.registerIntelligentCompletionProvider(async (editor, position, bean, token) => {
    // ...
     return {
      items: [
        {
          insertText
          range,
        },
      ],
      enableMultiLine: true,
    };
  });
}

现在将弃用这种使用方式,具体变动如下

  1. registerIntelligentCompletionProvider 将进入 deprecated 阶段,并重命名为 registerInlineCompletionsProvider,删除 enableMultiLine 标识符,其余不变
  2. 新增 registerCodeEditsProvider,接管原先的多行补全逻辑,具体参数和返回值待补充
Ricbet commented 1 month ago

关于 Code Edits API 的不同行为触发规则