2017-03-16 85 views
0

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

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

  1. 确实的Xtext可以无缝地处理这种情况的?我是否也需要为项目A生成语言服务器,并且需要添加到项目B中?做这个的最好方式是什么?
  2. 需要什么样的Xtext更改?
  3. 客户端需要什么样的更改?像Visual代码/ Che?

回答

2
  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代码和切不关心的Xtext LS的实施细则,但两种语言应该被注册为他们
+0

我仍然无法看到的语言服务器被激活了我的“A”延伸。这个整合有没有博客或文件? VS代码如何知道'a'扩展名? –

+0

如果我正确理解了你的评论,那么除了在B的ide模块中添加A projects IDE模块jar之外,我不需要做任何事情。你能否把更多的精力放在这个领域? –

+0

对于需要注册语言的vs代码是正确的,您可以查看本教程以了解如何执行此操作:http://typefox.io/building-a-vs-code-extension-with-xtext-and-the -language-server-protocol –