1
0

sample.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. monaco.languages.register({ id: 'mySpecialLanguage' });
  2. monaco.languages.registerHoverProvider('mySpecialLanguage', {
  3. provideHover: function(model, position) {
  4. return xhr('../playground.html').then(function(res) {
  5. return {
  6. range: new monaco.Range(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount())),
  7. contents: [
  8. '**SOURCE**',
  9. { language: 'html', value: res.responseText.substring(0, 200) }
  10. ]
  11. }
  12. });
  13. }
  14. });
  15. monaco.editor.create(document.getElementById("container"), {
  16. value: '\n\nHover over this text',
  17. language: 'mySpecialLanguage'
  18. });
  19. function xhr(url) {
  20. var req = null;
  21. return new monaco.Promise(function(c,e,p) {
  22. req = new XMLHttpRequest();
  23. req.onreadystatechange = function () {
  24. if (req._canceled) { return; }
  25. if (req.readyState === 4) {
  26. if ((req.status >= 200 && req.status < 300) || req.status === 1223) {
  27. c(req);
  28. } else {
  29. e(req);
  30. }
  31. req.onreadystatechange = function () { };
  32. } else {
  33. p(req);
  34. }
  35. };
  36. req.open("GET", url, true );
  37. req.responseType = "";
  38. req.send(null);
  39. }, function () {
  40. req._canceled = true;
  41. req.abort();
  42. });
  43. }