mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 19:42:56 +01:00
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
|
|
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: [
|
|
{ value: '**SOURCE**' },
|
|
{ value: '```html\n' + res.responseText.substring(0, 200) + '\n```' }
|
|
]
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
monaco.editor.create(document.getElementById("container"), {
|
|
value: '\n\nHover over this text',
|
|
language: 'mySpecialLanguage'
|
|
});
|
|
|
|
function xhr(url) {
|
|
var req = null;
|
|
return new Promise(function (c, e) {
|
|
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 () { };
|
|
}
|
|
};
|
|
|
|
req.open("GET", url, true);
|
|
req.responseType = "";
|
|
|
|
req.send(null);
|
|
}, function () {
|
|
req._canceled = true;
|
|
req.abort();
|
|
});
|
|
}
|