diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index b6d107d8789..bc0a1ac9efc 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -148,6 +148,7 @@ var EditSession = function(text, mode) { this.$undoSelect = true; this.$foldData = []; + this.id = "session" + (++EditSession.$uid); this.$foldData.toString = function() { return this.join("\n"); }; diff --git a/lib/ace/edit_session/folding.js b/lib/ace/edit_session/folding.js index fbab03fa16b..4e67fe4509d 100644 --- a/lib/ace/edit_session/folding.js +++ b/lib/ace/edit_session/folding.js @@ -772,7 +772,7 @@ function Folding() { this.removeFold(fold); else this.expandFold(fold); - return; + return fold; } var range = this.getFoldWidgetRange(row, true); @@ -781,7 +781,7 @@ function Folding() { fold = this.getFoldAt(range.start.row, range.start.column, 1); if (fold && range.isEqual(fold.range)) { this.removeFold(fold); - return; + return fold; } } diff --git a/lib/ace/ext/modelist.js b/lib/ace/ext/modelist.js index daf6e31bba5..a708ae0ffb6 100644 --- a/lib/ace/ext/modelist.js +++ b/lib/ace/ext/modelist.js @@ -137,7 +137,7 @@ var supportedModes = { Protobuf: ["proto"], Python: ["py"], R: ["r"], - Razor: ["cshtml"], + Razor: ["cshtml|asp"], RDoc: ["Rd"], RHTML: ["Rhtml"], RST: ["rst"], diff --git a/lib/ace/keyboard/textinput.js b/lib/ace/keyboard/textinput.js index 1a57b2e6dfb..e3ceb31420c 100644 --- a/lib/ace/keyboard/textinput.js +++ b/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); diff --git a/lib/ace/lib/dom.js b/lib/ace/lib/dom.js index 01cf66bb840..dfc32079d47 100644 --- a/lib/ace/lib/dom.js +++ b/lib/ace/lib/dom.js @@ -37,7 +37,7 @@ exports.getDocumentHead = function(doc) { if (!doc) doc = document; return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; -}; +} exports.createElement = function(tag, ns) { return document.createElementNS ? @@ -46,7 +46,7 @@ exports.createElement = function(tag, ns) { }; exports.hasCssClass = function(el, name) { - var classes = (el.className || "").split(/\s+/g); + var classes = (el.className + "").split(/\s+/g); return classes.indexOf(name) !== -1; }; diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js index 921dee1de10..61fe8e0c705 100644 --- a/lib/ace/lib/lang.js +++ b/lib/ace/lib/lang.js @@ -74,7 +74,7 @@ exports.copyArray = function(array){ var copy = []; for (var i=0, l=array.length; i