diff --git a/node_modules/ace/lib/ace/commands/default_commands.js b/node_modules/ace/lib/ace/commands/default_commands.js index 372b95a3..472da7d5 100644 --- a/node_modules/ace/lib/ace/commands/default_commands.js +++ b/node_modules/ace/lib/ace/commands/default_commands.js @@ -622,7 +622,7 @@ exports.commands = [{ scrollIntoView: "cursor" }, { name: "transposeletters", - bindKey: bindKey("Ctrl-T", "Ctrl-T"), + bindKey: bindKey("Alt-X", "Ctrl-X"), exec: function(editor) { editor.transposeLetters(); }, multiSelectAction: function(editor) {editor.transposeSelections(1); }, scrollIntoView: "cursor" diff --git a/node_modules/ace/lib/ace/editor.js b/node_modules/ace/lib/ace/editor.js index 9540643b..0545c33e 100644 --- a/node_modules/ace/lib/ace/editor.js +++ b/node_modules/ace/lib/ace/editor.js @@ -966,8 +966,11 @@ var Editor = function(renderer, session) { var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); if (transform) { if (text !== transform.text) { - this.session.mergeUndoDeltas = false; - this.$mergeNextCommand = false; + // keep automatic insertion in a separate delta, unless it is in multiselect mode + if (!this.inVirtualSelectionMode) { + this.session.mergeUndoDeltas = false; + this.mergeNextCommand = false; + } } text = transform.text; diff --git a/node_modules/ace/lib/ace/keyboard/hash_handler.js b/node_modules/ace/lib/ace/keyboard/hash_handler.js index 730b313e..697c6c44 100644 --- a/node_modules/ace/lib/ace/keyboard/hash_handler.js +++ b/node_modules/ace/lib/ace/keyboard/hash_handler.js @@ -119,7 +119,8 @@ MultiHashHandler.prototype = HashHandler.prototype; function getPosition(command) { return typeof command == "object" && command.bindKey - && command.bindKey.position || 0; + && command.bindKey.position + || (command.isDefault ? -100 : 0); } this._addCommandToBinding = function(keyId, command, position) { var ckb = this.commandKeyBinding, i; @@ -133,13 +134,11 @@ MultiHashHandler.prototype = HashHandler.prototype; } else if ((i = ckb[keyId].indexOf(command)) != -1) { ckb[keyId].splice(i, 1); } - + if (typeof position != "number") { - if (position || command.isDefault) - position = -100; - else - position = getPosition(command); + position = getPosition(command); } + var commands = ckb[keyId]; for (i = 0; i < commands.length; i++) { var other = commands[i]; diff --git a/package.json b/package.json index 998af964..375b6142 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "c9.ide.language.python": "#189b55135d", "c9.ide.language.go": "#c58539fc05", "c9.ide.navigate": "#5d5707058c", - "c9.ide.newresource": "#981a408a7b", + "c9.ide.newresource": "#636e7a7345", "c9.ide.openfiles": "#2ae85a9e33", "c9.ide.preview": "#5f5fff0185", "c9.ide.preview.browser": "#829f0ac50f", diff --git a/plugins/c9.ide.ui/lib_apf.js b/plugins/c9.ide.ui/lib_apf.js index d4db9446..7072aa37 100644 --- a/plugins/c9.ide.ui/lib_apf.js +++ b/plugins/c9.ide.ui/lib_apf.js @@ -21558,7 +21558,7 @@ apf.window = function(){ canSelect = false; } - if (amlNode && amlNode.name === "editor::ace") { + if (amlNode && amlNode.name === "editor::ace" || amlNode.class == "c9terminalcontainer") { canSelect = true; }