diff --git a/node_modules/ace/lib/ace/edit_session.js b/node_modules/ace/lib/ace/edit_session.js index 92b76ecc..f80b2079 100644 --- a/node_modules/ace/lib/ace/edit_session.js +++ b/node_modules/ace/lib/ace/edit_session.js @@ -148,7 +148,7 @@ var EditSession = function(text, mode) { this.$undoSelect = true; this.$foldData = []; - this.id = "session" + EditSession.$uid; + this.id = "session" + (++EditSession.$uid); this.$foldData.toString = function() { return this.join("\n"); }; diff --git a/node_modules/ace/lib/ace/keyboard/textinput.js b/node_modules/ace/lib/ace/keyboard/textinput.js index 1a57b2e6..e3ceb314 100644 --- a/node_modules/ace/lib/ace/keyboard/textinput.js +++ b/node_modules/ace/lib/ace/keyboard/textinput.js @@ -364,10 +364,11 @@ var TextInput = function(parentNode, host) { return; // console.log("onCompositionStart", inComposition) inComposition = {}; + inComposition.canUndo = host.session.$undoManager; host.onCompositionStart(); setTimeout(onCompositionUpdate, 0); host.on("mousedown", onCompositionEnd); - if (!host.selection.isEmpty()) { + if (inComposition.canUndo && !host.selection.isEmpty()) { host.insert(""); host.session.markUndoGroup(); host.selection.clearSelection(); @@ -385,7 +386,8 @@ var TextInput = function(parentNode, host) { host.onCompositionUpdate(val); if (inComposition.lastValue) host.undo(); - inComposition.lastValue = val; + if (inComposition.canUndo) + inComposition.lastValue = val; if (inComposition.lastValue) { var r = host.selection.getRange(); host.insert(inComposition.lastValue);