monaco-editor/test/smoketest.js

139 lines
3.9 KiB
JavaScript

/// <reference path="../node_modules/monaco-editor-core/monaco.d.ts" />
define(['./samples-all.generated'], function(ALL_SAMPLES) {
var XHR_SAMPLES = {};
ALL_SAMPLES.forEach(function(sample) {
XHR_SAMPLES[sample.name] = sample.content;
});
var actions = (function() {
"use strict";
return [
{
name: 'Undo',
run: function (editor) {
editor.trigger('keyboard', monaco.editor.Handler.Undo);
}
},
{
name: 'type & suggest',
run: function (editor) {
editor.setPosition({
lineNumber: 1,
column: 1
});
var firstChar = editor.getModel().getLineContent(1).charAt(0);
editor.trigger('keyboard', monaco.editor.Handler.CursorEnd);
editor.trigger('keyboard', monaco.editor.Handler.Type, {
text: '\n' + firstChar
});
editor.focus();
editor.trigger('test', 'editor.action.triggerSuggest');
}
},
{
name: 'links',
run: function (editor) {
editor.setPosition({
lineNumber: 1,
column: 1
});
var commentsSupport = editor.getModel().getMode().commentsSupport;
var text = 'http://www.test.com';
if (commentsSupport) {
var commentsConfig = commentsSupport.getCommentsConfiguration();
if (commentsConfig && commentsConfig.lineCommentTokens) {
text = commentsConfig.lineCommentTokens[0] + ' ' + text;
} else if (commentsConfig && commentsConfig.blockCommentStartToken) {
text = commentsConfig.blockCommentStartToken + ' ' + text + ' ' + commentsConfig.blockCommentEndToken;
}
}
editor.trigger('keyboard', monaco.editor.Handler.Type, {
text: text + '\n'
});
}
},
{
name: 'multicursor',
run: function (editor) {
editor.setPosition({
lineNumber: 1,
column: 1
});
editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
editor.trigger('keyboard', monaco.editor.Handler.Type, {
text: 'some text - '
});
}
}
];
})();
var panelContainer = document.getElementById('control');
var editorContainer = document.getElementById('editor');
var editors = {}, models = {};
function onError(err) {
console.error(err);
alert('error!!');
}
function getAllModes() {
var result = monaco.languages.getLanguages().map(function(language) { return language.id; });
result.sort();
return result;
}
function createEditor(container, mode) {
editors[mode] = monaco.editor.create(container, {
value: mode
});
var value = mode + '\n' + XHR_SAMPLES['sample.' + mode + '.txt'];
var model = monaco.editor.createModel(value, mode);
editors[mode].setModel(model);
}
function createEditors(modes) {
for (var i = 0; i < modes.length; i++) {
var container = document.createElement('div');
container.style.width = '300px';
container.style.cssFloat = 'left';
container.style.height = '200px';
container.style.border = '1px solid #ccc';
container.style.background = 'red';
container.setAttribute('data-mime', modes[i]);
editorContainer.appendChild(container);
createEditor(container, modes[i]);
}
var clearer = document.createElement('div');
clearer.style.clear = 'both';
editorContainer.appendChild(clearer);
}
function executeAction(action) {
for (var mime in editors) {
if (editors.hasOwnProperty(mime)) {
action(editors[mime]);
}
}
}
function createActions(actions) {
for (var i = 0; i < actions.length; i++) {
var btn = document.createElement('button');
btn.appendChild(document.createTextNode('<<' + actions[i].name + '>>'));
btn.onclick = executeAction.bind(this, actions[i].run);
panelContainer.appendChild(btn);
}
}
createEditors(getAllModes());
createActions(actions);
});