Skip to content
Snippets Groups Projects
Commit 3ff23a41 authored by Franco Pariani's avatar Franco Pariani
Browse files

Typing from included files

parent 105e962a
No related branches found
No related tags found
No related merge requests found
...@@ -26,8 +26,9 @@ var mac = /Mac/.test(navigator.platform); ...@@ -26,8 +26,9 @@ var mac = /Mac/.test(navigator.platform);
return out; return out;
} }
function Completion(cm, options, filename) { function Completion(cm, options, filename, archivos) {
this.filename = filename; this.filename = filename;
this.archivos = archivos;
this.cm = cm; this.cm = cm;
this.options = options; this.options = options;
this.widget = null; this.widget = null;
...@@ -196,7 +197,7 @@ var mac = /Mac/.test(navigator.platform); ...@@ -196,7 +197,7 @@ var mac = /Mac/.test(navigator.platform);
var rexp_name = new RegExp(/(.*\:\:)(.*)/.source, "g"); var rexp_name = new RegExp(/(.*\:\:)(.*)/.source, "g");
var m = rexp_name.exec(cur.displayText || getText(cur)); var m = rexp_name.exec(cur.displayText || getText(cur));
var b_elem = ownerDocument.createElement("b"); 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(b_elem);
elt.appendChild(ownerDocument.createTextNode(m[2])); elt.appendChild(ownerDocument.createTextNode(m[2]));
} }
...@@ -411,22 +412,15 @@ var mac = /Mac/.test(navigator.platform); ...@@ -411,22 +412,15 @@ var mac = /Mac/.test(navigator.platform);
var WORD = /[\w$]+/; var WORD = /[\w$]+/;
var RANGE = 500; var RANGE = 500;
var SET = /set\s+([\w\_\d]+)\s*\=/;
var DOM = /\:\:/;
var FUNS = /([\w\_\d]+)\s+\:\:/;
var COMPLETE_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 // functions definitions
CodeMirror.defineExtension("functionDefinition", function(filename, options) { CodeMirror.defineExtension("functionDefinition", function(filename, archivos, options) {
if (options.mode.name == "matefun-EN"){ if (options.mode.name == "matefun-EN"){
options = parseOptions(this, this.getCursor("start"), options); options = parseOptions(this, this.getCursor("start"), options);
if (this.state.completionActive) this.state.completionActive.close(); 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); CodeMirror.signal(this, "startFunctionDefinition", this);
completion.update(true); completion.update(true);
...@@ -437,6 +431,8 @@ var mac = /Mac/.test(navigator.platform); ...@@ -437,6 +431,8 @@ var mac = /Mac/.test(navigator.platform);
if (this.state.completionActive) this.state.completionActive.close() if (this.state.completionActive) this.state.completionActive.close()
}) })
var INCLUIR = /include\s+([\w\_\d]+)/;
function functionDefinition(editor, options) { function functionDefinition(editor, options) {
var word = options && options.word || WORD; var word = options && options.word || WORD;
var range = options && options.range || RANGE; var range = options && options.range || RANGE;
...@@ -447,7 +443,36 @@ var mac = /Mac/.test(navigator.platform); ...@@ -447,7 +443,36 @@ var mac = /Mac/.test(navigator.platform);
var curWord = start != end && curLine.slice(start, end + 1); var curWord = start != end && curLine.slice(start, end + 1);
if (curWord.length > 0){ 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_digits = new RegExp(/^\d+$/, "g");
var re_funs = new RegExp(COMPLETE_FUNS.source, "g"); var re_funs = new RegExp(COMPLETE_FUNS.source, "g");
...@@ -458,7 +483,7 @@ var mac = /Mac/.test(navigator.platform); ...@@ -458,7 +483,7 @@ var mac = /Mac/.test(navigator.platform);
while (m = re_funs.exec(text)) { while (m = re_funs.exec(text)) {
if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) {
seen[m[1]] = true; seen[m[1]] = true;
list.push(m[1] + m[2]); list.push(editor.state.completionActive.filename + "." + m[1] + m[2]);
} }
} }
} }
......
...@@ -26,8 +26,9 @@ var mac = /Mac/.test(navigator.platform); ...@@ -26,8 +26,9 @@ var mac = /Mac/.test(navigator.platform);
return out; return out;
} }
function Completion(cm, options, filename) { function Completion(cm, options, filename, archivos) {
this.filename = filename; this.filename = filename;
this.archivos = archivos;
this.cm = cm; this.cm = cm;
this.options = options; this.options = options;
this.widget = null; this.widget = null;
...@@ -196,7 +197,7 @@ var mac = /Mac/.test(navigator.platform); ...@@ -196,7 +197,7 @@ var mac = /Mac/.test(navigator.platform);
var rexp_name = new RegExp(/(.*\:\:)(.*)/.source, "g"); var rexp_name = new RegExp(/(.*\:\:)(.*)/.source, "g");
var m = rexp_name.exec(cur.displayText || getText(cur)); var m = rexp_name.exec(cur.displayText || getText(cur));
var b_elem = ownerDocument.createElement("b"); 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(b_elem);
elt.appendChild(ownerDocument.createTextNode(m[2])); elt.appendChild(ownerDocument.createTextNode(m[2]));
} }
...@@ -411,22 +412,15 @@ var mac = /Mac/.test(navigator.platform); ...@@ -411,22 +412,15 @@ var mac = /Mac/.test(navigator.platform);
var WORD = /[\w$]+/; var WORD = /[\w$]+/;
var RANGE = 500; var RANGE = 500;
var SET = /set\s+([\w\_\d]+)\s*\=/;
var DOM = /\:\:/;
var FUNS = /([\w\_\d]+)\s+\:\:/;
var COMPLETE_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 // functions definitions
CodeMirror.defineExtension("functionDefinition", function(filename, options) { CodeMirror.defineExtension("functionDefinition", function(filename, archivos, options) {
if (options.mode.name == "matefun-ES"){ if (options.mode.name == "matefun-ES"){
options = parseOptions(this, this.getCursor("start"), options); options = parseOptions(this, this.getCursor("start"), options);
if (this.state.completionActive) this.state.completionActive.close(); 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); CodeMirror.signal(this, "startFunctionDefinition", this);
completion.update(true); completion.update(true);
...@@ -437,6 +431,8 @@ var mac = /Mac/.test(navigator.platform); ...@@ -437,6 +431,8 @@ var mac = /Mac/.test(navigator.platform);
if (this.state.completionActive) this.state.completionActive.close() if (this.state.completionActive) this.state.completionActive.close()
}) })
var INCLUIR = /incluir\s+([\w\_\d]+)/;
function functionDefinition(editor, options) { function functionDefinition(editor, options) {
var word = options && options.word || WORD; var word = options && options.word || WORD;
var range = options && options.range || RANGE; var range = options && options.range || RANGE;
...@@ -447,7 +443,36 @@ var mac = /Mac/.test(navigator.platform); ...@@ -447,7 +443,36 @@ var mac = /Mac/.test(navigator.platform);
var curWord = start != end && curLine.slice(start, end + 1); var curWord = start != end && curLine.slice(start, end + 1);
if (curWord.length > 0){ 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_digits = new RegExp(/^\d+$/, "g");
var re_funs = new RegExp(COMPLETE_FUNS.source, "g"); var re_funs = new RegExp(COMPLETE_FUNS.source, "g");
...@@ -458,7 +483,7 @@ var mac = /Mac/.test(navigator.platform); ...@@ -458,7 +483,7 @@ var mac = /Mac/.test(navigator.platform);
while (m = re_funs.exec(text)) { while (m = re_funs.exec(text)) {
if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { if (!re_digits.exec(m[1]) && (!curWord || m[1] == curWord) && !Object.prototype.hasOwnProperty.call(seen, m[1])) {
seen[m[1]] = true; seen[m[1]] = true;
list.push(m[1] + m[2]); list.push(editor.state.completionActive.filename + "." + m[1] + m[2]);
} }
} }
} }
......
...@@ -460,7 +460,7 @@ export class MateFunComponent { ...@@ -460,7 +460,7 @@ export class MateFunComponent {
clickEnEditor(event){ clickEnEditor(event){
if (this.typingCheck) 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(){ guardarArchivo(){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment