Как добавить кликабельную ссылку в документации по элементам завершения

Есть ли API, где я могу указать, чтобы использовать разметку для отображения ссылок во всплывающей подсказке документации?

Единственное место, где я могу найти поддержку разметки - это при наведении.

Например:

monaco.languages.register({ id: 'mySpecialLanguage' });

monaco.languages.registerHoverProvider('mySpecialLanguage', {
    provideHover: function(model, position) {
        return xhr('../playground.html').then(function(res) {
            return {
                range: new monaco.Range(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount())),
                contents: [
                    '**SOURCE** [Im an inline-style link](https://www.google.com)',
                    { language: 'html', value: res.responseText }
                ]
            }
        });
    }
});

monaco.editor.create(document.getElementById("container"), {
    value: '\n\nHover over this text',
    language: 'mySpecialLanguage'
});

function xhr(url) {
    var req = null;
    return new monaco.Promise(function(c,e,p) {
        req = new XMLHttpRequest();
        req.onreadystatechange = function () {
            if (req._canceled) { return; }

            if (req.readyState === 4) {
                if ((req.status >= 200 && req.status < 300) || req.status === 1223) {
                    c(req);
                } else {
                    e(req);
                }
                req.onreadystatechange = function () { };
            } else {
                p(req);
            }
        };

        req.open("GET", url, true );
        req.responseType = "";

        req.send(null);
    }, function () {
        req._canceled = true;
        req.abort();
    });
}

1 ответ

Из кода для предложить виджета видно, что вы можете установить ICompletionItem item.suggestion.documentation быть IMarkdownString (в отличие от обычной строки) и MarkdownRenderer будет использоваться для его рендеринга.

export interface IMarkdownString {
    value: string;
    isTrusted?: boolean;
}

Предостережение: я случайно просматривал этот код ранее, но не пробовал вышеуказанное предложение.

Другие вопросы по тегам