提交 527ca8a5 编写于 作者: NoSubject's avatar NoSubject

优化代码提示功能

上级 219ff30c
......@@ -269,7 +269,8 @@ o2.widget.JavascriptEditor = new Class({
if (textPrefix.lastIndexOf("=")!=-1) textPrefix = textPrefix.substr(textPrefix.lastIndexOf("=")+1);
if (textPrefix.lastIndexOf(" new ")!=-1) textPrefix = textPrefix.substr(textPrefix.lastIndexOf(" new ")+5);
//if (preCode.lastIndexOf("{")!=-1) preCode = preCode.substr(preCode.lastIndexOf("{")+1);
debugger;
var codeObj = {
"code": textPrefix,
"preCode": preCode,
......@@ -299,14 +300,28 @@ o2.widget.JavascriptEditor = new Class({
startColumn: 1,
startLineNumber: 1
};
var preCode = model.getValueInRange(range);
preCode = model.getValueInRange(range);
}
var sufCode = "";
var lineCount = model.getLineCount();
var nextLineNumber = position.lineNumber+1;
if (nextLineNumber<=lineCount){
range = {
endColumn: model.getLineMaxColumn(lineCount),
endLineNumber: lineCount,
startColumn: 1,
startLineNumber: nextLineNumber
};
sufCode = model.getValueInRange(range);
}
var word = model.getWordUntilPosition(position);
var insertRange = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn };
return new Promise(function(s){
this.getCompletionObject(textPrefix, preCode, insertRange, model.o2Editor.options.runtime, function(o){
this.getCompletionObject(textPrefix, preCode+"\n"+sufCode, insertRange, model.o2Editor.options.runtime, function(o){
// if (o) {
// var arr = [];
......@@ -350,15 +365,24 @@ o2.widget.JavascriptEditor = new Class({
if (x){
var endLineNumber = (pos.row>0) ? pos.row-1 : -1;
var preCode = "";
if (endLineNumber>-1){
var range = session.getWordRange(0,0);
range.setEnd(endLineNumber, session.getLine(endLineNumber).length);
preCode = session.getTextRange(range);
}
var sufCode = "";
var lineCount = session.getLength()-1;
var nextLineNumber = pos.row+1;
if (nextLineNumber<=lineCount){
var range = session.getWordRange(nextLineNumber,0);
range.setEnd(lineCount, session.getLine(lineCount).length);
sufCode = session.getTextRange(range);
}
return new Promise(function(s){
this.getCompletionObject(x, preCode, null, editor.o2Editor.options.runtime, function(o){
this.getCompletionObject(x, preCode+"\n"+sufCode, null, editor.o2Editor.options.runtime, function(o){
callback(null, o);
if (s) s(o);
}.bind(this));
......
......@@ -2,8 +2,8 @@ window = self;
window.addEvent = function(){};
self.window = window;
window.execScript = function(text){
return eval(text)
}
return eval(text);
};
if (!this.document) document = {
"window": self,
......@@ -421,9 +421,9 @@ layout.addReady(function(){
code = "return "+code+";";
if (preCode){
code = preCode+"\n"+code;
code = "try{\n"+preCode+"\n}catch(e){}\n"+"try{\n"+code+"\n}catch(e){return null;}";
}
code = "try {\n"+code+"\n}catch(e){return null;}";
//code = "try {\n"+code+"\n}catch(e){return null;}";
var o = _worker.runtimeEnvironment[runtime].exec(code);
if (o) {
var completions = (type=="ace") ? _worker.getAceCompletions(o, range, codeText) : _worker.getMonacoCompletions(o ,range, codeText);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册