需求介绍:需要在已有的代码编辑器上增加AI辅助编码的功能,类似于VSCode中的Ai辅助编码
项目上原来也自己做了代码补全的功能,不过是带弹窗的类似于这种
代码如下
monaco.languages.registerCompletionItemProvider('javascript', {
provideCompletionItems: function (model, position) {
// find out if we are completing a property in the 'dependencies' object.
console.log('执行自定义补全逻辑');
return {
suggestions: [
{
label: {
label: '"my-third-party-library"',
detail: 'description',
description: 'ssssdddffff',
},
kind: monaco.languages.CompletionItemKind.Function,
documentation: 'Describe your library here',
insertText: 'my-third-party-library /n abcde /n 123123123123',
preselect: true,
} as any,
],
};
},
resolveCompletionItem(item, token) {
item.documentation = 'documentation';
return item;
},
});
运行效果:
通过查看相关文档,发现monaco-editor还提供一个行内代码补全的provider,模仿上述代码做了一份:
monaco.languages.registerInlineCompletionsProvider('javascript', {
provideInlineCompletions: function (model, position) {
return {
items: [
{
label: {
label: '"my-third-party-library"',
detail: 'description',
description: 'ssssdddffff',
},
kind: monaco.languages.CompletionItemKind.Text,
documentation: 'Describe your library here',
insertText: 'my-third-party-library \n 123123123\n123333221',
insertTextRules: 0,
} as any,
],
};
},
freeInlineCompletions(completion: any) {
},
});
运行效果: