diff --git a/Frontend Angular 4/src/app/layout/matefun/codemirror/matefun-mode-EN.js b/Frontend Angular 4/src/app/layout/matefun/codemirror/matefun-mode-EN.js index ca4816feef64e79ffbb2801dfeb5f646c0c69269..e25bbf542a1c14b1b7285e06d27876741ccbf6f7 100644 --- a/Frontend Angular 4/src/app/layout/matefun/codemirror/matefun-mode-EN.js +++ b/Frontend Angular 4/src/app/layout/matefun/codemirror/matefun-mode-EN.js @@ -49,81 +49,44 @@ var list = options && options.list || [], seen = {}; - var previous_part = curLine.slice(0, start); - - var re_w_s = new RegExp(WRITING_SET.source, "g"); - var re_w_c = new RegExp(WRITING_COMMENT.source, "g"); - - if (!re_w_s.exec(previous_part) && !re_w_c.exec(previous_part)){ - // sets - var re_dom = new RegExp(DOM.source, "g"); - if (re_dom.exec(previous_part)){ - var re_sets = new RegExp(SET.source, "g"); - - for (var dir = -1; dir <= 1; dir += 2) { - var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; - for (; line != endLine; line += dir) { - var text = editor.getLine(line), m; - while (m = re_sets.exec(text)) { - if (line == cur.line && m[1] === curWord) continue; - if ((!curWord || m[1].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { - seen[m[1]] = true; - list.push(m[1]); - } - } - } - } - - // add default sets - var default_sets = hintWords.EN_default_sets(); - for (var i = 0; i < default_sets.length; i++) { - if ((!curWord || default_sets[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, default_sets[i])) { - seen[default_sets[i]] = true; - list.push(default_sets[i]); - } - } - }else{ - // get variables of function + // not word = 'Enter' + if (options.key == 'Enter'){ + var previous_line = editor.getLine(cur.line - 1); + var re_funs = new RegExp(FUNS.source, "g"), match; + if (previous_line && (match = re_funs.exec(previous_line))){ var previous_block = ""; - for (var i = 1; i < cur.line; i++){ + for (var i = 0; i < cur.line; i++){ previous_block += editor.getLine(i) + '\n'; } - previous_block += previous_part; - var re_fun = new RegExp(FUN.source, "g"), match, last_match; - while (match = re_fun.exec(previous_block)){ last_match = match }; - if (last_match){ - var vars = last_match[2].replace(/\s/g,'').split(','); - for (var i = 0; i < vars.length; i++) { - if ((!curWord || vars[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, vars[i])) { - seen[vars[i]] = true; - list.push(vars[i]); - } - } + var next_block = ""; + for (var i = cur.line + 1; i < editor.lastLine(); i++){ + next_block += editor.getLine(i) + '\n'; + } + var file = previous_block + match[1] + ' ()'; + if (next_block != ""){ + file = file + '\n' + next_block; + } + editor.setValue(file); + editor.setCursor(CodeMirror.Pos(cur.line, match[1].length + 2)); + } + }else{ + var previous_part = curLine.slice(0, start); + + var re_w_s = new RegExp(WRITING_SET.source, "g"); + var re_w_c = new RegExp(WRITING_COMMENT.source, "g"); + + if (!re_w_s.exec(previous_part) && !re_w_c.exec(previous_part)){ + // sets + var re_dom = new RegExp(DOM.source, "g"); + if (re_dom.exec(previous_part)){ + var re_sets = new RegExp(SET.source, "g"); - // get enums - var re_enums = new RegExp(ENUMS.source, "g"); - for (var dir = -1; dir <= 1; dir += 2) { - var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; - for (; line != endLine; line += dir) { - var text = editor.getLine(line), m; - while (m = re_enums.exec(text)) { - var enums = m[1].replace(/\s/g,'').split(','); - for (var i = 0; i < enums.length; i++) { - if ((!curWord || enums[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, enums[i])) { - seen[enums[i]] = true; - list.push(enums[i]); - } - } - } - } - } - // get functions - var re_funs = new RegExp(FUNS.source, "g"); for (var dir = -1; dir <= 1; dir += 2) { var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; for (; line != endLine; line += dir) { var text = editor.getLine(line), m; - while (m = re_funs.exec(text)) { + while (m = re_sets.exec(text)) { + if (line == cur.line && m[1] === curWord) continue; if ((!curWord || m[1].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { seen[m[1]] = true; list.push(m[1]); @@ -131,12 +94,71 @@ } } } - // add default functions - var default_functions = hintWords.EN_functions(); - for (var i = 0; i < default_functions.length; i++) { - if ((!curWord || default_functions[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, default_functions[i])) { - seen[default_functions[i]] = true; - list.push(default_functions[i]); + + // add default sets + var default_sets = hintWords.EN_default_sets(); + for (var i = 0; i < default_sets.length; i++) { + if ((!curWord || default_sets[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, default_sets[i])) { + seen[default_sets[i]] = true; + list.push(default_sets[i]); + } + } + }else{ + // get variables of function + var previous_block = ""; + for (var i = 0; i < cur.line; i++){ + previous_block += editor.getLine(i) + '\n'; + } + previous_block += previous_part; + var re_fun = new RegExp(FUN.source, "g"), match, last_match; + while (match = re_fun.exec(previous_block)){ last_match = match }; + if (last_match){ + var vars = last_match[2].replace(/\s/g,'').split(','); + for (var i = 0; i < vars.length; i++) { + if ((!curWord || vars[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, vars[i])) { + seen[vars[i]] = true; + list.push(vars[i]); + } + } + + // get enums + var re_enums = new RegExp(ENUMS.source, "g"); + for (var dir = -1; dir <= 1; dir += 2) { + var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; + for (; line != endLine; line += dir) { + var text = editor.getLine(line), m; + while (m = re_enums.exec(text)) { + var enums = m[1].replace(/\s/g,'').split(','); + for (var i = 0; i < enums.length; i++) { + if ((!curWord || enums[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, enums[i])) { + seen[enums[i]] = true; + list.push(enums[i]); + } + } + } + } + } + // get functions + var re_funs = new RegExp(FUNS.source, "g"); + for (var dir = -1; dir <= 1; dir += 2) { + var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; + for (; line != endLine; line += dir) { + var text = editor.getLine(line), m; + while (m = re_funs.exec(text)) { + if ((!curWord || m[1].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[1])) { + seen[m[1]] = true; + list.push(m[1]); + } + } + } + } + // add default functions + var default_functions = hintWords.EN_functions(); + for (var i = 0; i < default_functions.length; i++) { + if ((!curWord || default_functions[i].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, default_functions[i])) { + seen[default_functions[i]] = true; + list.push(default_functions[i]); + } } } } 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 5f459675ff96a1f32b6f62ddf08b8d982fb31e49..6087bb47ee5efcba7179aeb53967351c515d18b8 100755 --- a/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts +++ b/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts @@ -418,7 +418,7 @@ export class MateFunComponent { archivoModificado(event){ if (!event.ctrlKey && !event.shiftKey && !event.altKey){ - if (/^[\w\_\d]$/.test(event.key)) + if (/^[\w\_\d]$/.test(event.key) || event.key == 'Enter') this.codemirror.instance.showHint(event); if(this.copiaNombreArchivo!=this.archivo.nombre || this.copiaContenidoArchivo != this.archivo.contenido){ this.modificado = true;