From fb4dca096e63326e21855fe56fa8820caf791c2c Mon Sep 17 00:00:00 2001 From: Elias Villiger <elvill@ntl2.math.uzh.ch> Date: Fri, 12 Jan 2024 08:39:28 +0100 Subject: [PATCH] Add hinting also to BE. Add extra keymap for qfq. --- javascript/src/Helper/codemirror.js | 22 ------------- javascript/src/Helper/codemirror/qfq.js | 41 +++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/javascript/src/Helper/codemirror.js b/javascript/src/Helper/codemirror.js index bb9641eb3..3a50e213c 100644 --- a/javascript/src/Helper/codemirror.js +++ b/javascript/src/Helper/codemirror.js @@ -19,24 +19,6 @@ var QfqNS = QfqNS || {}; */ QfqNS.Helper = QfqNS.Helper || {}; -QfqNS.Helper.cmKeyUpHandler = function(editor, event){ - if ([32/*space*/, 57/*opening parenthesis*/].includes(event.keyCode)) { - editor.execCommand("capitalizeSql"); - } else if (!editor.state.completionActive && - (event.keyCode >= 48 && event.keyCode <= 111 /*alphanumeric*/ || - [189, 190, 191, 58, 60, 219/* _./:<{ */].includes(event.keyCode) ) ) { - CodeMirror.commands.autocomplete(editor, null, { - completeSingle: false, - customKeys: { /*for hinting*/ - "Up": function (cm, handle) { handle.moveFocus(-1); }, - "Down": function (cm, handle) { handle.moveFocus(1); }, - "Tab": function (cm, handle) { handle.pick(); }, - "Esc": function (cm, handle) { handle.close(); } - } - }); - } -}; - (function (n) { 'use strict'; @@ -88,8 +70,6 @@ QfqNS.Helper.cmKeyUpHandler = function(editor, event){ }; })($(this).closest('form'), $this)); - cm.on("keyup", QfqNS.Helper.cmKeyUpHandler); - cm.on('focus', function () { oldElement = $this.val(); cmFocusOn = true; @@ -217,8 +197,6 @@ $(document).ready(function () { }; })($(this).closest('form'), $this)); - // hinting - cm.on("keyup", QfqNS.Helper.cmKeyUpHandler); // This added class is needed to not fire the script more than once $(this).addClass("cm-done"); // For the extern window we use the whole place to show CodeMirror diff --git a/javascript/src/Helper/codemirror/qfq.js b/javascript/src/Helper/codemirror/qfq.js index 2c0afc918..7f0d83a1b 100644 --- a/javascript/src/Helper/codemirror/qfq.js +++ b/javascript/src/Helper/codemirror/qfq.js @@ -627,4 +627,45 @@ return { list: list, from: from, to: to }; } }); + + CodeMirror.defineOption("qfq-hint", false, function(cm) { + cm.on("keyup", function(cm, event){ + if ([32/*space*/, 57/*opening parenthesis*/].includes(event.keyCode)) { + cm.execCommand("capitalizeSql"); + } else if (!cm.state.completionActive && + (event.keyCode >= 48 && event.keyCode <= 111 /*alphanumeric*/ || + [189, 190, 191, 58, 60, 219/* _./:<{ */].includes(event.keyCode) ) ) { + CodeMirror.commands.autocomplete(cm, null, { + completeSingle: false, + customKeys: { /*for hinting*/ + "Up": function (cm, handle) { handle.moveFocus(-1); }, + "Down": function (cm, handle) { handle.moveFocus(1); }, + "Tab": function (cm, handle) { handle.pick(); }, + "Esc": function (cm, handle) { handle.close(); } + } + }); + } + }); + }); + + CodeMirror.defineOption("qfq-keymap", false, function(cm) { + cm.setOption("extraKeys", { + Tab: function(cm) { + if (cm.getSelections()[0].length) { + // something selected: indent more + cm.execCommand("indentMore"); + } else { + // insert one indentUnit worth of spaces + var spaces = Array(cm.getOption("indentUnit") + 1).join(" "); + cm.replaceSelection(spaces); + } + }, + "Shift-Tab": function(cm) { + cm.execCommand("indentLess"); + }, + "Ctrl-Enter": function (cm) { + cm.execCommand("indentAuto"); + } + }) + }); }); \ No newline at end of file -- GitLab