diff --git a/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_EN.js b/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_EN.js index 1ce601b7e8179216fbeeb0013dc372d5e715e655..a1e45b15d9fa40d2d2e9e955e14f65bd32e73d05 100644 --- a/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_EN.js +++ b/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_EN.js @@ -26,8 +26,9 @@ var mac = /Mac/.test(navigator.platform); return out; } - function Completion(cm, options, filename) { + function Completion(cm, options, filename, archivos) { this.filename = filename; + this.archivos = archivos; this.cm = cm; this.options = options; this.widget = null; @@ -196,7 +197,7 @@ var mac = /Mac/.test(navigator.platform); var rexp_name = new RegExp(/(.*\:\:)(.*)/.source, "g"); var m = rexp_name.exec(cur.displayText || getText(cur)); var b_elem = ownerDocument.createElement("b"); - b_elem.appendChild(ownerDocument.createTextNode((hintWords.EN_typed_functions().indexOf(m[1] + m[2]) == -1 ? (completion.filename + '.') : "") + m[1])); + b_elem.appendChild(ownerDocument.createTextNode(m[1])); elt.appendChild(b_elem); elt.appendChild(ownerDocument.createTextNode(m[2])); } @@ -411,22 +412,15 @@ var mac = /Mac/.test(navigator.platform); var WORD = /[\w$]+/; var RANGE = 500; - var SET = /set\s+([\w\_\d]+)\s*\=/; - var DOM = /\:\:/; - var FUNS = /([\w\_\d]+)\s+\:\:/; var COMPLETE_FUNS = /([\w\_\d\-]+)(\s+\:\:.*)/; - var FUN = /([\w\_\d]+)\s*\(([\,\w\_\s\d]*)\)\s*\=/; - var ENUMS = /set\s+[\w\_\d]+\s*\=\s*\{(.*?)\}/; - var WRITING_SET = /set\s/; - var WRITING_COMMENT = /\{\-/; - + // functions definitions - CodeMirror.defineExtension("functionDefinition", function(filename, options) { + CodeMirror.defineExtension("functionDefinition", function(filename, archivos, options) { if (options.mode.name == "matefun-EN"){ options = parseOptions(this, this.getCursor("start"), options); if (this.state.completionActive) this.state.completionActive.close(); - var completion = this.state.completionActive = new Completion(this, options, filename); + var completion = this.state.completionActive = new Completion(this, options, filename, archivos); CodeMirror.signal(this, "startFunctionDefinition", this); completion.update(true); @@ -437,6 +431,8 @@ var mac = /Mac/.test(navigator.platform); if (this.state.completionActive) this.state.completionActive.close() }) + var INCLUIR = /include\s+([\w\_\d]+)/; + function functionDefinition(editor, options) { var word = options && options.word || WORD; var range = options && options.range || RANGE; @@ -447,7 +443,36 @@ var mac = /Mac/.test(navigator.platform); var curWord = start != end && curLine.slice(start, end + 1); if (curWord.length > 0){ - var list = [], seen = {}; + var includes = new RegExp(INCLUIR.source, "g"); + var content = editor.getValue(); + + var list = []; + + var file; + while (file = includes.exec(content)) { + var files = editor.state.completionActive.archivos.filter( + function(a){ + return a.nombre === file[1]; + }); + for (var f = 0; f < files.length; f++){ + var seen = {}; + var re_digits = new RegExp(/^\d+$/, "g"); + var re_funs = new RegExp(COMPLETE_FUNS.source, "g"); + var m; + + var file_content = files[f].contenido; + + while (m = re_funs.exec(file_content)) { + if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { + seen[m[1]] = true; + list.push(files[f].nombre + "." + m[1] + m[2]); + } + } + } + } + + // current file + var seen = {}; var re_digits = new RegExp(/^\d+$/, "g"); var re_funs = new RegExp(COMPLETE_FUNS.source, "g"); @@ -458,7 +483,7 @@ var mac = /Mac/.test(navigator.platform); while (m = re_funs.exec(text)) { if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { seen[m[1]] = true; - list.push(m[1] + m[2]); + list.push(editor.state.completionActive.filename + "." + m[1] + m[2]); } } } diff --git a/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_ES.js b/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_ES.js index ed06ba447b7662e8a9219b64d857ec209c37d467..cc360bf83fc17fc8ffb428719f00b70070ea729a 100644 --- a/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_ES.js +++ b/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/functions_definition_ES.js @@ -26,8 +26,9 @@ var mac = /Mac/.test(navigator.platform); return out; } - function Completion(cm, options, filename) { + function Completion(cm, options, filename, archivos) { this.filename = filename; + this.archivos = archivos; this.cm = cm; this.options = options; this.widget = null; @@ -196,7 +197,7 @@ var mac = /Mac/.test(navigator.platform); var rexp_name = new RegExp(/(.*\:\:)(.*)/.source, "g"); var m = rexp_name.exec(cur.displayText || getText(cur)); var b_elem = ownerDocument.createElement("b"); - b_elem.appendChild(ownerDocument.createTextNode((hintWords.ES_typed_functions().indexOf(m[1] + m[2]) == -1 ? (completion.filename + '.') : "") + m[1])); + b_elem.appendChild(ownerDocument.createTextNode(m[1])); elt.appendChild(b_elem); elt.appendChild(ownerDocument.createTextNode(m[2])); } @@ -411,22 +412,15 @@ var mac = /Mac/.test(navigator.platform); var WORD = /[\w$]+/; var RANGE = 500; - var SET = /set\s+([\w\_\d]+)\s*\=/; - var DOM = /\:\:/; - var FUNS = /([\w\_\d]+)\s+\:\:/; var COMPLETE_FUNS = /([\w\_\d\-]+)(\s+\:\:.*)/; - var FUN = /([\w\_\d]+)\s*\(([\,\w\_\s\d]*)\)\s*\=/; - var ENUMS = /set\s+[\w\_\d]+\s*\=\s*\{(.*?)\}/; - var WRITING_SET = /set\s/; - var WRITING_COMMENT = /\{\-/; - + // functions definitions - CodeMirror.defineExtension("functionDefinition", function(filename, options) { + CodeMirror.defineExtension("functionDefinition", function(filename, archivos, options) { if (options.mode.name == "matefun-ES"){ options = parseOptions(this, this.getCursor("start"), options); if (this.state.completionActive) this.state.completionActive.close(); - var completion = this.state.completionActive = new Completion(this, options, filename); + var completion = this.state.completionActive = new Completion(this, options, filename, archivos); CodeMirror.signal(this, "startFunctionDefinition", this); completion.update(true); @@ -437,6 +431,8 @@ var mac = /Mac/.test(navigator.platform); if (this.state.completionActive) this.state.completionActive.close() }) + var INCLUIR = /incluir\s+([\w\_\d]+)/; + function functionDefinition(editor, options) { var word = options && options.word || WORD; var range = options && options.range || RANGE; @@ -447,7 +443,36 @@ var mac = /Mac/.test(navigator.platform); var curWord = start != end && curLine.slice(start, end + 1); if (curWord.length > 0){ - var list = [], seen = {}; + var includes = new RegExp(INCLUIR.source, "g"); + var content = editor.getValue(); + + var list = []; + + var file; + while (file = includes.exec(content)) { + var files = editor.state.completionActive.archivos.filter( + function(a){ + return a.nombre === file[1]; + }); + for (var f = 0; f < files.length; f++){ + var seen = {}; + var re_digits = new RegExp(/^\d+$/, "g"); + var re_funs = new RegExp(COMPLETE_FUNS.source, "g"); + var m; + + var file_content = files[f].contenido; + + while (m = re_funs.exec(file_content)) { + if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { + seen[m[1]] = true; + list.push(files[f].nombre + "." + m[1] + m[2]); + } + } + } + } + + // current file + var seen = {}; var re_digits = new RegExp(/^\d+$/, "g"); var re_funs = new RegExp(COMPLETE_FUNS.source, "g"); @@ -458,7 +483,7 @@ var mac = /Mac/.test(navigator.platform); while (m = re_funs.exec(text)) { if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { seen[m[1]] = true; - list.push(m[1] + m[2]); + list.push(editor.state.completionActive.filename + "." + m[1] + m[2]); } } } diff --git a/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts b/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts index d269b6710445b542c62d9b81aaba1456c22fe460..11361b7eef9cc96cf535076ade3ed40fef565354 100755 --- a/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts +++ b/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts @@ -460,7 +460,7 @@ export class MateFunComponent { clickEnEditor(event){ if (this.typingCheck) - this.codemirror.instance.functionDefinition(this.archivo.nombre, this.codemirror.instance.doc, event); + this.codemirror.instance.functionDefinition(this.archivo.nombre, this.archivosTree.archivos, this.codemirror.instance.doc, event); } guardarArchivo(){