core
core copied to clipboard
[FEATURE] Intelligent Completion API 设计变更
为了更好的区分传统的代码补全和 Code Edits 相关的代码编辑补全(表现形式是 多行补全 或 智能重写) 两者在 API 的设计上需要做个区分,避免混淆
在之前的 API 当中,会将 “多行补全” 和 “传统代码补全” 都写在同一个 provider 里,仅仅只是用 enableMultiLine 作为标识符来做区分
例:
registerIntelligentCompletionFeature(registry: IIntelligentCompletionsRegistry): void {
registry.registerIntelligentCompletionProvider(async (editor, position, bean, token) => {
// ...
return {
items: [
{
insertText
range,
},
],
enableMultiLine: true,
};
});
}
现在将弃用这种使用方式,具体变动如下
- registerIntelligentCompletionProvider 将进入 deprecated 阶段,并重命名为 registerInlineCompletionsProvider,删除 enableMultiLine 标识符,其余不变
- 新增 registerCodeEditsProvider,接管原先的多行补全逻辑,具体参数和返回值待补充
关于 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 实现)