中间件中的vscode` providecompletionem`没有触发字符串
我正在尝试使用 sql 的嵌入式语言支持。 rel =“ nofollow noreferrer”>请求转发机制。
根据文档,我们可以使用 Middleware
选项劫持完成,并使用现有语言服务器提供子语言完成。例如,用户可以使用此机制获得 css
语言支持 html
。
在我的情况下,我希望在编写SQL查询时获得 SQL语言
在另一种语言(新语言)中支持。
示例代码
let clientOptions: LanguageClientOptions = {
documentSelector: [{ scheme: 'file', language: '.mylang' }],
middleware: {
provideCompletionItem: async (document, position, context, token, next) => {
if (
!isInsideSQLRegion(
myLanguageService,
document.getText(),
document.offsetAt(position)
)
) {
return await next(document, position, context, token);
}
const originalUri = document.uri.toString();
virtualDocumentContents.set(
originalUri,
getSQLVirtualContent(myLanguageService, document.getText())
);
const vdocUriString = `embedded-content://sql/${encodeURIComponent(originalUri)}.sql`;
const vdocUri = Uri.parse(vdocUriString);
return await commands.executeCommand<CompletionList>(
'vscode.executeCompletionItemProvider',
vdocUri,
position,
context.triggerCharacter
);
}
}
};
在这里 providecompletionItem
每次我们在编辑器中编写新字符时都会触发,但是当用户写入“
>或单个
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论