用于两个扩展的单个 Xtext 语言服务器

Single Xtext Language Server for two extensions

我有两个 Eclipse 插件 Xtext(2.11) 项目。(称为项目 A 和 B)项目 B 语法文件依赖于项目 A 语法文件。项目A的语法文件扩展名为a,项目B为b。 我能够为项目 B 生成语言服务器。我想为两个项目生成单一语言服务器。(目前,在项目 B 中它包括项目 A。) 根据扩展类型,它需要调用相应的 Xtext 语法功能。

在上述情况下,我有以下问题:

  1. Xtext 是否可以无缝处理这种情况?我是否也需要为项目 A 生成语言服务器并需要在项目 B 中添加?最好的方法是什么?
  2. 需要什么样的 Xtext 更改?
  3. 客户端还需要进行哪些更改?就像在 Visual code/ Che 中一样?
  1. Xtext LS 可以与多种 Xtext 语言一起使用。它使用 java 服务加载来查找语言设置:https://github.com/eclipse/xtext-core/blob/master/org.eclipse.xtext/src/org/eclipse/xtext/resource/ResourceServiceProviderServiceLoader.xtend#L25。在您的语言的 ide 项目中,您应该能够找到 META-INF/services/org.ecalipse.xtext.ISetup 文件,上面写着 java 什么实现应该用于 ISetup 接口。
  2. 在类路径中为 ide 个项目准备 jar 就足够了。无需更改。
  3. VS code 和 Che 不关心 Xtext LS 的实现细节,但两种语言都应该为它们注册