core icon indicating copy to clipboard operation
core copied to clipboard

[FEATURE] Intelligent Completion API 设计变更

Open Ricbet opened this issue 1 year ago • 1 comments

为了更好的区分传统的代码补全和 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 avatar Oct 17 '24 07:10 Ricbet

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

  • [x] lint error(出现 问题 时)https://github.com/opensumi/core/pull/4105
  • [x] line change(行号变更时)https://github.com/opensumi/core/pull/4106
  • [ ] typing(代码变更时)
  • [ ] parameter hints
  • [ ] prediction(代码预测触发时,需要前置的 代码预测 API 实现)

Ricbet avatar Oct 18 '24 08:10 Ricbet