2017-03-16 40 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 –