diff --git a/Frontend Angular 4/src/app/layout/matefun/codemirror/functions_definition.js b/Frontend Angular 4/src/app/layout/matefun/codemirror/functions_definition.js index eea736df576073dba3552d7524736d8172a3af16..a42e1e727bf0b89bdc7be42f343e2ade471cdb03 100644 --- a/Frontend Angular 4/src/app/layout/matefun/codemirror/functions_definition.js +++ b/Frontend Angular 4/src/app/layout/matefun/codemirror/functions_definition.js @@ -484,4 +484,42 @@ var mac = /Mac/.test(navigator.platform); return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)}; } }; + + CodeMirror.defineExtension("jumpToDefinition", function(editor, options) { + var word = options && options.word || WORD; + var range = options && options.range || RANGE; + var cur = editor.getCursor(), curLine = editor.getLine(cur.line); + var end = cur.ch, start = end; + while (start && word.test(curLine.charAt(start - 1))) --start; + while (end && word.test(curLine.charAt(end + 1))) ++end; + var curWord = start != end && curLine.slice(start, end + 1); + + if (curWord.length > 0){ + var list = [], seen = {}; + var re_digits = new RegExp(/^\d+$/, "g"); + + var found = false; + + var re_funs = new RegExp(COMPLETE_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 && !found; line += dir) { + var text = editor.getLine(line), m; + 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; + found = true; + + var newCursor = editor.getCursor(); + newCursor.line = line; + newCursor.ch = text.indexOf(m[1]); + editor.setCursor(newCursor); + + editor.cm.closeFunctionDefinition(); + } + } + } + } + } + }); }); diff --git a/Frontend Angular 4/src/app/layout/matefun/matefun.component.html b/Frontend Angular 4/src/app/layout/matefun/matefun.component.html index 08f1d823614da418d56f09df92399cab8cf2c28f..d23c8e87535908e79154d1206be7cd4179be394e 100755 --- a/Frontend Angular 4/src/app/layout/matefun/matefun.component.html +++ b/Frontend Angular 4/src/app/layout/matefun/matefun.component.html @@ -135,6 +135,7 @@ <label><b>Ctrl+G</b> {{ "i18n.shortcuts.saveFile" | translate }}</label> <label><b>Ctrl+{{ "i18n.shortcuts.space" | translate }}</b> {{ "i18n.shortcuts.autocomplete" | translate }}</label> <label><b>Ctrl+Shift+K</b> {{ "i18n.shortcuts.comment" | translate }}</label> + <label><b>Alt+.</b> {{ "i18n.shortcuts.functionNavigation" | translate }}</label> </div> </div> </ng-template> 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 33af3cece0e946cbe28753eedee58cfeea1d99e7..da9f407b53d55b72acd55a40fce1da4b43a7f211 100755 --- a/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts +++ b/Frontend Angular 4/src/app/layout/matefun/matefun.component.ts @@ -453,9 +453,8 @@ export class MateFunComponent { }else{ this.modificado = false; } - } - if (event.ctrlKey && event.shiftKey && event.key == 'K') - this.codemirror.instance.toggleComment(); + }else if (event.ctrlKey && event.shiftKey && event.key == 'K') this.codemirror.instance.toggleComment(); + else if (event.altKey && event.key == '.') this.codemirror.instance.jumpToDefinition(this.codemirror.instance.doc, event); } clickEnEditor(event){ diff --git a/Frontend Angular 4/src/assets/i18n/en.json b/Frontend Angular 4/src/assets/i18n/en.json index e9902a07af356c5b37d392872d98b940046fd7b6..f8d6d324b50a310317566da41ebf971cc2e949bb 100644 --- a/Frontend Angular 4/src/assets/i18n/en.json +++ b/Frontend Angular 4/src/assets/i18n/en.json @@ -129,7 +129,8 @@ "saveFile" : "Save File", "autocomplete" : "Autocomplete", "space" : "Space", - "comment" : "Comment/Uncomment" + "comment" : "Comment/Uncomment", + "functionNavigation" : "Jump to the definition" } } } diff --git a/Frontend Angular 4/src/assets/i18n/es.json b/Frontend Angular 4/src/assets/i18n/es.json index 323268ae201a5915ce0ce01db3949e3724c796cc..f13b7b154cf12586d9cbb17af726f6b6b6bfbd43 100644 --- a/Frontend Angular 4/src/assets/i18n/es.json +++ b/Frontend Angular 4/src/assets/i18n/es.json @@ -129,7 +129,8 @@ "saveFile" : "Guardar archivo", "autocomplete" : "Autocompletar", "space" : "Espacio", - "comment" : "Comentar/Descomentar" + "comment" : "Comentar/Descomentar", + "functionNavigation" : "Saltar a la definición" } } }