Che

时间:2018-11-07 11:06:37

标签: json syntax-highlighting xtext eclipse-che eclipse-orion

我已经使用Xtext创建了一个Custom DSL,并且我还在Eclipse Che中将其实现为语言服务器的辅助工具。一切正常,语法着色除外。从我在该主题上进行搜索所学到的知识,其背后的原因是语言服务器协议不支持语法突出显示。

通常,在Eclipse Che中,通过Orion Editor提供了对不同语言的语法突出显示支持。但是,由于我创建的DSL是一种全新的文件类型(Orion编辑器无法识别),因此我想实现一个语法文件或类似的方法,以便Orion Editor能够识别我的DSL并为其提供语法颜色在Eclipse Che中。

我发现github中的this issue很有帮助。它提供了以下代码片段以实现启用此功能:-

@Inject
    protected void configureContentType(final OrionContentTypeRegistrant contentTypeRegistrant) {
        // register content type and configure orion
        final String contentTypeId = "text/x-testlang";

        OrionContentTypeOverlay contentType = OrionContentTypeOverlay.create();
        contentType.setId(contentTypeId);
        contentType.setName("Test Language");
        contentType.setExtension("testlang");
        contentType.setExtends("text/plain");

        // highlighting
        OrionHighlightingConfigurationOverlay config = OrionHighlightingConfigurationOverlay.create();
        config.setId("testlang.highlighting");
        config.setContentTypes(contentTypeId);
        config.setPatterns(
                "[\n" + 
                        "  {include: \"orion.lib#string_doubleQuote\"},\n" + 
                        "  {include: \"orion.lib#string_singleQuote\"},\n" + 
                        "  {include: \"orion.lib#brace_open\"},\n" + 
                        "  {include: \"orion.lib#brace_close\"},\n" + 
                        "  {include: \"orion.lib#bracket_open\"},\n" + 
                        "  {include: \"orion.lib#bracket_close\"},\n" + 
                        "  {include: \"orion.lib#parenthesis_open\"},\n" + 
                        "  {include: \"orion.lib#parenthesis_close\"},\n" + 
                        "  {include: \"orion.lib#number_decimal\"},\n" + 
                        "  {include: \"orion.lib#number_hex\"},\n" + 
                        "  {\n" + 
                        "    match: \"\\\\b(?:false|true)\\\\b\",\n" + 
                        "    name: \"keyword.json\"\n" + 
                        "  }\n" + 
                "]");

        contentTypeRegistrant.registerFileType(contentType, config);
    }

但是,它没有确切说明我应该在哪里以及如何实现此代码。因为我不熟悉Orion,所以即使我尝试了,也无法自己理解。我相信我应该用关键字实现一个.json文件,这对我来说也不是很清楚(关于我应该如何写这样的文件)。

如果有人可以通过在相关的.json文件中在Xtext项目中实现该代码段的方式和位置来支持我,我将不胜感激。

谢谢!

0 个答案:

没有答案