Как я могу получить предложения (registerCompletionItemProvider) для отображения между фигурными скобками для Markdown в Монако? - PullRequest
1 голос
/ 15 апреля 2020

Когда я создаю провайдера предметов завершения в Монако для Markdown, я не могу создать предложения для текста между фигурными скобками {}

т.е. { typing in here won't launch the suggestions widget }

Я получаю, что фигурные скобки зарезервированы ключевые слова в Markdown и автоматически закрываются в Монако по умолчанию. Даже если автоматическое закрытие отключено, автоматическое заполнение фигурных скобок с соответствующей конечной скобкой не сработает.

Есть ли возможность сделать это? Или мне придется создать новый язык, который по сути является копией Markdown, в которой фигурные скобки не регистрируются в виде скобок?

Вот фрагмент кода редактора Monaco, показывающий эту проблему

monaco.languages.registerCompletionItemProvider('markdown', {
    provideCompletionItems: function() {
        return {
            suggestions: [
                {
                    label: "random_number",
                    insertText: "random_number"
                },
                {
                    label: "now",
                    insertText: "now"
                },
                {
                    label: "today",
                    insertText: "today"
                },
            ]
        };
    }
});

monaco.editor.create(document.getElementById("container"), {
    value: "# hello.\n{autocomplete doesn't work between braces: }\nbut it works outside: ",
    language: "markdown"
});

Edit

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

https://github.com/microsoft/monaco-languages/blob/618f2cff2d8e72f04fe9d63085a0c5118b80e8a0/src/markdown/markdown.ts#L143

Не ясно, почему это необходимо.

...