diff --git a/o2web/source/o2_core/o2/widget/JavascriptEditor.js b/o2web/source/o2_core/o2/widget/JavascriptEditor.js index 1ec61508808d93f6d882345c5f0fbe872ee06d44..df5f58f64e72f17a34c3f3e78df4077ae6b8379e 100644 --- a/o2web/source/o2_core/o2/widget/JavascriptEditor.js +++ b/o2web/source/o2_core/o2/widget/JavascriptEditor.js @@ -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)); diff --git a/o2web/source/o2_core/scriptWorker.js b/o2web/source/o2_core/scriptWorker.js index a36d45783c7c2482b40f4a74b5f24171d75bd40c..cc27448637cbe52a5a5f5802e7a49b75fa41375a 100644 --- a/o2web/source/o2_core/scriptWorker.js +++ b/o2web/source/o2_core/scriptWorker.js @@ -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);