Поддержка окраски синтаксиса редактора Orion для нового типа файлов (Custom DSL) в Che - PullRequest
0 голосов
/ 07 ноября 2018

Я создал пользовательский DSL с использованием Xtext, а также внедрил его в Eclipse Che в качестве дополнительной платформы для языкового сервера. Все работает как положено, кроме синтаксической раскраски. Из того, что я узнал при поиске по этой теме, причина этого заключается в протоколе Language Server, который не поддерживает подсветку синтаксиса.

Обычно в Eclipse Che поддержка подсветки синтаксиса для разных языков предоставляется через редактор Orion. Однако, поскольку созданный мной DSL является совершенно новым типом файлов (который редактор Orion не распознает), я хочу реализовать файл грамматики или аналогичный подход, чтобы редактор Orion распознавал мой DSL и предоставлял для него синтаксическую раскраску. в Eclipse Che.

Я нашел эту проблему в github весьма полезной. Ниже приведен фрагмент кода, который необходимо реализовать для включения этой функции: -

@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);
    }

Тем не менее, он не упоминает, где именно и как я должен реализовать этот код. Поскольку я не знаком с Орионом, я сам не мог этого понять, даже если бы попытался. Я считаю, что мне следует реализовать файл .json с ключевыми словами, что мне тоже не очень понятно (относительно того, как я должен написать такой файл).

Если кто-нибудь может поддержать меня, сообщив мне, как и где мне следует реализовать этот фрагмент кода в моем проекте Xtext с соответствующим файлом .json, я был бы очень признателен.

Заранее спасибо!

...