在这种情况下,嵌入式编辑器是一个完整的自己的实例,您必须像将其嵌入到独立网页中一样对其进行设置。这通常涉及为各种功能(悬停、代码建议、验证等)设置提供程序。让这些提供者调用你的 LSP 来完成繁重的工作(在 vscode 和你的 webview 之间来回传递消息)。
languages.onLanguage(msg.id, () => {
msg.loader().then((module: any) => {
languages.setMonarchTokensProvider(msg.id, module.language);
languages.setLanguageConfiguration(msg.id, module.languageConfiguration);
languages.registerCompletionItemProvider(msg.id, new CodeCompletionProvider());
languages.registerHoverProvider(msg.id, new HoverProvider());
languages.registerSignatureHelpProvider(msg.id, new SignatureHelpProvider());
languages.registerDocumentHighlightProvider(msg.id, new DocumentHighlightProvider());
languages.registerDefinitionProvider(msg.id, new DefinitionProvider());
languages.registerReferenceProvider(msg.id, new ReferencesProvider());
languages.registerSelectionRangeProvider(msg.id, new SelectionRangeProvider());
languages.registerDocumentFormattingEditProvider(msg.id, new FormattingProvider());
languages.registerRenameProvider(msg.id, new RenameProvider());
});
});
msg
这是您的语言的语言贡献文件(在我的例子中是 msg.contribution.ts)。