diff --git a/build_support/mini_require.js b/build_support/mini_require.js index 44d2ed70..4a1a7237 100644 --- a/build_support/mini_require.js +++ b/build_support/mini_require.js @@ -62,8 +62,8 @@ var _define = function(module, deps, payload) { payload = deps; if (!_define.modules) { - _define.modules = Object.create(null); - _define.payloads = Object.create(null); + _define.modules = {}; + _define.payloads = {}; } _define.payloads[module] = payload; diff --git a/lib/ace/ace.js b/lib/ace/ace.js index bb365ed1..34859be4 100644 --- a/lib/ace/ace.js +++ b/lib/ace/ace.js @@ -108,7 +108,7 @@ exports.edit = function(el) { * **/ exports.createEditSession = function(text, mode) { - var doc = new EditSession(text, doc); + var doc = new EditSession(text, mode); doc.setUndoManager(new UndoManager()); return doc; } diff --git a/lib/ace/config.js b/lib/ace/config.js index 97a18954..db36d59f 100644 --- a/lib/ace/config.js +++ b/lib/ace/config.js @@ -190,12 +190,18 @@ var optionsProvider = { this.setOption(key, optList[key]); }, this); }, - getOptions: function(a) { - var b = {}; - Object.keys(a).forEach(function(key) { - b[key] = this.getOption(key); + getOptions: function(optionNames) { + var result = {}; + if (!optionNames) { + optionNames = Object.keys(this.$options); + } else if (!Array.isArray(optionNames)) { + result = optionNames; + optionNames = Object.keys(result); + } + optionNames.forEach(function(key) { + result[key] = this.getOption(key); }, this); - return b; + return result; }, setOption: function(name, value) { if (this["$" + name] === value) diff --git a/lib/ace/css/editor.css b/lib/ace/css/editor.css index 246ff810..83bac531 100644 --- a/lib/ace/css/editor.css +++ b/lib/ace/css/editor.css @@ -295,11 +295,12 @@ border-radius: 3px; border: 1px solid transparent; + cursor: pointer; +} + +.ace_folding-enabled .ace_fold-widget { + display: inline-block; } - - .ace_folding-enabled .ace_fold-widget { - display: inline-block; - } .ace_fold-widget.ace_end { background-image: url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82"); diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 049f63d8..5ddd14f2 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -1799,6 +1799,8 @@ var Editor = function(renderer, session) { this.session.unfold({row: lineNumber - 1, column: column || 0}); this.$blockScrolling += 1; + // todo: find a way to automatically exit multiselect mode + this.exitMultiSelectMode && this.exitMultiSelectMode() this.moveCursorTo(lineNumber - 1, column || 0); this.$blockScrolling -= 1; diff --git a/lib/ace/ext/modelist.js b/lib/ace/ext/modelist.js index 536d9430..0a5363fb 100644 --- a/lib/ace/ext/modelist.js +++ b/lib/ace/ext/modelist.js @@ -90,7 +90,7 @@ var supportedModes = { Makefile: ["^GNUmakefile|^makefile|^Makefile|^OCamlMakefile|make"], Markdown: ["md|markdown"], MUSHCode: ["mc|mush"], - ObjectiveC: ["m"], + ObjectiveC: ["m|mm"], OCaml: ["ml|mli"], Pascal: ["pas|p"], Perl: ["pl|pm"], diff --git a/lib/ace/multi_select.js b/lib/ace/multi_select.js index 9d063837..d1b226f0 100644 --- a/lib/ace/multi_select.js +++ b/lib/ace/multi_select.js @@ -499,9 +499,13 @@ var Editor = require("./editor").Editor; this.inVirtualSelectionMode = false; selection._eventRegistry = reg; selection.mergeOverlappingRanges(); - + + var anim = this.renderer.$scrollAnimation; this.onCursorChange(); this.onSelectionChange(); + if (anim && anim.from == anim.to) + this.renderer.animateScrolling(anim.from); + return result; }; diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 5fc902ac..9d0d1b1d 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -105,7 +105,7 @@ var VirtualRenderer = function(container, theme) { this.scrollBar = new ScrollBar(this.container); this.scrollBar.addEventListener("scroll", function(e) { - if (!_self.$inScrollAnimation) + if (!_self.$scrollAnimation) _self.session.setScrollTop(e.data); }); @@ -1063,10 +1063,10 @@ var VirtualRenderer = function(container, theme) { this.animateScrolling = function(fromValue, callback) { var toValue = this.scrollTop; - if (this.$animatedScroll && Math.abs(fromValue - toValue) < 100000) { + if (this.$animatedScroll) { var _self = this; var steps = _self.$calcSteps(fromValue, toValue); - this.$inScrollAnimation = true; + this.$scrollAnimation = {from: fromValue, to: toValue}; clearInterval(this.$timer); @@ -1083,7 +1083,7 @@ var VirtualRenderer = function(container, theme) { } else { // do this on separate step to not get spurious scroll event from scrollbar _self.$timer = clearInterval(_self.$timer); - _self.$inScrollAnimation = false; + _self.$scrollAnimation = null; callback && callback(); } }, 10);