提交 0356c6cd 编写于 作者: NoSubject's avatar NoSubject 提交者: NoSubject

新增脚本编辑器


(cherry picked from commit c8b08c86c2597bf893a5c160b4657ff87ebbb852)
上级 1242bf7e
......@@ -103,14 +103,16 @@ o2.widget.JavascriptEditor = new Class({
o2.getJSON("/o2_core/o2/widget/$JavascriptEditor/environment.json", function(data){ json = data; }, false);
this.Macro = new o2.Macro.FormContext(json);
monaco.languages.registerCompletionItemProvider('json', {
provideCompletionItems: function(model, position) {
// find out if we are completing a property in the 'dependencies' object.
var textUntilPosition = model.getValueInRange({startLineNumber: 1, startColumn: 1, endLineNumber: position.lineNumber, endColumn: position.column});
var match = textUntilPosition.match(/[a-zA-Z_0-9\$\-\u00A2-\uFFFF\.]/);
if (!match) {
return { suggestions: [] };
}
//registerReferenceProvider
//monaco.languages.registerReferenceProvider('javascript', {
monaco.languages.registerCompletionItemProvider('javascript', {
provideCompletionItems: function(model, position, context, token) {
debugger;
var textUntilPosition = model.getValueInRange({startLineNumber: position.lineNumber, startColumn: 1, endLineNumber: position.lineNumber, endColumn: position.column});
var textPrefix = textUntilPosition.substr(0, textUntilPosition.lastIndexOf("."));
code = "try {return "+textPrefix+";}catch(e){return null;}";
var o = this.Macro.exec(code);
var word = model.getWordUntilPosition(position);
var range = {
startLineNumber: position.lineNumber,
......@@ -118,20 +120,39 @@ o2.widget.JavascriptEditor = new Class({
startColumn: word.startColumn,
endColumn: word.endColumn
};
return {
suggestions: function (range) {
return [{
label: '"my-third-party-library"',
if (o){
var arr = [];
Object.keys(o).each(function(key){
var type = typeOf(o[key]);
if (type==="function") {
var count = o[key].length;
var v = key+"(";
for (var i=1; i<=count; i++) v+= (i==count) ? "par"+i : "par"+i+", ";
v+=");";
arr.push({
label: key,
kind: monaco.languages.CompletionItemKind.Function,
documentation: "Describe your library here",
insertText: '"${1:my-third-party-library}": "${2:1.2.3}"',
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
range: range
}];
}
};
}
//documentation: "Fast, unopinionated, minimalist web framework",
insertText: v,
range: range
});
}else{
arr.push({
label: key,
kind: monaco.languages.CompletionItemKind.Interface,
//documentation: "Fast, unopinionated, minimalist web framework",
insertText: key,
range: range
});
}
});
}
return {suggestions: arr}
}.bind(this),
resolveCompletionItem: this.provideCompletionItems
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册